diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b62b934ecb..047c51cfc8 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,14 +11,14 @@ jobs:
name: Build
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- - uses: actions/setup-node@v3
+ - uses: actions/setup-node@v4
with:
- node-version: "18.x"
+ node-version: "20.x"
- name: Cache node modules
- uses: actions/cache@v3
+ uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
@@ -32,7 +32,7 @@ jobs:
- name: cache playwright
id: playwright-cache
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: pw-new-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
@@ -70,7 +70,7 @@ jobs:
working-directory: ./tests
run: npx playwright test
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
@@ -80,5 +80,5 @@ jobs:
- name: Upload webpack stats artifact (editor)
uses: relative-ci/agent-upload-artifact-action@v1
with:
- webpackStatsFile: ./examples/editor/dist/webpack-stats.json
+ webpackStatsFile: ./playground/dist/webpack-stats.json
artifactName: relative-ci-artifacts-editor
diff --git a/.nvmrc b/.nvmrc
index b1215e8764..df9385826f 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v18.16.0
\ No newline at end of file
+v20.11.0
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index f46e5ae865..24d66a74e9 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -7,7 +7,9 @@
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"search.exclude": {
- "packages/editor/public/types": true
+ "packages/editor/public/types": true,
+ "packages/website/docs/.vitepress": false,
+ "**/.*": false
},
"typescript.tsdk": "node_modules/typescript/lib"
}
diff --git a/README.md b/README.md
index e660d3ce50..665bfb1303 100644
--- a/README.md
+++ b/README.md
@@ -1,49 +1,45 @@
-
+
Welcome to BlockNote! The open source Block-Based
-rich text editor. Easily add a modern text editing experience to your app.
+React rich text editor. Easily add a modern text editing experience to your app.
-
+
Homepage
-
- Introduction
- -
Documentation
+ -
+ Quickstart
+ -
+ Examples
# Live demo
-Play with the editor @ [https://blocknote-main.vercel.app/](https://blocknote-main.vercel.app/).
-
-(Source in [examples/editor](/examples/editor))
+See our homepage @ [https://www.blocknotejs.org](https://www.blocknotejs.org/) or browse the [examples](https://www.blocknotejs.org/examples).
# Example code (React)
[](https://badge.fury.io/js/%40blocknote%2Freact)
```typescript
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/core/fonts/inter.css";
import "@blocknote/react/style.css";
function App() {
- const editor = useBlockNote({
- onEditorContentChange: (editor) => {
- // Log the document to console on every update
- console.log(editor.getJSON());
- },
- });
+ const editor = useCreateBlockNote();
return ;
}
@@ -99,8 +95,8 @@ Directory structure:
blocknote
├── packages/core - The core of the editor
├── packages/react - The main library for use in React apps
-├── examples/editor - Example React app that embeds the editor
-├── examples/vanilla - An advanced example if you don't want to use React or want to build your own UI components
+├── examples - Example apps
+├── playground - App to browse the example apps (https://playground.blocknotejs.org)
└── tests - Playwright end to end tests
```
diff --git a/docs/.env.local.example b/docs/.env.local.example
new file mode 100644
index 0000000000..c0f2a490a6
--- /dev/null
+++ b/docs/.env.local.example
@@ -0,0 +1,4 @@
+AUTH_SECRET= # Linux: `openssl rand -hex 32` or go to https://generate-secret.vercel.app/32
+
+AUTH_GITHUB_ID=
+AUTH_GITHUB_SECRET=
\ No newline at end of file
diff --git a/docs/.eslintrc.json b/docs/.eslintrc.json
new file mode 100644
index 0000000000..bffb357a71
--- /dev/null
+++ b/docs/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 0000000000..fd3dbb571a
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,36 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.yarn/install-state.gz
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000000..c4033664f8
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,36 @@
+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+# or
+pnpm dev
+# or
+bun dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+
+This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/docs/app/api/auth/[...nextauth]/route.ts b/docs/app/api/auth/[...nextauth]/route.ts
new file mode 100644
index 0000000000..62da3d047a
--- /dev/null
+++ b/docs/app/api/auth/[...nextauth]/route.ts
@@ -0,0 +1,2 @@
+export { GET, POST } from "../../../../auth";
+export const runtime = "edge"; // optional
diff --git a/packages/website/api/og.tsx b/docs/app/api/og/route.tsx
similarity index 97%
rename from packages/website/api/og.tsx
rename to docs/app/api/og/route.tsx
index 61098ca01d..9bb7a2feb5 100644
--- a/packages/website/api/og.tsx
+++ b/docs/app/api/og/route.tsx
@@ -1,24 +1,19 @@
-import { ImageResponse } from "@vercel/og";
-import React from "react";
+import { ImageResponse } from "next/og";
-export const config = {
- runtime: "edge",
-};
+export const runtime = "edge";
-const font = fetch(
- new URL("../docs/public/fonts/Gilroy-Regular.ttf", import.meta.url)
-).then((res) => res.arrayBuffer());
-
-export default async function handler(request) {
+export async function GET(request: Request) {
try {
+ const fontData = await fetch(
+ new URL("../../../assets/fonts/Gilroy-Regular.ttf", import.meta.url),
+ ).then((res) => res.arrayBuffer());
+
const { searchParams } = new URL(request.url);
let title = searchParams.get("title");
if (title && title.length > 100) {
title = title.slice(0, 99) + "…";
}
- const fontData = await font;
-
const bannerSVG = (
) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/docs/app/page.tsx.bak b/docs/app/page.tsx.bak
new file mode 100644
index 0000000000..dc191aa8de
--- /dev/null
+++ b/docs/app/page.tsx.bak
@@ -0,0 +1,113 @@
+import Image from "next/image";
+
+export default function Home() {
+ return (
+
+
+
+ Get started by editing
+ app/page.tsx
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/website/docs/public/fonts/Gilroy-Bold.ttf b/docs/assets/fonts/Gilroy-Bold.ttf
similarity index 100%
rename from packages/website/docs/public/fonts/Gilroy-Bold.ttf
rename to docs/assets/fonts/Gilroy-Bold.ttf
diff --git a/packages/website/docs/public/fonts/Gilroy-ExtraBold.ttf b/docs/assets/fonts/Gilroy-ExtraBold.ttf
similarity index 100%
rename from packages/website/docs/public/fonts/Gilroy-ExtraBold.ttf
rename to docs/assets/fonts/Gilroy-ExtraBold.ttf
diff --git a/packages/website/docs/public/fonts/Gilroy-Medium.ttf b/docs/assets/fonts/Gilroy-Medium.ttf
similarity index 100%
rename from packages/website/docs/public/fonts/Gilroy-Medium.ttf
rename to docs/assets/fonts/Gilroy-Medium.ttf
diff --git a/packages/website/docs/public/fonts/Gilroy-Regular.ttf b/docs/assets/fonts/Gilroy-Regular.ttf
similarity index 100%
rename from packages/website/docs/public/fonts/Gilroy-Regular.ttf
rename to docs/assets/fonts/Gilroy-Regular.ttf
diff --git a/packages/website/docs/public/fonts/Gilroy-SemiBold.ttf b/docs/assets/fonts/Gilroy-SemiBold.ttf
similarity index 100%
rename from packages/website/docs/public/fonts/Gilroy-SemiBold.ttf
rename to docs/assets/fonts/Gilroy-SemiBold.ttf
diff --git a/packages/website/docs/public/fonts/gilroy-bold.woff2 b/docs/assets/fonts/gilroy-bold.woff2
similarity index 100%
rename from packages/website/docs/public/fonts/gilroy-bold.woff2
rename to docs/assets/fonts/gilroy-bold.woff2
diff --git a/packages/website/docs/public/fonts/gilroy-extrabold.woff2 b/docs/assets/fonts/gilroy-extrabold.woff2
similarity index 100%
rename from packages/website/docs/public/fonts/gilroy-extrabold.woff2
rename to docs/assets/fonts/gilroy-extrabold.woff2
diff --git a/packages/website/docs/public/fonts/gilroy-medium.woff2 b/docs/assets/fonts/gilroy-medium.woff2
similarity index 100%
rename from packages/website/docs/public/fonts/gilroy-medium.woff2
rename to docs/assets/fonts/gilroy-medium.woff2
diff --git a/packages/website/docs/public/fonts/gilroy-regular.woff2 b/docs/assets/fonts/gilroy-regular.woff2
similarity index 100%
rename from packages/website/docs/public/fonts/gilroy-regular.woff2
rename to docs/assets/fonts/gilroy-regular.woff2
diff --git a/packages/website/docs/public/fonts/gilroy-semibold.woff2 b/docs/assets/fonts/gilroy-semibold.woff2
similarity index 100%
rename from packages/website/docs/public/fonts/gilroy-semibold.woff2
rename to docs/assets/fonts/gilroy-semibold.woff2
diff --git a/docs/auth.ts b/docs/auth.ts
new file mode 100644
index 0000000000..b938d1a43f
--- /dev/null
+++ b/docs/auth.ts
@@ -0,0 +1,95 @@
+import NextAuth from "next-auth";
+import GitHub from "next-auth/providers/github";
+
+export const {
+ handlers: { GET, POST },
+ auth,
+ signIn,
+ signOut,
+} = NextAuth({
+ callbacks: {
+ signIn: async (params) => {
+ if (params.profile!.sponsorInfo) {
+ // TODO
+ return true;
+ }
+ return true;
+ return "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/sponsors/TypeCellOS"; // TODO
+ },
+ },
+ providers: [
+ // copied from https://github.com/nextauthjs/next-auth/blob/234a150e2cac3bc62a9162fa00ed7cb16a105244/packages/core/src/providers/github.ts#L2,
+ // but with extra sponsorship api call
+ GitHub({
+ userinfo: {
+ url: `https://api.github.com/user`,
+ async request({ tokens, provider }: any) {
+ const profile = await fetch(provider.userinfo?.url as URL, {
+ headers: {
+ Authorization: `Bearer ${tokens.access_token}`,
+ "User-Agent": "authjs",
+ },
+ }).then(async (res) => await res.json());
+
+ if (!profile.email) {
+ // If the user does not have a public email, get another via the GitHub API
+ // See https://docs.github.com/en/rest/users/emails#list-public-email-addresses-for-the-authenticated-user
+ const res = await fetch(`https://api.github.com/user/emails`, {
+ headers: {
+ Authorization: `Bearer ${tokens.access_token}`,
+ "User-Agent": "authjs",
+ },
+ });
+
+ if (res.ok) {
+ const emails: any[] = await res.json();
+ profile.email = (
+ emails.find((e) => e.primary) ?? emails[0]
+ ).email;
+ }
+ }
+
+ const resSponsor = await fetch(`https://api.github.com/graphql`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${tokens.access_token}`,
+ },
+ body: JSON.stringify({
+ query: `{
+ organization(login:"TypeCellOS") {
+ sponsorshipForViewerAsSponsor(activeOnly:false) {
+ isActive,
+ tier {
+ name
+ monthlyPriceInDollars
+ }
+ }
+ }
+ }`,
+ }),
+ });
+
+ if (resSponsor.ok) {
+ const data = await resSponsor.json();
+
+ profile.sponsorInfo =
+ data.data.organization.sponsorshipForViewerAsSponsor;
+ }
+
+ return profile;
+ },
+ },
+ profile: (profile) => {
+ return {
+ id: profile.id.toString(),
+ name: profile.name ?? profile.login,
+ email: profile.email,
+ image: profile.avatar_url,
+ username: profile.login,
+ sponsorInfo: profile.sponsorsTypeCell,
+ };
+ },
+ }),
+ ],
+});
diff --git a/docs/components/AuthNavButton.tsx b/docs/components/AuthNavButton.tsx
new file mode 100644
index 0000000000..e7878d8326
--- /dev/null
+++ b/docs/components/AuthNavButton.tsx
@@ -0,0 +1,84 @@
+import { Menu, Transition } from "@headlessui/react";
+import clsx from "clsx";
+import { signOut, useSession } from "next-auth/react";
+import Image from "next/image";
+import { ReactElement, ReactNode } from "react";
+
+export function AuthNavButton(props: any) {
+ const session = useSession();
+
+ return session.status === "authenticated" ? (
+
+
+ 💖 Thanks for sponsoring!
+
+ ,
+
+ {
+ await signOut();
+ }}
+ className={clsx(
+ "nx-relative nx-hidden nx-w-full nx-select-none nx-whitespace-nowrap nx-text-gray-600 hover:nx-text-gray-900 dark:nx-text-gray-400 dark:hover:nx-text-gray-100 md:nx-inline-block",
+ "nx-py-1.5 nx-transition-colors ltr:nx-pl-3 ltr:nx-pr-9 rtl:nx-pr-3 rtl:nx-pl-9",
+ )}>
+ Sign out
+
+ ,
+ ]}>
+
+
+ ) : (
+ <>>
+ // TODO: design button
+ // {
+ // await signIn("github");
+ // }}>
+ // Sign in
+ //
+ );
+}
+
+function NavbarMenu({
+ className,
+ menuItems,
+ children,
+}: {
+ className?: string;
+ menuItems: ReactNode[];
+ children: ReactNode;
+}): ReactElement {
+ return (
+
+
+
+ {children}
+
+
+
+ {menuItems}
+
+
+
+
+ );
+}
diff --git a/docs/components/Feature.tsx b/docs/components/Feature.tsx
new file mode 100644
index 0000000000..680334de1c
--- /dev/null
+++ b/docs/components/Feature.tsx
@@ -0,0 +1,62 @@
+export default function Feature() {
+ return (
+
+
+
+
+
+
+ Deploy faster
+
+
+ A better workflow
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit.
+ Maiores impedit perferendis suscipit eaque, iste dolor
+ cupiditate blanditiis ratione.
+
+
+
+
+
+ “Vel ultricies morbi odio facilisi ultrices accumsan donec
+ lacus purus. Lectus nibh ullamcorper ac dictum justo in
+ euismod. Risus aenean ut elit massa. In amet aliquet eget
+ cras. Sem volutpat enim tristique.”
+
+
+
+
+
+
+ Maria Hill
+ {" "}
+ – Marketing Manager
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/docs/components/Footer.tsx b/docs/components/Footer.tsx
new file mode 100644
index 0000000000..1a94aadef1
--- /dev/null
+++ b/docs/components/Footer.tsx
@@ -0,0 +1,157 @@
+import cn from "classnames";
+import Link from "next/link";
+import { ThemeSwitch } from "nextra-theme-docs";
+import type { ReactElement, ReactNode } from "react";
+import { Logo } from "./Logo";
+function FooterLink({ href, children }: { href: string; children: ReactNode }) {
+ const classes =
+ "text-sm text-[#666666] dark:text-[#888888] no-underline betterhover:hover:text-gray-700 betterhover:hover:dark:text-white transition";
+ if (href.startsWith("http")) {
+ return (
+
+ {children}
+
+ );
+ }
+ return (
+
+ {children}
+
+ );
+}
+
+function FooterHeader({ children }: { children: ReactNode }) {
+ return {children} ;
+}
+
+const navigation = {
+ general: [
+ { name: "Documentation", href: "/docs" },
+ { name: "Examples", href: "/examples" },
+ {
+ name: "Releases",
+ href: "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/TypeCellOS/BlockNote/releases",
+ },
+ ],
+
+ community: [
+ {
+ name: "GitHub",
+ href: "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/TypeCellOS/BlockNote",
+ },
+ {
+ name: "Discord",
+ href: "https://discord.com/invite/Qc2QTTH5dF",
+ },
+ ],
+ collaborate: () => [
+ { name: "Partner with us", href: `/about#partner-with-us` },
+ {
+ name: "Sponsorships",
+ href: `/about#sponsorships`,
+ },
+ {
+ name: "Contribute",
+ href: `/about#contribute`,
+ },
+ ],
+};
+
+export function FooterContent() {
+ return (
+
+
+
+
+
+ {/*
Subscribe to our newsletter */}
+
+
+ BlockNote is an extensible React rich text editor with support for
+ block-based editing, collaboration and comes with ready-to-use
+ customizable UI components.
+
+ {/*
*/}
+
+
+
+
+
Learn
+
+ {navigation.general.map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
+
Collaborate
+
+ {navigation.collaborate().map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
+
Community
+
+ {navigation.community.map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+ © {new Date().getFullYear()} BlockNote maintainers. All
+ rights reserved.
+
+
+
+
+
+ );
+}
+
+export function Footer({ menu }: { menu?: boolean }): ReactElement {
+ return (
+
+ {/*
*/}
+ {/*
+
+
+ */}
+
+
+
+
+ );
+}
diff --git a/docs/components/Logo.tsx b/docs/components/Logo.tsx
new file mode 100644
index 0000000000..dfba4ebc2c
--- /dev/null
+++ b/docs/components/Logo.tsx
@@ -0,0 +1,15 @@
+import { ThemedImage } from "./ThemedImage";
+
+export function Logo() {
+ return (
+
+
+
+ );
+}
diff --git a/docs/components/Navigation.tsx b/docs/components/Navigation.tsx
new file mode 100644
index 0000000000..be25a4b387
--- /dev/null
+++ b/docs/components/Navigation.tsx
@@ -0,0 +1,11 @@
+/* eslint-disable @typescript-eslint/no-unsafe-call -- Lots of Nextra magic. */
+/* eslint-disable @typescript-eslint/no-unsafe-member-access -- Lots of Nextra magic. */
+/* eslint-disable @typescript-eslint/no-unsafe-assignment -- Lots of Nextra magic. */
+
+import { Navbar } from "nextra-theme-docs";
+
+export function Navigation(props: any) {
+ // items last to override the default
+ // return hello
;
+ return ;
+}
diff --git a/docs/components/ThemedImage.tsx b/docs/components/ThemedImage.tsx
new file mode 100644
index 0000000000..f41c5565dc
--- /dev/null
+++ b/docs/components/ThemedImage.tsx
@@ -0,0 +1,18 @@
+import Image from "next/image";
+import { useTheme } from "nextra-theme-docs";
+
+export function ThemedImage(
+ props: {
+ darkImage: React.ComponentProps["src"];
+ } & React.ComponentProps,
+) {
+ const { theme } = useTheme();
+ const { darkImage, ...rest } = props;
+ if (theme === "dark") {
+ // eslint-disable-next-line jsx-a11y/alt-text
+ return ;
+ } else {
+ // eslint-disable-next-line jsx-a11y/alt-text
+ return ;
+ }
+}
diff --git a/docs/components/cards.tsx b/docs/components/cards.tsx
new file mode 100644
index 0000000000..b4742539a5
--- /dev/null
+++ b/docs/components/cards.tsx
@@ -0,0 +1,128 @@
+import cn from "clsx";
+import Image from "next/image";
+import NextLink from "next/link";
+import type { ComponentProps, CSSProperties, ReactNode } from "react";
+
+const classes = {
+ cards: cn(
+ "nextra-cards nx-mt-4 nx-gap-4 nx-grid",
+ "nx-not-prose" // for nextra-theme-docs
+ ),
+ card: cn(
+ "nextra-card nx-group nx-flex nx-flex-col nx-justify-between nx-overflow-hidden nx-rounded-lg nx-border nx-border-gray-200",
+ "nx-text-current nx-no-underline dark:nx-shadow-none",
+ "hover:nx-shadow-gray-100 dark:hover:nx-shadow-none nx-shadow-gray-100",
+ "active:nx-shadow-sm active:nx-shadow-gray-200",
+ "nx-transition-all nx-duration-200 hover:nx-border-gray-300"
+ ),
+ title: cn(
+ "nx-flex nx-font-semibold nx-items-start nx-text-gray-700 hover:nx-text-gray-900"
+ ),
+};
+
+const arrowEl = (
+
+ →
+
+);
+
+export function Card({
+ children,
+ title,
+ icon,
+ image,
+ arrow,
+ href,
+ authorImage,
+ authorName,
+ ...props
+}: {
+ children?: ReactNode;
+ title: string;
+ icon?: ReactNode;
+ image?: boolean;
+ arrow?: boolean;
+ href: string;
+ authorImage?: string;
+ authorName?: string;
+}) {
+ const animatedArrow = arrow ? arrowEl : null;
+
+ if (image) {
+ return (
+
+ {children}
+
+ {icon}
+
+ {title}
+ {animatedArrow}
+
+
+
+ );
+ }
+
+ return (
+
+
+ {icon}
+ {title}
+ {animatedArrow}
+
+ {/* test
*/}
+
+ {authorImage && }{" "}
+ {authorName && {authorName} }
+ {/* ·
+ 💖 */}
+
+ {/* {children} */}
+
+ );
+}
+
+function _Cards({
+ children,
+ num = 3,
+ className,
+ style,
+ ...props
+}: { num?: number } & ComponentProps<"div">) {
+ return (
+
+ {children}
+
+ );
+}
+
+export const Cards = Object.assign(_Cards, { displayName: "Cards", Card });
diff --git a/docs/components/example/.gitignore b/docs/components/example/.gitignore
new file mode 100644
index 0000000000..dc9b2375c7
--- /dev/null
+++ b/docs/components/example/.gitignore
@@ -0,0 +1 @@
+generated
\ No newline at end of file
diff --git a/docs/components/example/ExampleBlock.tsx b/docs/components/example/ExampleBlock.tsx
new file mode 100644
index 0000000000..c37c9fd7c3
--- /dev/null
+++ b/docs/components/example/ExampleBlock.tsx
@@ -0,0 +1,51 @@
+import dynamic from "next/dynamic";
+import { AiFillCodeSandboxCircle, AiFillGithub } from "react-icons/ai";
+
+import { examples } from "./generated/exampleComponents.gen";
+import "./styles.css";
+
+const baseGitHubURL =
+ "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/TypeCellOS/BlockNote/tree/main/examples/";
+const baseCodeSandboxURL =
+ "https://githubbox.com/TypeCellOS/BlockNote/tree/main/examples/";
+
+const ThemedExample = dynamic(() => import("./ThemedExample"), {
+ ssr: false,
+});
+
+export function ExampleBlock(props: {
+ name: keyof typeof examples;
+ children: any;
+}) {
+ // const example = examplesFlattened.find((e) => e.slug === props.name);
+ // if (!example) {
+ // throw new Error("invalid example");
+ // }
+
+ return (
+
+
+
window.open(`${baseGitHubURL}${props.name}/`)}>
+
+ GitHub
+
+
window.open(`${baseCodeSandboxURL}${props.name}/`)}>
+
+ CodeSandbox
+
+
+
+
+
+ {props.children}
+
+ );
+}
diff --git a/docs/components/example/ExampleList.tsx b/docs/components/example/ExampleList.tsx
new file mode 100644
index 0000000000..9d68d982bc
--- /dev/null
+++ b/docs/components/example/ExampleList.tsx
@@ -0,0 +1,31 @@
+import { Card, Cards } from "../../components/cards";
+import { EXAMPLES_LIST } from "../../components/example/generated/exampleList.gen";
+
+export function ExampleGroup(props: { examples: (typeof EXAMPLES_LIST)[0] }) {
+ return (
+ <>
+
+ {props.examples.text}
+
+
+ {props.examples.items.map((project, i) => {
+ return (
+
+ );
+ })}
+
+ >
+ );
+}
+
+export function ExampleList(props: any) {
+ return EXAMPLES_LIST.map((group) => (
+
+ ));
+}
diff --git a/docs/components/example/ThemedExample.tsx b/docs/components/example/ThemedExample.tsx
new file mode 100644
index 0000000000..2cf2c7f9d0
--- /dev/null
+++ b/docs/components/example/ThemedExample.tsx
@@ -0,0 +1,17 @@
+"use client";
+import { BlockNoteContext } from "@blocknote/react";
+import { useTheme } from "nextra-theme-docs";
+import { examples } from "./generated/exampleComponents.gen";
+
+export default function ThemedExample(props: { name: keyof typeof examples }) {
+ const example = examples[props.name];
+ const App = example.App;
+ const { theme } = useTheme();
+
+ return (
+
+
+
+ );
+}
diff --git a/docs/components/example/index.tsx b/docs/components/example/index.tsx
new file mode 100644
index 0000000000..51947cdab5
--- /dev/null
+++ b/docs/components/example/index.tsx
@@ -0,0 +1,12 @@
+import { examples } from "./generated/exampleComponents.gen";
+
+export function Example(props: { name: keyof typeof examples }) {
+
+ const example = examples[props.name];
+ if (!example) {
+ throw new Error(`Example ${props.name} not found`);
+ }
+ const ExampleWithCode = example.ExampleWithCode;
+
+ return ;
+}
diff --git a/docs/components/example/styles.css b/docs/components/example/styles.css
new file mode 100644
index 0000000000..db4a1d2e5d
--- /dev/null
+++ b/docs/components/example/styles.css
@@ -0,0 +1,27 @@
+:focus-visible {
+ box-shadow: unset !important;
+}
+
+.demo .nextra-code-block pre {
+ background-color: transparent !important;
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+.demo .nextra-code-block code > span {
+ padding: 0 !important;
+}
+
+.demo .bn-container, .demo .bn-editor {
+ height: 100%;
+}
+
+.demo .bn-editor {
+ overflow: auto;
+ padding-block: 1rem;
+}
+
+.demo a {
+ color: revert;
+ text-decoration: revert;
+}
\ No newline at end of file
diff --git a/docs/components/pages/landing/community/Community.tsx b/docs/components/pages/landing/community/Community.tsx
new file mode 100644
index 0000000000..e0da85e5fa
--- /dev/null
+++ b/docs/components/pages/landing/community/Community.tsx
@@ -0,0 +1,20 @@
+import { FC } from "react";
+import { Contributors } from "@/components/pages/landing/community/Contributors";
+import { Section } from "@/components/pages/landing/shared/Section";
+import { Sponsors } from "@/components/pages/landing/community/Sponsors";
+import { SectionIntro } from "@/components/pages/landing/shared/Headings";
+
+export const Community: FC = () => (
+
+);
diff --git a/docs/components/pages/landing/community/Contributors.tsx b/docs/components/pages/landing/community/Contributors.tsx
new file mode 100644
index 0000000000..71c7faf92e
--- /dev/null
+++ b/docs/components/pages/landing/community/Contributors.tsx
@@ -0,0 +1,131 @@
+import { Link } from "nextra-theme-docs";
+import Image from "next/image";
+import { DiscordIcon, GitHubIcon } from "nextra/icons";
+import { SectionSubHeader } from "@/components/pages/landing/shared/Headings";
+import { JoinButton } from "@/components/pages/landing/community/JoinButton";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+
+// TODO: Use GitHub API
+function fetchContributors(): { username: string; avatarUrl: string }[] {
+ return [
+ {
+ username: "YousefED",
+ avatarUrl: "https://avatars.githubusercontent.com/u/368857?v=4",
+ },
+ {
+ username: "17Amir17",
+ avatarUrl: "https://avatars.githubusercontent.com/u/36531255?v=4",
+ },
+ {
+ username: "matthewlipski",
+ avatarUrl: "https://avatars.githubusercontent.com/u/50169049?v=4",
+ },
+ {
+ username: "GuySerfaty",
+ avatarUrl: "https://avatars.githubusercontent.com/u/17720782?v=4",
+ },
+ {
+ username: "tomeryp",
+ avatarUrl: "https://avatars.githubusercontent.com/u/4117403?v=4",
+ },
+ {
+ username: "horacioh",
+ avatarUrl: "https://avatars.githubusercontent.com/u/725120?v=4",
+ },
+ {
+ username: "i-am-chitti",
+ avatarUrl: "https://avatars.githubusercontent.com/u/60139930?v=4",
+ },
+ {
+ username: "DAlperin",
+ avatarUrl: "https://avatars.githubusercontent.com/u/16063713?v=4",
+ },
+ {
+ username: "tensor-tian",
+ avatarUrl: "https://avatars.githubusercontent.com/u/101185214?v=4",
+ },
+ {
+ username: "sudarshanshenoy",
+ avatarUrl: "https://avatars.githubusercontent.com/u/13462896?v=4",
+ },
+ {
+ username: "cuire",
+ avatarUrl: "https://avatars.githubusercontent.com/u/81014305?v=4",
+ },
+ {
+ username: "fogle",
+ avatarUrl: "https://avatars.githubusercontent.com/u/39360?v=4",
+ },
+ {
+ username: "richmengsix",
+ avatarUrl: "https://avatars.githubusercontent.com/u/2321921?v=4",
+ },
+ {
+ username: "PhilipWillms",
+ avatarUrl: "https://avatars.githubusercontent.com/u/44462043?v=4",
+ },
+ {
+ username: "niclas-j",
+ avatarUrl: "https://avatars.githubusercontent.com/u/35239311?v=4",
+ },
+ {
+ username: "danlgz",
+ avatarUrl: "https://avatars.githubusercontent.com/u/26347085?v=4",
+ },
+ {
+ username: "CTNicholas",
+ avatarUrl: "https://avatars.githubusercontent.com/u/33033422?v=4",
+ },
+ {
+ username: "charlesfrisbee",
+ avatarUrl: "https://avatars.githubusercontent.com/u/32081962?v=4",
+ },
+ ];
+}
+
+export const Contributors = () => (
+
+
+ Contributors
+
+
+ {fetchContributors().map((contributor) => (
+ //
+
+
+
+ //
+ ))}
+
+
+
+
+
+
+);
diff --git a/docs/components/pages/landing/community/JoinButton.tsx b/docs/components/pages/landing/community/JoinButton.tsx
new file mode 100644
index 0000000000..589ff2de8c
--- /dev/null
+++ b/docs/components/pages/landing/community/JoinButton.tsx
@@ -0,0 +1,56 @@
+import { Link } from "nextra-theme-docs";
+import { ComponentProps, FC } from "react";
+
+export const JoinButton = (props: {
+ text: string;
+ subtext: string;
+ icon: FC>;
+ linkTitle: string;
+ linkUrl: string;
+}) => {
+ const Icon = props.icon;
+
+ return (
+
+
+
+
+
+
+ {props.text}
+
+
{props.subtext}
+
+
+ {props.linkTitle + " "}
+
+
+
+
+
+ );
+};
diff --git a/docs/components/pages/landing/community/SponsorCard.tsx b/docs/components/pages/landing/community/SponsorCard.tsx
new file mode 100644
index 0000000000..20c0d57080
--- /dev/null
+++ b/docs/components/pages/landing/community/SponsorCard.tsx
@@ -0,0 +1,32 @@
+import Image from "next/image";
+
+export type SponsorCardProps = {
+ name: string;
+ logo: {
+ light: Parameters[0]["src"];
+ dark: Parameters[0]["src"];
+ };
+ tagline?: string;
+};
+
+export function SponsorCard(props: SponsorCardProps) {
+ return (
+
+
+
+ {props.tagline && (
+
+ {props.tagline}
+
+ )}
+
+ );
+}
diff --git a/docs/components/pages/landing/community/Sponsors.tsx b/docs/components/pages/landing/community/Sponsors.tsx
new file mode 100644
index 0000000000..7f429cbcaa
--- /dev/null
+++ b/docs/components/pages/landing/community/Sponsors.tsx
@@ -0,0 +1,81 @@
+import {
+ SponsorCard,
+ SponsorCardProps,
+} from "@/components/pages/landing/community/SponsorCard";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+import { SectionSubHeader } from "@/components/pages/landing/shared/Headings";
+
+import fermatDark from "../../../../public/img/sponsors/fermat-dark.png";
+import fermatLight from "../../../../public/img/sponsors/fermat.png";
+import nlnetDark from "../../../../public/img/sponsors/nlnet-dark.svg";
+import nlnetLight from "../../../../public/img/sponsors/nlnet.svg";
+import noteplanDark from "../../../../public/img/sponsors/noteplan-dark.png";
+import noteplanLight from "../../../../public/img/sponsors/noteplan.png";
+import poggioDark from "../../../../public/img/sponsors/poggio-dark.svg";
+import poggioLight from "../../../../public/img/sponsors/poggio.svg";
+import twentyDark from "../../../../public/img/sponsors/twenty-dark.png";
+import twentyLight from "../../../../public/img/sponsors/twenty.png";
+import typecellDark from "../../../../public/img/sponsors/typecell-dark.svg";
+import typecellLight from "../../../../public/img/sponsors/typecell.svg";
+
+export const sponsorsCardData: SponsorCardProps[] = [
+ {
+ logo: {
+ light: fermatLight,
+ dark: fermatDark,
+ },
+ name: "Fermat",
+ },
+ {
+ logo: {
+ light: nlnetLight,
+ dark: nlnetDark,
+ },
+ name: "NLNet",
+ },
+ {
+ logo: {
+ light: typecellLight,
+ dark: typecellDark,
+ },
+ name: "TypeCell",
+ },
+ {
+ logo: {
+ light: poggioLight,
+ dark: poggioDark,
+ },
+ name: "Poggio",
+ },
+ {
+ logo: {
+ light: twentyLight,
+ dark: twentyDark,
+ },
+ name: "Twenty",
+ tagline: "YC S23",
+ },
+ {
+ logo: {
+ light: noteplanLight,
+ dark: noteplanDark,
+ },
+ name: "Noteplan",
+ tagline: "Apple Top Notes Apps",
+ },
+];
+
+export function Sponsors() {
+ return (
+
+
+ Sponsors & users
+
+
+ {sponsorsCardData.map((sponsor) => (
+
+ ))}
+
+
+ );
+}
diff --git a/docs/components/pages/landing/faq/FAQ.tsx b/docs/components/pages/landing/faq/FAQ.tsx
new file mode 100644
index 0000000000..014f1ff81d
--- /dev/null
+++ b/docs/components/pages/landing/faq/FAQ.tsx
@@ -0,0 +1,65 @@
+import { Link } from "nextra-theme-docs";
+import { SectionIntro } from "@/components/pages/landing/shared/Headings";
+import { Section } from "@/components/pages/landing/shared/Section";
+
+const faqs = [
+ {
+ id: 1,
+ question: "Isn't it easier to use a Headless editor framework?",
+ answer: `There are a number of really powerful headless text editor frameworks available. In fact, BlockNote is built on Prosemirror and TipTap.
+ However, even when using a headless library, it takes several months and requires deep expertise to build a fully-featured editor with a polished UI that your users expect.`,
+ },
+ {
+ id: 2,
+ question: "Is BlockNote ready for production use?",
+ answer: `BlockNote is used by several companies in production. Also, we didn't reinvent the wheel. The core editor is built on top of Prosemirror - a battle tested framework that powers software from Atlassian, Gitlab, the New York Times, and many others.`,
+ },
+ {
+ id: 3,
+ question: "Can I add my own extensions to BlockNote?",
+ answer: `BlockNote comes with lot of functionality out-of-the-box, but we understand that every use case is different. You can easily customize the built-in UI Components, or create your own custom Blocks, Inline Content, and Styles.
+ If you want to go even further, you can extend the core editor with additional Prosemirror or TipTap plugins.`,
+ },
+ {
+ id: 4,
+ question: "Is BlockNote really free?",
+ answer: `100% of BlockNote is open source. While the library is free, we offer paid consultancy and support services to help sustain BlockNote.
+ Sponsoring the project is encouraged if you are using BlockNote in a commercial project.`,
+ },
+];
+
+export function FAQ() {
+ return (
+
+
+
+ More questions? Reach out to our team.
+ >
+ }
+ />
+
+ {/*
+ Frequently asked questions
+
+
+ More questions? Reach out to our team.
+
*/}
+
+ {faqs.map((faq) => (
+
+
+ {faq.question}
+
+
+ {faq.answer}
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/docs/components/pages/landing/features/FeatureCard.tsx b/docs/components/pages/landing/features/FeatureCard.tsx
new file mode 100644
index 0000000000..e191ae554e
--- /dev/null
+++ b/docs/components/pages/landing/features/FeatureCard.tsx
@@ -0,0 +1,49 @@
+import Image from "next/image";
+import { IconType } from "react-icons";
+
+export type FeatureCardProps = {
+ title: string;
+ description: string;
+ icon: IconType;
+ thumbnail?: {
+ light: Parameters[0]["src"];
+ dark: Parameters[0]["src"];
+ };
+};
+
+export function FeatureCard(props: FeatureCardProps) {
+ const Icon = props.icon;
+
+ return (
+
+ {props.thumbnail && (
+
+
+
+
+ )}
+
+
+
+
+
+
+ {props.title}
+
+
+ {props.description}
+
+
+
+
+ );
+}
diff --git a/docs/components/pages/landing/features/Features.tsx b/docs/components/pages/landing/features/Features.tsx
new file mode 100644
index 0000000000..974f7e8ce1
--- /dev/null
+++ b/docs/components/pages/landing/features/Features.tsx
@@ -0,0 +1,126 @@
+import {
+ RiMenuAddFill,
+ RiPaintBrushFill,
+ RiTeamFill,
+ RiIndentIncrease,
+ RiSettings3Fill,
+} from "react-icons/ri";
+import {
+ BiLogoTypescript,
+ BiLogoJavascript,
+ BiLogoMarkdown,
+ BiSolidWrench,
+} from "react-icons/bi";
+import { Section } from "@/components/pages/landing/shared/Section";
+import {
+ FeatureCard,
+ FeatureCardProps,
+} from "@/components/pages/landing/features/FeatureCard";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+import { SectionIntro } from "@/components/pages/landing/shared/Headings";
+
+import worksOutOfTheBoxLight from "../../../../public/img/features/works_out_of_the_box_light.gif";
+import worksOutOfTheBoxDark from "../../../../public/img/features/works_out_of_the_box_dark.gif";
+import blockBasedDesignLight from "../../../../public/img/features/block_based_design_light.gif";
+import blockBasedDesignDark from "../../../../public/img/features/block_based_design_dark.gif";
+import collaborationLight from "../../../../public/img/features/collaboration_light.gif";
+import collaborationDark from "../../../../public/img/features/collaboration_dark.gif";
+
+export const featuresCardData: FeatureCardProps[] = [
+ {
+ title: "Works out of the box",
+ description:
+ "Built-in components like menus and toolbars instantly provide a familiar, Notion-style user experience - but are also fully customizable.",
+ icon: RiSettings3Fill,
+ thumbnail: {
+ light: worksOutOfTheBoxLight,
+ dark: worksOutOfTheBoxDark,
+ },
+ },
+ {
+ title: "Block-based design",
+ description:
+ "Drag, drop, or nest blocks. The block-based design enables users to create beautiful docs and unlocks a powerful API for engineers.",
+ icon: RiIndentIncrease,
+ thumbnail: {
+ light: blockBasedDesignLight,
+ dark: blockBasedDesignDark,
+ },
+ },
+ {
+ title: "Collaboration",
+ description:
+ "Craft beautiful multiplayer experiences with support for real-time collaboration.",
+ icon: RiTeamFill,
+ thumbnail: {
+ light: collaborationLight,
+ dark: collaborationDark,
+ },
+ },
+ {
+ title: "Extensibility",
+ description:
+ "Want to go next level? Extend the editor with custom blocks, schemas, and plugins.",
+ icon: RiMenuAddFill,
+ },
+ {
+ title: "First-class Typescript support",
+ description:
+ "Get full type safety and autocompletion even when extending your editor with custom blocks and schemas.",
+ icon: BiLogoTypescript,
+ },
+ {
+ title: "Theming",
+ description:
+ "Customize the look and feel of your editor to match your brand. Built-in support for light & dark modes.",
+ icon: RiPaintBrushFill,
+ },
+ {
+ title: "Markdown & HTML",
+ description:
+ "Convert documents from BlockNote JSON to and from Markdown and HTML.",
+ icon: BiLogoMarkdown,
+ },
+ {
+ title: "Prosemirror based",
+ description:
+ "Builds on top of the battle-tested Prosemirror, but without the steep learning curve.",
+ icon: BiSolidWrench,
+ },
+ {
+ title: "Vanilla JS",
+ description:
+ "Not using React? BlockNote also works with vanilla JS for use with other frameworks.",
+ icon: BiLogoJavascript,
+ },
+];
+
+export function Features() {
+ return (
+
+
+
+
+ {featuresCardData.map((feature) => (
+
+ ))}
+ {/* ...and more: (TODO)
+
+ Helpful Placeholders
+ Smooth Animations
+ Image Uploads
+ Resizable Tables
+ */}
+
+
+
+ );
+}
diff --git a/docs/components/pages/landing/gradients.css b/docs/components/pages/landing/gradients.css
new file mode 100644
index 0000000000..625df0aea2
--- /dev/null
+++ b/docs/components/pages/landing/gradients.css
@@ -0,0 +1,98 @@
+section {
+ --text-color: #000000;
+ --bg-color: #ffffff;
+
+ --glow-blue: 185, 100%, 50%;
+ --glow-purple: 261, 100%, 50%;
+}
+
+.dark section {
+ --text-color: #ffffff;
+ --bg-color: #000000;
+}
+
+.editor-glow {
+ --glow-opacity: 0.4;
+ background: conic-gradient(
+ from 33deg at 50% 50%,
+ hsla(var(--glow-blue), var(--glow-opacity)),
+ hsla(var(--glow-purple), var(--glow-opacity)),
+ hsla(var(--glow-blue), var(--glow-opacity))
+ );
+ filter: blur(120px);
+}
+
+@property --button-glow-angle {
+ syntax: "";
+ inherits: false;
+ initial-value: 33deg;
+}
+@keyframes button-glow-rotation {
+ from {
+ --button-glow-angle: 0deg;
+ }
+
+ to {
+ --button-glow-angle: 360deg;
+ }
+}
+@property --button-glow-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 0%;
+}
+@keyframes button-glow-translation {
+ from {
+ --button-glow-position: 0%;
+ }
+
+ to {
+ --button-glow-position: 200%;
+ }
+}
+.button-glow {
+ --glow-opacity: 0.6;
+ animation: button-glow-rotation 10s linear infinite;
+ background: conic-gradient(
+ from var(--button-glow-angle) at 50% 50%,
+ hsla(var(--glow-blue), var(--glow-opacity)),
+ hsla(var(--glow-purple), var(--glow-opacity)),
+ hsla(var(--glow-blue), var(--glow-opacity))
+ );
+ /*animation: button-glow-translation 10s linear infinite;*/
+ /*background:*/
+ /* linear-gradient(*/
+ /* 90deg,*/
+ /* hsla(var(--glow-purple), var(--glow-opacity)) calc(-200% + var(--button-glow-position)),*/
+ /* hsla(var(--glow-blue), var(--glow-opacity)) calc(-100% + var(--button-glow-position)),*/
+ /* hsla(var(--glow-purple), var(--glow-opacity)) calc(0% + var(--button-glow-position)),*/
+ /* hsla(var(--glow-blue), var(--glow-opacity)) calc(100% + var(--button-glow-position))*/
+ /* );*/
+ filter: blur(20px);
+ opacity: 0;
+ transition: opacity 0.2s linear;
+}
+.button-glow-parent:hover .button-glow {
+ opacity: 1;
+ transition: opacity 0.2s linear;
+}
+
+.section-glow {
+ --glow-opacity: 0.15;
+ background: linear-gradient(0deg, var(--bg-color) 80%, transparent),
+ linear-gradient(
+ 90deg,
+ hsla(var(--glow-purple), var(--glow-opacity)),
+ hsla(var(--glow-blue), var(--glow-opacity))
+ );
+}
+
+.section-border {
+ width: 100%;
+ height: 1px;
+ background: linear-gradient(90deg, #5900ff60, #00eaff60);
+}
+
+.feature-icon {
+ background: conic-gradient(from 33deg, #00eaff80, #5900ff80, #00eaff80);
+}
diff --git a/docs/components/pages/landing/hero/Demo.tsx b/docs/components/pages/landing/hero/Demo.tsx
new file mode 100644
index 0000000000..548130f56d
--- /dev/null
+++ b/docs/components/pages/landing/hero/Demo.tsx
@@ -0,0 +1,42 @@
+import dynamic from "next/dynamic";
+import Image from "next/image";
+import tryHereImageDark from "@/public/img/assets/try.dark.svg";
+import tryHereImageLight from "@/public/img/assets/try.svg";
+
+function TryHereImageBase(props: { dark: boolean }) {
+ return (
+
+ );
+}
+
+function TryHereImage() {
+ return (
+ <>
+
+
+ >
+ );
+}
+
+const DemoEditor = dynamic(
+ () => import("@/components/pages/landing/hero/DemoEditor"),
+ {
+ ssr: false,
+ },
+);
+
+export function Demo(props: { theme: "light" | "dark" }) {
+ return (
+
+ );
+}
diff --git a/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx b/docs/components/pages/landing/hero/DemoEditor.tsx
similarity index 66%
rename from packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx
rename to docs/components/pages/landing/hero/DemoEditor.tsx
index aa3cc7ab05..4a545b5f72 100644
--- a/packages/website/docs/.vitepress/theme/components/Examples/BlockNote/ReactBlockNote.tsx
+++ b/docs/components/pages/landing/hero/DemoEditor.tsx
@@ -1,10 +1,12 @@
import { uploadToTmpFilesDotOrg_DEV_ONLY } from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
import "@blocknote/react/style.css";
-import { useEffect, useMemo } from "react";
+import { useCallback, useMemo, useState } from "react";
import YPartyKitProvider from "y-partykit/provider";
import * as Y from "yjs";
-import * as styles from "./ReactBlockNote.module.css";
+
+import "./styles.css";
const colors = [
"#958DF1",
@@ -52,7 +54,7 @@ function getUTCDateYYYYMMDD() {
return `${year}${formattedMonth}${formattedDay}`;
}
-export function ReactBlockNote(props: { theme: "light" | "dark" }) {
+export default function DemoEditor(props: { theme: "light" | "dark" }) {
const [doc, provider] = useMemo(() => {
console.log("create");
const doc = new Y.Doc();
@@ -60,18 +62,13 @@ export function ReactBlockNote(props: { theme: "light" | "dark" }) {
"blocknote.yousefed.partykit.dev",
// "127.0.0.1:1999", // (dev server)
"homepage-" + getUTCDateYYYYMMDD(),
- doc
+ doc,
);
return [doc, provider];
}, []);
- const editor = useBlockNote(
+ const editor = useCreateBlockNote(
{
- domAttributes: {
- editor: {
- class: styles.editor,
- },
- },
collaboration: {
provider,
fragment: doc.getXmlFragment("blocknote"),
@@ -82,24 +79,19 @@ export function ReactBlockNote(props: { theme: "light" | "dark" }) {
},
uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
},
- [props.theme]
+ [],
);
- useEffect(() => {
- let shownAlert = false;
- const listener = () => {
- if (!shownAlert) {
- alert(
- "Text you enter in this demo is displayed publicly on the internet to show multiplayer features. Be kind :)"
- );
- shownAlert = true;
- }
- };
- editor?.domElement?.addEventListener("focus", listener);
- return () => {
- editor?.domElement?.removeEventListener("focus", listener);
- };
- }, [editor?.domElement]);
+ const [warningShown, setWarningShown] = useState(false);
+
+ const focus = useCallback(() => {
+ if (!warningShown) {
+ alert(
+ "Text you enter in this demo is displayed publicly on the internet to show multiplayer features. Be kind :)",
+ );
+ setWarningShown(true);
+ }
+ }, [warningShown]);
- return ;
+ return ;
}
diff --git a/docs/components/pages/landing/hero/Hero.tsx b/docs/components/pages/landing/hero/Hero.tsx
new file mode 100644
index 0000000000..ee774cea6e
--- /dev/null
+++ b/docs/components/pages/landing/hero/Hero.tsx
@@ -0,0 +1,22 @@
+import { useTheme } from "nextra-theme-docs";
+import { Section } from "@/components/pages/landing/shared/Section";
+import { Text } from "@/components/pages/landing/hero/Text";
+import { Demo } from "@/components/pages/landing/hero/Demo";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+
+export function Hero() {
+ const { theme } = useTheme();
+
+ return (
+
+ );
+}
diff --git a/docs/components/pages/landing/hero/Text.tsx b/docs/components/pages/landing/hero/Text.tsx
new file mode 100644
index 0000000000..81e044f019
--- /dev/null
+++ b/docs/components/pages/landing/hero/Text.tsx
@@ -0,0 +1,27 @@
+import {
+ HeroText,
+ SectionSubtext,
+} from "@/components/pages/landing/shared/Headings";
+import { CTAButton } from "@/components/pages/landing/shared/CTAButton";
+
+export function Text() {
+ return (
+
+
+ The open source
+
+ Block-Based
+
+ rich text editor
+
+
+ A beautiful text editor that just works. Easily add an editor to your
+ app that users will love. Customize it with your own functionality like
+ custom blocks or AI tooling.
+
+
+ Get Started
+
+
+ );
+}
diff --git a/docs/components/pages/landing/hero/styles.css b/docs/components/pages/landing/hero/styles.css
new file mode 100644
index 0000000000..73e6cc90f0
--- /dev/null
+++ b/docs/components/pages/landing/hero/styles.css
@@ -0,0 +1,16 @@
+.hero .bn-container, .hero .bn-editor {
+ height: 100%
+}
+
+.hero .bn-editor {
+ overflow: auto;
+ min-height: 100%;
+ /* Removes focus outline */
+ box-shadow: none !important;
+ padding-block: 1rem
+}
+
+.hero a {
+ color: revert;
+ text-decoration: revert;
+}
\ No newline at end of file
diff --git a/docs/components/pages/landing/index.tsx b/docs/components/pages/landing/index.tsx
new file mode 100644
index 0000000000..d8f3b4a07d
--- /dev/null
+++ b/docs/components/pages/landing/index.tsx
@@ -0,0 +1,34 @@
+import { Community } from "@/components/pages/landing/community/Community";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+import { Hero } from "@/components/pages/landing/hero/Hero";
+import { Features } from "@/components/pages/landing/features/Features";
+import { Letter } from "@/components/pages/landing/letter/Letter";
+import { FAQ } from "@/components/pages/landing/faq/FAQ";
+import "@/components/pages/landing/gradients.css";
+import "@/components/pages/landing/styles.css";
+
+export function BlockNoteHome() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/docs/components/pages/landing/letter/Letter.tsx b/docs/components/pages/landing/letter/Letter.tsx
new file mode 100644
index 0000000000..d339ab5075
--- /dev/null
+++ b/docs/components/pages/landing/letter/Letter.tsx
@@ -0,0 +1,60 @@
+import cn from "classnames";
+import { CTAButton } from "@/components/pages/landing/shared/CTAButton";
+import { Section } from "@/components/pages/landing/shared/Section";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+import { HeroText } from "@/components/pages/landing/shared/Headings";
+import gradients from "@/components/pages/landing/shared/gradients.module.css";
+
+export function Letter() {
+ return (
+
+
+
+ Let's build
+
+
+
+ When we started building an Open Source Notion alternative, we
+ figured: "How hard can it be?". Pretty hard, it turns out.
+ Text editors in 2024? More complex than we thought.
+
+
+
+ After going down many rabbit holes and becoming accidental wizards
+ in Prosemirror (the industry standard used by giants like NY Times,
+ Atlassian, Gitlab and many others), we figured that we could save
+ other devs a lot of pain by creating a modern, batteries-included,
+ block-based text editor on top of it.
+
+
+
+ We're excited to share BlockNote with you. No more dealing with
+ low-level positions; use the strongly typed, block-based API to work
+ with your editor and documents. No need to build all interface
+ elements from scratch; it comes with modern UI components
+ out-of-the-box. Now, you can add a rich text editor with a polished
+ UX to your app with just a few lines of code.
+
+
+
+ It's early days, but the excitement is real. We're seeing
+ a mix of companies, enthusiasts, and community heroes jumping in. As
+ a community-led open source project, we're looking forward to
+ your contributions, feedback, or collaboration!
+
+
+
+
+
+
+
+ Start Building
+
+
+
+
+ );
+}
diff --git a/docs/components/pages/landing/shared/CTAButton.tsx b/docs/components/pages/landing/shared/CTAButton.tsx
new file mode 100644
index 0000000000..13bdb76e2f
--- /dev/null
+++ b/docs/components/pages/landing/shared/CTAButton.tsx
@@ -0,0 +1,24 @@
+import Link from "next/link";
+import { ReactNode } from "react";
+
+export function CTAButton(props: {
+ href: string;
+ hoverGlow?: boolean;
+ variant?: "small" | "large";
+ children: ReactNode;
+}) {
+ return (
+
+
+ {props.children}
+
+ {props.hoverGlow && (
+
+ )}
+
+ );
+}
diff --git a/docs/components/pages/landing/shared/FadeIn.tsx b/docs/components/pages/landing/shared/FadeIn.tsx
new file mode 100644
index 0000000000..c73496b23b
--- /dev/null
+++ b/docs/components/pages/landing/shared/FadeIn.tsx
@@ -0,0 +1,50 @@
+import { motion, useInView } from "framer-motion";
+import { useRef } from "react";
+
+export function FadeIn({
+ children,
+ className,
+ noVertical,
+ delay,
+ viewTriggerOffset,
+}: {
+ children: React.ReactNode;
+ className?: string;
+ noVertical?: boolean;
+ delay?: number;
+ viewTriggerOffset?: boolean;
+}) {
+ const ref = useRef(null);
+ const inView = useInView(ref, {
+ once: true,
+ margin: viewTriggerOffset ? "-128px" : "0px",
+ });
+
+ const fadeUpVariants = {
+ initial: {
+ opacity: 0,
+ y: noVertical ? 0 : 24,
+ },
+ animate: {
+ opacity: 1,
+ y: 0,
+ },
+ };
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/docs/components/pages/landing/shared/Headings.tsx b/docs/components/pages/landing/shared/Headings.tsx
new file mode 100644
index 0000000000..ea6f90ed05
--- /dev/null
+++ b/docs/components/pages/landing/shared/Headings.tsx
@@ -0,0 +1,73 @@
+import cn from "classnames";
+import gradients from "./gradients.module.css";
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+import { ReactNode } from "react";
+
+export function HeroText({
+ children,
+ className,
+ h1,
+}: {
+ children: React.ReactNode;
+ className?: string;
+ h1?: boolean;
+}) {
+ const combinedClassname = cn(
+ gradients.heroHeading,
+ "leading-none text-6xl text-transparent font-medium md:text-7xl",
+ className,
+ );
+
+ if (h1) {
+ return {children} ;
+ }
+ return {children} ;
+}
+
+export function SectionHeader({ children }: { children: React.ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
+
+export function SectionSubHeader({ children }: { children: React.ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
+
+export function SectionSubtext({ children }: { children: React.ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
+
+export function SectionIntro({
+ header,
+ subtext,
+}: {
+ header: ReactNode;
+ subtext: ReactNode;
+}) {
+ return (
+
+ {header}
+ {subtext}
+
+ );
+}
diff --git a/docs/components/pages/landing/shared/Section.tsx b/docs/components/pages/landing/shared/Section.tsx
new file mode 100644
index 0000000000..2c16d8d517
--- /dev/null
+++ b/docs/components/pages/landing/shared/Section.tsx
@@ -0,0 +1,20 @@
+import { FadeIn } from "@/components/pages/landing/shared/FadeIn";
+import { ReactNode } from "react";
+
+export function Section(props: {
+ gradientBackground?: boolean;
+ className?: string;
+ children: ReactNode;
+}) {
+ return (
+
+ {props.gradientBackground && (
+
+
+
+ )}
+ {props.children}
+
+ );
+}
diff --git a/docs/components/pages/landing/shared/gradients.module.css b/docs/components/pages/landing/shared/gradients.module.css
new file mode 100644
index 0000000000..1e0ce34cf7
--- /dev/null
+++ b/docs/components/pages/landing/shared/gradients.module.css
@@ -0,0 +1,137 @@
+.barBorder {
+ border: rgba(255, 255, 255, 0.4) 1px solid;
+ :global(.light) & {
+ border: rgba(0, 0, 0, 0.6) 1px solid;
+ }
+}
+
+.tooltipArrow {
+ display: block;
+ border-left: 8px solid transparent;
+ border-bottom: 8px solid #333333;
+ border-right: 8px solid transparent;
+ :global(.light) & {
+ border-bottom: 8px solid #f5f5f5;
+ }
+}
+.translatingGlow {
+ background: linear-gradient(32deg, #2a8af6 0%, #a853ba 50%, #e92a67 100%);
+ background-size: 200% 200%;
+ animation: translateGlow 7s linear infinite;
+ will-change: filter;
+}
+
+@keyframes translateGlow {
+ 0% {
+ background-position: -20% -20%;
+ }
+ 25% {
+ background-position: 30% 80%;
+ }
+ 50% {
+ background-position: 110% 110%;
+ }
+ 75% {
+ background-position: 80% 30%;
+ }
+ 100% {
+ background-position: -20% -20%;
+ }
+}
+
+.heroHeading {
+ background: linear-gradient(180deg, #ffffff 0%, #aaaaaa 100%), #ffffff;
+ :global(.light) & {
+ background: linear-gradient(180deg, rgba(0, 0, 0, 0.8) 0%, #000000 100%);
+ background-clip: text;
+ }
+ background-clip: text;
+}
+
+.letterLine {
+ opacity: 0.2;
+ background: linear-gradient(
+ 90deg,
+ #000000 0%,
+ #ffffff 20%,
+ #ffffff 80%,
+ #000000 100%
+ );
+ :global(.light) & {
+ background: linear-gradient(
+ 90deg,
+ #ffffff 0%,
+ #000000 20%,
+ #000000 80%,
+ #ffffff 100%
+ );
+ }
+}
+
+.glow {
+ mix-blend-mode: normal;
+ filter: blur(75px);
+ will-change: filter;
+}
+
+.glowSmall {
+ filter: blur(32px);
+}
+
+.glowBlue {
+ background: linear-gradient(180deg, #58a5ff 0%, #a67af4 100%);
+}
+
+.glowPink {
+ background: linear-gradient(180deg, #ff3358 0%, #ff4fd8 100%);
+}
+
+.glowConic {
+ background: conic-gradient(
+ from 180deg at 50% 50%,
+ #2a8af6 0deg,
+ #a853ba 180deg,
+ #e92a67 360deg
+ );
+}
+
+.glowGray {
+ background: rgba(255, 255, 255, 0.15);
+}
+
+.gradientSectionBorder {
+ --gradient-y-offset: -200px;
+ --gradient-x-offset: -200px;
+ --height: 255px;
+ position: relative;
+ overflow: hidden;
+ will-change: filter;
+}
+
+.gradientSectionBorderLeft {
+ position: absolute;
+ width: 60vw;
+ height: var(--height);
+ left: var(--gradient-x-offset);
+ top: var(--gradient-y-offset);
+ background: linear-gradient(180deg, #58a5ff 0%, #a67af4 100%);
+ border-radius: 100%;
+ mix-blend-mode: normal;
+ filter: blur(50px);
+}
+
+.gradientSectionBorderRight {
+ width: 60vw;
+ position: absolute;
+ height: var(--height);
+ right: var(--gradient-x-offset);
+ top: var(--gradient-y-offset);
+ background: linear-gradient(180deg, #ff3358 0%, #ff4fd8 100%);
+ border-radius: 100%;
+ mix-blend-mode: normal;
+ filter: blur(50px);
+}
+
+.gradientSectionBorderDivider {
+ background: linear-gradient(90deg, #288cf9 0%, #e32c6b 100%);
+}
diff --git a/docs/components/pages/landing/styles.css b/docs/components/pages/landing/styles.css
new file mode 100644
index 0000000000..d45952326f
--- /dev/null
+++ b/docs/components/pages/landing/styles.css
@@ -0,0 +1,21 @@
+.dark footer,
+.dark body {
+ background-color: black !important;
+}
+
+.dark .nextra-nav-container .nextra-nav-container-blur {
+ background-color: rgba(0,0,0,.5) !important;
+}
+
+.nextra-nav-container {
+ z-index: 30;
+}
+
+.thumbnail:before {
+ content: '';
+ width: 100%;
+ aspect-ratio: 16/9;
+ display: block;
+ position: absolute;
+ background: linear-gradient(transparent 50%, var(--bg-color));
+}
\ No newline at end of file
diff --git a/docs/next.config.mjs b/docs/next.config.mjs
new file mode 100644
index 0000000000..e3de90a927
--- /dev/null
+++ b/docs/next.config.mjs
@@ -0,0 +1,168 @@
+/** @type {import('next').NextConfig} */
+import analyzer from "@next/bundle-analyzer";
+import nextra from "nextra";
+import path from "path";
+import { fileURLToPath } from "url";
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const withNextra = nextra({
+ theme: "nextra-theme-docs",
+ themeConfig: "./theme.config.tsx",
+ // options
+ flexsearch: true,
+ staticImage: true,
+ defaultShowCopyCode: true,
+});
+
+const withAnalyzer = analyzer({ enabled: false });
+
+const nextConfig = withAnalyzer(
+ withNextra({
+ // transpilePackages: ["@blocknote/example-react-custom-styles"],
+ images: {
+ remotePatterns: [
+ {
+ protocol: "https",
+ hostname: "avatars.githubusercontent.com",
+ port: "",
+ pathname: "/u/**",
+ },
+ {
+ protocol: "https",
+ hostname: "github.com",
+ port: "",
+ pathname: "/**",
+ },
+ ],
+ },
+ redirects: async () => [
+ {
+ source: "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/docs/introduction",
+ destination: "/docs",
+ permanent: true,
+ },
+ {
+ source: "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/docs/editor",
+ destination: "/docs/editor-basics/setup",
+ permanent: true,
+ },
+ {
+ source: "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/docs/theming",
+ destination: "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/docs/styling-theming",
+ permanent: true,
+ },
+ {
+ source: "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/docs/formatting-toolbar",
+ destination: "/docs/ui-components/formatting-toolbar",
+ permanent: true,
+ },
+ {
+ source: "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/docs/slash-menu",
+ destination: "/docs/ui-components/suggestion-menus",
+ permanent: true,
+ },
+ {
+ source: "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/docs/side-menu",
+ destination: "/docs/ui-components/side-menu",
+ permanent: true,
+ },
+ {
+ source: "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/docs/ui-elements",
+ destination: "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/docs/ui-components",
+ permanent: true,
+ },
+ {
+ source: "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/docs/blocks",
+ destination: "/docs/editor-basics/document-structure",
+ permanent: true,
+ },
+ {
+ source: "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/docs/block-types",
+ destination: "/docs/editor-basics/default-schema",
+ permanent: true,
+ },
+ {
+ source: "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/docs/manipulating-blocks",
+ destination: "/docs/editor-api/manipulating-blocks",
+ permanent: true,
+ },
+ {
+ source: "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/docs/inline-content",
+ destination: "/docs/editor-api/manipulating-inline-content",
+ permanent: true,
+ },
+ {
+ source: "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/docs/cursor-selections",
+ destination: "/docs/editor-api/cursor-selections",
+ permanent: true,
+ },
+ {
+ source: "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/docs/converting-blocks",
+ destination: "/docs/editor-api/converting-blocks",
+ permanent: true,
+ },
+ {
+ source: "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/docs/real-time-collaboration",
+ destination: "/docs/advanced/real-time-collaboration",
+ permanent: true,
+ },
+ {
+ source: "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/docs/nextjs",
+ destination: "/docs/advanced/nextjs",
+ permanent: true,
+ },
+ {
+ source: "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/docs/vanilla-js",
+ destination: "/docs/advanced/vanilla-js",
+ permanent: true,
+ },
+ ],
+ experimental: {
+ externalDir: true,
+ },
+ webpack: (config, { isServer }) => {
+ config.externals.push({
+ // "@blocknote/core": "bncore",
+ // "@blocknote/react": "bnreact",
+ // ...
+ });
+
+ if (config.mode === "development") {
+ // makes sure the local blocknote dependencies get their own chunk, and are not included in every page bundle
+ // in prod mode this should be handled ok by webpack (check with analyzer)
+ config.optimization.splitChunks = {
+ // chunks: "all",
+ cacheGroups: {
+ vendor: {
+ test: (module) => {
+ // console.log(module.resource);
+ if (
+ module.resource?.includes("blocknote") ||
+ module.resource?.includes("mantine")
+ ) {
+ return true;
+ }
+ return false;
+ },
+ name: "blocknotechunk",
+ chunks: "all",
+ },
+ },
+ };
+ }
+
+ const alias = config.resolve.alias;
+ config.resolve.alias = {
+ ...alias,
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ // "@blocknote/core": path.resolve(__dirname, "../packages/core/src/"),
+ // "@blocknote/react": path.resolve(__dirname, "../packages/react/src/"),
+ };
+ },
+ }),
+);
+
+export default nextConfig;
diff --git a/docs/package-lock.json.bak b/docs/package-lock.json.bak
new file mode 100644
index 0000000000..70b169a570
--- /dev/null
+++ b/docs/package-lock.json.bak
@@ -0,0 +1,9349 @@
+{
+ "name": "docs",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "docs",
+ "version": "0.1.0",
+ "dependencies": {
+ "classnames": "2.3.2",
+ "framer-motion": "^10.16.16",
+ "next": "14.1.0",
+ "nextra": "^2.13.2",
+ "nextra-theme-docs": "^2.13.2",
+ "react": "^18",
+ "react-dom": "^18"
+ },
+ "devDependencies": {
+ "@types/node": "^20",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "autoprefixer": "^10.0.1",
+ "eslint": "^8",
+ "eslint-config-next": "14.1.0",
+ "postcss": "^8",
+ "tailwindcss": "^3.3.0",
+ "typescript": "^5"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
+ "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@braintree/sanitize-url": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
+ "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@headlessui/react": {
+ "version": "1.7.18",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.18.tgz",
+ "integrity": "sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==",
+ "dependencies": {
+ "@tanstack/react-virtual": "^3.0.0-beta.60",
+ "client-only": "^0.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16 || ^17 || ^18",
+ "react-dom": "^16 || ^17 || ^18"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
+ "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@mdx-js/mdx": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz",
+ "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/mdx": "^2.0.0",
+ "estree-util-build-jsx": "^2.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "estree-util-to-js": "^1.1.0",
+ "estree-walker": "^3.0.0",
+ "hast-util-to-estree": "^2.0.0",
+ "markdown-extensions": "^1.0.0",
+ "periscopic": "^3.0.0",
+ "remark-mdx": "^2.0.0",
+ "remark-parse": "^10.0.0",
+ "remark-rehype": "^10.0.0",
+ "unified": "^10.0.0",
+ "unist-util-position-from-estree": "^1.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "unist-util-visit": "^4.0.0",
+ "vfile": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@mdx-js/mdx/node_modules/unist-util-visit": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@mdx-js/mdx/node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@mdx-js/react": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz",
+ "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==",
+ "dependencies": {
+ "@types/mdx": "^2.0.0",
+ "@types/react": ">=16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "react": ">=16"
+ }
+ },
+ "node_modules/@napi-rs/simple-git": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.16.tgz",
+ "integrity": "sha512-C5wRPw9waqL2jk3jEDeJv+f7ScuO3N0a39HVdyFLkwKxHH4Sya4ZbzZsu2JLi6eEqe7RuHipHL6mC7B2OfYZZw==",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@napi-rs/simple-git-android-arm-eabi": "0.1.16",
+ "@napi-rs/simple-git-android-arm64": "0.1.16",
+ "@napi-rs/simple-git-darwin-arm64": "0.1.16",
+ "@napi-rs/simple-git-darwin-x64": "0.1.16",
+ "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.16",
+ "@napi-rs/simple-git-linux-arm64-gnu": "0.1.16",
+ "@napi-rs/simple-git-linux-arm64-musl": "0.1.16",
+ "@napi-rs/simple-git-linux-x64-gnu": "0.1.16",
+ "@napi-rs/simple-git-linux-x64-musl": "0.1.16",
+ "@napi-rs/simple-git-win32-arm64-msvc": "0.1.16",
+ "@napi-rs/simple-git-win32-x64-msvc": "0.1.16"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-android-arm-eabi": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.16.tgz",
+ "integrity": "sha512-dbrCL0Pl5KZG7x7tXdtVsA5CO6At5ohDX3myf5xIYn9kN4jDFxsocl8bNt6Vb/hZQoJd8fI+k5VlJt+rFhbdVw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-android-arm64": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.16.tgz",
+ "integrity": "sha512-xYz+TW5J09iK8SuTAKK2D5MMIsBUXVSs8nYp7HcMi8q6FCRO7yJj96YfP9PvKsc/k64hOyqGmL5DhCzY9Cu1FQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-darwin-arm64": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.16.tgz",
+ "integrity": "sha512-XfgsYqxhUE022MJobeiX563TJqyQyX4FmYCnqrtJwAfivESVeAJiH6bQIum8dDEYMHXCsG7nL8Ok0Dp8k2m42g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-darwin-x64": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.16.tgz",
+ "integrity": "sha512-tkEVBhD6vgRCbeWsaAQqM3bTfpIVGeitamPPRVSbsq8qgzJ5Dx6ZedH27R7KSsA/uao7mZ3dsrNLXbu1Wy5MzA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-linux-arm-gnueabihf": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.16.tgz",
+ "integrity": "sha512-R6VAyNnp/yRaT7DV1Ao3r67SqTWDa+fNq2LrNy0Z8gXk2wB9ZKlrxFtLPE1WSpWknWtyRDLpRlsorh7Evk7+7w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-linux-arm64-gnu": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.16.tgz",
+ "integrity": "sha512-LAGI0opFKw/HBMCV2qIBK3uWSEW9h4xd2ireZKLJy8DBPymX6NrWIamuxYNyCuACnFdPRxR4LaRFy4J5ZwuMdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-linux-arm64-musl": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.16.tgz",
+ "integrity": "sha512-I57Ph0F0Yn2KW93ep+V1EzKhACqX0x49vvSiapqIsdDA2PifdEWLc1LJarBolmK7NKoPqKmf6lAKKO9lhiZzkg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-linux-x64-gnu": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.16.tgz",
+ "integrity": "sha512-AZYYFY2V7hlcQASPEOWyOa3e1skzTct9QPzz0LiDM3f/hCFY/wBaU2M6NC5iG3d2Kr38heuyFS/+JqxLm5WaKA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-linux-x64-musl": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.16.tgz",
+ "integrity": "sha512-9TyMcYSBJwjT8jwjY9m24BZbu7ozyWTjsmYBYNtK3B0Um1Ov6jthSNneLVvouQ6x+k3Ow+00TiFh6bvmT00r8g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-win32-arm64-msvc": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.16.tgz",
+ "integrity": "sha512-uslJ1WuAHCYJWui6xjsyT47SjX6KOHDtClmNO8hqKz1pmDSNY7AjyUY8HxvD1lK9bDnWwc4JYhikS9cxCqHybw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-win32-x64-msvc": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.16.tgz",
+ "integrity": "sha512-SoEaVeCZCDF1MP+M9bMSXsZWgEjk4On9GWADO5JOulvzR1bKjk0s9PMHwe/YztR9F0sJzrCxwtvBZowhSJsQPg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.0.tgz",
+ "integrity": "sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw=="
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz",
+ "integrity": "sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==",
+ "dev": true,
+ "dependencies": {
+ "glob": "10.3.10"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz",
+ "integrity": "sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz",
+ "integrity": "sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz",
+ "integrity": "sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz",
+ "integrity": "sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz",
+ "integrity": "sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz",
+ "integrity": "sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz",
+ "integrity": "sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz",
+ "integrity": "sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz",
+ "integrity": "sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
+ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
+ "dev": true
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
+ "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tanstack/react-virtual": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.0.2.tgz",
+ "integrity": "sha512-9XbRLPKgnhMwwmuQMnJMv+5a9sitGNCSEtf/AZXzmJdesYk7XsjYHaEDny+IrJzvPNwZliIIDwCRiaUqR3zzCA==",
+ "dependencies": {
+ "@tanstack/virtual-core": "3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@tanstack/virtual-core": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.0.0.tgz",
+ "integrity": "sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@theguild/remark-mermaid": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@theguild/remark-mermaid/-/remark-mermaid-0.0.5.tgz",
+ "integrity": "sha512-e+ZIyJkEv9jabI4m7q29wZtZv+2iwPGsXJ2d46Zi7e+QcFudiyuqhLhHG/3gX3ZEB+hxTch+fpItyMS8jwbIcw==",
+ "dependencies": {
+ "mermaid": "^10.2.2",
+ "unist-util-visit": "^5.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/@theguild/remark-npm2yarn": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@theguild/remark-npm2yarn/-/remark-npm2yarn-0.2.1.tgz",
+ "integrity": "sha512-jUTFWwDxtLEFtGZh/TW/w30ySaDJ8atKWH8dq2/IiQF61dPrGfETpl0WxD0VdBfuLOeU14/kop466oBSRO/5CA==",
+ "dependencies": {
+ "npm-to-yarn": "^2.1.0",
+ "unist-util-visit": "^5.0.0"
+ }
+ },
+ "node_modules/@types/acorn": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
+ "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/d3-scale": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
+ "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+ "dependencies": {
+ "@types/d3-time": "*"
+ }
+ },
+ "node_modules/@types/d3-scale-chromatic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
+ "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw=="
+ },
+ "node_modules/@types/d3-time": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
+ "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw=="
+ },
+ "node_modules/@types/debug": {
+ "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": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.3.tgz",
+ "integrity": "sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/hast": {
+ "version": "2.3.9",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.9.tgz",
+ "integrity": "sha512-pTHyNlaMD/oKJmS+ZZUyFUcsZeBZpC0lmGquw98CqRVNgAdJZJeD7GoeLiT6Xbx5rU9VCjSt0RwEvDgzh4obFw==",
+ "dependencies": {
+ "@types/unist": "^2"
+ }
+ },
+ "node_modules/@types/js-yaml": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
+ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg=="
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@types/katex": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
+ "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="
+ },
+ "node_modules/@types/mdast": {
+ "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"
+ }
+ },
+ "node_modules/@types/mdx": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz",
+ "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg=="
+ },
+ "node_modules/@types/ms": {
+ "version": "0.7.34",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
+ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.10.tgz",
+ "integrity": "sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.11",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
+ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.48",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
+ "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.2.18",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
+ "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
+ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
+ },
+ "node_modules/@types/unist": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
+ "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz",
+ "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.20.0",
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/typescript-estree": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz",
+ "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz",
+ "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz",
+ "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz",
+ "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.20.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-sequence-parser": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz",
+ "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg=="
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "dev": true,
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
+ "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
+ "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz",
+ "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
+ "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true
+ },
+ "node_modules/astring": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
+ "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+ "bin": {
+ "astring": "bin/astring"
+ }
+ },
+ "node_modules/asynciterator.prototype": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
+ "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.17",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
+ "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.22.2",
+ "caniuse-lite": "^1.0.30001578",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz",
+ "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
+ "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
+ "dev": true,
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
+ "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001580",
+ "electron-to-chromium": "^1.4.648",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001581",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz",
+ "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/character-entities": {
+ "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==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "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==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
+ "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/classnames": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+ "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
+ },
+ "node_modules/clipboardy": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.2.tgz",
+ "integrity": "sha512-16KrBOV7bHmHdxcQiCvfUFYVFyEah4FI8vYT1Fr7CGSA4G+xBWMEfUEQJS1hxeHGtI9ju1Bzs9uXSbj5HZKArw==",
+ "dependencies": {
+ "arch": "^2.1.0",
+ "execa": "^0.8.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
+ "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz",
+ "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/cose-base": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
+ "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
+ "dependencies": {
+ "layout-base": "^1.0.0"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/cytoscape": {
+ "version": "3.28.1",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz",
+ "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==",
+ "dependencies": {
+ "heap": "^0.2.6",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/cytoscape-cose-bilkent": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz",
+ "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
+ "dependencies": {
+ "cose-base": "^1.0.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
+ },
+ "node_modules/cytoscape-fcose": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz",
+ "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
+ "dependencies": {
+ "cose-base": "^2.2.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/cose-base": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz",
+ "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
+ "dependencies": {
+ "layout-base": "^2.0.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/layout-base": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz",
+ "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="
+ },
+ "node_modules/d3": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
+ "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
+ "dependencies": {
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "dependencies": {
+ "internmap": "1 - 2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
+ "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
+ "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
+ "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "dependencies": {
+ "d3-path": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
+ "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
+ "dependencies": {
+ "d3-array": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "dependencies": {
+ "delaunator": "5"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
+ "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
+ "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "dependencies": {
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
+ "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
+ "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "dependencies": {
+ "d3-dsv": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
+ "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
+ "dependencies": {
+ "d3-array": "2.5.0 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
+ "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
+ "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
+ "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
+ "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-sankey": {
+ "version": "0.12.3",
+ "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz",
+ "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
+ "dependencies": {
+ "d3-array": "1 - 2",
+ "d3-shape": "^1.2.0"
+ }
+ },
+ "node_modules/d3-sankey/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
+ },
+ "node_modules/d3-sankey/node_modules/d3-path": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
+ },
+ "node_modules/d3-sankey/node_modules/d3-shape": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
+ "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "dependencies": {
+ "d3-path": "1"
+ }
+ },
+ "node_modules/d3-sankey/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "dependencies": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+ "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
+ "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "dependencies": {
+ "d3-path": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "dependencies": {
+ "d3-array": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
+ "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
+ "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
+ }
+ },
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
+ "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dagre-d3-es": {
+ "version": "7.0.10",
+ "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz",
+ "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==",
+ "dependencies": {
+ "d3": "^7.8.2",
+ "lodash-es": "^4.17.21"
+ }
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.10",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ },
+ "node_modules/debug": {
+ "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"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-named-character-reference": {
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/delaunator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
+ "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+ "dependencies": {
+ "robust-predicates": "^3.0.2"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/devlop": {
+ "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"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
+ },
+ "node_modules/diff": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
+ "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dompurify": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.8.tgz",
+ "integrity": "sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ=="
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.650",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.650.tgz",
+ "integrity": "sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ==",
+ "dev": true
+ },
+ "node_modules/elkjs": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.1.tgz",
+ "integrity": "sha512-JWKDyqAdltuUcyxaECtYG6H4sqysXSLeoXuGUBfRNESMTkj+w+qdb0jya8Z/WI0jVd03WQtCGhS6FOFtlhD5FQ=="
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "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/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.22.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
+ "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.5",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.2",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.15",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz",
+ "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==",
+ "dev": true,
+ "dependencies": {
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.0.1"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
+ "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "has-tostringtag": "^1.0.0",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.0.tgz",
+ "integrity": "sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==",
+ "dev": true,
+ "dependencies": {
+ "@next/eslint-plugin-next": "14.1.0",
+ "@rushstack/eslint-patch": "^1.3.3",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
+ "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
+ "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz",
+ "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.23.2",
+ "aria-query": "^5.3.0",
+ "array-includes": "^3.1.7",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "=4.7.0",
+ "axobject-query": "^3.2.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.15",
+ "hasown": "^2.0.0",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.7",
+ "object.fromentries": "^2.0.7"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.33.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz",
+ "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-util-attach-comments": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz",
+ "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-build-jsx": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz",
+ "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "estree-walker": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz",
+ "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-to-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz",
+ "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "astring": "^1.8.0",
+ "source-map": "^0.7.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-value-to-estree": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz",
+ "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==",
+ "dependencies": {
+ "is-plain-obj": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/estree-util-visit": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz",
+ "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==",
+ "dependencies": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/execa/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "node_modules/execa/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/execa/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
+ "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/flexsearch": {
+ "version": "0.7.43",
+ "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz",
+ "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg=="
+ },
+ "node_modules/focus-visible": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz",
+ "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ=="
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "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/sponsors/rawify"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "10.18.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz",
+ "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz",
+ "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "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/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/git-up": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz",
+ "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==",
+ "dependencies": {
+ "is-ssh": "^1.4.0",
+ "parse-url": "^8.1.0"
+ }
+ },
+ "node_modules/git-url-parse": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz",
+ "integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==",
+ "dependencies": {
+ "git-up": "^7.0.0"
+ }
+ },
+ "node_modules/github-slugger": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="
+ },
+ "node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "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=="
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/gray-matter/node_modules/argparse": {
+ "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"
+ }
+ },
+ "node_modules/gray-matter/node_modules/js-yaml": {
+ "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"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/hash-obj": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hash-obj/-/hash-obj-4.0.0.tgz",
+ "integrity": "sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==",
+ "dependencies": {
+ "is-obj": "^3.0.0",
+ "sort-keys": "^5.0.0",
+ "type-fest": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hash-obj/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-from-dom": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.0.tgz",
+ "integrity": "sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hastscript": "^8.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-dom/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz",
+ "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz",
+ "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-dom": "^5.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unist-util-remove-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/hast-util-from-html/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz",
+ "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^8.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-parse5/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-parse-selector/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-raw": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz",
+ "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-raw/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/hast-util-raw/node_modules/unist-util-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-estree": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz",
+ "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/unist": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "estree-util-attach-comments": "^2.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "hast-util-whitespace": "^2.0.0",
+ "mdast-util-mdx-expression": "^1.0.0",
+ "mdast-util-mdxjs-esm": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.4.1",
+ "unist-util-position": "^4.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-to-text": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.0.tgz",
+ "integrity": "sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-text/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-to-text/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
+ "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz",
+ "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/heap": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
+ "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg=="
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/inline-style-parser": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
+ "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/intersection-observer": {
+ "version": "0.12.2",
+ "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz",
+ "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg=="
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
+ "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
+ "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
+ "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
+ "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz",
+ "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-reference": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
+ "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-ssh": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz",
+ "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==",
+ "dependencies": {
+ "protocols": "^2.0.1"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+ "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA=="
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/katex": {
+ "version": "0.16.9",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz",
+ "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==",
+ "funding": [
+ "https://opencollective.com/katex",
+ "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/sponsors/katex"
+ ],
+ "dependencies": {
+ "commander": "^8.3.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
+ },
+ "node_modules/katex/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/khroma": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz",
+ "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
+ "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==",
+ "dev": true
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "dev": true,
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/layout-base": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz",
+ "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/markdown-extensions": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
+ "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
+ "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/match-sorter": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.3.tgz",
+ "integrity": "sha512-sgiXxrRijEe0SzHKGX4HouCpfHRPnqteH42UdMEW7BlWy990ZkzcvonJGv4Uu9WE7Y1f8Yocm91+4qFPCbmNww==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.8",
+ "remove-accents": "0.5.0"
+ }
+ },
+ "node_modules/mdast-util-definitions": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz",
+ "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "unist-util-visit": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-definitions/node_modules/unist-util-visit": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz",
+ "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "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==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
+ "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "mdast-util-to-string": "^3.1.0",
+ "micromark": "^3.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-decode-string": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz",
+ "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==",
+ "dependencies": {
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-gfm-autolink-literal": "^1.0.0",
+ "mdast-util-gfm-footnote": "^1.0.0",
+ "mdast-util-gfm-strikethrough": "^1.0.0",
+ "mdast-util-gfm-table": "^1.0.0",
+ "mdast-util-gfm-task-list-item": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz",
+ "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "ccount": "^2.0.0",
+ "mdast-util-find-and-replace": "^2.0.0",
+ "micromark-util-character": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-footnote": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz",
+ "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-markdown": "^1.3.0",
+ "micromark-util-normalize-identifier": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz",
+ "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-markdown": "^1.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz",
+ "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-to-markdown": "^1.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz",
+ "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-markdown": "^1.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-math": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-2.0.2.tgz",
+ "integrity": "sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-to-markdown": "^1.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz",
+ "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==",
+ "dependencies": {
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-mdx-expression": "^1.0.0",
+ "mdast-util-mdx-jsx": "^2.0.0",
+ "mdast-util-mdxjs-esm": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz",
+ "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz",
+ "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "ccount": "^2.0.0",
+ "mdast-util-from-markdown": "^1.1.0",
+ "mdast-util-to-markdown": "^1.3.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-remove-position": "^4.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz",
+ "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-visit": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz",
+ "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz",
+ "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/@types/mdast": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz",
+ "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-character": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
+ "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
+ "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
+ "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/mdast-util-to-hast/node_modules/micromark-util-types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
+ "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/mdast-util-to-hast/node_modules/unist-util-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/mermaid": {
+ "version": "10.7.0",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.7.0.tgz",
+ "integrity": "sha512-PsvGupPCkN1vemAAjScyw4pw34p4/0dZkSrqvAB26hUvJulOWGIwt35FZWmT9wPIi4r0QLa5X0PB4YLIGn0/YQ==",
+ "dependencies": {
+ "@braintree/sanitize-url": "^6.0.1",
+ "@types/d3-scale": "^4.0.3",
+ "@types/d3-scale-chromatic": "^3.0.0",
+ "cytoscape": "^3.23.0",
+ "cytoscape-cose-bilkent": "^4.1.0",
+ "cytoscape-fcose": "^2.1.0",
+ "d3": "^7.4.0",
+ "d3-sankey": "^0.12.3",
+ "dagre-d3-es": "7.0.10",
+ "dayjs": "^1.11.7",
+ "dompurify": "^3.0.5",
+ "elkjs": "^0.9.0",
+ "khroma": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "mdast-util-from-markdown": "^1.3.0",
+ "non-layered-tidy-tree-layout": "^2.0.2",
+ "stylis": "^4.1.3",
+ "ts-dedent": "^2.2.0",
+ "uuid": "^9.0.0",
+ "web-worker": "^1.2.0"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
+ "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-core-commonmark": "^1.0.1",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-combine-extensions": "^1.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-encode": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-sanitize-uri": "^1.0.0",
+ "micromark-util-subtokenize": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.1",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz",
+ "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-factory-destination": "^1.0.0",
+ "micromark-factory-label": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-factory-title": "^1.0.0",
+ "micromark-factory-whitespace": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-classify-character": "^1.0.0",
+ "micromark-util-html-tag-name": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-subtokenize": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.1",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz",
+ "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==",
+ "dependencies": {
+ "micromark-extension-gfm-autolink-literal": "^1.0.0",
+ "micromark-extension-gfm-footnote": "^1.0.0",
+ "micromark-extension-gfm-strikethrough": "^1.0.0",
+ "micromark-extension-gfm-table": "^1.0.0",
+ "micromark-extension-gfm-tagfilter": "^1.0.0",
+ "micromark-extension-gfm-task-list-item": "^1.0.0",
+ "micromark-util-combine-extensions": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz",
+ "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==",
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-sanitize-uri": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz",
+ "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==",
+ "dependencies": {
+ "micromark-core-commonmark": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-sanitize-uri": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz",
+ "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==",
+ "dependencies": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-classify-character": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz",
+ "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==",
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz",
+ "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==",
+ "dependencies": {
+ "micromark-util-types": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz",
+ "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==",
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-math": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-2.1.2.tgz",
+ "integrity": "sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==",
+ "dependencies": {
+ "@types/katex": "^0.16.0",
+ "katex": "^0.16.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-expression": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz",
+ "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "micromark-factory-mdx-expression": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-events-to-acorn": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz",
+ "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==",
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "micromark-factory-mdx-expression": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-md": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz",
+ "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==",
+ "dependencies": {
+ "micromark-util-types": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz",
+ "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==",
+ "dependencies": {
+ "acorn": "^8.0.0",
+ "acorn-jsx": "^5.0.0",
+ "micromark-extension-mdx-expression": "^1.0.0",
+ "micromark-extension-mdx-jsx": "^1.0.0",
+ "micromark-extension-mdx-md": "^1.0.0",
+ "micromark-extension-mdxjs-esm": "^1.0.0",
+ "micromark-util-combine-extensions": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz",
+ "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "micromark-core-commonmark": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-events-to-acorn": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "unist-util-position-from-estree": "^1.1.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz",
+ "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz",
+ "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-factory-mdx-expression": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz",
+ "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-events-to-acorn": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "unist-util-position-from-estree": "^1.0.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "node_modules/micromark-factory-mdx-expression/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
+ "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz",
+ "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz",
+ "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
+ "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz",
+ "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz",
+ "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz",
+ "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "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==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "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==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "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"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz",
+ "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-events-to-acorn": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz",
+ "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "@types/unist": "^2.0.0",
+ "estree-util-visit": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "node_modules/micromark-util-events-to-acorn/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz",
+ "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
+ "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz",
+ "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz",
+ "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-encode": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz",
+ "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "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==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromark-util-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
+ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ]
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.1.0.tgz",
+ "integrity": "sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==",
+ "dependencies": {
+ "@next/env": "14.1.0",
+ "@swc/helpers": "0.5.2",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.1.0",
+ "@next/swc-darwin-x64": "14.1.0",
+ "@next/swc-linux-arm64-gnu": "14.1.0",
+ "@next/swc-linux-arm64-musl": "14.1.0",
+ "@next/swc-linux-x64-gnu": "14.1.0",
+ "@next/swc-linux-x64-musl": "14.1.0",
+ "@next/swc-win32-arm64-msvc": "14.1.0",
+ "@next/swc-win32-ia32-msvc": "14.1.0",
+ "@next/swc-win32-x64-msvc": "14.1.0"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next-mdx-remote": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.4.1.tgz",
+ "integrity": "sha512-1BvyXaIou6xy3XoNF4yaMZUCb6vD2GTAa5ciOa6WoO+gAUTYsb1K4rI/HSC2ogAWLrb/7VSV52skz07vOzmqIQ==",
+ "dependencies": {
+ "@mdx-js/mdx": "^2.2.1",
+ "@mdx-js/react": "^2.2.1",
+ "vfile": "^5.3.0",
+ "vfile-matter": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">=7"
+ },
+ "peerDependencies": {
+ "react": ">=16.x <=18.x",
+ "react-dom": ">=16.x <=18.x"
+ }
+ },
+ "node_modules/next-seo": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/next-seo/-/next-seo-6.4.0.tgz",
+ "integrity": "sha512-XQFxkOL2hw0YE+P100HbI3EAvcludlHPxuzMgaIjKb7kPK0CvjGvLFjd9hszZFEDc5oiQkGFA8+cuWcnip7eYA==",
+ "peerDependencies": {
+ "next": "^8.1.1-canary.54 || >=9.0.0",
+ "react": ">=16.0.0",
+ "react-dom": ">=16.0.0"
+ }
+ },
+ "node_modules/next-themes": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz",
+ "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==",
+ "peerDependencies": {
+ "next": "*",
+ "react": "*",
+ "react-dom": "*"
+ }
+ },
+ "node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/nextra": {
+ "version": "2.13.2",
+ "resolved": "https://registry.npmjs.org/nextra/-/nextra-2.13.2.tgz",
+ "integrity": "sha512-pIgOSXNUqTz1laxV4ChFZOU7lzJAoDHHaBPj8L09PuxrLKqU1BU/iZtXAG6bQeKCx8EPdBsoXxEuENnL9QGnGA==",
+ "dependencies": {
+ "@headlessui/react": "^1.7.10",
+ "@mdx-js/mdx": "^2.3.0",
+ "@mdx-js/react": "^2.3.0",
+ "@napi-rs/simple-git": "^0.1.9",
+ "@theguild/remark-mermaid": "^0.0.5",
+ "@theguild/remark-npm2yarn": "^0.2.0",
+ "clsx": "^2.0.0",
+ "github-slugger": "^2.0.0",
+ "graceful-fs": "^4.2.11",
+ "gray-matter": "^4.0.3",
+ "katex": "^0.16.9",
+ "lodash.get": "^4.4.2",
+ "next-mdx-remote": "^4.2.1",
+ "p-limit": "^3.1.0",
+ "rehype-katex": "^7.0.0",
+ "rehype-pretty-code": "0.9.11",
+ "rehype-raw": "^7.0.0",
+ "remark-gfm": "^3.0.1",
+ "remark-math": "^5.1.1",
+ "remark-reading-time": "^2.0.1",
+ "shiki": "^0.14.3",
+ "slash": "^3.0.0",
+ "title": "^3.5.3",
+ "unist-util-remove": "^4.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zod": "^3.22.3"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "next": ">=9.5.3",
+ "react": ">=16.13.1",
+ "react-dom": ">=16.13.1"
+ }
+ },
+ "node_modules/nextra-theme-docs": {
+ "version": "2.13.2",
+ "resolved": "https://registry.npmjs.org/nextra-theme-docs/-/nextra-theme-docs-2.13.2.tgz",
+ "integrity": "sha512-yE4umXaImp1/kf/sFciPj2+EFrNSwd9Db26hi98sIIiujzGf3+9eUgAz45vF9CwBw50FSXxm1QGRcY+slQ4xQQ==",
+ "dependencies": {
+ "@headlessui/react": "^1.7.10",
+ "@popperjs/core": "^2.11.6",
+ "clsx": "^2.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "flexsearch": "^0.7.31",
+ "focus-visible": "^5.2.0",
+ "git-url-parse": "^13.1.0",
+ "intersection-observer": "^0.12.2",
+ "match-sorter": "^6.3.1",
+ "next-seo": "^6.0.0",
+ "next-themes": "^0.2.1",
+ "scroll-into-view-if-needed": "^3.0.0",
+ "zod": "^3.22.3"
+ },
+ "peerDependencies": {
+ "next": ">=9.5.3",
+ "nextra": "2.13.2",
+ "react": ">=16.13.1",
+ "react-dom": ">=16.13.1"
+ }
+ },
+ "node_modules/nextra-theme-docs/node_modules/escape-string-regexp": {
+ "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==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "dev": true
+ },
+ "node_modules/non-layered-tidy-tree-layout": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
+ "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-to-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.1.0.tgz",
+ "integrity": "sha512-2C1IgJLdJngq1bSER7K7CGFszRr9s2rijEwvENPEgI0eK9xlD3tNwDc0UJnRj7FIT2aydWm72jB88uVswAhXHA==",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "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/nebrelbug/npm-to-yarn?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true,
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
+ "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
+ "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
+ "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz",
+ "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
+ "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-numeric-range": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz",
+ "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ=="
+ },
+ "node_modules/parse-path": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz",
+ "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==",
+ "dependencies": {
+ "protocols": "^2.0.0"
+ }
+ },
+ "node_modules/parse-url": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz",
+ "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==",
+ "dependencies": {
+ "parse-path": "^7.0.0"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "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/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/periscopic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
+ "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "is-reference": "^3.0.0"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "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/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.33",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
+ "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "dev": true,
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+ "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz",
+ "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/protocols": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
+ "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q=="
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reading-time": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz",
+ "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg=="
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz",
+ "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
+ "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/rehype-katex": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.0.tgz",
+ "integrity": "sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/katex": "^0.16.0",
+ "hast-util-from-html-isomorphic": "^2.0.0",
+ "hast-util-to-text": "^4.0.0",
+ "katex": "^0.16.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-katex/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/rehype-katex/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/rehype-katex/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-katex/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-pretty-code": {
+ "version": "0.9.11",
+ "resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.9.11.tgz",
+ "integrity": "sha512-Eq90eCYXQJISktfRZ8PPtwc5SUyH6fJcxS8XOMnHPUQZBtC6RYo67gGlley9X2nR8vlniPj0/7oCDEYHKQa/oA==",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "hash-obj": "^4.0.0",
+ "parse-numeric-range": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "shiki": "*"
+ }
+ },
+ "node_modules/rehype-raw": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-raw/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz",
+ "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/rehype-raw/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/rehype-raw/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-raw/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz",
+ "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-gfm": "^2.0.0",
+ "micromark-extension-gfm": "^2.0.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-math": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-5.1.1.tgz",
+ "integrity": "sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-math": "^2.0.0",
+ "micromark-extension-math": "^2.0.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-mdx": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz",
+ "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==",
+ "dependencies": {
+ "mdast-util-mdx": "^2.0.0",
+ "micromark-extension-mdxjs": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz",
+ "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-reading-time": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/remark-reading-time/-/remark-reading-time-2.0.1.tgz",
+ "integrity": "sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==",
+ "dependencies": {
+ "estree-util-is-identifier-name": "^2.0.0",
+ "estree-util-value-to-estree": "^1.3.0",
+ "reading-time": "^1.3.0",
+ "unist-util-visit": "^3.1.0"
+ }
+ },
+ "node_modules/remark-reading-time/node_modules/unist-util-visit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
+ "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
+ "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz",
+ "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-hast": "^12.1.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype/node_modules/mdast-util-to-hast": {
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz",
+ "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-definitions": "^5.0.0",
+ "micromark-util-sanitize-uri": "^1.1.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-generated": "^2.0.0",
+ "unist-util-position": "^4.0.0",
+ "unist-util-visit": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype/node_modules/unist-util-visit": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype/node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remove-accents": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz",
+ "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "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/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/robust-predicates": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ },
+ "node_modules/sade": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "dependencies": {
+ "mri": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz",
+ "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "get-intrinsic": "^1.2.2",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
+ "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "get-intrinsic": "^1.2.2",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
+ "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
+ "dependencies": {
+ "compute-scroll-into-view": "^3.0.2"
+ }
+ },
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
+ "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.2",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+ "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz",
+ "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==",
+ "dependencies": {
+ "ansi-sequence-parser": "^1.1.0",
+ "jsonc-parser": "^3.2.0",
+ "vscode-oniguruma": "^1.7.0",
+ "vscode-textmate": "^8.0.0"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sort-keys": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz",
+ "integrity": "sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==",
+ "dependencies": {
+ "is-plain-obj": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/sort-keys/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
+ "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "regexp.prototype.flags": "^1.5.0",
+ "set-function-name": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
+ "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
+ "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
+ "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz",
+ "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
+ "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
+ "dependencies": {
+ "inline-style-parser": "0.1.1"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
+ "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
+ "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "dev": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/title": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/title/-/title-3.5.3.tgz",
+ "integrity": "sha512-20JyowYglSEeCvZv3EZ0nZ046vLarO37prvV0mbtQV7C8DJPGgN967r8SJkqd3XK3K3lD3/Iyfp3avjfil8Q2Q==",
+ "dependencies": {
+ "arg": "1.0.0",
+ "chalk": "2.3.0",
+ "clipboardy": "1.2.2",
+ "titleize": "1.0.0"
+ },
+ "bin": {
+ "title": "bin/title.js"
+ }
+ },
+ "node_modules/title/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/title/node_modules/arg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-1.0.0.tgz",
+ "integrity": "sha512-Wk7TEzl1KqvTGs/uyhmHO/3XLd3t1UeU4IstvPXVzGPM522cTjqjNZ99esCkcL52sjqjo8e8CTBcWhkxvGzoAw=="
+ },
+ "node_modules/title/node_modules/chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dependencies": {
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/title/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/title/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/title/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/title/node_modules/has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/title/node_modules/supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "dependencies": {
+ "has-flag": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/titleize": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-1.0.0.tgz",
+ "integrity": "sha512-TARUb7z1pGvlLxgPk++7wJ6aycXF3GJ0sNSBTAsTuJrQG5QuZlkUQP+zl+nbjAh4gMX9yDw9ZYklMd7vAfJKEw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz",
+ "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
+ "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-dedent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
+ "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==",
+ "engines": {
+ "node": ">=6.10"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+ "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+ "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/unified": {
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
+ "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "bail": "^2.0.0",
+ "extend": "^3.0.0",
+ "is-buffer": "^2.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unified/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unist-util-find-after": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-find-after/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/unist-util-find-after/node_modules/unist-util-is": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-generated": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
+ "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz",
+ "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==",
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position-from-estree": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz",
+ "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==",
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz",
+ "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/unist-util-remove/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/unist-util-remove/node_modules/unist-util-is": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
+ "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/unist-util-visit-parents/node_modules/unist-util-is": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/unist-util-visit/node_modules/unist-util-is": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "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/sponsors/broofa",
+ "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/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/uvu": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
+ "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
+ "dependencies": {
+ "dequal": "^2.0.0",
+ "diff": "^5.0.0",
+ "kleur": "^4.0.3",
+ "sade": "^1.7.3"
+ },
+ "bin": {
+ "uvu": "bin.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "5.3.7",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
+ "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz",
+ "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/vfile-location/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location/node_modules/vfile": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
+ "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-matter": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-3.0.1.tgz",
+ "integrity": "sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==",
+ "dependencies": {
+ "@types/js-yaml": "^4.0.0",
+ "is-buffer": "^2.0.0",
+ "js-yaml": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
+ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ },
+ "node_modules/vfile-message/node_modules/unist-util-stringify-position": {
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile/node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vscode-oniguruma": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz",
+ "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA=="
+ },
+ "node_modules/vscode-textmate": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz",
+ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg=="
+ },
+ "node_modules/web-namespaces": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
+ "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/web-worker": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz",
+ "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA=="
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
+ "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
+ "dev": true,
+ "dependencies": {
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+ "dev": true,
+ "dependencies": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
+ "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.4",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.22.4",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
+ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
+ "funding": {
+ "url": "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/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/docs/package.json b/docs/package.json
new file mode 100644
index 0000000000..5bd78a29dc
--- /dev/null
+++ b/docs/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "docs",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "docs:build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@blocknote/core": "*",
+ "@blocknote/react": "*",
+ "@headlessui/react": "^1.7.18",
+ "@mantine/core": "^7.5.0",
+ "@next/bundle-analyzer": "^14.1.0",
+ "@vercel/og": "^0.6.2",
+ "classnames": "2.3.2",
+ "clsx": "^2.1.0",
+ "framer-motion": "^10.16.16",
+ "next": "14.1.0",
+ "next-auth": "^5.0.0-beta.9",
+ "nextra": "^2.13.2",
+ "nextra-theme-docs": "^2.13.2",
+ "partykit": "^0.0.84",
+ "raw-loader": "^4.0.2",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-github-btn": "^1.4.0",
+ "react-icons": "^4.3.1",
+ "y-partykit": "^0.0.25",
+ "yjs": "^13.6.1"
+ },
+ "devDependencies": {
+ "@types/node": "^20",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "autoprefixer": "^10.0.1",
+ "eslint": "^8",
+ "eslint-config-next": "14.1.0",
+ "postcss": "^8",
+ "prettier-plugin-tailwindcss": "^0.5.11",
+ "tailwindcss": "^3.3.0",
+ "typescript": "^5"
+ }
+}
diff --git a/docs/pages/_app.tsx b/docs/pages/_app.tsx
new file mode 100644
index 0000000000..5b6818c42f
--- /dev/null
+++ b/docs/pages/_app.tsx
@@ -0,0 +1,23 @@
+// import "../custom.css";
+import { SessionProvider } from "next-auth/react";
+import type { AppProps } from "next/app";
+import { type ReactNode } from "react";
+import "../styles.css";
+
+type NextraAppProps = AppProps & {
+ Component: AppProps["Component"] & {
+ getLayout: (page: ReactNode) => ReactNode;
+ };
+};
+
+export default function Nextra({ Component, pageProps }: NextraAppProps) {
+ // const router = useRouter();
+
+ return (
+ <>
+
+
+
+ >
+ );
+}
diff --git a/docs/pages/_document.tsx b/docs/pages/_document.tsx
new file mode 100644
index 0000000000..7fffed6bcb
--- /dev/null
+++ b/docs/pages/_document.tsx
@@ -0,0 +1,25 @@
+import type { DocumentContext, DocumentInitialProps } from "next/document";
+import Document, { Head, Html, Main, NextScript } from "next/document";
+class MyDocument extends Document {
+ static async getInitialProps(
+ ctx: DocumentContext
+ ): Promise {
+ const initialProps = await Document.getInitialProps(ctx);
+
+ return initialProps;
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
+
+ );
+ }
+}
+
+export default MyDocument;
diff --git a/docs/pages/_meta.json b/docs/pages/_meta.json
new file mode 100644
index 0000000000..24edee9bab
--- /dev/null
+++ b/docs/pages/_meta.json
@@ -0,0 +1,23 @@
+{
+ "*": {
+ "type": "page"
+ },
+ "index": {
+ "type": "page",
+ "display": "hidden",
+ "theme": {
+ "layout": "raw",
+ "sidebar": false,
+ "toc": true
+ }
+ },
+ "docs": {
+ "title": "Docs",
+ "display": "children"
+ },
+ "examples": {
+ "title": "Examples",
+ "display": "children"
+ },
+ "about": "About"
+}
diff --git a/docs/pages/about.mdx b/docs/pages/about.mdx
new file mode 100644
index 0000000000..03db3b6cba
--- /dev/null
+++ b/docs/pages/about.mdx
@@ -0,0 +1,58 @@
+import GitHubButton from "react-github-btn";
+import { CTAButton } from "../components/pages/landing/shared/CTAButton";
+
+# About BlockNote
+
+BlockNote is an open source project led by Matthew Lipski and Yousef El-Dardiry.
+It's made possible by our partners, sponsors, and community members.
+
+
+
+ Star
+
+
+
+## Partner with us
+
+We love working with companies to help them integrate BlockNote into their product and build custom solutions.
+If you're interested in working with us, shoot an email to team@blocknotejs.org.
+
+
+
+ Get in touch
+
+
+
+{/* */}
+
+## Sponsorships
+
+Several individuals and organizations are sponsoring our work. If you're using BlockNote, the easiest way to support the project is by becoming a sponsor. Sponsors also get **priority support** from the core team.
+
+
+
+ Sponsor
+
+
+
+One of our sponsors is the renowned NLNet foundation who are on a mission to support an open internet, and protect the privacy and security of internet users. [Check them out](https://www.nlnet.nl).
+
+BlockNote is built on top of [ProseMirror](https://prosemirror.net/) - another great project worth supporting.
+
+## Contribute
+
+Another great way to contribute is by becoming a Community member on Discord, help answering community questions and contribute to the codebase and documentation on GitHub.
+The community also greatly benefits from [examples](/examples), so don't hesitate to share useful code snippets!
+
+Also, check out the full list of contributors [on GitHub](https://github.com/TypeCellOS/BlockNote/graphs/contributors).
diff --git a/docs/pages/docs/_meta.json b/docs/pages/docs/_meta.json
new file mode 100644
index 0000000000..4b8c99d576
--- /dev/null
+++ b/docs/pages/docs/_meta.json
@@ -0,0 +1,15 @@
+{
+ "index": "Introduction",
+ "quickstart": "Quickstart",
+ "editor-basics": "Editor Basics",
+ "editor-api": "Editor API",
+ "styling-theming": "Styling & Theming",
+ "ui-components": "UI Components",
+ "custom-schemas": "Custom Schemas",
+ "advanced": "Advanced",
+ "discord-link": {
+ "title": "Community ↗",
+ "href": "https://discord.gg/Qc2QTTH5dF",
+ "newWindow": true
+ }
+}
diff --git a/packages/website/docs/docs/nextjs.md b/docs/pages/docs/advanced/nextjs.mdx
similarity index 89%
rename from packages/website/docs/docs/nextjs.md
rename to docs/pages/docs/advanced/nextjs.mdx
index 201d6c9b8a..bbf109397b 100644
--- a/packages/website/docs/docs/nextjs.md
+++ b/docs/pages/docs/advanced/nextjs.mdx
@@ -11,16 +11,16 @@ BlockNote is a component that should only be rendered client-side (and not on th
Make sure to use BlockNote in a [Client Component](https://nextjs.org/docs/getting-started/react-essentials#client-components). You can do this by creating a separate file for your component (**make sure this sits outside of your `pages` or `app` directory**), and starting that with `"use client";` [directive](https://react.dev/reference/react/use-client):
-```typescript
+```typescript jsx
"use client"; // this registers as a Client Component
-import { BlockNoteEditor } from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/core/fonts/inter.css";
import "@blocknote/react/style.css";
// Our component we can reuse later
export default function Editor() {
// Creates a new editor instance.
- const editor: BlockNoteEditor | null = useBlockNote({});
+ const editor = useCreateBlockNote();
// Renders the editor instance using a React component.
return ;
@@ -33,7 +33,7 @@ Now, you can use [Dynamic Imports](https://nextjs.org/docs/pages/building-your-a
You can import the component we just created above using `next/dynamic` in your page:
-```typescript
+```typescript jsx
import dynamic from "next/dynamic";
const Editor = dynamic(() => import("./editor"), { ssr: false });
diff --git a/packages/website/docs/docs/real-time-collaboration.md b/docs/pages/docs/advanced/real-time-collaboration.mdx
similarity index 51%
rename from packages/website/docs/docs/real-time-collaboration.md
rename to docs/pages/docs/advanced/real-time-collaboration.mdx
index 7ea30e00b5..d2559acc02 100644
--- a/packages/website/docs/docs/real-time-collaboration.md
+++ b/docs/pages/docs/advanced/real-time-collaboration.mdx
@@ -9,9 +9,13 @@ path: /docs/real-time-collaboration
Let's see how you can add Multiplayer capabilities to your BlockNote setup, and allow real-time collaboration between users (similar to Google Docs):
-
+
-_Try the live demo on the [homepage](https://www.blocknotejs.org)_
+_Try the live demo on the [homepage](https://www.blocknotejs.org)_
BlockNote uses [Yjs](https://github.com/yjs/yjs) for this, and you can set it up with the `collaboration` option:
@@ -23,7 +27,7 @@ import { WebrtcProvider } from "y-webrtc";
const doc = new Y.Doc();
const provider = new WebrtcProvider("my-document-id", doc); // setup a yjs provider (explained below)
-const editor = useBlockNote({
+const editor = useCreateBlockNote({
// ...
collaboration: {
// The Yjs Provider responsible for transporting updates:
@@ -61,9 +65,14 @@ Liveblocks provides a hosted back-end for Yjs which allows you to download and s
npx create-liveblocks-app@latest --example nextjs-yjs-blocknote-advanced
```
-
+
-You can also try the same example in a [live demo](https://liveblocks.io/examples/collaborative-text-editor-advanced/nextjs-yjs-blocknote-advanced). To start with Liveblocks and BlockNote make sure to follow their [getting started guide](https://liveblocks.io/docs/get-started/yjs-blocknote-react).
+You can also try the same example in a [live demo](https://liveblocks.io/examples/collaborative-text-editor-advanced/nextjs-yjs-blocknote-advanced). To start with Liveblocks and BlockNote make sure to follow their [getting started guide](https://liveblocks.io/docs/get-started/yjs-blocknote-react).
## Partykit
@@ -77,94 +86,94 @@ const provider = new YPartyKitProvider(
"blocknote-dev.yousefed.partykit.dev",
// use a unique name as a "room" for your application:
"your-project-name",
- doc
+ doc,
);
```
To learn how to set up your own development / production servers, check out the [PartyKit docs](https://github.com/partykit/partykit) and the [BlockNote + Partykit example](https://github.com/partykit/partykit/tree/main/examples/blocknote).
-
+[//]: # "# Live demo"
+[//]: #
+[//]: # "Below, two editors are connected to each other. Note that anything you type is shared live with other visitors of this webpage, so be friendly ;)"
+[//]: #
+[//]: # "::: sandbox {template=react-ts}"
+[//]: #
+[//]: # "```typescript-vue /App.tsx"
+[//]: # 'import { BlockNoteEditor } from "@blocknote/core";'
+[//]: # 'import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";'
+[//]: # 'import YPartyKitProvider from "y-partykit/provider";'
+[//]: # 'import * as Y from "yjs";'
+[//]: # 'import "@blocknote/react/style.css";'
+[//]: #
+[//]: # "const doc = new Y.Doc();"
+[//]: # "const provider = new YPartyKitProvider("
+[//]: # ' "blocknote-dev.yousefed.partykit.dev",'
+[//]: # ' // use a unique name as a "room" for your application:'
+[//]: # ' "docs-demo",'
+[//]: # " doc"
+[//]: # ");"
+[//]: #
+[//]: # "export default function App() {"
+[//]: # " // Creates a new editor instance."
+[//]: # " const editor: BlockNoteEditor | null = useBlockNote({"
+[//]: # " collaboration: {"
+[//]: # " provider,"
+[//]: # ' fragment: doc.getXmlFragment("document-store"),'
+[//]: # " user: {"
+[//]: # ' name: "User 1",'
+[//]: # ' color: "#ff0000",'
+[//]: # " },"
+[//]: # " },"
+[//]: # " });"
+[//]: #
+[//]: # " // Renders the editor instance using a React component."
+[//]: # ' return ;'
+[//]: # "}"
+[//]: # "```"
+[//]: #
+[//]: # "```css-vue /styles.css [hidden]"
+[//]: # "{{ getStyles(isDark) }}"
+[//]: # "```"
+[//]: #
+[//]: # ":::"
+[//]: #
+[//]: # "::: sandbox {template=react-ts}"
+[//]: #
+[//]: # "```typescript-vue /App.tsx"
+[//]: # 'import { BlockNoteEditor } from "@blocknote/core";'
+[//]: # 'import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";'
+[//]: # 'import YPartyKitProvider from "y-partykit/provider";'
+[//]: # 'import * as Y from "yjs";'
+[//]: # 'import "@blocknote/react/style.css";'
+[//]: #
+[//]: # "const doc = new Y.Doc();"
+[//]: # "const provider = new YPartyKitProvider("
+[//]: # ' "blocknote-dev.yousefed.partykit.dev",'
+[//]: # ' // use a unique name as a "room" for your application:'
+[//]: # ' "docs-demo",'
+[//]: # " doc"
+[//]: # ");"
+[//]: #
+[//]: # "export default function App() {"
+[//]: # " // Creates a new editor instance."
+[//]: # " const editor: BlockNoteEditor | null = useBlockNote({"
+[//]: # " collaboration: {"
+[//]: # " provider,"
+[//]: # ' fragment: doc.getXmlFragment("document-store"),'
+[//]: # " user: {"
+[//]: # ' name: "User 2",'
+[//]: # ' color: "#00ff00",'
+[//]: # " },"
+[//]: # " },"
+[//]: # " });"
+[//]: #
+[//]: # " // Renders the editor instance using a React component."
+[//]: # ' return ;'
+[//]: # "}"
+[//]: # "```"
+[//]: #
+[//]: # "```css-vue /styles.css [hidden]"
+[//]: # "{{ getStyles(isDark) }}"
+[//]: # "```"
+[//]: #
+[//]: # ":::"
diff --git a/docs/pages/docs/advanced/vanilla-js.mdx b/docs/pages/docs/advanced/vanilla-js.mdx
new file mode 100644
index 0000000000..0921d07b11
--- /dev/null
+++ b/docs/pages/docs/advanced/vanilla-js.mdx
@@ -0,0 +1,125 @@
+---
+title: Usage Without React (Vanilla JS)
+description: BlockNote is mainly designed as a quick and easy drop-in block-based editor for React apps, but can also be used in vanilla JavaScript apps.
+imageTitle: Usage Without React (Vanilla JS)
+path: /docs/vanilla-js
+---
+
+import { Callout } from "nextra/components";
+
+# Usage Without React (Vanilla JS)
+
+BlockNote is mainly designed as a quick and easy drop-in block-based editor for React apps, but can also be used in vanilla JavaScript apps. However, this does involve writing your own UI elements.
+
+
+ We recommend using BlockNote with React so you can use the built-in UI
+ components. This document will explain how you can use BlockNote without
+ React, and write your own components, but this is not recommended as you'll
+ lose the great out-of-the-box experience that BlockNote offers.
+
+
+## Installing with NPM
+
+To install only the vanilla JS parts of BlockNote with [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm), run:
+
+```console
+npm install @blocknote/core
+```
+
+## Creating an editor
+
+This is how to create a new BlockNote editor:
+
+```typescript
+import { BlockNoteEditor } from "@blocknote/core";
+
+const editor = BlockNoteEditor.create();
+
+editor.mount(document.getElementById("root")); // element to append the editor to
+```
+
+Now, you'll have a plain BlockNote instance on your page. However, it's missing some menus and other UI elements.
+
+## Creating your own UI elements
+
+Because you can't use the built-in React [UI Components](/docs/quickstart), you'll need to create and register your own UI elements.
+
+While it's up to you to decide how you want the elements to be rendered, BlockNote provides methods for updating the visibility, position, and state of your elements:
+
+```typescript
+type UIElement =
+ | "formattingToolbar"
+ | "hyperlinkToolbar"
+ | "imageToolbar"
+ | "sideMenu"
+ | "suggestionMenu"
+ | "tableHandles"
+
+const uiElement: UIElement = ...;
+
+editor[uiElement].onUpdate((uiElementState: ...) => {
+ ...;
+})
+```
+
+Let's look at how you could add the [Side Menu]() to your editor:
+
+```typescript
+import { BlockNoteEditor } from "@blocknote/core";
+
+const editor = BlockNoteEditor.create({
+ element: document.getElementById("root")!,
+});
+
+export function createButton(text: string, onClick?: () => void) {
+ const element = document.createElement("a");
+ element.href = "#";
+ element.text = text;
+ element.style.margin = "10px";
+
+ if (onClick) {
+ element.addEventListener("click", (e) => {
+ onClick();
+ e.preventDefault();
+ });
+ }
+
+ return element;
+}
+
+let element: HTMLElement;
+
+editor.sideMenu.onUpdate((sideMenuState) => {
+ if (!element) {
+ element = document.createElement("div");
+ element.style.background = "gray";
+ element.style.position = "absolute";
+ element.style.padding = "10px";
+ element.style.opacity = "0.8";
+ const addBtn = createButton("+", () => {
+ editor.sideMenu.addBlock();
+ });
+ element.appendChild(addBtn);
+
+ const dragBtn = createButton("::", () => {});
+
+ dragBtn.addEventListener("dragstart", editor.sideMenu.blockDragStart);
+ dragBtn.addEventListener("dragend", editor.sideMenu.blockDragEnd);
+ dragBtn.draggable = true;
+ element.style.display = "none";
+ element.appendChild(dragBtn);
+
+ document.getElementById("root")!.appendChild(element);
+ }
+
+ if (sideMenuState.show) {
+ element.style.display = "block";
+
+ element.style.top = sideMenuState.referencePos.top + "px";
+ element.style.left =
+ sideMenuState.referencePos.x - element.offsetWidth + "px";
+ } else {
+ element.style.display = "none";
+ }
+});
+```
diff --git a/docs/pages/docs/custom-schemas.mdx b/docs/pages/docs/custom-schemas.mdx
new file mode 100644
index 0000000000..b83c34a1a6
--- /dev/null
+++ b/docs/pages/docs/custom-schemas.mdx
@@ -0,0 +1,99 @@
+---
+title: Custom Schemas
+description: Learn how to create custom schemas for your BlockNote editor
+---
+
+# Custom Schemas (advanced)
+
+By default, BlockNote documents support different kind of blocks, inline content and text styles (see [default schema](/docs/editor-basics/default-schema)).
+However, you can extend BlockNote and create custom schemas to support your own blocks, inline content and text styles.
+
+## Custom Blocks
+
+Blocks are the main elements of a document, such as paragraphs, headings, lists, etc.
+
+- [Learn how to create custom blocks for your BlockNote editor](/docs/custom-schemas/blocks)
+
+## Custom Inline Content
+
+Inline Content are elements that can be inserted inside a text block, such as links, mentions, tags, etc.
+
+- [Learn how to create custom Inline Content for your BlockNote editor](/docs/custom-schemas/inline-content)
+
+## Custom Styles
+
+Text Styles are properties that can be applied to a piece of text, such as bold, italic, underline, etc.
+
+- [Learn how to add custom Styles to your BlockNote editor](/docs/custom-schemas/styles)
+
+## Creating your own schema
+
+Once you have defined your custom blocks (see the links above), inline content or styles, you can create a schema and pass this to the initialization of the editor.
+
+```typescript
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ // enable the default blocks if desired
+ ...defaultBlockSpecs,
+
+ // Add your own custom blocks:
+ // customBlock: CustomBlock,
+ },
+ inlineContentSpecs: {
+ // enable the default inline content if desired
+ ...defaultInlineContentSpecs,
+
+ // Add your own custom inline content:
+ // customInlineContent: CustomInlineContent,
+ },
+ styleSpecs: {
+ // enable the default styles if desired
+ ...defaultStyleSpecs,
+
+ // Add your own custom styles:
+ // customStyle: CustomStyle
+ },
+});
+```
+
+You can then pass this to the instantiation of your BlockNoteEditor (`BlockNoteEditor.create` or `useCreateBlockNote`):
+
+```typescript
+const editor = useCreateBlockNote({
+ schema,
+});
+```
+
+## Usage with TypeScript
+
+In contrast to most other editors, BlockNote has been designed for full TypeScript compatibility. This means you can get full type safety and autocompletion _even when using a custom schema_.
+
+By default, the methods, hooks, and types exposed by the API assume you're using the default, built-in schema. If you're using a custom schema, there are 3 ways to get full type safety:
+
+### Methods that accept an optional `schema` parameter
+
+Some methods, like the `useBlockNoteEditor` hook, take an optional `schema?: BlockNoteSchema` parameter. If you're using a custom schema, you should pass it here to make sure the return type is correctly typed.
+
+### Manual typing of types
+
+If you're using types like `BlockNoteEditor`, `Block`, `PartialBlock` directly, you can get the correctly typed variants like this:
+
+```typescript
+type MyBlock = Block<
+ typeof schema.blockSchema,
+ typeof schema.inlineContentSchema,
+ typeof schema.styleSchema
+>;
+```
+
+Or even simpler, use the shorthands exposed by the schema:
+
+```typescript
+type MyBlockNoteEditor = typeof schema.BlockNoteEditor;
+type MyBlock = typeof schema.Block;
+type MyPartialBlock = typeof schema.PartialBlock;
+```
+
+### Automatically override all default types (experimental)
+
+Alternatively, the easiest way to get full type safety without any additional work is to override all default types with your custom schema, by using a custom type definition file. See this [example blocknote.d.ts](https://github.com/TypeCellOS/BlockNote/blob/main/examples/06-custom-schema/react-custom-styles/blocknote.d.ts.example). This is an experimental feature - we would love to hear your feedback on this approach.
diff --git a/docs/pages/docs/custom-schemas/custom-blocks.mdx b/docs/pages/docs/custom-schemas/custom-blocks.mdx
new file mode 100644
index 0000000000..b247d5cb90
--- /dev/null
+++ b/docs/pages/docs/custom-schemas/custom-blocks.mdx
@@ -0,0 +1,148 @@
+import { Example } from "@/components/example";
+
+## Custom Block Types
+
+In addition to the default block types that BlockNote offers, you can also make your own custom blocks using React components. Take a look at the demo below, in which we add a custom alert block to a BlockNote editor, as well as a custom [Slash Menu Item](/docs/ui-components/suggestion-menus#changing-slash-menu-items) to insert it.
+
+
+
+### Creating a Custom Block Type
+
+Use the `createReactBlockSpec` function to create a custom block type. This function takes two arguments:
+
+```typescript
+function createReactBlockSpec(
+ blockConfig: CustomBlockConfig,
+ blockImplementation: ReactCustomBlockImplementation,
+);
+```
+
+Let's look at our custom alert block from the demo, and go over each field to explain how it works:
+
+```typescript
+const Alert = createReactBlockSpec(
+ {
+ type: "alert",
+ propSchema: {
+ textAlignment: defaultProps.textAlignment,
+ textColor: defaultProps.textColor,
+ type: {
+ default: "warning",
+ values: ["warning", "error", "info", "success"],
+ },
+ },
+ content: "inline",
+ },
+ {
+ render: (props) => {
+ ...
+ },
+ }
+);
+```
+
+#### Block Config (`CustomBlockConfig`)
+
+The Block Config describes the shape of your custom blocks. Use it to specify the type, properties (props) and content your custom blocks should support:
+
+```typescript
+type CustomBlockConfig = {
+ type: string;
+ content: "inline" | "none";
+ readonly propSchema: PropSchema;
+};
+```
+
+**`type`**
+
+Defines the identifier of the custom block.
+
+**`content`**
+
+`inline` if your custom block should support rich text content, `none` if not.
+
+_In the alert demo, we want the user to be able to type text in our alert, so we set it to `"inline"`._
+
+**`propSchema`**
+
+The `PropSchema` specifies the props that the block supports. Block props (properties) are data stored with your Block in the document, and can be used to customize its appearance or behavior.
+
+```typescript
+type PropSchema<
+ PrimitiveType extends "boolean" | "number" | "string"
+> = Record<
+ string,
+ {
+ default: PrimitiveType;
+ values?: PrimitiveType[];
+ }
+>
+```
+
+`[key: string]` is the name of the prop, and the value is an object with two fields:
+
+- `default`: Specifies the prop's default value
+
+- `values` (optional): Specifies an array of values that the prop can take, for example, to limit the value to a list of pre-defined strings. If `values` is not defined, BlockNote assumes the prop can be any value of `PrimitiveType`
+
+_In the alert demo, we add a `type` prop for the type of alert that we want (warning / error / info / success). We also want basic styling options, so we add text alignment and text color from the [Default Block Properties](/docs/block-types#default-block-properties)._
+
+#### Block Implementation (`ReactCustomBlockImplementation`)
+
+The Block Implementation defines how the block should be rendered in the editor, and how it should be parsed from and converted to HTML.
+
+```typescript
+type ReactCustomBlockImplementation = {
+ render: React.FC<{
+ block: Block;
+ editor: BlockNoteEditor;
+ contentRef?: (node: HTMLElement | null) => void;
+ }>;
+ toExternalHTML?: React.FC<{
+ block: Block;
+ editor: BlockNoteEditor;
+ contentRef?: (node: HTMLElement | null) => void;
+ }>;
+ parse?: (element: HTMLElement) => PartialBlock["props"] | undefined;
+};
+```
+
+**`render`**
+
+This is your React component which defines how your custom block should be rendered in the editor, and takes three React props:
+
+`block:` The block that should be rendered. Its type and props will match the type and PropSchema defined in the Block Config.
+
+`editor:` The BlockNote editor instance that the block is in.
+
+`contentRef:` A React `ref` you can use to mark which element in your block is editable, this is only available if your block config contains `content: "inline"`.
+
+**`toExternalHTML`** (optional)
+
+This component is used whenever the block is being exported to HTML for use outside BlockNote, for example when copying it to the clipboard. If it's not defined, BlockNote will just use `render` for the HTML conversion.
+
+_Note that your component passed to `toExternalHTML` is rendered and serialized in a separate React root, which means you can't use hooks that rely on React Contexts._
+
+**`parse`** (optional)
+
+The `parse` function defines how to parse HTML content into your block, for example when pasting contents from the clipboard. If the element should be parsed into your custom block, you return the props that the block should be given. Otherwise, return `undefined`.
+
+`element`: The HTML element that's being parsed.
+
+### Adding Custom Blocks to the Editor
+
+Finally, create a BlockNoteSchema using the definition of your custom blocks:
+
+```typescript
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ // enable the default blocks if desired
+ ...defaultBlockSpecs,
+
+ // Add your own custom blocks:
+ alert: Alert,
+ },
+});
+```
+
+You can then instantiate your editor with this custom schema, as explained on the [Custom Schemas](/docs/custom-schemas) page.
diff --git a/docs/pages/docs/custom-schemas/custom-inline-content.mdx b/docs/pages/docs/custom-schemas/custom-inline-content.mdx
new file mode 100644
index 0000000000..7ec7dc0334
--- /dev/null
+++ b/docs/pages/docs/custom-schemas/custom-inline-content.mdx
@@ -0,0 +1,126 @@
+import { Example } from "@/components/example";
+
+## Custom Inline Content Types
+
+In addition to the default inline content types that BlockNote offers, you can also make your own custom inline content using React components. Take a look at the demo below, in which we add a custom mention tag to a BlockNote editor, as well as a custom [Suggestion Menu](/docs/ui-components/suggestion-menus#creating-suggestion-menus) to insert it.
+
+
+
+### Creating a Custom Inline Content Type
+
+Use the `createReactInlineContentSpec` function to create a custom inline content type. This function takes two arguments:
+
+```typescript
+function createReactInlineContentSpec(
+ blockConfig: CustomInlineContentConfig,
+ blockImplementation: ReactInlineContentImplementation,
+);
+```
+
+Let's look at our custom mentions tag from the demo, and go over each field to explain how it works:
+
+```typescript
+const Mention = createReactInlineContentSpec(
+ {
+ type: "mention",
+ propSchema: {
+ user: {
+ default: "Unknown",
+ },
+ },
+ content: "none",
+ } as const,
+ {
+ render: (props) => (
+ ...
+ ),
+ }
+);
+```
+
+#### Inline Content Config (`CustomInlineContentConfig`)
+
+The Inline Content Config describes the shape of your custom inline content. Use it to specify the type, properties (props) and content your custom inline content should support:
+
+```typescript
+type CustomInlineContentConfig = {
+ type: string;
+ content: "styled" | "none";
+ readonly propSchema: PropSchema;
+};
+```
+
+**`type`**
+
+Defines the identifier of the custom inline content.
+
+**`content`**
+
+`styled` if your custom inline content should support [styled text content](/docs/editor-api/block-content#styled-text), `none` if not.
+
+_In the mentions demo, we want each mention to be a single, non-editable element, so we set it to `"none"`._
+
+**`propSchema`**
+
+The `PropSchema` specifies the props that the inline content supports. Inline content props (properties) are data stored with your inline content in the document, and can be used to customize its appearance or behavior.
+
+```typescript
+type PropSchema<
+ PrimitiveType extends "boolean" | "number" | "string"
+> = Record<
+ string,
+ {
+ default: PrimitiveType;
+ values?: PrimitiveType[];
+ }
+>
+```
+
+`[key: string]` is the name of the prop, and the value is an object with two fields:
+
+- `default`: Specifies the prop's default value
+
+- `values` (optional): Specifies an array of values that the prop can take, for example, to limit the value to a list of pre-defined strings. If `values` is not defined, BlockNote assumes the prop can be any value of `PrimitiveType`
+
+_In the mentions demo, we add a `user` prop for the user that's being mentioned._
+
+#### Inline Content Implementation (`ReactCustomInlineContentImplementation`)
+
+The Inline Content Implementation defines how the inline content should be rendered to HTML.
+
+```typescript
+type ReactCustomInlineContentImplementation = {
+ render: React.FC<{
+ inlineContent: InlineContent;
+ contentRef?: (node: HTMLElement | null) => void;
+ }>;
+};
+```
+
+**`render`**
+
+This is your React component which defines how your custom inline content should be rendered, and takes three React props:
+
+`inlineContent:` The inline content that should be rendered. Its type and props will match the type and PropSchema defined in the Inline Content Config.
+
+`contentRef:` A React `ref` you can use to mark which element in your inline content is editable, this is only available if your inline content config contains `content: "styled"`.
+
+_Note that since inline content is, by definition, inline, your component should also return an HTML inline element._
+
+### Adding Custom Inline Content to the Editor
+
+Finally, create a BlockNoteSchema using the definition of your custom inline content:
+
+```typescript
+const schema = BlockNoteSchema.create({
+ inlineContentSpecs: {
+ // enable the default inline content if desired
+ ...defaultInlineContentSpecs,
+
+ // Add your own custom inline content:
+ mention: Mention,
+ },
+});
+```
+
+You can then instantiate your editor with this custom schema, as explained on the [Custom Schemas](/docs/custom-schemas) page.
diff --git a/docs/pages/docs/custom-schemas/custom-styles.mdx b/docs/pages/docs/custom-schemas/custom-styles.mdx
new file mode 100644
index 0000000000..729d6415ce
--- /dev/null
+++ b/docs/pages/docs/custom-schemas/custom-styles.mdx
@@ -0,0 +1,96 @@
+import { Example } from "@/components/example";
+
+## Custom Style Types
+
+In addition to the default style types that BlockNote offers, you can also make your own custom styles using React components. Take a look at the demo below, in which we add a custom font style to a BlockNote editor, as well as a custom [Formatting Toolbar button](/docs/ui-components/formatting-toolbar) to set it.
+
+
+
+### Creating a Custom Style Type
+
+Use the `createReactStyleSpec` function to create a custom style type. This function takes two arguments:
+
+```typescript
+function createReactStyleSpec(
+ styleConfig: CustomStyleConfig,
+ styleImplementation: ReactStyleImplementation,
+);
+```
+
+Let's look at our custom font style from the demo, and go over each field to explain how it works:
+
+```typescript
+export const Font = createReactStyleSpec(
+ {
+ type: "font",
+ propSchema: "string",
+ },
+ {
+ render: (props) => (
+
+ ),
+ }
+);
+```
+
+#### Style Config (`CustomStyleConfig`)
+
+The Style Config describes the shape of your custom style. Use it to specify the type, and whether the style should take a string value:
+
+```typescript
+type CustomStyleConfig = {
+ type: string;
+ readonly propSchema: "boolean" | "string";
+};
+```
+
+**`type`**
+
+Defines the identifier of the custom style.
+
+**`propSchema`**
+
+The `PropSchema` specifies whether the style can only be toggled (`"boolean"`), or whether it can take a string value (`"string"`). Having a string value is useful for e.g. setting a color on the style.
+
+_In the font style demo, we set this to `"string"` so we can store the font family._
+
+#### Style Implementation (`ReactCustomStyleImplementation`)
+
+The Style Implementation defines how the style should be rendered to HTML.
+
+```typescript
+type ReactCustomStyleImplementation = {
+ render: React.FC<{
+ value?: string;
+ contentRef: (node: HTMLElement | null) => void;
+ }>;
+};
+```
+
+**`render`**
+
+This is your React component which defines how your custom style should be rendered, and takes two React props:
+
+`value:` The string value of the style, this is only available if your style config contains `propSchema: "string"`.
+
+`contentRef:` A React `ref` to mark the editable element.
+
+_Note that in contrast to Custom Blocks and Inline Content, the `render` function of Custom Styles cannot access React Context or other state. They should be plain React functions analogous to the example._
+
+### Adding Custom Style to the Editor
+
+Finally, create a BlockNoteSchema using the definition of your custom style:
+
+```typescript
+const schema = BlockNoteSchema.create({
+ styleSpecs: {
+ // enable the default styles if desired
+ ...defaultStyleSpecs,
+
+ // Add your own custom style:
+ font: Font,
+ },
+});
+```
+
+You can then instantiate your editor with this custom schema, as explained on the [Custom Schemas](/docs/custom-schemas) page.
diff --git a/docs/pages/docs/editor-api.mdx b/docs/pages/docs/editor-api.mdx
new file mode 100644
index 0000000000..45cd273b96
--- /dev/null
+++ b/docs/pages/docs/editor-api.mdx
@@ -0,0 +1,9 @@
+# Editor API
+
+BlockNote exposes an API to interact with the editor and its contents from code.
+These methods are directly available on the `BlockNoteEditor` object you created when instantiating your editor.
+
+- [Manipulating Blocks](/docs/editor-api/manipulating-blocks.md) explains how to read / update Blocks in the document.
+- [Manipulating Inline Content](/docs/editor-api/manipulating-inline-content.md) explains how to update / read data from selected text.
+- [Cursors & Selections](/docs/editor-api/cursor-selections) explains methods related to cursor positions and selections.
+- [Markdown & HTML](/docs/converting-blocks) explains how to convert the document to and from Markdown and HTML.
diff --git a/docs/pages/docs/editor-api/_meta.json b/docs/pages/docs/editor-api/_meta.json
new file mode 100644
index 0000000000..7d69575259
--- /dev/null
+++ b/docs/pages/docs/editor-api/_meta.json
@@ -0,0 +1,6 @@
+{
+ "manipulating-blocks":"",
+ "manipulating-inline-content":"",
+ "cursor-selections":"",
+ "converting-blocks":""
+}
diff --git a/docs/pages/docs/editor-api/converting-blocks.mdx b/docs/pages/docs/editor-api/converting-blocks.mdx
new file mode 100644
index 0000000000..26f4b9fc95
--- /dev/null
+++ b/docs/pages/docs/editor-api/converting-blocks.mdx
@@ -0,0 +1,108 @@
+---
+title: Markdown & HTML
+description: It's possible to export or import Blocks to and from Markdown and HTML.
+imageTitle: Markdown & HTML
+path: /docs/converting-blocks
+---
+
+import { Example } from "@/components/example";
+import { Callout } from "nextra/components";
+
+# Markdown & HTML
+
+It's possible to export or import Blocks to and from Markdown and HTML.
+
+
+ The functions to import/export to and from Markdown/HTML are considered "lossy"; some information might be dropped when you export Blocks to those formats.
+
+ To serialize Blocks to a non-lossy format (for example, to store the contents of the editor in your backend), simply export the built-in Block format using `JSON.stringify(editor.document)`.
+
+
+
+## Markdown
+
+BlockNote can import / export Blocks to and from Markdown. Note that this is also considered "lossy", as not all structures can be entirely represented in Markdown.
+
+### Converting Blocks to Markdown
+
+`blocksToMarkdownLossy` converts `Block` objects to a Markdown string:
+
+```typescript
+blocksToMarkdownLossy(blocks?: Block[]): string;
+
+// Usage
+const markdownFromBlocks = editor.blocksToMarkdownLossy(blocks);
+```
+
+`blocks:` The blocks to convert. If not provided, the entire document (all top-level blocks) is used.
+
+`returns:` The blocks, serialized as a Markdown string.
+
+The output is simplified as Markdown does not support all features of BlockNote (e.g.: children of blocks which aren't list items are un-nested and certain styles are removed).
+
+**Demo**
+
+
+
+### Parsing Markdown to Blocks
+
+Use `tryParseMarkdownToBlocks` to try parsing a Markdown string into `Block` objects:
+
+```typescript
+tryParseMarkdownToBlocks(markdown: string): Blocks[];
+
+// Usage
+const blocksFromMarkdown = editor.tryParseMarkdownToBlocks(markdown);
+```
+
+`returns:` The blocks parsed from the Markdown string.
+
+Tries to create `Block` and `InlineContent` objects based on Markdown syntax, though not all symbols are recognized. If BlockNote doesn't recognize a symbol, it will parse it as text.
+
+**Demo**
+
+
+
+## HTML
+
+The editor exposes functions to convert Blocks to and from HTML. Converting Blocks to HTML will lose some information such as the nesting of nodes in order to export a simple HTML structure.
+
+### Converting Blocks to HTML
+
+Use `blocksToHTMLLossy` to export `Block` objects to an HTML string:
+
+```typescript
+blocksToHTMLLossy(blocks?: Block[]): string;
+
+// Usage
+const HTMLFromBlocks = editor.blocksToHTMLLossy(blocks);
+```
+
+`blocks:` The blocks to convert. If not provided, the entire document (all top-level blocks) is used.
+
+`returns:` The blocks, exported to an HTML string.
+
+To better conform to HTML standards, children of blocks which aren't list items are un-nested in the output HTML.
+
+**Demo**
+
+
+
+### Parsing HTML to Blocks
+
+Use `tryParseHTMLToBlocks` to parse an HTML string to `Block` objects:
+
+```typescript
+tryParseHTMLToBlocks(html: string): Blocks[];
+
+// Usage
+const blocksFromHTML = editor.tryParseHTMLToBlocks(html);
+```
+
+`returns:` The blocks parsed from the HTML string.
+
+Tries to create `Block` objects out of any HTML block-level elements, and `InlineContent` objects from any HTML inline elements, though not all HTML tags are recognized. If BlockNote doesn't recognize an element's tag, it will parse it as a paragraph or plain text.
+
+**Demo**
+
+
diff --git a/docs/pages/docs/editor-api/cursor-selections.mdx b/docs/pages/docs/editor-api/cursor-selections.mdx
new file mode 100644
index 0000000000..417f3edd8d
--- /dev/null
+++ b/docs/pages/docs/editor-api/cursor-selections.mdx
@@ -0,0 +1,94 @@
+---
+title: Cursor & Selections
+description: If you want to know which block(s) the user is currently editing, you can do so using cursor positions and selections.
+imageTitle: Cursor & Selections
+path: /docs/cursor-selections
+---
+
+import { Example } from "@/components/example";
+
+# Cursor & Selections
+
+If you want to know which block(s) the user is currently editing, you can do so using cursor positions and selections.
+
+## Text Cursor
+
+The text cursor is the blinking vertical line you see when typing in the editor. BlockNote uses `TextCursorPosition` objects to give you information about the block it's in as well as those around it:
+
+```typescript
+type TextCursorPosition = {
+ block: Block;
+ prevBlock: Block | undefined;
+ nextBlock: Block | undefined;
+};
+```
+
+`block:` The block currently containing the text cursor. If the cursor is in a nested block, this is the block at the deepest possible nesting level.
+
+`prevBlock:` The previous block at the same nesting level. Undefined if the block containing the text cursor is the first child of its parent, or the first block in the editor.
+
+`nextBlock:` The next block at the same nesting level. Undefined if the block containing the text cursor is the last child of its parent, or the last block in the editor.
+
+### Getting Text Cursor Position
+
+You can get a snapshot of the current text cursor position using the following call:
+
+```typescript
+getTextCursorPosition(): TextCursorPosition;
+
+// Usage
+const textCursorPosition = editor.getTextCursorPosition();
+```
+
+`returns:` A snapshot of the current text cursor position.
+
+### Setting Text Cursor Position
+
+You can set the text cursor position to the start or end of an existing block using the following call:
+
+```typescript
+setTextCursorPosition(
+ targetBlock: BlockIdentifier,
+ placement: "start" | "end" = "start"
+): void;
+
+// Usage
+editor.setTextCursorPosition(targetBlock, placement);
+```
+
+`targetBlock:` The [identifier](/docs/editor-api/manipulating-blocks#block-identifiers) of an existing block that the text cursor should be moved to.
+
+`placement:` Whether the text cursor should be placed at the start or end of the block.
+
+Throws an error if the target block could not be found.
+
+## Selections
+
+When you highlight content using the mouse or keyboard, this is called a selection. BlockNote uses `Selection` objects to show which blocks the current selection spans across:
+
+```typescript
+type Selection = {
+ blocks: Block[];
+};
+```
+
+`blocks:` The blocks currently spanned by the selection, including nested blocks.
+
+### Getting Selection
+
+You can get a snapshot of the current selection using the following call:
+
+```typescript
+getSelection(): Selection | undefined;
+
+// Usage
+const selection = editor.getSelection();
+```
+
+`returns:` A snapshot of the current selection, or `undefined` if no selection is active.
+
+## Getting Selected Blocks
+
+The demo below displays the blocks in the current [selection](/docs/editor-api/cursor-selections#selections) as JSON below the editor. If a selection isn't active, it displays the block containing the [text cursor](/docs/editor-api/cursor-selections#text-cursor) instead.
+
+
\ No newline at end of file
diff --git a/docs/pages/docs/editor-api/manipulating-blocks.mdx b/docs/pages/docs/editor-api/manipulating-blocks.mdx
new file mode 100644
index 0000000000..f4ac5d90ca
--- /dev/null
+++ b/docs/pages/docs/editor-api/manipulating-blocks.mdx
@@ -0,0 +1,238 @@
+---
+title: Manipulating Blocks
+description: How to read Blocks from the editor, and how to create / remove / update Blocks.
+imageTitle: Manipulating Blocks
+path: /docs/manipulating-blocks
+---
+
+# Manipulating Blocks
+
+Below, we explain the methods on `editor` you can use to read Blocks from the editor, and how to create / remove / update Blocks:
+
+- [`get document`](/docs/editor-api/manipulating-blocks#getting-the-document)
+- [`getBlock`](/docs/editor-api/manipulating-blocks#getting-a-specific-block)
+- [`forEachBlock`](/docs/editor-api/manipulating-blocks#traversing-all-blocks)
+- [`insertBlocks`](/docs/editor-api/manipulating-blocks#inserting-new-blocks)
+- [`updateBlock`](/docs/editor-api/manipulating-blocks#updating-blocks)
+- [`removeBlocks`](/docs/editor-api/manipulating-blocks#removing-blocks)
+- [`replaceBlocks`](/docs/editor-api/manipulating-blocks#replacing-blocks)
+- [`canNestBlock`](/docs/editor-api/manipulating-blocks#nesting-blocks)
+- [`nestBlock`](/docs/editor-api/manipulating-blocks#nesting-blocks)
+- [`canUnnestBlock`](/docs/editor-api/manipulating-blocks#un-nesting-blocks)
+- [`unnestBlock`](/docs/editor-api/manipulating-blocks#un-nesting-blocks)
+
+## Common types
+
+Before we dive into the methods, let's discuss some common types used in parameters:
+
+### Block Identifiers
+
+The methods to access, insert, update, remove, or replace blocks, can require a `BlockIdentifier` as reference to an existing block in the document.
+This is either a `string` representing the block ID, or a `Block` object from which the ID is taken:
+
+```typescript
+type BlockIdentifier = string | Block;
+```
+
+### Partial Blocks
+
+When retrieving blocks from the editor, you always receive complete `Block` objects.
+For updating or creating blocks, you don't need to pass all properties, and you can use a `PartialBlock` type instead:
+
+```typescript
+type PartialBlock = {
+ id?: string;
+ type?: string;
+ props?: Partial>; // exact type depends on "type"
+ content?: string | InlineContent[] | TableContent;
+ children?: PartialBlock[];
+};
+```
+
+`PartialBlock` objects are almost the same as regular `Block` objects, but with all members optional and partial `props`. This makes updating or creating simpler blocks much easier. We'll see this below.
+
+## Accessing Blocks
+
+There are a few different ways to retrieve Blocks from the editor:
+
+### Getting the Document
+
+Retrieve a snapshot of the document (all top-level, non-nested blocks) in the editor using the following call:
+
+```typescript
+document: Block[];
+
+// Usage
+const blocks = editor.document;
+```
+
+`returns:` The document; a snapshot of all top-level (non-nested) blocks in the editor.
+
+We already used this for the [Document JSON](/docs/editor-basics/document-structure#document-json) demo.
+
+### Getting a Specific Block
+
+Use `getBlock` to retrieve a snapshot of a specific block in the editor:
+
+```typescript
+getBlock(blockIdentifier: BlockIdentifier): Block | undefined;
+
+// Usage
+const block = editor.getBlock(blockIdentifier);
+```
+
+`blockIdentifier:` The [identifier](/docs/editor-api/manipulating-blocks#block-identifiers) of an existing block that should be retrieved.
+
+`returns:` The block that matches the identifier, or `undefined` if no matching block was found.
+
+### Traversing All Blocks
+
+Use `forEachBlock` to traverse all blocks in the editor depth-first, and execute a callback for each block:
+
+```typescript
+forEachBlock(
+ callback: (block: Block) => boolean,
+ reverse: boolean = false
+): void;
+
+// Usage
+editor.forEachBlock((block) => {...});
+```
+
+`callback:` The callback to execute for each block. Returning `false` stops the traversal.
+
+`reverse:` Whether the blocks should be traversed in reverse order.
+
+### Getting the hovered / selected Block
+
+See [Cursor & Selections](/docs/editor-api/cursor-selections) to learn how to retrieve the block a user is interacting with.
+
+## Inserting New Blocks
+
+Use `insertBlocks` to insert new blocks into the document:
+
+```typescript
+insertBlocks(
+ blocksToInsert: PartialBlock[],
+ referenceBlock: BlockIdentifier,
+ placement: "before" | "after" | "nested" = "before"
+): void;
+
+// Usage
+editor.insertBlocks([{type: "paragraph", text: "Hello World"}], referenceBlock, placement)
+```
+
+`blocksToInsert:` An array of [partial blocks](/docs/editor-api/manipulating-blocks#partial-blocks) that should be inserted.
+
+`referenceBlock:` An [identifier](/docs/editor-api/manipulating-blocks#block-identifiers) for an existing block, at which the new blocks should be inserted.
+
+`placement:` Whether the blocks should be inserted just before, just after, or nested inside the `referenceBlock`. Inserts the blocks at the start of the existing block's children if `"nested"` is used.
+
+If a block's `id` is undefined, BlockNote generates one automatically.
+
+The method throws an error if the reference block could not be found.
+
+## Updating Blocks
+
+Use `updateBlock` to update an existing block:
+
+```typescript
+updateBlock(
+ blockToUpdate: BlockIdentifier,
+ update: PartialBlock
+): void;
+
+// Example to change a block type to paragraph
+editor.updateBlock(blockToUpdate, { type: "paragraph" });
+```
+
+`blockToUpdate:` The [identifier](/docs/editor-api/manipulating-blocks#block-identifiers) of an existing block that should be updated.
+
+`update:` A [partial blocks](/docs/editor-api/manipulating-blocks#partial-blocks) which defines how the existing block should be changed.
+
+Since `blockToUpdate` is a `PartialBlock` object, some fields might not be defined. These undefined fields are kept as-is from the existing block.
+
+Throws an error if the block to update could not be found.
+
+## Removing Blocks
+
+Use `removeBlocks` to remove existing blocks from the document:
+
+```typescript
+removeBlocks(
+ blocksToRemove: BlockIdentifier[],
+): void;
+
+// Usage
+editor.removeBlocks(blocksToRemove)
+```
+
+`blocksToRemove:` An array of [identifier](/docs/editor-api/manipulating-blocks#block-identifiers) for existing blocks that should be removed.
+
+Throws an error if any of the blocks could not be found.
+
+## Replacing Blocks
+
+Use `replaceBlocks` to replace existing blocks in the editor with new blocks:
+
+```typescript
+replaceBlocks(
+ blocksToRemove: BlockIdentifier[],
+ blocksToInsert: PartialBlock[],
+): void;
+
+// Usage
+editor.replaceBlocks(blocksToRemove, blocksToInsert)
+```
+
+`blocksToRemove:` An array of [identifier](/docs/editor-api/manipulating-blocks#block-identifiers) for existing blocks that should be replaced.
+
+`blocksToInsert:` An array of [partial blocks](/docs/editor-api/manipulating-blocks#partial-blocks) that the existing ones should be replaced with.
+
+If the blocks that should be removed are not adjacent or are at different nesting levels, `blocksToInsert` will be inserted at the position of the first block in `blocksToRemove`.
+
+Throws an error if any of the blocks to remove could not be found.
+
+## Nesting & Un-nesting Blocks
+
+BlockNote also provides functions to nest & un-nest the block containing the [Text Cursor](/docs/editor-api/cursor-selections#text-cursor).
+
+### Nesting Blocks
+
+Use `canNestBlock` to check whether the block containing the [Text Cursor](/docs/editor-api/cursor-selections#text-cursor) can be nested (i.e. if there is a block above it at the same nesting level):
+
+```typescript
+canNestBlock(): boolean;
+
+// Usage
+const canNestBlock = editor.canNestBlock();
+```
+
+Then, use `nestBlock` to actually nest (indent) the block:
+
+```typescript
+nestBlock(): void;
+
+// Usage
+editor.nestBlock();
+```
+
+### Un-nesting Blocks
+
+Use `canUnnestBlock` to check whether the block containing the [Text Cursor](/docs/editor-api/cursor-selections#text-cursor) can be un-nested (i.e. if it's nested in another block):
+
+```typescript
+canUnnestBlock(): boolean;
+
+// Usage
+const canUnnestBlock = editor.canUnnestBlock();
+```
+
+Then, use `unnestBlock` to un-nest the block:
+
+```typescript
+unnestBlock(): void;
+
+// Usage
+editor.unnestBlock();
+```
diff --git a/docs/pages/docs/editor-api/manipulating-inline-content.mdx b/docs/pages/docs/editor-api/manipulating-inline-content.mdx
new file mode 100644
index 0000000000..651d819357
--- /dev/null
+++ b/docs/pages/docs/editor-api/manipulating-inline-content.mdx
@@ -0,0 +1,121 @@
+---
+title: Manipulating Inline Content
+imageTitle: Manipulating Inline Content
+path: /docs/block-content
+---
+
+# Manipulating Inline Content
+
+`BlockNoteEditor` exposes a number of functions to interact with the currently selected content.
+
+## Partial Inline Content
+
+When retrieving inline content from the editor, you always receive complete `InlineContent` objects.
+For updating or creating inline content, you don't need to pass all properties, and you can use a `PartialInlineContent` type instead:
+
+```typescript
+type PartialLink = {
+ type: "link";
+ content: string | StyledText[];
+ href: string;
+};
+
+type PartialInlineContent = string | (string | PartialLink | StyledText)[];
+```
+
+## Inserting Inline Content
+
+You can insert inline content using the following function:
+
+```typescript
+insertInlineContent(content: PartialInlineContent)
+
+// Usage
+editor.insertInlineContent([
+ "Hello ",
+ { type: "text", text: "World", styles: { bold: true } }
+]);
+```
+
+## Accessing Styles
+
+You can get the styles at the current [Text Cursor Position](/docs/editor-api/cursor-selections#text-cursor) using the following function:
+
+```typescript
+getActiveStyles(): Styles;
+
+// Usage
+const styles = editor.getActiveStyles();
+```
+
+If a [Selection](/docs/editor-api/cursor-selections#selections) is active, this function returns the active styles at the end of the selection.
+
+## Adding Styles
+
+You can add styles to the currently selected text using the following function:
+
+```typescript
+addStyles(styles: Styles): void;
+
+// Usage
+editor.addStyles({ textColor: "red" });
+```
+
+## Removing Styles
+
+You can remove styles from the currently selected text using the following function:
+
+```typescript
+removeStyles(styles: Styles): void;
+
+// Usage
+editor.removeStyles({ bold: true });
+```
+
+## Toggling Styles
+
+You can toggle styles on the currently selected text using the following function:
+
+```typescript
+toggleStyles(styles: Styles): void;
+
+// Usage
+editor.toggleStyles({ bold: true, italic: true });
+```
+
+## Accessing Selected Text
+
+You can get the currently selected text using the following function:
+
+```typescript
+getSelectedText(): string;
+
+// Usage
+const text = editor.getSelectedText();
+```
+
+## Accessing Selected Link
+
+You can get the URL of the link in the current selection the following function:
+
+```typescript
+getSelectedLink(): string | undefined;
+
+// Usage
+const linkUrl = editor.getSelectedLink();
+```
+
+If there are multiple links in the selection, this function only returns the last one's URL. If there are no links, returns `undefined`.
+
+## Creating a Link
+
+You can create a new link using the following function:
+
+```typescript
+createLink(url: string, text?: string): void;
+
+// Usage
+editor.createLink("https://www.blocknotejs.org/", "BlockNote");
+```
+
+If a [Selection](/docs/editor-api/cursor-selections#selections) is active, the new link will replace the currently selected content.
diff --git a/docs/pages/docs/editor-basics.mdx b/docs/pages/docs/editor-basics.mdx
new file mode 100644
index 0000000000..08889d9421
--- /dev/null
+++ b/docs/pages/docs/editor-basics.mdx
@@ -0,0 +1,5 @@
+# Editor basics
+
+In this section, we first explore the [methods to setup your editor](/docs/editor-basics/setup).
+Then, we'll dive into the structure of documents, Blocks and rich text content in BlockNote ([document structure](/docs/editor-basics/document-structure)).
+We'll also go over the blocks and content types that are part of BlockNote's [default built-in schema](/docs/editor-basics/default-schema).
diff --git a/docs/pages/docs/editor-basics/_meta.json b/docs/pages/docs/editor-basics/_meta.json
new file mode 100644
index 0000000000..56345dccb5
--- /dev/null
+++ b/docs/pages/docs/editor-basics/_meta.json
@@ -0,0 +1,5 @@
+{
+ "setup": "Editor Setup",
+ "document-structure": "Document Structure",
+ "default-schema": "Default Schema"
+}
diff --git a/docs/pages/docs/editor-basics/default-schema.mdx b/docs/pages/docs/editor-basics/default-schema.mdx
new file mode 100644
index 0000000000..f5422ab5ab
--- /dev/null
+++ b/docs/pages/docs/editor-basics/default-schema.mdx
@@ -0,0 +1,193 @@
+---
+title: Default Content Types
+description: BlockNote supports a variety on built-in block and inline content types that are included in the editor by default.
+imageTitle: Default Content Types
+---
+
+
+
+import { Example } from "@/components/example";
+
+# Default Content Types
+
+BlockNote supports a number of built-in blocks, inline content types, and styles that are included in the editor by default. This is called the Default Schema. To create your own content types, see [Custom Schemas](/docs/custom-schemas).
+
+The demo below showcases each of BlockNote's built-in block and inline content types:
+
+
+
+## Default Blocks
+
+BlockNote's built-in blocks range from basic paragraphs to tables and images.
+
+### Reference
+
+Let's look more in-depth at the default blocks and the properties they support:
+
+#### Paragraph
+
+**Type & Props**
+
+```typescript
+type ParagraphBlock = {
+ id: string;
+ type: "paragraph";
+ props: DefaultProps;
+ content: InlineContent[];
+ children: Block[];
+};
+```
+
+#### Heading
+
+**Type & Props**
+
+```typescript
+type HeadingBlock = {
+ id: string;
+ type: "heading";
+ props: {
+ level: 1 | 2 | 3 = 1;
+ } & DefaultProps;
+ content: InlineContent[];
+ children: Block[];
+};
+```
+
+`level:` The heading level, representing a title (`level: 1`), heading (`level: 2`), and subheading (`level: 3`).
+
+#### Bullet List Item
+
+**Type & Props**
+
+```typescript
+type BulletListItemBlock = {
+ id: string;
+ type: "bulletListItem";
+ props: DefaultProps;
+ content: InlineContent[];
+ children: Block[];
+};
+```
+
+#### Numbered List Item
+
+**Type & Props**
+
+```typescript
+type NumberedListItemBlock = {
+ id: string;
+ type: "numberedListItem";
+ props: DefaultProps;
+ content: InlineContent[];
+ children: Block[];
+};
+```
+
+#### Image
+
+**Type & Props**
+
+```typescript
+type ImageBlock = {
+ id: string;
+ type: "image";
+ props: {
+ url: string = "";
+ caption: string = "";
+ width: number = 512;
+ } & DefaultProps;
+ content: undefined;
+ children: Block[];
+};
+```
+
+`url:` The image URL.
+
+`caption:` The image caption.
+
+`width:` The image width in pixels.
+
+#### Table
+
+**Type & Props**
+
+```typescript
+type TableBlock = {
+ id: string;
+ type: "table";
+ props: DefaultProps;
+ content: TableContent[];
+ children: Block[];
+};
+```
+
+### Default Block Properties
+
+There are some default block props that BlockNote uses for the built-in blocks:
+
+```typescript
+type DefaultProps = {
+ backgroundColor: string = "default";
+ textColor: string = "default";
+ textAlignment: "left" | "center" | "right" | "justify" = "left";
+};
+```
+
+`backgroundColor:` The background color of the block, which also applies to nested blocks.
+
+`textColor:` The text color of the block, which also applies to nested blocks.
+
+`textAlignment:` The text alignment of the block.
+
+## Default Inline Content
+
+By default, `InlineContent` (the content of text blocks like paragraphs) in BlockNote can either be a `StyledText` or a `Link` object.
+
+### Reference
+
+Here's an overview of all default inline content and the properties they support:
+
+#### Styled Text
+
+`StyledText` is a type of `InlineContent` used to display pieces of text with styles:
+
+```typescript
+type StyledText = {
+ type: "text";
+ text: string;
+ styles: Styles;
+};
+```
+
+#### Link
+
+`Link` objects represent links to a URL:
+
+```typescript
+type Link = {
+ type: "link";
+ content: StyledText[];
+ href: string;
+};
+```
+
+## Default Styles
+
+The default text formatting options in BlockNote are represented by the `Styles` in the default schema:
+
+```typescript
+type Styles = {
+ bold: boolean;
+ italic: boolean;
+ underline: boolean;
+ strikethrough: boolean;
+ textColor: string;
+ backgroundColor: string;
+};
+```
+
+## Creating New Block or Inline Content Types
+
+You can also extend your editor and create your own Blocks, Inline Content or Styles using React.
+Skip to [Custom Schemas (advanced)](/docs/custom-schemas) to learn how to do this.
diff --git a/docs/pages/docs/editor-basics/document-structure.mdx b/docs/pages/docs/editor-basics/document-structure.mdx
new file mode 100644
index 0000000000..e8dc2009ad
--- /dev/null
+++ b/docs/pages/docs/editor-basics/document-structure.mdx
@@ -0,0 +1,97 @@
+---
+description: Learn how documents (the content of the rich text editor) are structured to make the most out of BlockNote.
+---
+
+import { Example } from "@/components/example";
+
+# Document Structure
+
+Learn how documents (the content of the rich text editor) are structured to make the most out of BlockNote.
+
+## Blocks
+
+Each BlockNote document is made up of a list of blocks.
+A block is a piece of content like a paragraph, heading, list item or image. Blocks can be dragged around by users in the editor. A block contains a piece of content and optionally nested (child) blocks:
+
+
+
+### Block Objects
+
+The `Block` type is used to describe any given block in the editor:
+
+```typescript
+type Block = {
+ id: string;
+ type: string;
+ props: Record;
+ content: InlineContent[] | TableContent | undefined;
+ children: Block[];
+};
+```
+
+`id:` The block's ID. Multiple blocks cannot share a single ID, and a block will keep the same ID from when it's created until it's removed.
+
+`type:` The block's type, such as a paragraph, heading, or list item. For an overview of built-in block types, see [Default Blocks](/docs/editor-basics/default-content-types#default-blocks).
+
+`props:` The block's properties, which is a set of key/value pairs that further specify how the block looks and behaves. Different block types have different props - see [Default Blocks](/docs/editor-basics/default-content-types#default-blocks) for more.
+
+`content:` The block's rich text content, usually represented as an array of `InlineContent` objects. This does not include content from any nested blocks. Read on to [Inline Content](/docs/editor-basics/content-structure#inline-content) for more on this.
+
+`children:` Any blocks nested inside the block. The nested blocks are also represented using `Block` objects.
+
+## Inline Content
+
+The `content` field of a block contains the rich-text content of a block. This is defined as an array of `InlineContent` objects. Inline content can either be styled text or a link (or a custom inline content type if you customize the editor schema).
+
+### Inline Content Objects
+
+The `InlineContent` type is used to describe a piece of inline content:
+
+```typescript
+type Link = {
+ type: "link";
+ content: StyledText[];
+ href: string;
+};
+
+type StyledText = {
+ type: "text";
+ text: string;
+ styles: Styles;
+};
+
+type InlineContent = Link | StyledText;
+```
+
+The `styles` property is explained below.
+
+### Other types of Block Content
+
+While most blocks use an array of `InlineContent` objects to describe their content (e.g.: paragraphs, headings, list items). Some blocks, like [images](/docs/editor-basics/default-content-types#image), don't contain any rich text content, so their `content` fields will be `undefined`.
+
+[Tables](/docs/editor-basics/default-content-types#table) are also different, as they contain `TableContent`. Here, each table cell is represented as an array of `InlineContent` objects:
+
+```typescript
+type TableContent = {
+ type: "tableContent";
+ rows: {
+ cells: InlineContent[][];
+ }[];
+};
+```
+
+### Styles and Rich Text
+
+The `styles` property of `StyledText` objects is used to describe the rich text styles (e.g.: bold, italic, color) or other attributes of a piece of text. It's a set of key / value pairs that specify the styles applied to the text.
+
+See the [Default Schema](/docs/editor-basics/default-schema) to learn which styles are included in BlockNote by default.
+
+## Document JSON
+
+The demo below shows the editor contents (document) in JSON. It's an array of `Block` objects that updates as you type in the editor:
+
+
diff --git a/docs/pages/docs/editor-basics/setup.mdx b/docs/pages/docs/editor-basics/setup.mdx
new file mode 100644
index 0000000000..38f23c097d
--- /dev/null
+++ b/docs/pages/docs/editor-basics/setup.mdx
@@ -0,0 +1,134 @@
+---
+description: Learn how to setup your BlockNote editor using the `useCreateBlockNote` hook and the ``BlockNoteView` component.
+---
+
+import { Callout } from "nextra/components";
+
+# Editor Setup
+
+You can customize your editor when you instantiate it. Let's take a closer looks at the basic methods and components to set up your BlockNote editor.
+
+## `useCreateBlockNote` hook
+
+Create a new `BlockNoteEditor` by calling the `useCreateBlockNote` hook. This instantiates a new editor and its required state. You can later interact with the editor using the Editor API and pass it to the `BlockNoteView` component.
+
+```ts
+function useCreateBlockNote(
+ options?: BlockNoteEditorOptions,
+ deps?: React.DependencyList = [],
+): BlockNoteEditor;
+
+type BlockNoteEditorOptions = {
+ initialContent?: PartialBlock[];
+ domAttributes?: Record;
+ defaultStyles?: boolean;
+ uploadFile?: (file: File) => Promise;
+ collaboration?: CollaborationOptions;
+ schema?: BlockNoteSchema;
+};
+```
+
+The hook takes two optional parameters:
+
+**options:** An object containing options for the editor:
+
+`initialContent:` The content that should be in the editor when it's created, represented as an array of [partial block objects](/docs/manipulating-blocks#partial-blocks).
+
+`domAttributes:` An object containing HTML attributes that should be added to various DOM elements in the editor. See [Adding DOM Attributes](/docs/theming#adding-dom-attributes) for more.
+
+`defaultStyles`: Whether to use the default font and reset the styles of ``, `
`, ``, etc. elements that are used in BlockNote. Defaults to true if undefined.
+
+`uploadFile`: A function which handles file uploads and eventually returns the URL to the uploaded file. Used for [Image blocks](/docs/editor-basics/default-schema#image).
+
+`collaboration`: Options for enabling real-time collaboration. See [Collaboration](/docs/collaboration) for more info.
+
+`schema` (_advanced_): The editor schema if you want to extend your editor with custom blocks, styles, or inline content [Custom Schemas](/docs/custom-schemas).
+
+**deps:** Dependency array that's internally passed to `useMemo`. A new editor will only be created when this array changes.
+
+
+ Manually creating the editor (`BlockNoteEditor.create`)
+
+ The `useCreateBlockNote` hook is actually a simple `useMemo` wrapper around
+ the `BlockNoteEditor.create` method. You can use this method directly if you
+ want to control the editor lifecycle manually. For example, we do this in
+ the [Saving & Loading example](/examples/basic/saving-loading) to delay the
+ editor creation until some content has been fetched from an external data
+ source.
+
+
+
+## Rendering the Editor with ``
+
+Use the `` component to render the `BlockNoteEditor` instance you just created:
+
+```tsx
+const editor = useCreateBlockNote();
+
+return ;
+```
+
+### Props
+
+There are a number of additional props you can pass to `BlockNoteView`. You can find the full list of these below:
+
+```typescript
+export type BlockNoteViewProps = {
+ editor: BlockNoteEditor;
+ editable?: boolean;
+ onSelectionChange?: () => void;
+ onChange?: () => void;
+ theme?:
+ | "light"
+ | "dark"
+ | Theme
+ | {
+ light: Theme;
+ dark: Theme;
+ };
+ formattingToolbar?: boolean;
+ hyperlinkToolbar?: boolean;
+ sideMenu?: boolean;
+ slashMenu?: boolean;
+ imageToolbar?: boolean;
+ tableHandles?: boolean;
+ children?:
+} & HTMLAttributes;
+```
+
+`editor`: The `BlockNoteEditor` instance to render.
+
+`editable`: Whether the editor should be editable.
+
+`onSelectionChange`: Callback for when the editor selection changes.
+
+`onChange`: Callback for when the editor selection or content changes.
+
+`theme`: The editor's theme, see [Themes](/docs/styling-theming/themes) for more about this.
+
+`formattingToolbar`: Whether the [Formatting Toolbar](/docs/ui-components/formatting-toolbar) should be enabled.
+
+`hyperlinkToolbar`: Whether the Hyperlink Toolbar should be enabled.
+
+`sideMenu`: Whether the [Block Side Menu](/docs/ui-components/side-menu) should be enabled.
+
+`slashMenu`: Whether the [Slash Menu](/docs/ui-components/suggestion-menus#slash-menu) should be enabled.
+
+`imageToolbar`: Whether the Image Toolbar should be enabled.
+
+`tableHandles`: Whether the Table Handles should be enabled.
+
+`children`: Pass child elements to the `BlockNoteView` to create or customize toolbars, menus, or other UI components. See [UI Components](/docs/ui-components) for more.
+
+Additional props passed are forwarded to the HTML `div` element BlockNote renders internally.
+
+
+ Uncontrolled component
+
+ Note that the `BlockNoteView` component is an [uncontrolled component](https://react.dev/learn/sharing-state-between-components#controlled-and-uncontrolled-components).
+ This means you don't pass in the editor content directly as a prop. You can use the `initialContent` option in the `useCreateBlockNote` hook to set the initial content of the editor (similar to the `defaultValue` prop in a regular React `
+
+ BlockNote handles the complexities and performance optimizations of managing editor state internally. You can interact with the editor content using the [Editor API](/docs/editor-api).
+
+
diff --git a/docs/pages/docs/index.mdx b/docs/pages/docs/index.mdx
new file mode 100644
index 0000000000..c2819c0896
--- /dev/null
+++ b/docs/pages/docs/index.mdx
@@ -0,0 +1,45 @@
+---
+title: Introduction to BlockNote
+imageTitle: Introduction to BlockNote
+path: /docs/introduction
+---
+
+import { Example } from "@/components/example";
+
+# Introduction to BlockNote
+
+
+
+BlockNote is a block-based rich-text editor for [React](https://reactjs.org/), focused on providing a great out-of-the-box experience with minimal setup.
+
+With BlockNote, we want to make it easy for developers to add a next-generation text editing experience to their app, with a UX that's on-par with industry leaders like Notion, Google Docs or Coda.
+
+Unlike other rich-text editor libraries, BlockNote organizes documents into blocks. This makes it easy for the user to organize their document, and for developers to interact with the document from code.
+
+BlockNote has been created with extensibility in mind. You can customize the document, create custom block types and customize UX elements like menu items. Advanced users can even create their own UI from scratch and use BlockNote with vanilla JavaScript instead of React.
+
+- Jump right into the [quickstart](/docs/quickstart) to get started
+- Learn about [blocks and the editor basics](/docs/editor-basics) and how to interact with the editor using the [editor API](/docs/editor-api)
+- See [UI Components](/docs/ui-components) to customize built-in menus and toolbars and [Styling & Theming](/docs/styling-theming) to customize the look and feel of the editor
+- Further extend the editor with your own Blocks using [Custom Schemas](/docs/custom-schemas) or add [Real-Time Collaboration](/docs/advanced/real-time-collaboration)
+
+## Why BlockNote?
+
+There are plenty of libraries out there for creating rich-text editors. In fact, BlockNote is built on top of the widely used [ProseMirror](https://prosemirror.net/) and [TipTap](https://tiptap.dev/).
+
+As powerful as they are, these libraries often have quite a steep learning-curve and require you to customize every single detail of your editor. This can require months of specialized work.
+
+BlockNote instead, offers a great experience with minimal setup, including a ready-made and animated UI.
+
+On top of that, it comes with a modern block-based design. This gives documents more structure, allow for a richer user experience while simultaneously making it easier to customize the editor's functionality.
+
+
+## Community
+
+We'd love your feedback! If you have questions, need help, or want to contribute reach out to the community on [Discord](https://discord.gg/Qc2QTTH5dF) and [GitHub](https://github.com/TypeCellOS/BlockNote).
+
+## Next: Set up BlockNote
+
+See how to set up your own editor in the [Quickstart](/docs/quickstart). Here's a quick sneak peek in case you can't wait!
+
+
diff --git a/docs/pages/docs/quickstart.mdx b/docs/pages/docs/quickstart.mdx
new file mode 100644
index 0000000000..c33ef16616
--- /dev/null
+++ b/docs/pages/docs/quickstart.mdx
@@ -0,0 +1,55 @@
+---
+title: Quickstart
+description: Getting started with BlockNote is quick and easy. All you need to do is install the package and add the React component to your app!
+imageTitle: Quickstart
+path: /docs/quickstart
+---
+
+import { Example } from "@/components/example";
+import { Callout } from "nextra/components";
+
+# Quickstart
+
+Getting started with BlockNote is quick and easy. Install the required packages and add the React component to your app.
+
+## Installing with NPM
+
+To install BlockNote with [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm), run:
+
+```console
+npm install @blocknote/core @blocknote/react
+```
+
+## Creating an Editor
+
+With the `useCreateBlockNote` hook, we can create a new editor instance, then use the`BlockNoteView` component to render it. See below:
+
+
+
+We also import `@blocknote/react/style.css` to add default styling for the editor and the `Inter` font that BlockNote exports (optional).
+
+
+ Next.js usage (or other server-side React frameworks)
+
+ Are you using Next.js (`create-next-app`)? Because BlockNote is a
+ client-only component, make sure to disable server-side rendering of
+ BlockNote. [Read our guide on setting up Next.js + BlockNote](/docs/nextjs)
+
+
+
+
+ Using BlockNote without React
+
+ It's also possible to use BlockNote without React, using "vanilla"
+ JavaScript or other frameworks. [Read our guide on using BlockNote without
+ React](/docs/vanilla-js){" "}
+
+
+
+## Next steps
+
+You now know how to integrate BlockNote into your React app! However, this is just scratching the surface of what you can do with BlockNote.
+
+- Learn about [blocks and the editor basics](/docs/editor-basics) and how to interact with the editor using the [editor API](/docs/editor-api)
+- See [UI Components](/docs/ui-components) to customize built-in menus and toolbars and [Styling & Theming](/docs/styling-theming) to customize the look and feel of the editor
+- Further extend the editor with your own Blocks using [Custom Schemas](/docs/custom-schemas) or add [Real-Time Collaboration](/docs/advanced/real-time-collaboration)
diff --git a/docs/pages/docs/styling-theming.mdx b/docs/pages/docs/styling-theming.mdx
new file mode 100644
index 0000000000..9ea847fe42
--- /dev/null
+++ b/docs/pages/docs/styling-theming.mdx
@@ -0,0 +1,12 @@
+---
+title: Styling & Theming
+description: You can completely change the look and feel of the BlockNote editor. Change basic styling quickly with theme CSS variables, or apply more complex styles with additional CSS rules.
+imageTitle: Styling & Theming
+path: /docs/styling-theming
+---
+
+# Styling & Theming
+
+You can completely change the look and feel of the BlockNote editor. Change basic styling quickly with [theme CSS variables](/docs/styling-theming/themes), or apply more complex styles with [additional CSS rules](/docs/styling-theming/overriding-css).
+
+If you want to change, remove, or entirely replace the React components for menus & toolbars, see [UI Components](/docs/ui-components).
diff --git a/docs/pages/docs/styling-theming/_meta.json b/docs/pages/docs/styling-theming/_meta.json
new file mode 100644
index 0000000000..849151839e
--- /dev/null
+++ b/docs/pages/docs/styling-theming/_meta.json
@@ -0,0 +1,5 @@
+{
+ "themes": "Themes",
+ "overriding-css": "Overriding CSS",
+ "adding-dom-attributes": "Adding DOM Attributes"
+}
diff --git a/docs/pages/docs/styling-theming/adding-dom-attributes.mdx b/docs/pages/docs/styling-theming/adding-dom-attributes.mdx
new file mode 100644
index 0000000000..10663f9497
--- /dev/null
+++ b/docs/pages/docs/styling-theming/adding-dom-attributes.mdx
@@ -0,0 +1,27 @@
+---
+title: Adding DOM Attributes
+description: BlockNote allows you to change how the editor UI looks. You can change the theme of the default UI, or override its CSS styles.
+imageTitle: Styling & Theming
+path: /docs/theming
+---
+
+import { Example } from "@/components/example";
+
+# Adding DOM Attributes
+
+You can set additional HTML attributes on a number of DOM elements inside the editor. There include:
+
+`editor:` The editor itself, excluding menus & toolbars.
+
+`block:` The main container element for blocks. Contains both the block's content and its nested blocks.
+
+`blockGroup:` The wrapper element for all top-level blocks in the editor and nested blocks.
+
+`blockContent:` The wrapper element for a block's content.
+
+`inlineContent:` The wrapper element for a block's rich-text content.
+
+
+In the demo below, we set a custom class on the `block` element to add a border to each block:
+
+
\ No newline at end of file
diff --git a/docs/pages/docs/styling-theming/overriding-css.mdx b/docs/pages/docs/styling-theming/overriding-css.mdx
new file mode 100644
index 0000000000..2f926f1ca2
--- /dev/null
+++ b/docs/pages/docs/styling-theming/overriding-css.mdx
@@ -0,0 +1,56 @@
+---
+title: Overriding CSS
+description: You can change any styles applied to the editor by setting your own CSS styles.
+imageTitle: Overriding CSS
+path: /docs/styling-theming/overriding-css
+---
+
+import { Example } from "@/components/example";
+
+# Overriding CSS
+
+In the demo below, we create additional CSS rules to make the editor text and hovered slash menu items blue:
+
+
+
+In this page you'll find the main selectors which are useful to create your own CSS rules, including the ones seen in the demo. However, if you want to target a specific DOM element, it's easiest to just inspect the DOM tree using your browser's dev tools.
+
+## BlockNote CSS Classes
+
+Within the editor's DOM structure, you'll find many elements have classes with the `bn-` prefix. BlockNote uses these to apply CSS styles to the editor, which you can override with your own. Here are some of the most useful BlockNote classes that you can use for your CSS rules:
+
+`.bn-container`: Container element for the editor, as well as all menus and toolbars.
+
+`.bn-editor`: Element for only the editor.
+
+`.bn-block`: Element for a block, including nested blocks.
+
+`.bn-block-group`: Container element for nested blocks.
+
+`.bn-block-content`: Element for a block's content.
+
+`.bn-inline-content`: Element for only the block's editable, rich text content.
+
+`.bn-toolbar`: Element for the formatting & hyperlink toolbars.
+
+`.bn-side-menu`: Element for the side menu.
+
+`.bn-drag-handle-menu`: Element for the drag handle menu.
+
+`.bn-slash-menu`: Element for the slash menu.
+
+## BlockNote CSS Attributes
+
+In addition to classes, BlockNote also uses the following attributes to target a specific block type & props:
+
+`[data-content-type="blockType"]`: Element for a block's content, but only for blocks of type `blockType`.
+
+`[data-propName="propValue"]`: Element for a block's content, but only for blocks with the `propName` prop with value `propValue`.
+
+For example, `[data-content-type="heading"][data-level="2"]` will select all heading blocks with heading level 2.
+
+## Mantine Classes
+
+Because BlockNote uses [Mantine](https://mantine.dev/) for its UI, you can also write CSS rules using any of the default Mantine component classes.
+
+
diff --git a/docs/pages/docs/styling-theming/themes.mdx b/docs/pages/docs/styling-theming/themes.mdx
new file mode 100644
index 0000000000..335205bd63
--- /dev/null
+++ b/docs/pages/docs/styling-theming/themes.mdx
@@ -0,0 +1,124 @@
+---
+title: Themes
+description: Themes let you quickly change the basic look of the editor UI, including colors, borders, shadows, and font.
+imageTitle: Themes
+path: /docs/styling-theming/theming
+---
+
+import { Example } from "@/components/example";
+
+# Themes
+
+Themes let you quickly change the basic look of the editor UI, including colors, borders, shadows, and font. If you want to set more complex styles on the editor, see [Overriding CSS](/docs/styling-theming/overriding-css).
+
+## Theme CSS Variables
+
+A theme is made up of a set of CSS variables, which can be overwritten to change the editor theme. BlockNote comes with two default themes, one for light and one for dark mode, which are selected based on system preference.
+
+Here are each of the theme CSS variables you can set, with values from the default light theme:
+
+```
+--bn-colors-editor-text: #3f3f3f;
+--bn-colors-editor-background: #ffffff;
+--bn-colors-menu-text: #3f3f3f;
+--bn-colors-menu-background: #ffffff;
+--bn-colors-tooltip-text: #3f3f3f;
+--bn-colors-tooltip-background: #efefef;
+--bn-colors-hovered-text: #3f3f3f;
+--bn-colors-hovered-background: #efefef;
+--bn-colors-selected-text: #ffffff;
+--bn-colors-selected-background: #3f3f3f;
+--bn-colors-disabled-text: #afafaf;
+--bn-colors-disabled-background: #efefef;
+
+--bn-colors-shadow: #cfcfcf;
+--bn-colors-border: #efefef;
+--bn-colors-side-menu: #cfcfcf;
+
+--bn-colors-highlights-gray-text: #9b9a97;
+--bn-colors-highlights-gray-background: #ebeced;
+--bn-colors-highlights-brown-text: #64473a;
+--bn-colors-highlights-brown-background: #e9e5e3;
+--bn-colors-highlights-red-text: #e03e3e;
+--bn-colors-highlights-red-background: #fbe4e4;
+--bn-colors-highlights-orange-text: #d9730d;
+--bn-colors-highlights-orange-background: #f6e9d9;
+--bn-colors-highlights-yellow-text: #dfab01;
+--bn-colors-highlights-yellow-background: #fbf3db;
+--bn-colors-highlights-green-text: #4d6461;
+--bn-colors-highlights-green-background: #ddedea;
+--bn-colors-highlights-blue-text: #0b6e99;
+--bn-colors-highlights-blue-background: #ddebf1;
+--bn-colors-highlights-purple-text: #6940a5;
+--bn-colors-highlights-purple-background: #eae4f2;
+--bn-colors-highlights-pink-text: #ad1a72;
+--bn-colors-highlights-pink-background: #f4dfeb;
+
+--bn-font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Open Sans",
+ "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans",
+ "Helvetica Neue", sans-serif;
+--bn-border-radius: 6px;
+```
+
+Setting these variables on the `.bn-container[data-color-scheme]` selector will overwrite them for both default light & dark themes. To overwrite variables separately for light & dark themes, use the `.bn-container[data-color-scheme="light"]` and `.bn-container[data-color-scheme="dark"]` selectors.
+
+In the demo below, we set a red theme for the editor which changes based on if light or dark mode is selected (see this in action by changing the website theme in the footer):
+
+
+
+## Changing CSS Variables Through Code
+
+You can also set the theme CSS variables using the `theme` prop in [`BlockNoteView`](/docs/editor-basics/setup#rendering-the-editor-with-blocknoteview). Passing a `Theme` object will overwrite CSS variables for both light & dark themes with values from the object:
+
+```ts
+type CombinedColor = Partial<{
+ text: string;
+ background: string;
+}>;
+
+type ColorScheme = Partial<{
+ editor: CombinedColor;
+ menu: CombinedColor;
+ tooltip: CombinedColor;
+ hovered: CombinedColor;
+ selected: CombinedColor;
+ disabled: CombinedColor;
+ shadow: string;
+ border: string;
+ sideMenu: string;
+ highlights: Partial<{
+ gray: CombinedColor;
+ brown: CombinedColor;
+ red: CombinedColor;
+ orange: CombinedColor;
+ yellow: CombinedColor;
+ green: CombinedColor;
+ blue: CombinedColor;
+ purple: CombinedColor;
+ pink: CombinedColor;
+ }>;
+}>;
+
+type Theme = Partial<{
+ colors: ColorScheme;
+ borderRadius: number;
+ fontFamily: string;
+}>;
+```
+
+Alternatively, you can overwrite CSS variables the light & dark theme separately by passing the following object type:
+
+```ts
+type LightAndDarkThemes = {
+ light: Theme;
+ dark: Theme;
+};
+```
+
+In the demo below, we create the same red theme as from the previous demo, but this time we set it using the `theme` prop in `BlockNoteView`:
+
+
+
+### Forcing Light/Dark Mode
+
+By passing `"light"` or `"dark"` to the `theme` prop instead of a `Theme` object, you can also force BlockNote to always use the light or dark theme.
diff --git a/docs/pages/docs/ui-components.mdx b/docs/pages/docs/ui-components.mdx
new file mode 100644
index 0000000000..135e1c3d8c
--- /dev/null
+++ b/docs/pages/docs/ui-components.mdx
@@ -0,0 +1,16 @@
+---
+title: UI Components
+description: BlockNote includes a number of UI Components (like menus and toolbars) that can be completely customized.
+imageTitle: UI Components
+path: /docs/ui-components
+---
+
+# Changing UI Components
+
+BlockNote includes a number of UI Components (like menus and toolbars) that can be completely customized:
+
+- [Block Side Menu](/docs/side-menu)
+- [Formatting Toolbar](/docs/formatting-toolbar)
+- [Suggestion Menus](/docs/suggestion-menus)
+ {/* - Hyperlink Toolbar */}
+ {/* - [Image Toolbar](/docs/image-toolbar) */}
diff --git a/docs/pages/docs/ui-components/_meta.json b/docs/pages/docs/ui-components/_meta.json
new file mode 100644
index 0000000000..850fab1a9d
--- /dev/null
+++ b/docs/pages/docs/ui-components/_meta.json
@@ -0,0 +1,13 @@
+{
+ "side-menu": "Block Side Menu",
+ "formatting-toolbar": "Formatting Toolbar",
+ "hyperlink-toolbar": {
+ "title": "Hyperlink Toolbar",
+ "display": "hidden"
+ },
+ "image-toolbar": {
+ "title": "Image Toolbar",
+ "display": "hidden"
+ },
+ "suggestion-menus": "Suggestion Menus"
+}
diff --git a/docs/pages/docs/ui-components/formatting-toolbar.mdx b/docs/pages/docs/ui-components/formatting-toolbar.mdx
new file mode 100644
index 0000000000..032ef7f047
--- /dev/null
+++ b/docs/pages/docs/ui-components/formatting-toolbar.mdx
@@ -0,0 +1,47 @@
+---
+title: Formatting Toolbar
+description: The Formatting Toolbar appears whenever you highlight text in the editor.
+imageTitle: Formatting Toolbar
+path: /docs/formatting-toolbar
+---
+
+import { Example } from "@/components/example";
+
+# Formatting Toolbar
+
+The Formatting Toolbar appears whenever you highlight text in the editor.
+
+
+
+## Changing the Formatting Toolbar
+
+You can change or replace the Formatting Toolbar with your own React component. In the demo below, 2 buttons are added to the default Formatting Toolbar - one to add a blue text/background, and one to toggle code styles.
+
+
+
+We use the `FormattingToolbar` component to create a custom Formatting Toolbar. By specifying its children, we can replace the default buttons in the toolbar with our own.
+
+This custom Formatting Toolbar is passed to a `FormattingToolbarController`, which controls its position and visibility (above or below the highlighted text).
+
+Setting `formattingToolbar={false}` on `BlockNoteView` tells BlockNote not to show the default Formatting Toolbar.
+
+
+
+ Tip: The children you pass to the `FormattingToolbar` component
+ should be default dropdowns/buttons (e.g. `BlockTypeDropdown` & `BasicTextStyleButton`) or custom dropdowns/buttons
+ (`ToolbarDropdown` & `ToolbarButton`). To see all the components you can use, head to the
+ [Formatting Toolbar's source code](link).
+
+
+
+## Changing Block Type Dropdown Items
+
+The first element in the default Formatting Toolbar is the Block Type Dropdown, and you can change the items in it. The demo makes the Block Type Dropdown work for image blocks by adding an item to it.
+
+
+
+Here, we use the `FormattingToolbar` component but keep the default buttons (we don't pass any children). Instead, we pass our customized Block Type Dropdown items using the `blockTypeDropdownItems` prop.
diff --git a/docs/pages/docs/ui-components/hyperlink-toolbar.mdx b/docs/pages/docs/ui-components/hyperlink-toolbar.mdx
new file mode 100644
index 0000000000..e7f5418139
--- /dev/null
+++ b/docs/pages/docs/ui-components/hyperlink-toolbar.mdx
@@ -0,0 +1,37 @@
+---
+title: Hyperlink Toolbar
+description: The Hyperlink Toolbar appears whenever you hover a link in the editor.
+imageTitle: Hyperlink Toolbar
+path: /docs/hyperlink-toolbar
+---
+
+import { Example } from "@/components/example";
+
+# Hyperlink Toolbar
+
+The Hyperlink Toolbar appears whenever you hover a link in the editor.
+
+TODO Image
+
+[//]: # ' '
+
+## Changing the Hyperlink Toolbar
+
+You can change or replace the Hyperlink Toolbar with your own React component. In the demo below, a button is added to the default Hyperlink Toolbar, which opens a browser alert.
+
+[//]: # ( )
+
+We use the `HyperlinkToolbar` component to create a custom Hyperlink Toolbar. By specifying its children, we can replace the default buttons in the toolbar with our own.
+
+This custom Hyperlink Toolbar is passed to a `HyperlinkToolbarController`, which controls its position and visibility (above or below the hovered link).
+
+Setting `hyperlinkToolbar={false}` on `BlockNoteView` tells BlockNote not to show the default Hyperlink Toolbar.
+
+
+
+ Tip: The children you pass to the `HyperlinkToolbar`
+ component should be default buttons (e.g. TODO) or custom dropdowns/buttons
+ (`ToolbarDropdown` & `ToolbarButton`). To see all the components you can
+ use, head to the [Hyperlink Toolbar's source code](link).
+
+
diff --git a/packages/website/docs/docs/image-toolbar.md b/docs/pages/docs/ui-components/image-toolbar.mdx
similarity index 57%
rename from packages/website/docs/docs/image-toolbar.md
rename to docs/pages/docs/ui-components/image-toolbar.mdx
index af46eb60a5..8de6aaf246 100644
--- a/packages/website/docs/docs/image-toolbar.md
+++ b/docs/pages/docs/ui-components/image-toolbar.mdx
@@ -5,18 +5,13 @@ imageTitle: Image Toolbar
path: /docs/image-toolbar
---
-
+import { Example } from "@/components/example";
# Image Toolbar
The Image Toolbar appears whenever you select an image that doesn't have a URL, or when you click the "Replace Image" button in the [Formatting Toolbar](/docs/formatting-toolbar) when an image is selected.
-
+
## Image Upload
@@ -32,29 +27,4 @@ type uploadFile = (file: File) => Promise;
You can use the provided `uploadToTempFilesOrg` function to as a starting point, which uploads files to [tmpfiles.org](https://tmpfiles.org/). However, it's not recommended to use this in a production environment - you should use your own backend:
-::: sandbox {template=react-ts}
-
-```typescript-vue /App.tsx
-import {
- BlockNoteEditor,
- uploadToTmpFilesDotOrg_DEV_ONLY,
-} from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
-
-export default function App() {
- // Creates a new editor instance.
- const editor: BlockNoteEditor = useBlockNote({
- // Sets the example file upload handler.
- uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
- });
-
- return ;
-}
-```
-
-```css-vue /styles.css
-{{ getStyles(isDark) }}
-```
-
-:::
+
diff --git a/docs/pages/docs/ui-components/side-menu.mdx b/docs/pages/docs/ui-components/side-menu.mdx
new file mode 100644
index 0000000000..6a23c1d826
--- /dev/null
+++ b/docs/pages/docs/ui-components/side-menu.mdx
@@ -0,0 +1,64 @@
+---
+title: Block Side Menu
+description: The Block Side Menu appears on the left side whenever you hover a block.
+imageTitle: Block Side Menu
+path: /docs/side-menu
+---
+
+import { Example } from "@/components/example";
+
+# Block Side Menu
+
+The Block Side Menu appears on the left side whenever you hover a block. By default, it consists of a `+` button and a drag handle (`⠿`):
+
+
+
+Clicking the drag handle (`⠿`) in the Block Side Menu opens the Drag Handle Menu:
+
+
+
+## Changing the Block Side Menu
+
+You can change or replace the Block Side Menu with your own React component. In the demo below, the button to add a new block is replaced with one to remove the hovered block.
+
+
+
+We use the `SideMenu` component to create a custom Block Side Menu. By specifying its children, we can replace the default buttons in the menu with our own.
+
+This custom Side Menu is passed to a `SideMenuController`, which controls its position and visibility (on the left side when you hover a block).
+
+Setting `sideMenu={false}` on `BlockNoteView` tells BlockNote not to show the default Block Side Menu.
+
+
+
+ Tip: The children you pass to the `SideMenu` component
+ should be default buttons (e.g. `DragHandleButton`) or custom buttons
+ (`SideMenuButton`). To see all the components you can use, head to the
+ [Side Menu's source code](link).
+
+
+
+## Changing Drag Handle Menu Items
+
+You can also change the items in the Drag Handle Menu. The demo below adds an item that resets the block type to a paragraph.
+
+
+
+Here, we use the `SideMenu` component but keep the default buttons (we don't pass any children). Instead, we pass our customized Drag Handle Menu using the `dragHandleMenu` prop.
+
+
+
+ Tip: The children you pass to the `DragHandleMenu` component
+ should be default items (e.g. `RemoveBlockItem`) or custom items
+ (`DragHandleMenuItem`). To see all the components you can use, head to the
+ [Drag Handle Menu's source code](link).
+
+
diff --git a/docs/pages/docs/ui-components/suggestion-menus.mdx b/docs/pages/docs/ui-components/suggestion-menus.mdx
new file mode 100644
index 0000000000..e6ed27d4d8
--- /dev/null
+++ b/docs/pages/docs/ui-components/suggestion-menus.mdx
@@ -0,0 +1,50 @@
+---
+title: Suggestion Menus
+description: Suggestion Menus appear when the user enters a trigger character, and text after the character is used to filter the menu items.
+imageTitle: Suggestion Menus
+path: /docs/slash-menu
+---
+
+import { Example } from "@/components/example";
+
+# Suggestion Menus
+
+Suggestion Menus appear when the user enters a trigger character, and text after the character is used to filter the menu items.
+
+## Slash Menu
+
+The Slash Menu is a Suggestion Menu that opens with the `/` character (or when clicking the `+` button in the [Block Side Menu](/docs/ui-components/side-menu).
+
+
+
+### Changing Slash Menu Items
+
+You can change the items in the Slash Menu. The demo below adds an item that inserts a new block, with "Hello World" in bold.
+
+
+
+Passing `slashMenu={false}` to `BlockNoteView` tells BlockNote not to show the default Slash Menu. Adding the `SuggestionMenuController` with `triggerCharacter={"/"}` and a custom `getItems` function tells BlockNote to show one with custom items instead.
+
+`getItems` should return the items that need to be shown in the Slash Menu, based on a `query` entered by the user (anything the user types after the `triggerCharacter`).
+
+### Replacing the Suggestion Menu Component
+
+You can replace the React component used for the Suggestion Menu with your own, as you can see in the demo below.
+
+
+
+Again, we add a `SuggestionMenuController` component with `triggerCharacter={"/"}` and set `slashMenu={false}` to replace the default Slash Menu.
+
+Now, we also pass a component to its `suggestionMenuComponent` prop. The `suggestionMenuComponent` we pass is responsible for rendering the filtered items. The `SuggestionMenuController` controls its position and visibility (below the trigger character), and it also determines which items should be shown (using the optional `getItems` prop we've seen above).
+
+## Creating additional Suggestion Menus
+
+You can add additional Suggestion Menus to the editor, which can use any trigger character. The demo below adds an example Suggestion Menu for mentions, which opens with the `@` character.
+
+
+
+Changing the items in the new Suggestion Menu, or the component used to render it, is done the same way as for the [Slash Menu](/docs/ui-components/suggestion-menus#slash-menu). For more information about how the mentions elements work, see [Custom Inline Content](/docs/custom-schemas/custom-inline-content).
diff --git a/docs/pages/examples/.gitignore b/docs/pages/examples/.gitignore
new file mode 100644
index 0000000000..958de3272d
--- /dev/null
+++ b/docs/pages/examples/.gitignore
@@ -0,0 +1,4 @@
+*
+!.gitignore
+!index.mdx
+!_meta.json
\ No newline at end of file
diff --git a/docs/pages/examples/_meta.json b/docs/pages/examples/_meta.json
new file mode 100644
index 0000000000..0ce7dc2888
--- /dev/null
+++ b/docs/pages/examples/_meta.json
@@ -0,0 +1,9 @@
+{
+ "index": "Overview",
+ "basic": "Basic",
+ "ui-components": "UI Components",
+ "theming": "Theming",
+ "interoperability": "Interoperability",
+ "custom-schema": "Custom Schemas",
+ "collaboration": "Collaboration"
+}
diff --git a/docs/pages/examples/index.mdx b/docs/pages/examples/index.mdx
new file mode 100644
index 0000000000..d47fcfbb04
--- /dev/null
+++ b/docs/pages/examples/index.mdx
@@ -0,0 +1,9 @@
+import { ExampleList } from "../../components/example/ExampleList";
+
+# Examples
+
+Browse through the examples below to see how to use and customize BlockNote.
+
+Want to contribute? Copy the [basic example on CodeSandbox](https://codesandbox.io/s/github/TypeCellOS/BlockNote/tree/main/examples/basic/minimal) and submit a PR.
+
+
diff --git a/docs/pages/features.mdx.bak b/docs/pages/features.mdx.bak
new file mode 100644
index 0000000000..77f95c3e93
--- /dev/null
+++ b/docs/pages/features.mdx.bak
@@ -0,0 +1,10 @@
+---
+overrideTitle: "BlockNote - Javascript Block-Based React rich text editor"
+description: "A beautiful text editor that just works. Easily add an editor to your app that users will love. Customize it with your own functionality like custom blocks or AI tooling."
+---
+
+import Feature from "@/components/Feature";
+
+
+
+
diff --git a/docs/pages/index.mdx b/docs/pages/index.mdx
new file mode 100644
index 0000000000..9ea3dc1b2e
--- /dev/null
+++ b/docs/pages/index.mdx
@@ -0,0 +1,8 @@
+---
+overrideTitle: "BlockNote - Javascript Block-Based React rich text editor"
+description: "A beautiful text editor that just works. Easily add an editor to your app that users will love. Customize it with your own functionality like custom blocks or AI tooling."
+---
+
+import { BlockNoteHome } from "../components/pages/landing";
+
+
diff --git a/packages/website/partykitserver.ts b/docs/partykitserver.ts
similarity index 100%
rename from packages/website/partykitserver.ts
rename to docs/partykitserver.ts
diff --git a/docs/postcss.config.js b/docs/postcss.config.js
new file mode 100644
index 0000000000..cbfea5ea20
--- /dev/null
+++ b/docs/postcss.config.js
@@ -0,0 +1,7 @@
+module.exports = {
+ plugins: {
+ "tailwindcss/nesting": {},
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/docs/prettier.config.js b/docs/prettier.config.js
new file mode 100644
index 0000000000..64cfdbc5d1
--- /dev/null
+++ b/docs/prettier.config.js
@@ -0,0 +1,7 @@
+module.exports = {
+ $schema: "http://json.schemastore.org/prettierrc",
+ tabWidth: 2,
+ printWidth: 80,
+ jsxBracketSameLine: true,
+ plugins: ["prettier-plugin-tailwindcss"]
+};
diff --git a/packages/website/docs/public/img/assets/try.dark.svg b/docs/public/img/assets/try.dark.svg
similarity index 100%
rename from packages/website/docs/public/img/assets/try.dark.svg
rename to docs/public/img/assets/try.dark.svg
diff --git a/packages/website/docs/public/img/assets/try.svg b/docs/public/img/assets/try.svg
similarity index 100%
rename from packages/website/docs/public/img/assets/try.svg
rename to docs/public/img/assets/try.svg
diff --git a/docs/public/img/features/block_based_design_dark.gif b/docs/public/img/features/block_based_design_dark.gif
new file mode 100644
index 0000000000..b0738eddb4
Binary files /dev/null and b/docs/public/img/features/block_based_design_dark.gif differ
diff --git a/docs/public/img/features/block_based_design_light.gif b/docs/public/img/features/block_based_design_light.gif
new file mode 100644
index 0000000000..b5cf60b826
Binary files /dev/null and b/docs/public/img/features/block_based_design_light.gif differ
diff --git a/packages/website/docs/public/img/features/collaboration-dark.gif b/docs/public/img/features/collaboration_dark.gif
similarity index 100%
rename from packages/website/docs/public/img/features/collaboration-dark.gif
rename to docs/public/img/features/collaboration_dark.gif
diff --git a/packages/website/docs/public/img/features/collaboration.gif b/docs/public/img/features/collaboration_light.gif
similarity index 100%
rename from packages/website/docs/public/img/features/collaboration.gif
rename to docs/public/img/features/collaboration_light.gif
diff --git a/docs/public/img/features/works_out_of_the_box_dark.gif b/docs/public/img/features/works_out_of_the_box_dark.gif
new file mode 100644
index 0000000000..b99da9a6df
Binary files /dev/null and b/docs/public/img/features/works_out_of_the_box_dark.gif differ
diff --git a/docs/public/img/features/works_out_of_the_box_light.gif b/docs/public/img/features/works_out_of_the_box_light.gif
new file mode 100644
index 0000000000..ca1af41b50
Binary files /dev/null and b/docs/public/img/features/works_out_of_the_box_light.gif differ
diff --git a/packages/website/docs/public/img/logos/banner.dark.svg b/docs/public/img/logos/banner.dark.svg
similarity index 100%
rename from packages/website/docs/public/img/logos/banner.dark.svg
rename to docs/public/img/logos/banner.dark.svg
diff --git a/packages/website/docs/public/img/logos/banner.png b/docs/public/img/logos/banner.png
similarity index 100%
rename from packages/website/docs/public/img/logos/banner.png
rename to docs/public/img/logos/banner.png
diff --git a/packages/website/docs/public/img/logos/banner.svg b/docs/public/img/logos/banner.svg
similarity index 100%
rename from packages/website/docs/public/img/logos/banner.svg
rename to docs/public/img/logos/banner.svg
diff --git a/packages/website/docs/public/img/logos/banner@2x.png b/docs/public/img/logos/banner@2x.png
similarity index 100%
rename from packages/website/docs/public/img/logos/banner@2x.png
rename to docs/public/img/logos/banner@2x.png
diff --git a/packages/website/docs/public/img/logos/icon_light_400.png b/docs/public/img/logos/icon_light_400.png
similarity index 100%
rename from packages/website/docs/public/img/logos/icon_light_400.png
rename to docs/public/img/logos/icon_light_400.png
diff --git a/packages/website/docs/public/img/logos/icon_light_400.svg b/docs/public/img/logos/icon_light_400.svg
similarity index 100%
rename from packages/website/docs/public/img/logos/icon_light_400.svg
rename to docs/public/img/logos/icon_light_400.svg
diff --git a/packages/website/docs/public/img/logos/icon_light_400@2x.png b/docs/public/img/logos/icon_light_400@2x.png
similarity index 100%
rename from packages/website/docs/public/img/logos/icon_light_400@2x.png
rename to docs/public/img/logos/icon_light_400@2x.png
diff --git a/packages/website/docs/public/img/logos/icon_light_500.png b/docs/public/img/logos/icon_light_500.png
similarity index 100%
rename from packages/website/docs/public/img/logos/icon_light_500.png
rename to docs/public/img/logos/icon_light_500.png
diff --git a/packages/website/docs/public/img/logos/icon_light_500.svg b/docs/public/img/logos/icon_light_500.svg
similarity index 100%
rename from packages/website/docs/public/img/logos/icon_light_500.svg
rename to docs/public/img/logos/icon_light_500.svg
diff --git a/packages/website/docs/public/img/logos/icon_light_500@2x.png b/docs/public/img/logos/icon_light_500@2x.png
similarity index 100%
rename from packages/website/docs/public/img/logos/icon_light_500@2x.png
rename to docs/public/img/logos/icon_light_500@2x.png
diff --git a/packages/website/docs/public/img/screenshots/block_structure.png b/docs/public/img/screenshots/block_structure.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/block_structure.png
rename to docs/public/img/screenshots/block_structure.png
diff --git a/packages/website/docs/public/img/screenshots/block_structure_dark.png b/docs/public/img/screenshots/block_structure_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/block_structure_dark.png
rename to docs/public/img/screenshots/block_structure_dark.png
diff --git a/packages/website/docs/public/img/screenshots/bullet_list_item_type.png b/docs/public/img/screenshots/bullet_list_item_type.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/bullet_list_item_type.png
rename to docs/public/img/screenshots/bullet_list_item_type.png
diff --git a/packages/website/docs/public/img/screenshots/bullet_list_item_type_dark.png b/docs/public/img/screenshots/bullet_list_item_type_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/bullet_list_item_type_dark.png
rename to docs/public/img/screenshots/bullet_list_item_type_dark.png
diff --git a/packages/website/docs/public/img/screenshots/drag_handle_menu.png b/docs/public/img/screenshots/drag_handle_menu.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/drag_handle_menu.png
rename to docs/public/img/screenshots/drag_handle_menu.png
diff --git a/packages/website/docs/public/img/screenshots/drag_handle_menu_dark.png b/docs/public/img/screenshots/drag_handle_menu_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/drag_handle_menu_dark.png
rename to docs/public/img/screenshots/drag_handle_menu_dark.png
diff --git a/packages/website/docs/public/img/screenshots/formatting_toolbar.png b/docs/public/img/screenshots/formatting_toolbar.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/formatting_toolbar.png
rename to docs/public/img/screenshots/formatting_toolbar.png
diff --git a/packages/website/docs/public/img/screenshots/formatting_toolbar_dark.png b/docs/public/img/screenshots/formatting_toolbar_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/formatting_toolbar_dark.png
rename to docs/public/img/screenshots/formatting_toolbar_dark.png
diff --git a/packages/website/docs/public/img/screenshots/heading_type.png b/docs/public/img/screenshots/heading_type.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/heading_type.png
rename to docs/public/img/screenshots/heading_type.png
diff --git a/packages/website/docs/public/img/screenshots/heading_type_dark.png b/docs/public/img/screenshots/heading_type_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/heading_type_dark.png
rename to docs/public/img/screenshots/heading_type_dark.png
diff --git a/packages/website/docs/public/img/screenshots/image_toolbar.png b/docs/public/img/screenshots/image_toolbar.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/image_toolbar.png
rename to docs/public/img/screenshots/image_toolbar.png
diff --git a/packages/website/docs/public/img/screenshots/image_toolbar_dark.png b/docs/public/img/screenshots/image_toolbar_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/image_toolbar_dark.png
rename to docs/public/img/screenshots/image_toolbar_dark.png
diff --git a/packages/website/docs/public/img/screenshots/image_type.png b/docs/public/img/screenshots/image_type.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/image_type.png
rename to docs/public/img/screenshots/image_type.png
diff --git a/packages/website/docs/public/img/screenshots/image_type_dark.png b/docs/public/img/screenshots/image_type_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/image_type_dark.png
rename to docs/public/img/screenshots/image_type_dark.png
diff --git a/packages/website/docs/public/img/screenshots/liveblocks_blocknote_example.mp4 b/docs/public/img/screenshots/liveblocks_blocknote_example.mp4
similarity index 100%
rename from packages/website/docs/public/img/screenshots/liveblocks_blocknote_example.mp4
rename to docs/public/img/screenshots/liveblocks_blocknote_example.mp4
diff --git a/packages/website/docs/public/img/screenshots/numbered_list_item_type.png b/docs/public/img/screenshots/numbered_list_item_type.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/numbered_list_item_type.png
rename to docs/public/img/screenshots/numbered_list_item_type.png
diff --git a/packages/website/docs/public/img/screenshots/numbered_list_item_type_dark.png b/docs/public/img/screenshots/numbered_list_item_type_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/numbered_list_item_type_dark.png
rename to docs/public/img/screenshots/numbered_list_item_type_dark.png
diff --git a/packages/website/docs/public/img/screenshots/paragraph_type.png b/docs/public/img/screenshots/paragraph_type.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/paragraph_type.png
rename to docs/public/img/screenshots/paragraph_type.png
diff --git a/packages/website/docs/public/img/screenshots/paragraph_type_dark.png b/docs/public/img/screenshots/paragraph_type_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/paragraph_type_dark.png
rename to docs/public/img/screenshots/paragraph_type_dark.png
diff --git a/packages/website/docs/public/img/screenshots/side_menu.png b/docs/public/img/screenshots/side_menu.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/side_menu.png
rename to docs/public/img/screenshots/side_menu.png
diff --git a/packages/website/docs/public/img/screenshots/side_menu_dark.png b/docs/public/img/screenshots/side_menu_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/side_menu_dark.png
rename to docs/public/img/screenshots/side_menu_dark.png
diff --git a/packages/website/docs/public/img/screenshots/slash_menu.png b/docs/public/img/screenshots/slash_menu.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/slash_menu.png
rename to docs/public/img/screenshots/slash_menu.png
diff --git a/packages/website/docs/public/img/screenshots/slash_menu_dark.png b/docs/public/img/screenshots/slash_menu_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/slash_menu_dark.png
rename to docs/public/img/screenshots/slash_menu_dark.png
diff --git a/packages/website/docs/public/img/screenshots/table_type.png b/docs/public/img/screenshots/table_type.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/table_type.png
rename to docs/public/img/screenshots/table_type.png
diff --git a/packages/website/docs/public/img/screenshots/table_type_dark.png b/docs/public/img/screenshots/table_type_dark.png
similarity index 100%
rename from packages/website/docs/public/img/screenshots/table_type_dark.png
rename to docs/public/img/screenshots/table_type_dark.png
diff --git a/packages/website/docs/public/img/sponsors/fermat-dark.png b/docs/public/img/sponsors/fermat-dark.png
similarity index 100%
rename from packages/website/docs/public/img/sponsors/fermat-dark.png
rename to docs/public/img/sponsors/fermat-dark.png
diff --git a/packages/website/docs/public/img/sponsors/fermat.png b/docs/public/img/sponsors/fermat.png
similarity index 100%
rename from packages/website/docs/public/img/sponsors/fermat.png
rename to docs/public/img/sponsors/fermat.png
diff --git a/packages/website/docs/public/img/sponsors/nlnet-dark.svg b/docs/public/img/sponsors/nlnet-dark.svg
similarity index 100%
rename from packages/website/docs/public/img/sponsors/nlnet-dark.svg
rename to docs/public/img/sponsors/nlnet-dark.svg
diff --git a/packages/website/docs/public/img/sponsors/nlnet.svg b/docs/public/img/sponsors/nlnet.svg
similarity index 100%
rename from packages/website/docs/public/img/sponsors/nlnet.svg
rename to docs/public/img/sponsors/nlnet.svg
diff --git a/docs/public/img/sponsors/noteplan-dark.png b/docs/public/img/sponsors/noteplan-dark.png
new file mode 100644
index 0000000000..c0d750cbea
Binary files /dev/null and b/docs/public/img/sponsors/noteplan-dark.png differ
diff --git a/docs/public/img/sponsors/noteplan.png b/docs/public/img/sponsors/noteplan.png
new file mode 100644
index 0000000000..fe4a929eff
Binary files /dev/null and b/docs/public/img/sponsors/noteplan.png differ
diff --git a/docs/public/img/sponsors/poggio-dark.svg b/docs/public/img/sponsors/poggio-dark.svg
new file mode 100644
index 0000000000..227b770c60
--- /dev/null
+++ b/docs/public/img/sponsors/poggio-dark.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/public/img/sponsors/poggio.svg b/docs/public/img/sponsors/poggio.svg
new file mode 100644
index 0000000000..6d4a61de3c
--- /dev/null
+++ b/docs/public/img/sponsors/poggio.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website/docs/public/img/sponsors/twenty-dark.png b/docs/public/img/sponsors/twenty-dark.png
similarity index 100%
rename from packages/website/docs/public/img/sponsors/twenty-dark.png
rename to docs/public/img/sponsors/twenty-dark.png
diff --git a/packages/website/docs/public/img/sponsors/twenty.png b/docs/public/img/sponsors/twenty.png
similarity index 100%
rename from packages/website/docs/public/img/sponsors/twenty.png
rename to docs/public/img/sponsors/twenty.png
diff --git a/packages/website/docs/public/img/sponsors/typecell-dark.svg b/docs/public/img/sponsors/typecell-dark.svg
similarity index 100%
rename from packages/website/docs/public/img/sponsors/typecell-dark.svg
rename to docs/public/img/sponsors/typecell-dark.svg
diff --git a/packages/website/docs/public/img/sponsors/typecell.svg b/docs/public/img/sponsors/typecell.svg
similarity index 100%
rename from packages/website/docs/public/img/sponsors/typecell.svg
rename to docs/public/img/sponsors/typecell.svg
diff --git a/docs/styles.css b/docs/styles.css
new file mode 100644
index 0000000000..510ff1d534
--- /dev/null
+++ b/docs/styles.css
@@ -0,0 +1,4 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+@tailwind variants;
diff --git a/docs/tailwind.config.ts b/docs/tailwind.config.ts
new file mode 100644
index 0000000000..a44dbd9c75
--- /dev/null
+++ b/docs/tailwind.config.ts
@@ -0,0 +1,31 @@
+import type { Config } from "tailwindcss";
+const colors = require("tailwindcss/colors");
+const config: Config = {
+ darkMode: "class",
+ content: [
+ "./pages/**/*.{js,ts,jsx,tsx,mdx}",
+ "./components/**/*.{js,ts,jsx,tsx,mdx}",
+ "./app/**/*.{js,ts,jsx,tsx,mdx}",
+ "./theme.config.tsx",
+ ],
+ theme: {
+ extend: {
+ // backgroundImage: {
+ // "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
+ // "gradient-conic":
+ // "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
+ // },
+ colors: {
+ dark: "#000",
+ gray: colors.neutral,
+ blue: colors.blue,
+ orange: colors.orange,
+ green: colors.green,
+ red: colors.red,
+ yellow: colors.yellow,
+ },
+ },
+ },
+ plugins: [],
+};
+export default config;
diff --git a/docs/theme.config.tsx b/docs/theme.config.tsx
new file mode 100644
index 0000000000..1bcff10e38
--- /dev/null
+++ b/docs/theme.config.tsx
@@ -0,0 +1,326 @@
+import NextLink from "next/link";
+import { useRouter } from "next/router";
+import { useConfig, useTheme, type DocsThemeConfig } from "nextra-theme-docs";
+import { useEffect, useState } from "react";
+// import { ExtraContent } from "./components/ExtraContent";
+// import { Footer } from "./components/Footer";
+// import { HeaderLogo } from "./components/HeaderLogo";
+// import { Main } from "./components/Main";
+import { DiscordIcon, GitHubIcon } from "nextra/icons";
+import { AuthNavButton } from "./components/AuthNavButton";
+import { Footer } from "./components/Footer";
+import { Logo } from "./components/Logo";
+import { Navigation } from "./components/Navigation";
+// import { Search } from "./components/Search";
+
+// const NoSSRCommentsButton = dynamic(
+// () => import("./components/CommentsButton").then((mod) => mod.CommentsButton),
+// {
+// ssr: false,
+// }
+// );
+const SITE_ROOT = "https://www.blocknotejs.org";
+
+const METADATA_DEFAULT = {
+ title: "BlockNote",
+ description:
+ "A beautiful text editor that just works. Easily add an editor to your app that users will love. Customize it with your own functionality like custom blocks or AI tooling.",
+ image: SITE_ROOT + "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/api/og",
+};
+
+interface Frontmatter {
+ title: string;
+ overrideTitle: string;
+ description: string;
+ imageTitle: string;
+}
+
+const config: DocsThemeConfig = {
+ sidebar: {
+ defaultMenuCollapseLevel: 1,
+ toggleButton: false,
+ },
+ docsRepositoryBase: "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/TypeCellOS/BlockNote/blob/main/docs",
+ useNextSeoProps: function SEO() {
+ const router = useRouter();
+ const { systemTheme = "dark" } = useTheme();
+ const nextraConfig = useConfig();
+
+ const fullUrl =
+ router.asPath === "/" ? SITE_ROOT : `${SITE_ROOT}${router.asPath}`;
+
+ const frontMatter = nextraConfig.frontMatter as Frontmatter;
+
+ // const defaultTitle = frontMatter.overrideTitle || "BlockNote";
+ {
+ /*
+
+ */
+ }
+ // console.log(nextraConfig.title, frontMatter.overrideTitle);
+
+ const title = frontMatter.overrideTitle
+ ? frontMatter.overrideTitle
+ : nextraConfig.title
+ ? nextraConfig.title + " - BlockNote"
+ : "BlockNote";
+
+ const imageUrl = frontMatter.imageTitle
+ ? `${SITE_ROOT}/api/og?title=${encodeURIComponent(
+ frontMatter.imageTitle,
+ )}`
+ : METADATA_DEFAULT.image;
+
+ return {
+ description: frontMatter.description,
+ title,
+ // defaultTitle,
+ // titleTemplate: "%s – BlockNote",
+ canonical: fullUrl,
+ twitter: {
+ handle: "@TypeCellOS",
+ site: "@TypeCellOS",
+ cardType: "summary_large_image",
+ },
+ openGraph: {
+ type: "website",
+ url: fullUrl,
+ title,
+ description: frontMatter.description,
+ images: [
+ {
+ url: imageUrl,
+ },
+ ],
+ siteName: "BlockNote",
+ locale: "en_US",
+ },
+ additionalMetaTags: [
+ {
+ property: "twitter:title",
+ content: title,
+ },
+ {
+ property: "twitter:description",
+ content: frontMatter.description,
+ },
+ {
+ property: "twitter:image",
+ content: imageUrl,
+ },
+ {
+ name: "viewport",
+ content: "width=device-width, initial-scale=1.0",
+ },
+ ],
+ additionalLinkTags: [
+ {
+ as: "document",
+ href: "/docs",
+ rel: "prefetch",
+ },
+ {
+ rel: "icon",
+ href: `/img/logos/icon_light_400.png`,
+ type: "image/png",
+ },
+ {
+ rel: "icon",
+ href: `/img/logos/icon_light_400.svg`,
+ type: "image/svg",
+ },
+ ],
+ };
+ },
+ gitTimestamp({ timestamp }) {
+ // eslint-disable-next-line react-hooks/rules-of-hooks -- Following Nextra docs: https://nextra.site/docs/docs-theme/theme-configuration#last-updated-date
+ const [dateString, setDateString] = useState(timestamp.toISOString());
+
+ // eslint-disable-next-line react-hooks/rules-of-hooks -- Following Nextra docs: https://nextra.site/docs/docs-theme/theme-configuration#last-updated-date
+ useEffect(() => {
+ try {
+ setDateString(
+ timestamp.toLocaleDateString(navigator.language, {
+ day: "numeric",
+ month: "long",
+ year: "numeric",
+ }),
+ );
+ } catch (e) {
+ // Ignore errors here; they get the ISO string.
+ // At least one person out there has manually misconfigured navigator.language.
+ }
+ }, [timestamp]);
+
+ return <>Last updated on {dateString}>;
+ },
+ toc: {
+ float: true,
+ backToTop: true,
+ // extraContent: ExtraContent,
+ },
+ // font: false,
+ // logo: HeaderLogo, TODO
+ logo: Logo,
+ logoLink: false,
+ head: function Head() {
+ // const router = useRouter();
+ // const { systemTheme = "dark" } = useTheme();
+ // const nextraConfig = useConfig();
+
+ // const frontMatter = nextraConfig.frontMatter as Frontmatter;
+ // const fullUrl =
+ // router.asPath === "/" ? SITE_ROOT : `${SITE_ROOT}${router.asPath}`;
+
+ // const asPath = router.asPath;
+
+ return <>>;
+ },
+ i18n: [],
+ editLink: {
+ text: "Edit this page on GitHub",
+ },
+ navbar: {
+ component: Navigation,
+ extraContent: () => {
+ return (
+ <>
+
+ GitHub
+
+
+
+ Discord
+
+
+
+ >
+ );
+ },
+ // extraContent: (): JSX.Element => {
+ // // eslint-disable-next-line react-hooks/rules-of-hooks -- Nextra does not infer the type of extraContent correctly.
+ // const router = useRouter();
+
+ // return (
+ // <>
+ // {/* {pathHasToolbar(router) ? (
+ //
+ //
+ //
+ // ) : null} */}
+ //
+ //
+ // >
+ // );
+ // },
+ },
+ components: {
+ // pre: (props: ReactElement) => {
+ // function getTextContent(elem: ReactElement | string): string {
+ // if (elem instanceof Array) {
+ // return elem.map(getTextContent).join("");
+ // }
+ // if (!elem) {
+ // return "";
+ // }
+ // if (typeof elem === "string") {
+ // return elem;
+ // }
+ // // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- `any` is technically correct here.
+ // const children = elem.props.children;
+ // if (children instanceof Array) {
+ // return children.map(getTextContent).join("");
+ // }
+ // return getTextContent(children as ReactElement | string);
+ // }
+ // // Taken from original Nextra docs theme.
+ // // Only functional change is adding `data-pagefind-weight`.
+ // return (
+ //
+ //
+ //
+ //
+ //
+ //
+ //
+ //
+ //
{
+ // void navigator.clipboard.writeText(
+ // // @ts-expect-error -- `any` is technically correct here.
+ // // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access -- `any` is technically correct here.
+ // getTextContent(props.children.props.children)
+ // );
+ // }}
+ // tabIndex={0}
+ // title="Copy code"
+ // type="button"
+ // >
+ //
+ //
+ //
+ //
+ //
+ //
+ //
+ // );
+ // },
+ // },
+ },
+ // main: (props) => sdfdf
,
+ search: {
+ // component: Search,
+ placeholder: "Search documentation…",
+ },
+ footer: {
+ component: Footer,
+ },
+ nextThemes: {
+ // defaultTheme: "dark",
+ },
+};
+
+export default config;
diff --git a/docs/tsconfig.json b/docs/tsconfig.json
new file mode 100644
index 0000000000..e7ff90fd27
--- /dev/null
+++ b/docs/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/docs/vercel.json b/docs/vercel.json
new file mode 100644
index 0000000000..bd6fd8faa8
--- /dev/null
+++ b/docs/vercel.json
@@ -0,0 +1,3 @@
+{
+ "cleanUrls": true
+}
diff --git a/examples/01-basic/01-minimal/.bnexample.json b/examples/01-basic/01-minimal/.bnexample.json
new file mode 100644
index 0000000000..6d4a02dd52
--- /dev/null
+++ b/examples/01-basic/01-minimal/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic"]
+}
diff --git a/examples/01-basic/01-minimal/App.tsx b/examples/01-basic/01-minimal/App.tsx
new file mode 100644
index 0000000000..55a0cc8e69
--- /dev/null
+++ b/examples/01-basic/01-minimal/App.tsx
@@ -0,0 +1,11 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote();
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/01-basic/01-minimal/README.md b/examples/01-basic/01-minimal/README.md
new file mode 100644
index 0000000000..ea94a69a5c
--- /dev/null
+++ b/examples/01-basic/01-minimal/README.md
@@ -0,0 +1,7 @@
+# Basic Setup
+
+This example shows the minimal code required to set up a BlockNote editor in React.
+
+**Relevant Docs:**
+
+- [Editor Setup](/docs/editor-basics/setup)
diff --git a/examples/vanilla/index.html b/examples/01-basic/01-minimal/index.html
similarity index 50%
rename from examples/vanilla/index.html
rename to examples/01-basic/01-minimal/index.html
index dc902f4b5b..642715594a 100644
--- a/examples/vanilla/index.html
+++ b/examples/01-basic/01-minimal/index.html
@@ -1,13 +1,14 @@
-
+
-
- BlockNote demo vanilla js
+ Basic Setup
-
+
diff --git a/examples/01-basic/01-minimal/main.tsx b/examples/01-basic/01-minimal/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/01-minimal/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/01-minimal/package.json b/examples/01-basic/01-minimal/package.json
new file mode 100644
index 0000000000..e089f6871b
--- /dev/null
+++ b/examples/01-basic/01-minimal/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-minimal",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla/tsconfig.json b/examples/01-basic/01-minimal/tsconfig.json
similarity index 63%
rename from examples/vanilla/tsconfig.json
rename to examples/01-basic/01-minimal/tsconfig.json
index c221b93d22..bb6637c459 100644
--- a/examples/vanilla/tsconfig.json
+++ b/examples/01-basic/01-minimal/tsconfig.json
@@ -1,8 +1,13 @@
{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
@@ -16,14 +21,16 @@
"noEmit": true,
"jsx": "react-jsx",
"composite": true
- // "paths": {
- // "@blocknote/core": ["../../packages/core/src"]
- // }
},
- "include": ["src"],
+ "include": [
+ "."
+ ],
"references": [
- { "path": "./tsconfig.node.json" },
- { "path": "../../packages/core/" },
- { "path": "../../packages/react/" }
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
]
-}
+}
\ No newline at end of file
diff --git a/examples/vanilla/vite.config.ts b/examples/01-basic/01-minimal/vite.config.ts
similarity index 56%
rename from examples/vanilla/vite.config.ts
rename to examples/01-basic/01-minimal/vite.config.ts
index fc8bd4a83d..f62ab20bc2 100644
--- a/examples/vanilla/vite.config.ts
+++ b/examples/01-basic/01-minimal/vite.config.ts
@@ -1,26 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
import * as path from "path";
import { defineConfig } from "vite";
// import eslintPlugin from "vite-plugin-eslint";
// https://vitejs.dev/config/
export default defineConfig((conf) => ({
- plugins: [],
- optimizeDeps: {
- // link: ['vite-react-ts-components'],
- },
+ plugins: [react()],
+ optimizeDeps: {},
build: {
sourcemap: true,
},
resolve: {
alias:
- conf.command === "build"
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
? {}
- : {
+ : ({
// Comment out the lines below to load a built version of blocknote
// or, keep as is to load live from sources with live reload working
"@blocknote/core": path.resolve(
__dirname,
"../../packages/core/src/"
),
- },
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
},
}));
diff --git a/examples/01-basic/02-block-objects/.bnexample.json b/examples/01-basic/02-block-objects/.bnexample.json
new file mode 100644
index 0000000000..6b15063ef2
--- /dev/null
+++ b/examples/01-basic/02-block-objects/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Basic", "Blocks", "Inline Content"]
+}
diff --git a/examples/01-basic/02-block-objects/App.tsx b/examples/01-basic/02-block-objects/App.tsx
new file mode 100644
index 0000000000..45cd7c39e6
--- /dev/null
+++ b/examples/01-basic/02-block-objects/App.tsx
@@ -0,0 +1,55 @@
+import { Block } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { useState } from "react";
+
+import "./styles.css";
+
+export default function App() {
+ // Stores the document JSON.
+ const [blocks, setBlocks] = useState([]);
+
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "heading",
+ content: "This is a heading block",
+ },
+ {
+ type: "paragraph",
+ content: "This is a paragraph block",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance and its document JSON.
+ return (
+
+
BlockNote Editor:
+
+ {
+ // Saves the document JSON to state.
+ setBlocks(editor.document);
+ }}
+ />
+
+
Document JSON:
+
+
+ {JSON.stringify(blocks, null, 2)}
+
+
+
+ );
+}
diff --git a/examples/01-basic/02-block-objects/README.md b/examples/01-basic/02-block-objects/README.md
new file mode 100644
index 0000000000..d7c26a41e4
--- /dev/null
+++ b/examples/01-basic/02-block-objects/README.md
@@ -0,0 +1,10 @@
+# Displaying Document JSON
+
+In this example, the document's JSON representation is displayed below the editor.
+
+**Try it out:** Try typing in the editor and see the JSON update!
+
+**Relevant Docs:**
+
+- [Document Structure](/docs/editor-basics/document-structure)
+- [Getting the Document](/docs/editor-api/manipulating-blocks#getting-the-document)
diff --git a/examples/01-basic/02-block-objects/index.html b/examples/01-basic/02-block-objects/index.html
new file mode 100644
index 0000000000..ec99551235
--- /dev/null
+++ b/examples/01-basic/02-block-objects/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Displaying Document JSON
+
+
+
+
+
+
diff --git a/examples/01-basic/02-block-objects/main.tsx b/examples/01-basic/02-block-objects/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/02-block-objects/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/02-block-objects/package.json b/examples/01-basic/02-block-objects/package.json
new file mode 100644
index 0000000000..21ce501900
--- /dev/null
+++ b/examples/01-basic/02-block-objects/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-block-objects",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/02-block-objects/styles.css b/examples/01-basic/02-block-objects/styles.css
new file mode 100644
index 0000000000..89d965109f
--- /dev/null
+++ b/examples/01-basic/02-block-objects/styles.css
@@ -0,0 +1,25 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.item {
+ border-radius: 0.5rem;
+ flex: 1;
+ overflow: hidden;
+}
+
+.item.bordered {
+ border: 1px solid gray;
+}
+
+.item pre {
+ border-radius: 0.5rem;
+ height: 100%;
+ overflow: auto;
+ padding-block: 1rem;
+ padding-inline: 54px;
+ width: 100%;
+ white-space: pre-wrap;
+}
\ No newline at end of file
diff --git a/examples/01-basic/02-block-objects/tsconfig.json b/examples/01-basic/02-block-objects/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/02-block-objects/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/02-block-objects/vite.config.ts b/examples/01-basic/02-block-objects/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/02-block-objects/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/03-all-blocks/.bnexample.json b/examples/01-basic/03-all-blocks/.bnexample.json
new file mode 100644
index 0000000000..6b15063ef2
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Basic", "Blocks", "Inline Content"]
+}
diff --git a/examples/01-basic/03-all-blocks/App.tsx b/examples/01-basic/03-all-blocks/App.tsx
new file mode 100644
index 0000000000..19758e6017
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/App.tsx
@@ -0,0 +1,108 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "text",
+ text: "Blocks:",
+ styles: { bold: true },
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ content: "Paragraph",
+ },
+ {
+ type: "heading",
+ content: "Heading",
+ },
+ {
+ type: "bulletListItem",
+ content: "Bullet List Item",
+ },
+ {
+ type: "numberedListItem",
+ content: "Numbered List Item",
+ },
+ {
+ type: "image",
+ },
+ {
+ type: "table",
+ content: {
+ type: "tableContent",
+ rows: [
+ {
+ cells: ["Table Cell", "Table Cell", "Table Cell"],
+ },
+ {
+ cells: ["Table Cell", "Table Cell", "Table Cell"],
+ },
+ {
+ cells: ["Table Cell", "Table Cell", "Table Cell"],
+ },
+ ],
+ },
+ },
+ {
+ type: "paragraph",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "text",
+ text: "Inline Content:",
+ styles: { bold: true },
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "text",
+ text: "Styled Text",
+ styles: {
+ bold: true,
+ italic: true,
+ textColor: "red",
+ backgroundColor: "blue",
+ },
+ },
+ {
+ type: "text",
+ text: " ",
+ styles: {},
+ },
+ {
+ type: "link",
+ content: "Link",
+ href: "https://www.blocknotejs.org",
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/01-basic/03-all-blocks/README.md b/examples/01-basic/03-all-blocks/README.md
new file mode 100644
index 0000000000..d8b2480991
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/README.md
@@ -0,0 +1,8 @@
+# Default Schema Showcase
+
+This example showcases each block and inline content type in BlockNote's default schema.
+
+**Relevant Docs:**
+
+- [Document Structure](/docs/editor-basics/document-structure)
+- [Default Schema](/docs/editor-basics/default-schema)
diff --git a/examples/01-basic/03-all-blocks/index.html b/examples/01-basic/03-all-blocks/index.html
new file mode 100644
index 0000000000..18c0226a18
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Default Schema Showcase
+
+
+
+
+
+
diff --git a/examples/01-basic/03-all-blocks/main.tsx b/examples/01-basic/03-all-blocks/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/03-all-blocks/package.json b/examples/01-basic/03-all-blocks/package.json
new file mode 100644
index 0000000000..953d7ba6aa
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-all-blocks",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/03-all-blocks/tsconfig.json b/examples/01-basic/03-all-blocks/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/03-all-blocks/vite.config.ts b/examples/01-basic/03-all-blocks/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/03-all-blocks/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/04-selection-blocks/.bnexample.json b/examples/01-basic/04-selection-blocks/.bnexample.json
new file mode 100644
index 0000000000..c77e72a9b9
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Blocks"]
+}
diff --git a/examples/01-basic/04-selection-blocks/App.tsx b/examples/01-basic/04-selection-blocks/App.tsx
new file mode 100644
index 0000000000..22f0aaf620
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/App.tsx
@@ -0,0 +1,57 @@
+import { Block } from "@blocknote/core";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "../../../packages/react/dist/style.css";
+import { useState } from "react";
+
+import "./styles.css";
+
+export default function App() {
+ // Stores the selected blocks as an array of Block objects.
+ const [blocks, setBlocks] = useState([]);
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Select different blocks to see the JSON change below",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+
BlockNote Editor:
+
+ {
+ const selection = editor.getSelection();
+
+ // Get the blocks in the current selection and store on the state. If
+ // the selection is empty, store the block containing the text cursor
+ // instead.
+ if (selection !== undefined) {
+ setBlocks(selection.blocks);
+ } else {
+ setBlocks([editor.getTextCursorPosition().block]);
+ }
+ }}
+ />
+
+
Selection JSON:
+
+
+ {JSON.stringify(blocks, null, 2)}
+
+
+
+ );
+}
diff --git a/examples/01-basic/04-selection-blocks/README.md b/examples/01-basic/04-selection-blocks/README.md
new file mode 100644
index 0000000000..c85766c2e8
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/README.md
@@ -0,0 +1,9 @@
+# Displaying Selected Blocks
+
+In this example, the JSON representation of blocks spanned by the user's selection, is displayed below the editor.
+
+**Try it out:** Select different blocks in the editor and see the JSON update!
+
+**Relevant Docs:**
+
+- [Cursor & Selections](/docs/editor-api/cursor-selections)
diff --git a/examples/01-basic/04-selection-blocks/index.html b/examples/01-basic/04-selection-blocks/index.html
new file mode 100644
index 0000000000..3821ca8014
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Displaying Selected Blocks
+
+
+
+
+
+
diff --git a/examples/01-basic/04-selection-blocks/main.tsx b/examples/01-basic/04-selection-blocks/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/04-selection-blocks/package.json b/examples/01-basic/04-selection-blocks/package.json
new file mode 100644
index 0000000000..fdb22bac7e
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-selection-blocks",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/04-selection-blocks/styles.css b/examples/01-basic/04-selection-blocks/styles.css
new file mode 100644
index 0000000000..89d965109f
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/styles.css
@@ -0,0 +1,25 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.item {
+ border-radius: 0.5rem;
+ flex: 1;
+ overflow: hidden;
+}
+
+.item.bordered {
+ border: 1px solid gray;
+}
+
+.item pre {
+ border-radius: 0.5rem;
+ height: 100%;
+ overflow: auto;
+ padding-block: 1rem;
+ padding-inline: 54px;
+ width: 100%;
+ white-space: pre-wrap;
+}
\ No newline at end of file
diff --git a/examples/01-basic/04-selection-blocks/tsconfig.json b/examples/01-basic/04-selection-blocks/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/04-selection-blocks/vite.config.ts b/examples/01-basic/04-selection-blocks/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/04-selection-blocks/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/05-block-manipulation/.bnexample.json b/examples/01-basic/05-block-manipulation/.bnexample.json
new file mode 100644
index 0000000000..c77e72a9b9
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Blocks"]
+}
diff --git a/examples/01-basic/05-block-manipulation/App.tsx b/examples/01-basic/05-block-manipulation/App.tsx
new file mode 100644
index 0000000000..f961d3527d
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/App.tsx
@@ -0,0 +1,69 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import "./styles.css";
+
+export default function App() {
+ const editor = useCreateBlockNote();
+
+ return (
+
+
+
+ {/*Inserts a new block at start of document.*/}
+
+ editor.insertBlocks(
+ [
+ {
+ content:
+ "This block was inserted at " +
+ new Date().toLocaleTimeString(),
+ },
+ ],
+ editor.document[0],
+ "before"
+ )
+ }>
+ Insert First Block
+
+ {/*Updates the first block*/}
+
+ editor.updateBlock(editor.document[0], {
+ content:
+ "This block was updated at " + new Date().toLocaleTimeString(),
+ })
+ }>
+ Update First Block
+
+ {/*Removes the first block*/}
+ editor.removeBlocks([editor.document[0]])}>
+ Remove First Block
+
+ {/*Replaces the first block*/}
+
+ editor.replaceBlocks(
+ [editor.document[0]],
+ [
+ {
+ content:
+ "This block was replaced at " +
+ new Date().toLocaleTimeString(),
+ },
+ ]
+ )
+ }>
+ Replace First Block
+
+
+
+ );
+}
diff --git a/examples/01-basic/05-block-manipulation/README.md b/examples/01-basic/05-block-manipulation/README.md
new file mode 100644
index 0000000000..9d1443176b
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/README.md
@@ -0,0 +1,7 @@
+# Manipulating Blocks
+
+This example shows 4 buttons to manipulate the first block using the `insertBlocks`, `updateBlock`, `removeBlocks` and `replaceBlocks` methods.
+
+**Relevant Docs:**
+
+- [Block Manipulation](/docs/manipulating-blocks)
diff --git a/examples/01-basic/05-block-manipulation/index.html b/examples/01-basic/05-block-manipulation/index.html
new file mode 100644
index 0000000000..44812420e7
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Manipulating Blocks
+
+
+
+
+
+
diff --git a/examples/01-basic/05-block-manipulation/main.tsx b/examples/01-basic/05-block-manipulation/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/05-block-manipulation/package.json b/examples/01-basic/05-block-manipulation/package.json
new file mode 100644
index 0000000000..1b43e755c2
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-block-manipulation",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/05-block-manipulation/styles.css b/examples/01-basic/05-block-manipulation/styles.css
new file mode 100644
index 0000000000..eaade15302
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/styles.css
@@ -0,0 +1,15 @@
+.edit-buttons {
+ display: flex;
+ justify-content: space-between;
+ margin-top: 8px;
+}
+
+.edit-button {
+ border: 1px solid gray;
+ border-radius: 4px;
+ padding-inline: 4px;
+}
+
+.edit-button:hover {
+ border: 1px solid lightgrey;
+}
\ No newline at end of file
diff --git a/examples/01-basic/05-block-manipulation/tsconfig.json b/examples/01-basic/05-block-manipulation/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/05-block-manipulation/vite.config.ts b/examples/01-basic/05-block-manipulation/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/05-block-manipulation/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/06-file-uploading/.bnexample.json b/examples/01-basic/06-file-uploading/.bnexample.json
new file mode 100644
index 0000000000..4cf4ab84ef
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Saving/Loading"]
+}
diff --git a/examples/01-basic/06-file-uploading/App.tsx b/examples/01-basic/06-file-uploading/App.tsx
new file mode 100644
index 0000000000..c7fea399e8
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/App.tsx
@@ -0,0 +1,41 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+// Uploads a file to tmpfiles.org and returns the URL to the uploaded file.
+async function uploadFile(file: File) {
+ const body = new FormData();
+ body.append("file", file);
+
+ const ret = await fetch("https://tmpfiles.org/api/v1/upload", {
+ method: "POST",
+ body: body,
+ });
+ return (await ret.json()).data.url.replace(
+ "tmpfiles.org/",
+ "tmpfiles.org/dl/"
+ );
+}
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Upload an image using the button below",
+ },
+ {
+ type: "image",
+ },
+ ],
+ uploadFile,
+ });
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/01-basic/06-file-uploading/README.md b/examples/01-basic/06-file-uploading/README.md
new file mode 100644
index 0000000000..a8ed2c5979
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/README.md
@@ -0,0 +1,10 @@
+# Uploading Files
+
+This example allows users to upload files and use them in the editor. The files are uploaded to [/TMP/Files](https://tmpfiles.org/), and can be used in Image blocks.
+
+**Try it out:** Click the "Add Image" button and see there's now an "Upload" tab in the toolbar!
+
+**Relevant Docs:**
+
+- [Editor Setup](/docs/editor-basics/setup)
+- [Image](/docs/editor-basics/default-schema#image)
diff --git a/examples/01-basic/06-file-uploading/index.html b/examples/01-basic/06-file-uploading/index.html
new file mode 100644
index 0000000000..c9c7bf8b2a
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Uploading Files
+
+
+
+
+
+
diff --git a/examples/01-basic/06-file-uploading/main.tsx b/examples/01-basic/06-file-uploading/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/06-file-uploading/package.json b/examples/01-basic/06-file-uploading/package.json
new file mode 100644
index 0000000000..f7908f6fb8
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-file-uploading",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/06-file-uploading/tsconfig.json b/examples/01-basic/06-file-uploading/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/06-file-uploading/vite.config.ts b/examples/01-basic/06-file-uploading/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/06-file-uploading/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/07-saving-loading/.bnexample.json b/examples/01-basic/07-saving-loading/.bnexample.json
new file mode 100644
index 0000000000..a6098bc73d
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Intermediate", "Blocks", "Saving/Loading"]
+}
diff --git a/examples/01-basic/07-saving-loading/App.tsx b/examples/01-basic/07-saving-loading/App.tsx
new file mode 100644
index 0000000000..df8a07b99e
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/App.tsx
@@ -0,0 +1,56 @@
+import { Block, BlockNoteEditor, PartialBlock } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { useEffect, useMemo, useState } from "react";
+
+async function saveToStorage(jsonBlocks: Block[]) {
+ // Save contents to local storage. You might want to debounce this or replace
+ // with a call to your API / database.
+ localStorage.setItem("editorContent", JSON.stringify(jsonBlocks));
+}
+
+async function loadFromStorage() {
+ // Gets the previously stored editor contents.
+ const storageString = localStorage.getItem("editorContent");
+ return storageString
+ ? (JSON.parse(storageString) as PartialBlock[])
+ : undefined;
+}
+
+export default function App() {
+ const [initialContent, setInitialContent] = useState<
+ PartialBlock[] | undefined | "loading"
+ >("loading");
+
+ // Loads the previously stored editor contents.
+ useEffect(() => {
+ loadFromStorage().then((content) => {
+ setInitialContent(content);
+ });
+ }, []);
+
+ // Creates a new editor instance.
+ // We use useMemo + createBlockNoteEditor instead of useCreateBlockNote so we
+ // can delay the creation of the editor until the initial content is loaded.
+ const editor = useMemo(() => {
+ if (initialContent === "loading") {
+ return undefined;
+ }
+ return BlockNoteEditor.create({ initialContent });
+ }, [initialContent]);
+
+ if (editor === undefined) {
+ return "Loading content...";
+ }
+
+ // Renders the editor instance.
+ return (
+ {
+ saveToStorage(editor.document);
+ }}
+ />
+ );
+}
diff --git a/examples/01-basic/07-saving-loading/README.md b/examples/01-basic/07-saving-loading/README.md
new file mode 100644
index 0000000000..d6219b4c74
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/README.md
@@ -0,0 +1,12 @@
+# Saving & Loading
+
+This example shows how to save the editor contents to local storage whenever a change is made, and load the saved contents when the editor is created.
+
+You can replace the `saveToStorage` and `loadFromStorage` functions with calls to your backend or database.
+
+**Try it out:** Try typing in the editor and reloading the page!
+
+**Relevant Docs:**
+
+- [Editor Setup](/docs/editor-basics/setup)
+- [Getting the Document](/docs/editor-api/manipulating-blocks#getting-the-document)
diff --git a/examples/01-basic/07-saving-loading/index.html b/examples/01-basic/07-saving-loading/index.html
new file mode 100644
index 0000000000..77be86d603
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Saving & Loading
+
+
+
+
+
+
diff --git a/examples/01-basic/07-saving-loading/main.tsx b/examples/01-basic/07-saving-loading/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/07-saving-loading/package.json b/examples/01-basic/07-saving-loading/package.json
new file mode 100644
index 0000000000..d780d2e9a2
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-saving-loading",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/07-saving-loading/tsconfig.json b/examples/01-basic/07-saving-loading/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/07-saving-loading/vite.config.ts b/examples/01-basic/07-saving-loading/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/07-saving-loading/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/01-basic/testing/.bnexample.json b/examples/01-basic/testing/.bnexample.json
new file mode 100644
index 0000000000..dc19f5a930
--- /dev/null
+++ b/examples/01-basic/testing/.bnexample.json
@@ -0,0 +1,4 @@
+{
+ "playground": true,
+ "docs": false
+}
diff --git a/examples/01-basic/testing/App.tsx b/examples/01-basic/testing/App.tsx
new file mode 100644
index 0000000000..5bc1b1c47d
--- /dev/null
+++ b/examples/01-basic/testing/App.tsx
@@ -0,0 +1,14 @@
+import { uploadToTmpFilesDotOrg_DEV_ONLY } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
+ });
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/01-basic/testing/README.md b/examples/01-basic/testing/README.md
new file mode 100644
index 0000000000..9fae60ec9f
--- /dev/null
+++ b/examples/01-basic/testing/README.md
@@ -0,0 +1,3 @@
+# Test Editor
+
+This example is meant for use in end-to-end tests.
\ No newline at end of file
diff --git a/examples/01-basic/testing/index.html b/examples/01-basic/testing/index.html
new file mode 100644
index 0000000000..32f9b9ee34
--- /dev/null
+++ b/examples/01-basic/testing/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Test Editor
+
+
+
+
+
+
diff --git a/examples/01-basic/testing/main.tsx b/examples/01-basic/testing/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/01-basic/testing/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/01-basic/testing/package.json b/examples/01-basic/testing/package.json
new file mode 100644
index 0000000000..173dfe998a
--- /dev/null
+++ b/examples/01-basic/testing/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-testing",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/testing/tsconfig.json b/examples/01-basic/testing/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/01-basic/testing/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/01-basic/testing/vite.config.ts b/examples/01-basic/testing/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/01-basic/testing/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/01-ui-elements-remove/.bnexample.json b/examples/02-ui-components/01-ui-elements-remove/.bnexample.json
new file mode 100644
index 0000000000..fb472bdb77
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": false,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "UI Components"]
+}
diff --git a/examples/02-ui-components/01-ui-elements-remove/App.tsx b/examples/02-ui-components/01-ui-elements-remove/App.tsx
new file mode 100644
index 0000000000..1c5dbfd0f8
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/App.tsx
@@ -0,0 +1,42 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content:
+ "There are no menus or toolbars in this editor, but you can still markup text using keyboard shortcuts.",
+ },
+ {
+ type: "paragraph",
+ content:
+ "Try making text bold with Ctrl+B/Cmd+B or undo with Ctrl+Z/Cmd+Z.",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ );
+}
diff --git a/examples/02-ui-components/01-ui-elements-remove/README.md b/examples/02-ui-components/01-ui-elements-remove/README.md
new file mode 100644
index 0000000000..55078381b0
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/README.md
@@ -0,0 +1,7 @@
+# Removing UI Elements
+
+In this example, we remove all menus & toolbars, leaving only the editor.
+
+**Relevant Docs:**
+
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/01-ui-elements-remove/index.html b/examples/02-ui-components/01-ui-elements-remove/index.html
new file mode 100644
index 0000000000..885854af13
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Removing UI Elements
+
+
+
+
+
+
diff --git a/examples/02-ui-components/01-ui-elements-remove/main.tsx b/examples/02-ui-components/01-ui-elements-remove/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/01-ui-elements-remove/package.json b/examples/02-ui-components/01-ui-elements-remove/package.json
new file mode 100644
index 0000000000..40a559074b
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-ui-elements-remove",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/01-ui-elements-remove/tsconfig.json b/examples/02-ui-components/01-ui-elements-remove/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/01-ui-elements-remove/vite.config.ts b/examples/02-ui-components/01-ui-elements-remove/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/01-ui-elements-remove/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/.bnexample.json b/examples/02-ui-components/02-formatting-toolbar-buttons/.bnexample.json
new file mode 100644
index 0000000000..5663d51f0b
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Inline Content", "UI Components", "Formatting Toolbar"]
+}
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx b/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx
new file mode 100644
index 0000000000..e34a0d9cdf
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/App.tsx
@@ -0,0 +1,129 @@
+import "@blocknote/core/fonts/inter.css";
+import {
+ BasicTextStyleButton,
+ BlockNoteView,
+ BlockTypeDropdown,
+ ColorStyleButton,
+ CreateLinkButton,
+ FormattingToolbar,
+ FormattingToolbarController,
+ ImageCaptionButton,
+ NestBlockButton,
+ ReplaceImageButton,
+ TextAlignButton,
+ UnnestBlockButton,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import { BlueButton } from "./BlueButton";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "text",
+ text: "You can now toggle ",
+ styles: {},
+ },
+ {
+ type: "text",
+ text: "blue",
+ styles: { textColor: "blue", backgroundColor: "blue" },
+ },
+ {
+ type: "text",
+ text: " and ",
+ styles: {},
+ },
+ {
+ type: "text",
+ text: "code",
+ styles: { code: true },
+ },
+ {
+ type: "text",
+ text: " styles with new buttons in the Formatting Toolbar",
+ styles: {},
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ content: "Select some text to try them out",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ (
+
+
+
+ {/* Extra button to toggle blue text & background */}
+
+
+
+
+
+
+
+
+
+ {/* Extra button to toggle code styles */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx b/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx
new file mode 100644
index 0000000000..4cde53596c
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/BlueButton.tsx
@@ -0,0 +1,39 @@
+import {
+ ToolbarButton,
+ useBlockNoteEditor,
+ useEditorContentOrSelectionChange,
+} from "@blocknote/react";
+import { useState } from "react";
+
+// Custom Formatting Toolbar Button to toggle blue text & background color.
+export function BlueButton() {
+ const editor = useBlockNoteEditor();
+
+ // Tracks whether the text & background are both blue.
+ const [isSelected, setIsSelected] = useState(
+ editor.getActiveStyles().textColor === "blue" &&
+ editor.getActiveStyles().backgroundColor === "blue"
+ );
+
+ // Updates state on content or selection change.
+ useEditorContentOrSelectionChange(() => {
+ setIsSelected(
+ editor.getActiveStyles().textColor === "blue" &&
+ editor.getActiveStyles().backgroundColor === "blue"
+ );
+ }, editor);
+
+ return (
+ {
+ editor.toggleStyles({
+ textColor: "blue",
+ backgroundColor: "blue",
+ });
+ }}
+ isSelected={isSelected}>
+ Blue
+
+ );
+}
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/README.md b/examples/02-ui-components/02-formatting-toolbar-buttons/README.md
new file mode 100644
index 0000000000..8287076113
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/README.md
@@ -0,0 +1,12 @@
+# Adding Formatting Toolbar Buttons
+
+In this example, we add a blue text/background color and code style button to the Formatting Toolbar.
+
+**Try it out:** Select some text to open the Formatting Toolbar, and click one of the new buttons!
+
+**Relevant Docs:**
+
+- [Changing the Formatting Toolbar](/docs/ui-components/formatting-toolbar#changing-the-formatting-toolbar)
+- [Manipulating Inline Content](/docs/editor-api/manipulating-inline-content)
+- [Hooks](TODO)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/index.html b/examples/02-ui-components/02-formatting-toolbar-buttons/index.html
new file mode 100644
index 0000000000..054b18c47d
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding Formatting Toolbar Buttons
+
+
+
+
+
+
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/main.tsx b/examples/02-ui-components/02-formatting-toolbar-buttons/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/package.json b/examples/02-ui-components/02-formatting-toolbar-buttons/package.json
new file mode 100644
index 0000000000..5f93b6360a
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-formatting-toolbar-buttons",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/tsconfig.json b/examples/02-ui-components/02-formatting-toolbar-buttons/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/02-formatting-toolbar-buttons/vite.config.ts b/examples/02-ui-components/02-formatting-toolbar-buttons/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/02-formatting-toolbar-buttons/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json b/examples/02-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json
new file mode 100644
index 0000000000..2879b63bed
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json
@@ -0,0 +1,9 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Blocks", "UI Components", "Formatting Toolbar", "Custom Schemas"],
+ "dependencies": {
+ "react-icons": "^4.3.1"
+ }
+}
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/Alert.tsx b/examples/02-ui-components/03-formatting-toolbar-block-type-items/Alert.tsx
new file mode 100644
index 0000000000..44d1d5d69d
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/Alert.tsx
@@ -0,0 +1,120 @@
+import { defaultProps } from "@blocknote/core";
+import { createReactBlockSpec } from "@blocknote/react";
+import { Menu } from "@mantine/core";
+import { MdCancel, MdCheckCircle, MdError, MdInfo } from "react-icons/md";
+
+import "./styles.css";
+
+// The types of alerts that users can choose from.
+export const alertTypes = [
+ {
+ title: "Warning",
+ value: "warning",
+ icon: MdError,
+ color: "#e69819",
+ backgroundColor: {
+ light: "#fff6e6",
+ dark: "#805d20",
+ },
+ },
+ {
+ title: "Error",
+ value: "error",
+ icon: MdCancel,
+ color: "#d80d0d",
+ backgroundColor: {
+ light: "#ffe6e6",
+ dark: "#802020",
+ },
+ },
+ {
+ title: "Info",
+ value: "info",
+ icon: MdInfo,
+ color: "#507aff",
+ backgroundColor: {
+ light: "#e6ebff",
+ dark: "#203380",
+ },
+ },
+ {
+ title: "Success",
+ value: "success",
+ icon: MdCheckCircle,
+ color: "#0bc10b",
+ backgroundColor: {
+ light: "#e6ffe6",
+ dark: "#208020",
+ },
+ },
+] as const;
+
+// The Alert block.
+export const Alert = createReactBlockSpec(
+ {
+ type: "alert",
+ propSchema: {
+ textAlignment: defaultProps.textAlignment,
+ textColor: defaultProps.textColor,
+ type: {
+ default: "warning",
+ values: ["warning", "error", "info", "success"],
+ },
+ },
+ content: "inline",
+ },
+ {
+ render: (props) => {
+ const alertType = alertTypes.find(
+ (a) => a.value === props.block.props.type
+ )!;
+ const Icon = alertType.icon;
+
+ return (
+
+ {/*Icon which opens a menu to choose the Alert type*/}
+
+
+
+
+
+
+ {/*Dropdown to change the Alert type*/}
+
+ Alert Type
+
+ {alertTypes.map((type) => {
+ const ItemIcon = type.icon;
+
+ return (
+
+ }
+ onClick={() =>
+ props.editor.updateBlock(props.block, {
+ type: "alert",
+ props: { type: type.value },
+ })
+ }>
+ {type.title}
+
+ );
+ })}
+
+
+ {/*Rich text field for user to type in*/}
+
+
+ );
+ },
+ }
+);
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx b/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx
new file mode 100644
index 0000000000..315e4afc5b
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/App.tsx
@@ -0,0 +1,72 @@
+import { BlockNoteSchema, defaultBlockSpecs } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ BlockTypeDropdownItem,
+ FormattingToolbar,
+ FormattingToolbarController,
+ blockTypeDropdownItems,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { RiAlertFill } from "react-icons/ri";
+
+import { Alert } from "./Alert";
+
+// Our schema with block specs, which contain the configs and implementations
+// for blocks that we want our editor to use.
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ // Adds all default blocks.
+ ...defaultBlockSpecs,
+ // Adds the Alert block.
+ alert: Alert,
+ },
+});
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ schema,
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content:
+ "Try selecting some text - you'll see the new 'Alert' item in the Block Type Dropdown",
+ },
+ {
+ type: "alert",
+ content:
+ "Or select text in this alert - the Block Type Dropdown also appears",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance with the updated Block Type Dropdown.
+ return (
+
+ (
+ block.type === "alert",
+ } satisfies BlockTypeDropdownItem,
+ ]}
+ />
+ )}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/README.md b/examples/02-ui-components/03-formatting-toolbar-block-type-items/README.md
new file mode 100644
index 0000000000..28a7a27833
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/README.md
@@ -0,0 +1,11 @@
+# Adding Block Type Dropdown Items
+
+In this example, we add an item to the Block Type Dropdown, so that it works for a custom alert block we create.
+
+**Try it out:** Select some text to open the Formatting Toolbar, and click "Alert" in the Block Type Dropdown to change the selected block!
+
+**Relevant Docs:**
+
+- [Changing Block Type Dropdown Items](/docs/ui-components/formatting-toolbar#changing-block-type-dropdown-items)
+- [Custom Block Types](/docs/custom-schemas/custom-blocks)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/index.html b/examples/02-ui-components/03-formatting-toolbar-block-type-items/index.html
new file mode 100644
index 0000000000..258dfd61f4
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding Block Type Dropdown Items
+
+
+
+
+
+
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/main.tsx b/examples/02-ui-components/03-formatting-toolbar-block-type-items/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/package.json b/examples/02-ui-components/03-formatting-toolbar-block-type-items/package.json
new file mode 100644
index 0000000000..6139838986
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@blocknote/example-formatting-toolbar-block-type-items",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/styles.css b/examples/02-ui-components/03-formatting-toolbar-block-type-items/styles.css
new file mode 100644
index 0000000000..8551401558
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/styles.css
@@ -0,0 +1,74 @@
+.alert {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-grow: 1;
+ border-radius: 4px;
+ height: 48px;
+ padding: 4px;
+}
+
+.alert[data-alert-type="warning"] {
+ background-color: #fff6e6;
+}
+
+.alert[data-alert-type="error"] {
+ background-color: #ffe6e6;
+}
+
+.alert[data-alert-type="info"] {
+ background-color: #e6ebff;
+}
+
+.alert[data-alert-type="success"] {
+ background-color: #e6ffe6;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="warning"] {
+ background-color: #805d20;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="error"] {
+ background-color: #802020;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="info"] {
+ background-color: #203380;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="success"] {
+ background-color: #208020;
+}
+
+.alert-icon-wrapper {
+ border-radius: 16px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-left: 12px;
+ margin-right: 12px;
+ height: 18px;
+ width: 18px;
+ user-select: none;
+ cursor: pointer;
+}
+
+.alert-icon[data-alert-icon-type="warning"] {
+ color: #e69819
+}
+
+.alert-icon[data-alert-icon-type="error"] {
+ color: #d80d0d
+}
+
+.alert-icon[data-alert-icon-type="info"] {
+ color: #507aff
+}
+
+.alert-icon[data-alert-icon-type="success"] {
+ color: #0bc10b
+}
+
+.inline-content {
+ flex-grow: 1;
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/tsconfig.json b/examples/02-ui-components/03-formatting-toolbar-block-type-items/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/03-formatting-toolbar-block-type-items/vite.config.ts b/examples/02-ui-components/03-formatting-toolbar-block-type-items/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/03-formatting-toolbar-block-type-items/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/04-side-menu-buttons/.bnexample.json b/examples/02-ui-components/04-side-menu-buttons/.bnexample.json
new file mode 100644
index 0000000000..d0c8f0817e
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/.bnexample.json
@@ -0,0 +1,9 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Blocks", "UI Components", "Block Side Menu"],
+ "dependencies": {
+ "react-icons": "^4.3.1"
+ }
+}
diff --git a/examples/02-ui-components/04-side-menu-buttons/App.tsx b/examples/02-ui-components/04-side-menu-buttons/App.tsx
new file mode 100644
index 0000000000..94d47a5b4f
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/App.tsx
@@ -0,0 +1,49 @@
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ DragHandleButton,
+ SideMenu,
+ SideMenuController,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import { RemoveBlockButton } from "./RemoveBlockButton";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "<- Notice the new button in the side menu",
+ },
+ {
+ type: "paragraph",
+ content: "Click it to remove the hovered block",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ (
+
+ {/* Button which removes the hovered block. */}
+
+
+
+ )}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/04-side-menu-buttons/README.md b/examples/02-ui-components/04-side-menu-buttons/README.md
new file mode 100644
index 0000000000..63c89aa1ec
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/README.md
@@ -0,0 +1,11 @@
+# Adding Block Side Menu Buttons
+
+In this example, we replace the button to add a block in the Block Side Menu, with a button to remove the hovered block.
+
+**Try it out:** Hover a block to open the Block Side Menu, and click the new button!
+
+**Relevant Docs:**
+
+- [Changing the Block Side Menu](/docs/ui-components/side-menu#changing-the-block-side-menu)
+- [Removing Blocks](/docs/editor-api/manipulating-blocks#removing-blocks)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/04-side-menu-buttons/RemoveBlockButton.tsx b/examples/02-ui-components/04-side-menu-buttons/RemoveBlockButton.tsx
new file mode 100644
index 0000000000..5b1b43f362
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/RemoveBlockButton.tsx
@@ -0,0 +1,22 @@
+import {
+ SideMenuButton,
+ SideMenuProps,
+ useBlockNoteEditor,
+} from "@blocknote/react";
+import { MdDelete } from "react-icons/md";
+
+// Custom Side Menu button to remove the hovered block.
+export function RemoveBlockButton(props: SideMenuProps) {
+ const editor = useBlockNoteEditor();
+
+ return (
+
+ {
+ editor.removeBlocks([props.block]);
+ }}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/04-side-menu-buttons/index.html b/examples/02-ui-components/04-side-menu-buttons/index.html
new file mode 100644
index 0000000000..5417d76adf
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding Block Side Menu Buttons
+
+
+
+
+
+
diff --git a/examples/02-ui-components/04-side-menu-buttons/main.tsx b/examples/02-ui-components/04-side-menu-buttons/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/04-side-menu-buttons/package.json b/examples/02-ui-components/04-side-menu-buttons/package.json
new file mode 100644
index 0000000000..2731f9856e
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@blocknote/example-side-menu-buttons",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/04-side-menu-buttons/tsconfig.json b/examples/02-ui-components/04-side-menu-buttons/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/04-side-menu-buttons/vite.config.ts b/examples/02-ui-components/04-side-menu-buttons/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/04-side-menu-buttons/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/.bnexample.json b/examples/02-ui-components/05-side-menu-drag-handle-items/.bnexample.json
new file mode 100644
index 0000000000..d0c8f0817e
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/.bnexample.json
@@ -0,0 +1,9 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Blocks", "UI Components", "Block Side Menu"],
+ "dependencies": {
+ "react-icons": "^4.3.1"
+ }
+}
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx b/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx
new file mode 100644
index 0000000000..8652837ae1
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/App.tsx
@@ -0,0 +1,62 @@
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockColorsItem,
+ BlockNoteView,
+ DragHandleMenu,
+ DragHandleMenuItem,
+ RemoveBlockItem,
+ SideMenu,
+ SideMenuController,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "<- Click the Drag Handle to see the new item",
+ },
+ {
+ type: "bulletListItem",
+ content:
+ "Try resetting this block's type using the new Drag Handle Menu item",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ (
+ (
+
+ Delete
+ Colors
+ {/* Item which resets the hovered block's type. */}
+ {
+ editor.updateBlock(props.block, { type: "paragraph" });
+ }}>
+ Reset Type
+
+
+ )}
+ />
+ )}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/README.md b/examples/02-ui-components/05-side-menu-drag-handle-items/README.md
new file mode 100644
index 0000000000..f57b2bb495
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/README.md
@@ -0,0 +1,11 @@
+# Adding Drag Handle Menu Items
+
+In this example, we add an item to the Drag Handle Menu, which resets the hovered block to a paragraph.
+
+**Try it out:** Hover a block to open the Block Side Menu, and click "Reset Type" in the Drag Handle Menu to reset the selected block!
+
+**Relevant Docs:**
+
+- [Changing Drag Handle Menu Items](/docs/ui-components/side-menu#changing-drag-handle-menu-items)
+- [Updating Blocks](/docs/editor-api/manipulating-blocks#updating-blocks)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/index.html b/examples/02-ui-components/05-side-menu-drag-handle-items/index.html
new file mode 100644
index 0000000000..f0470fd6a4
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding Drag Handle Menu Items
+
+
+
+
+
+
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/main.tsx b/examples/02-ui-components/05-side-menu-drag-handle-items/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/package.json b/examples/02-ui-components/05-side-menu-drag-handle-items/package.json
new file mode 100644
index 0000000000..d17354ec6d
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@blocknote/example-side-menu-drag-handle-items",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/tsconfig.json b/examples/02-ui-components/05-side-menu-drag-handle-items/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/05-side-menu-drag-handle-items/vite.config.ts b/examples/02-ui-components/05-side-menu-drag-handle-items/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/05-side-menu-drag-handle-items/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/.bnexample.json b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/.bnexample.json
new file mode 100644
index 0000000000..fe0b829d4d
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/.bnexample.json
@@ -0,0 +1,15 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": [
+ "Intermediate",
+ "Blocks",
+ "UI Components",
+ "Suggestion Menus",
+ "Slash Menu"
+ ],
+ "dependencies": {
+ "react-icons": "^4.3.1"
+ }
+}
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx
new file mode 100644
index 0000000000..bc2900fbec
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/App.tsx
@@ -0,0 +1,81 @@
+import {
+ BlockNoteEditor,
+ filterSuggestionItems,
+ PartialBlock,
+} from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ DefaultReactSuggestionItem,
+ getDefaultReactSlashMenuItems,
+ SuggestionMenuController,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { HiOutlineGlobeAlt } from "react-icons/hi";
+
+// Custom Slash Menu item to insert a block after the current one.
+const insertHelloWorldItem = (editor: BlockNoteEditor) => ({
+ title: "Insert Hello World",
+ onItemClick: () => {
+ // Block that the text cursor is currently in.
+ const currentBlock = editor.getTextCursorPosition().block;
+
+ // New block we want to insert.
+ const helloWorldBlock: PartialBlock = {
+ type: "paragraph",
+ content: [{ type: "text", text: "Hello World", styles: { bold: true } }],
+ };
+
+ // Inserting the new block after the current one.
+ editor.insertBlocks([helloWorldBlock], currentBlock, "after");
+ },
+ aliases: ["helloworld", "hw"],
+ group: "Other",
+ icon: ,
+ subtext: "Used to insert a block with 'Hello World' below.",
+});
+
+// List containing all default Slash Menu Items, as well as our custom one.
+const getCustomSlashMenuItems = (
+ editor: BlockNoteEditor
+): DefaultReactSuggestionItem[] => [
+ ...getDefaultReactSlashMenuItems(editor),
+ insertHelloWorldItem(editor),
+];
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Press the '/' key to open the Slash Menu",
+ },
+ {
+ type: "paragraph",
+ content: "Notice the new 'Insert Hello World' item - try it out!",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+
+ filterSuggestionItems(getCustomSlashMenuItems(editor), query)
+ }
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/README.md b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/README.md
new file mode 100644
index 0000000000..fe44f89ed6
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/README.md
@@ -0,0 +1,12 @@
+# Adding Slash Menu Items
+
+In this example, we add an item to the Slash Menu, which adds a new block below with a bold "Hello World" string.
+
+**Try it out:** Press the "/" key to open the Slash Menu and select the new item!
+
+**Relevant Docs:**
+
+- [Changing Slash Menu Items](/docs/ui-components/slash-menu#changing-slash-menu-items)
+- [Getting Text Cursor Position](/docs/editor-api/cursor-selections#getting-text-cursor-position)
+- [Inserting New Blocks](/docs/editor-api/manipulating-blocks#inserting-new-blocks)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/index.html b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/index.html
new file mode 100644
index 0000000000..3724c202ed
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding Slash Menu Items
+
+
+
+
+
+
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/main.tsx b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json
new file mode 100644
index 0000000000..bd3562ab30
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@blocknote/example-suggestion-menus-slash-menu-items",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/tsconfig.json b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/06-suggestion-menus-slash-menu-items/vite.config.ts b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/06-suggestion-menus-slash-menu-items/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/.bnexample.json b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/.bnexample.json
new file mode 100644
index 0000000000..bd1646adb9
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/.bnexample.json
@@ -0,0 +1,12 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": [
+ "Intermediate",
+ "UI Components",
+ "Suggestion Menus",
+ "Slash Menu",
+ "Appearance & Styling"
+ ]
+}
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx
new file mode 100644
index 0000000000..fdf1137fa7
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/App.tsx
@@ -0,0 +1,65 @@
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ DefaultReactSuggestionItem,
+ SuggestionMenuController,
+ SuggestionMenuProps,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import "./styles.css";
+
+// Custom component to replace the default Slash Menu.
+function CustomSlashMenu(
+ props: SuggestionMenuProps
+) {
+ return (
+
+ {props.items.map((item, index) => (
+
{
+ props.onItemClick?.(item);
+ }}>
+ {item.title}
+
+ ))}
+
+ );
+}
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Press the '/' key to open the Slash Menu",
+ },
+ {
+ type: "paragraph",
+ content: "It's been replaced with a custom component",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+
+
+ );
+}
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/README.md b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/README.md
new file mode 100644
index 0000000000..dbd00a277d
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/README.md
@@ -0,0 +1,10 @@
+# Replacing Slash Menu Component
+
+In this example, we replace the default Slash Menu component with a basic custom one.
+
+**Try it out:** Press the "/" key to see the new Slash Menu!
+
+**Relevant Docs:**
+
+- [Replacing the Slash Menu Component](/docs/ui-components/slash-menu#replacing-the-slash-menu-component)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/index.html b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/index.html
new file mode 100644
index 0000000000..a2c63152a7
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Replacing Slash Menu Component
+
+
+
+
+
+
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/main.tsx b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json
new file mode 100644
index 0000000000..4cfa41f45b
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-suggestion-menus-slash-menu-component",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/styles.css b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/styles.css
new file mode 100644
index 0000000000..61a6e95323
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/styles.css
@@ -0,0 +1,37 @@
+.slash-menu {
+ z-index: 9999;
+
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 8px #dddddd;
+
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+
+ padding: 8px;
+
+ top: 8px;
+}
+
+.slash-menu-item {
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ cursor: pointer;
+
+ font-size: 16px;
+
+ align-items: center;
+ display: flex;
+ flex-direction: row;
+
+ padding: 8px;
+}
+
+.slash-menu-item:hover, .slash-menu-item.selected {
+ background-color: lightgray;
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/tsconfig.json b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/07-suggestion-menus-slash-menu-component/vite.config.ts b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/07-suggestion-menus-slash-menu-component/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/08-custom-ui/.bnexample.json b/examples/02-ui-components/08-custom-ui/.bnexample.json
new file mode 100644
index 0000000000..daadd4a021
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/.bnexample.json
@@ -0,0 +1,10 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Advanced", "Inline Content", "UI Components", "Block Side Menu", "Formatting Toolbar", "Suggestion Menus", "Slash Menu", "Appearance & Styling"],
+ "dependencies": {
+ "@mantine/core": "^7.5.0",
+ "react-icons": "^4.3.1"
+ }
+}
diff --git a/examples/02-ui-components/08-custom-ui/App.tsx b/examples/02-ui-components/08-custom-ui/App.tsx
new file mode 100644
index 0000000000..b447f7aefa
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/App.tsx
@@ -0,0 +1,57 @@
+import { filterSuggestionItems } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ getDefaultReactSlashMenuItems,
+ SideMenuController,
+ SuggestionMenuController,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import { CustomFormattingToolbar } from "./CustomFormattingToolbar";
+import { CustomSideMenu } from "./CustomSideMenu";
+import { CustomSlashMenu } from "./CustomSlashMenu";
+import "./styles.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ {/* Adds the custom Formatting Toolbar */}
+ {/* `FormattingToolbarController isn't used since the custom toolbar is
+ static and always visible above the editor. */}
+
+ {/* Adds the custom Side Menu and Slash Menu. */}
+ {/* These use controllers since we want them to be positioned and
+ show/hide the same as the default ones.*/}
+
+
+ filterSuggestionItems(getDefaultReactSlashMenuItems(editor), query)
+ }
+ suggestionMenuComponent={CustomSlashMenu}
+ onItemClick={(i) => i.onItemClick()}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/08-custom-ui/ColorMenu.tsx b/examples/02-ui-components/08-custom-ui/ColorMenu.tsx
new file mode 100644
index 0000000000..583c84d6a9
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/ColorMenu.tsx
@@ -0,0 +1,86 @@
+import {
+ useBlockNoteEditor,
+ useEditorChange,
+ useEditorSelectionChange,
+} from "@blocknote/react";
+import { useState } from "react";
+import { MdFormatColorText } from "react-icons/md";
+
+export const colors = [
+ "default",
+ "red",
+ "orange",
+ "yellow",
+ "green",
+ "blue",
+ "purple",
+] as const;
+
+// Formatting Toolbar sub menu for changing text and background color.
+export function ColorMenu(props: { className?: string }) {
+ const editor = useBlockNoteEditor();
+
+ // Colors of the currently selected text.
+ const [textColor, setTextColor] = useState(
+ (editor.getActiveStyles().textColor as string) || "default"
+ );
+ const [backgroundColor, setCurrentColor] = useState(
+ (editor.getActiveStyles().backgroundColor as string) || "default"
+ );
+
+ // Updates the colors when the editor content or selection changes.
+ useEditorChange(() => {
+ setTextColor((editor.getActiveStyles().textColor as string) || "default");
+ setCurrentColor(
+ (editor.getActiveStyles().backgroundColor as string) || "default"
+ );
+ }, editor);
+ useEditorSelectionChange(() => {
+ setTextColor((editor.getActiveStyles().textColor as string) || "default");
+ setCurrentColor(
+ (editor.getActiveStyles().backgroundColor as string) || "default"
+ );
+ }, editor);
+
+ return (
+
+ {/* Group for text color buttons */}
+
+ {colors.map((color) => (
+ // Button for each color
+ {
+ color === "default"
+ ? editor.removeStyles({ textColor: color })
+ : editor.addStyles({ textColor: color });
+ }}
+ key={color}>
+
+
+ ))}
+
+ {/* Group for background color buttons */}
+
+ {colors.map((color) => (
+ // Button for each color
+ {
+ color === "default"
+ ? editor.removeStyles({ backgroundColor: color })
+ : editor.addStyles({ backgroundColor: color });
+ }}
+ key={color}>
+
+
+ ))}
+
+
+ );
+}
diff --git a/examples/02-ui-components/08-custom-ui/CustomFormattingToolbar.tsx b/examples/02-ui-components/08-custom-ui/CustomFormattingToolbar.tsx
new file mode 100644
index 0000000000..731e9be629
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/CustomFormattingToolbar.tsx
@@ -0,0 +1,179 @@
+import {
+ useBlockNoteEditor,
+ useEditorChange,
+ useEditorSelectionChange,
+} from "@blocknote/react";
+import { useState } from "react";
+import {
+ MdAddLink,
+ MdFormatAlignCenter,
+ MdFormatAlignJustify,
+ MdFormatAlignLeft,
+ MdFormatAlignRight,
+ MdFormatBold,
+ MdFormatColorText,
+ MdFormatItalic,
+ MdFormatUnderlined,
+} from "react-icons/md";
+
+import { ColorMenu } from "./ColorMenu";
+import { LinkMenu } from "./LinkMenu";
+
+type CustomFormattingToolbarState = {
+ bold: boolean;
+ italic: boolean;
+ underline: boolean;
+
+ textAlignment: "left" | "center" | "right" | "justify";
+
+ textColor: string;
+ backgroundColor: string;
+};
+
+// Custom component to replace the default Formatting Toolbar.
+export function CustomFormattingToolbar() {
+ const editor = useBlockNoteEditor();
+
+ // Function to get the state of toolbar buttons (active/inactive).
+ const getState = (): CustomFormattingToolbarState => {
+ const block = editor.getTextCursorPosition().block;
+ const activeStyles = editor.getActiveStyles();
+
+ return {
+ bold: (activeStyles.bold as boolean) || false,
+ italic: (activeStyles.italic as boolean) || false,
+ underline: (activeStyles.underline as boolean) || false,
+
+ textAlignment: block.props.textAlignment,
+
+ textColor: (activeStyles.textColor as string) || "default",
+ backgroundColor: (activeStyles.backgroundColor as string) || "default",
+ };
+ };
+
+ // Callback to set text alignment.
+ const setTextAlignment = (
+ textAlignment: CustomFormattingToolbarState["textAlignment"]
+ ) => {
+ const selection = editor.getSelection();
+
+ if (selection) {
+ for (const block of selection.blocks) {
+ editor.updateBlock(block, {
+ props: { textAlignment: textAlignment },
+ });
+ }
+ } else {
+ const block = editor.getTextCursorPosition().block;
+
+ editor.updateBlock(block, {
+ props: { textAlignment: textAlignment },
+ });
+ }
+ };
+
+ // Keeps track of the state of toolbar buttons.
+ const [state, setState] = useState(getState());
+
+ // Keeps track of if the color and link sub menus are open.
+ const [colorMenuOpen, setColorMenuOpen] = useState(false);
+ const [linkMenuOpen, setLinkMenuOpen] = useState(false);
+
+ // Updates toolbar state when the editor content or selection changes.
+ useEditorChange(() => setState(getState()), editor);
+ useEditorSelectionChange(() => setState(getState()), editor);
+
+ return (
+
+ {/* Button group for toggled text styles. */}
+
+ {/* Toggle bold button */}
+ editor.toggleStyles({ bold: true })}>
+
+
+ {/* Toggle italic button */}
+ editor.toggleStyles({ italic: true })}>
+
+
+ {/* Toggle underline button */}
+ editor.toggleStyles({ underline: true })}>
+
+
+
+ {/* Button group for text alignment */}
+
+ {/*Left align button*/}
+ setTextAlignment("left")}>
+
+
+ {/* Center align button */}
+ setTextAlignment("center")}>
+
+
+ {/* Right align button */}
+ setTextAlignment("right")}>
+
+
+ {/* Justify text button */}
+ setTextAlignment("justify")}>
+
+
+
+ {/* Button group for color menu */}
+
+
+ setColorMenuOpen(!colorMenuOpen)}>
+
+
+
+
+
+ {/* Button group for link menu */}
+
+
+ setLinkMenuOpen(!linkMenuOpen)}>
+
+
+
+
+
+
+ );
+}
diff --git a/examples/02-ui-components/08-custom-ui/CustomSideMenu.tsx b/examples/02-ui-components/08-custom-ui/CustomSideMenu.tsx
new file mode 100644
index 0000000000..85ec869f5c
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/CustomSideMenu.tsx
@@ -0,0 +1,15 @@
+import { SideMenuProps } from "@blocknote/react";
+import { RxDragHandleHorizontal } from "react-icons/rx";
+
+// Custom component to replace the default Block Side Menu.
+export function CustomSideMenu(props: SideMenuProps) {
+ return (
+
+
+
+ );
+}
diff --git a/examples/02-ui-components/08-custom-ui/CustomSlashMenu.tsx b/examples/02-ui-components/08-custom-ui/CustomSlashMenu.tsx
new file mode 100644
index 0000000000..e4061ef8bf
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/CustomSlashMenu.tsx
@@ -0,0 +1,62 @@
+import {
+ DefaultReactSuggestionItem,
+ SuggestionMenuProps,
+ useBlockNoteEditor,
+} from "@blocknote/react";
+
+// Custom component to replace the default Slash Menu.
+export function CustomSlashMenu(
+ props: SuggestionMenuProps
+) {
+ const editor = useBlockNoteEditor();
+
+ // Sorts items into their groups.
+ const groups: Record = {};
+ for (const item of props.items) {
+ const group = item.group || item.title;
+
+ if (!groups[group]) {
+ groups[group] = [];
+ }
+
+ groups[group].push(item);
+ }
+
+ // If query matches no items, shows "No matches" message.
+ if (props.items.length === 0) {
+ return No matches
;
+ }
+
+ return (
+
+ {Object.entries(groups).map(([group, items]) => (
+ // Component for each group
+
+ {/* Group label */}
+
{group}
+ {/* Group items */}
+
+ {items.map((item: DefaultReactSuggestionItem) => {
+ const Icon = item.icon;
+ return (
+ {
+ props.onItemClick?.(item);
+ editor.focus();
+ }}>
+ {Icon}
+
+ );
+ })}
+
+
+ ))}
+
+ );
+}
diff --git a/examples/02-ui-components/08-custom-ui/LinkMenu.tsx b/examples/02-ui-components/08-custom-ui/LinkMenu.tsx
new file mode 100644
index 0000000000..5f0631b96d
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/LinkMenu.tsx
@@ -0,0 +1,47 @@
+import { HTMLAttributes, useState } from "react";
+import { BlockNoteEditor } from "@blocknote/core";
+
+// Formatting Toolbar sub menu for creating links.
+export const LinkMenu = (
+ props: { editor: BlockNoteEditor } & HTMLAttributes
+) => {
+ const { editor, className, ...rest } = props;
+
+ const [text, setText] = useState("");
+ const [url, setUrl] = useState("");
+
+ return (
+
+ );
+};
diff --git a/examples/02-ui-components/08-custom-ui/README.md b/examples/02-ui-components/08-custom-ui/README.md
new file mode 100644
index 0000000000..9c847ea023
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/README.md
@@ -0,0 +1,12 @@
+# Custom UI
+
+In this example, we replace the default Formatting Toolbar using a custom React component, as well as the default Slash Menu and Side Menu. The Formatting Toolbar is also made static and always visible above the editor.
+
+**Relevant Docs:**
+
+- [Formatting Toolbar](/docs/ui-components/formatting-toolbar)
+- [Manipulating Inline Content](/docs/editor-api/manipulating-inline-content)
+- [Hooks](TODO)
+- [Slash Menu](/docs/ui-components/slash-menu)
+- [Side Menu](/docs/ui-components/side-menu)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/08-custom-ui/index.html b/examples/02-ui-components/08-custom-ui/index.html
new file mode 100644
index 0000000000..e306e7cb45
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom UI
+
+
+
+
+
+
diff --git a/examples/02-ui-components/08-custom-ui/main.tsx b/examples/02-ui-components/08-custom-ui/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/08-custom-ui/package.json b/examples/02-ui-components/08-custom-ui/package.json
new file mode 100644
index 0000000000..e3902d677f
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "@blocknote/example-custom-ui",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "@mantine/core": "^7.5.0",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/08-custom-ui/styles.css b/examples/02-ui-components/08-custom-ui/styles.css
new file mode 100644
index 0000000000..294d9864e0
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/styles.css
@@ -0,0 +1,277 @@
+.bn-container * {
+ font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont,
+ "Open Sans", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
+ "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+}
+
+.color-menu {
+ position: absolute;
+ z-index: 9999;
+
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+
+ margin-top: 8px;
+ padding: 4px;
+}
+
+.color-menu-group {
+ display: flex;
+ flex-direction: row;
+ gap: 4px;
+}
+
+.color-menu-item {
+ position: relative;
+
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ align-items: center;
+ display: flex;
+ flex-direction: row;
+ gap: 4px;
+ justify-content: center;
+
+ padding: 0;
+
+ height: 24px;
+ width: 24px;
+}
+
+.text.red {
+ color: #e03e3e;
+}
+
+.text.orange {
+ color: #d9730d;
+}
+
+.text.yellow {
+ color: #dfab01;
+}
+
+.text.green {
+ color: #4d6461;
+}
+
+.text.blue {
+ color: #0b6e99;
+}
+
+.text.purple {
+ color: #6940a5;
+}
+
+.background.red {
+ background-color: #fbe4e4;
+}
+
+.background.orange {
+ background-color: #f6e9d9;
+}
+
+.background.yellow {
+ background-color: #fbf3db;
+}
+
+.background.green {
+ background-color: #ddedea;
+}
+
+.background.blue {
+ background-color: #ddebf1;
+}
+
+.background.purple {
+ background-color: #eae4f2;
+}
+
+.color-menu-item.text:hover {
+ background-color: lightgray;
+}
+
+.color-menu-item.background:hover {
+ color: gray;
+}
+
+.link-menu {
+ position: absolute;
+ z-index: 9999;
+
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+
+ margin-top: 8px;
+ padding: 4px;
+}
+
+.link-input {
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ padding: 4px;
+}
+
+.link-buttons {
+ display: flex;
+ flex-direction: row;
+ gap: 4px;
+}
+
+.link-button {
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ cursor: pointer;
+
+ font-size: 14px;
+
+ flex-grow: 1;
+}
+
+.link-button:hover {
+ background-color: lightgray;
+}
+
+.formatting-toolbar {
+ position: sticky;
+ z-index: 9999;
+
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 8px #dddddd;
+
+ display: flex;
+ flex-direction: row;
+ gap: 16px;
+
+ margin-inline: 54px;
+ margin-bottom: 8px;
+ padding: 4px;
+
+ top: 8px;
+}
+
+.formatting-toolbar-group {
+ display: flex;
+ flex-direction: row;
+ gap: 4px;
+}
+
+.formatting-toolbar-button {
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ cursor: pointer;
+
+ font-size: 16px;
+
+ align-items: center;
+ display: flex;
+ justify-content: center;
+
+ height: 32px;
+ width: 32px;
+}
+
+.formatting-toolbar-button:hover {
+ background-color: lightgray;
+}
+
+.slash-menu {
+ z-index: 9999;
+
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 8px #dddddd;
+
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+
+ padding: 8px;
+
+ top: 8px;
+}
+
+.slash-menu-group {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.slash-menu-label {
+ color: gray;
+ font-size: 12px;
+}
+
+.slash-menu-item-group {
+ display: flex;
+ flex-direction: row;
+ gap: 4px;
+}
+
+.slash-menu-item {
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ cursor: pointer;
+
+ font-size: 16px;
+
+ align-items: center;
+ display: flex;
+ flex-direction: row;
+
+ padding: 8px;
+}
+
+.slash-menu-item:hover {
+ background-color: lightgray;
+}
+
+.side-menu {
+ background-color: white;
+ border: 1px solid lightgray;
+ border-radius: 2px;
+ box-shadow: 0 0 4px #dddddd;
+
+ cursor: pointer;
+
+ align-items: center;
+ display: flex;
+ justify-content: center;
+
+ margin-right: 4px;
+ padding: 8px;
+}
+
+.active {
+ box-shadow: inset 0 0 6px #cccccc;
+}
+
+.hidden {
+ display: none;
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/08-custom-ui/tsconfig.json b/examples/02-ui-components/08-custom-ui/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/08-custom-ui/vite.config.ts b/examples/02-ui-components/08-custom-ui/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/08-custom-ui/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/.bnexample.json b/examples/02-ui-components/hyperlink-toolbar-buttons/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/AlertButton.tsx b/examples/02-ui-components/hyperlink-toolbar-buttons/AlertButton.tsx
new file mode 100644
index 0000000000..bdf9640b4b
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/AlertButton.tsx
@@ -0,0 +1,14 @@
+import { HyperlinkToolbarProps, ToolbarButton } from "@blocknote/react";
+
+// Custom Hyperlink Toolbar button to open a browser alert.
+export function AlertButton(props: HyperlinkToolbarProps) {
+ return (
+ {
+ window.alert(`Link URL: ${props.url}`);
+ }}>
+ Open Alert
+
+ );
+}
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/App.tsx b/examples/02-ui-components/hyperlink-toolbar-buttons/App.tsx
new file mode 100644
index 0000000000..8aca590e38
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/App.tsx
@@ -0,0 +1,58 @@
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ HyperlinkToolbar,
+ HyperlinkToolbarController,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import { AlertButton } from "./AlertButton";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Hover the link below to see the modified Hyperlink Toolbar",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "link",
+ href: "https://www.blocknotejs.org/",
+ content: [
+ {
+ type: "text",
+ text: "Home Page",
+ styles: {},
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ (
+
+
+
+ )}
+ />
+
+ );
+}
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/README.md b/examples/02-ui-components/hyperlink-toolbar-buttons/README.md
new file mode 100644
index 0000000000..af0cbc607a
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/README.md
@@ -0,0 +1,10 @@
+# Adding Hyperlink Toolbar Buttons
+
+In this example, we add a button to the Hyperlink Toolbar which opens a browser alert.
+
+**Try it out:** Hover the link open the Hyperlink Toolbar, and click the new "Open Alert" button!
+
+**Relevant Docs:**
+
+- [Changing the Hyperlink Toolbar](/docs/ui-components/hyperlink-toolbar#changing-the-hyperlink-toolbar)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/index.html b/examples/02-ui-components/hyperlink-toolbar-buttons/index.html
new file mode 100644
index 0000000000..b30eb96292
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding Hyperlink Toolbar Buttons
+
+
+
+
+
+
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/main.tsx b/examples/02-ui-components/hyperlink-toolbar-buttons/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/package.json b/examples/02-ui-components/hyperlink-toolbar-buttons/package.json
new file mode 100644
index 0000000000..f0c5518829
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-hyperlink-toolbar-buttons",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/tsconfig.json b/examples/02-ui-components/hyperlink-toolbar-buttons/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/02-ui-components/hyperlink-toolbar-buttons/vite.config.ts b/examples/02-ui-components/hyperlink-toolbar-buttons/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/02-ui-components/hyperlink-toolbar-buttons/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/03-theming/01-theming-dom-attributes/.bnexample.json b/examples/03-theming/01-theming-dom-attributes/.bnexample.json
new file mode 100644
index 0000000000..6d62ae481c
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Blocks", "Appearance & Styling"]
+}
diff --git a/examples/03-theming/01-theming-dom-attributes/App.tsx b/examples/03-theming/01-theming-dom-attributes/App.tsx
new file mode 100644
index 0000000000..5f5aa61cc9
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/App.tsx
@@ -0,0 +1,54 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import "./styles.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ // Sets attributes on DOM elements in the editor.
+ domAttributes: {
+ // Adds a class to all `blockContainer` elements.
+ block: {
+ class: "hello-world-block",
+ },
+ },
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "You can see there's a border around each block",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "text",
+ text: "This is because there's a CSS rule using the ",
+ styles: {},
+ },
+ {
+ type: "text",
+ text: "hello-world-block",
+ styles: { code: true },
+ },
+ {
+ type: "text",
+ text: " class we added",
+ styles: {},
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance using a React component.
+ return ;
+}
diff --git a/examples/03-theming/01-theming-dom-attributes/README.md b/examples/03-theming/01-theming-dom-attributes/README.md
new file mode 100644
index 0000000000..535fc2d20f
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/README.md
@@ -0,0 +1,7 @@
+# Adding CSS Class to Blocks
+
+In this example, we add a `hello-world-block` class to each block in the editor. We also create a CSS rule to add a border to all elements with that class.
+
+**Relevant Docs:**
+
+- [Adding DOM Attributes](/docs/styling-theming/adding-dom-attributes)
\ No newline at end of file
diff --git a/examples/03-theming/01-theming-dom-attributes/index.html b/examples/03-theming/01-theming-dom-attributes/index.html
new file mode 100644
index 0000000000..912cb1eca3
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Adding CSS Class to Blocks
+
+
+
+
+
+
diff --git a/examples/03-theming/01-theming-dom-attributes/main.tsx b/examples/03-theming/01-theming-dom-attributes/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/03-theming/01-theming-dom-attributes/package.json b/examples/03-theming/01-theming-dom-attributes/package.json
new file mode 100644
index 0000000000..195eddbd3a
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-theming-dom-attributes",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/01-theming-dom-attributes/styles.css b/examples/03-theming/01-theming-dom-attributes/styles.css
new file mode 100644
index 0000000000..e51ced5e0a
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/styles.css
@@ -0,0 +1,6 @@
+.hello-world-block {
+ border: 2px solid lightgray;
+ border-radius: 4px;
+ padding: 2px;
+ margin: 2px;
+}
diff --git a/examples/03-theming/01-theming-dom-attributes/tsconfig.json b/examples/03-theming/01-theming-dom-attributes/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/01-theming-dom-attributes/vite.config.ts b/examples/03-theming/01-theming-dom-attributes/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/03-theming/01-theming-dom-attributes/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/03-theming/02-changing-font/.bnexample.json b/examples/03-theming/02-changing-font/.bnexample.json
new file mode 100644
index 0000000000..365a51f81b
--- /dev/null
+++ b/examples/03-theming/02-changing-font/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Appearance & Styling"]
+}
\ No newline at end of file
diff --git a/examples/03-theming/02-changing-font/App.tsx b/examples/03-theming/02-changing-font/App.tsx
new file mode 100644
index 0000000000..e21dd05893
--- /dev/null
+++ b/examples/03-theming/02-changing-font/App.tsx
@@ -0,0 +1,28 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import "./styles.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "You'll see that the font has been changed to Comic Sans MS",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance using a React component.
+ // Adds `data-changing-font-demo` to restrict styles to only this demo.
+ return ;
+}
diff --git a/examples/03-theming/02-changing-font/README.md b/examples/03-theming/02-changing-font/README.md
new file mode 100644
index 0000000000..2ed91a66fd
--- /dev/null
+++ b/examples/03-theming/02-changing-font/README.md
@@ -0,0 +1,7 @@
+# Changing Editor Font
+
+In this example, we override some of the default editor CSS to change font within the editor.
+
+**Relevant Docs:**
+
+- [Overriding CSS](/docs/styling-theming/overriding-css)
\ No newline at end of file
diff --git a/examples/03-theming/02-changing-font/index.html b/examples/03-theming/02-changing-font/index.html
new file mode 100644
index 0000000000..7bdb6289a5
--- /dev/null
+++ b/examples/03-theming/02-changing-font/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Changing Editor Font
+
+
+
+
+
+
diff --git a/examples/03-theming/02-changing-font/main.tsx b/examples/03-theming/02-changing-font/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/03-theming/02-changing-font/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/03-theming/02-changing-font/package.json b/examples/03-theming/02-changing-font/package.json
new file mode 100644
index 0000000000..61948acf63
--- /dev/null
+++ b/examples/03-theming/02-changing-font/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-changing-font",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/02-changing-font/styles.css b/examples/03-theming/02-changing-font/styles.css
new file mode 100644
index 0000000000..b5eabf064f
--- /dev/null
+++ b/examples/03-theming/02-changing-font/styles.css
@@ -0,0 +1,3 @@
+.bn-container[data-changing-font-demo] .bn-editor * {
+ font-family: "Comic Sans MS", sans-serif;
+}
\ No newline at end of file
diff --git a/examples/03-theming/02-changing-font/tsconfig.json b/examples/03-theming/02-changing-font/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/03-theming/02-changing-font/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/02-changing-font/vite.config.ts b/examples/03-theming/02-changing-font/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/03-theming/02-changing-font/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/03-theming/03-theming-css/.bnexample.json b/examples/03-theming/03-theming-css/.bnexample.json
new file mode 100644
index 0000000000..aade643575
--- /dev/null
+++ b/examples/03-theming/03-theming-css/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Appearance & Styling", "UI Components"]
+}
diff --git a/examples/03-theming/03-theming-css/App.tsx b/examples/03-theming/03-theming-css/App.tsx
new file mode 100644
index 0000000000..7a65b64349
--- /dev/null
+++ b/examples/03-theming/03-theming-css/App.tsx
@@ -0,0 +1,33 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import "./styles.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "You'll see that the text is now blue",
+ },
+ {
+ type: "paragraph",
+ content:
+ "Press the '/' key - the hovered Slash Menu items are also blue",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance using a React component.
+ // Adds `data-theming-css-demo` to restrict styles to only this demo.
+ return ;
+}
diff --git a/examples/03-theming/03-theming-css/README.md b/examples/03-theming/03-theming-css/README.md
new file mode 100644
index 0000000000..8fa0c4d771
--- /dev/null
+++ b/examples/03-theming/03-theming-css/README.md
@@ -0,0 +1,7 @@
+# Overriding CSS Styles
+
+In this example, we override some of the default editor CSS to make the editor text and hovered Slash Menu items blue.
+
+**Relevant Docs:**
+
+- [Overriding CSS](/docs/styling-theming/overriding-css)
\ No newline at end of file
diff --git a/examples/03-theming/03-theming-css/index.html b/examples/03-theming/03-theming-css/index.html
new file mode 100644
index 0000000000..79a251e0be
--- /dev/null
+++ b/examples/03-theming/03-theming-css/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Overriding CSS Styles
+
+
+
+
+
+
diff --git a/examples/03-theming/03-theming-css/main.tsx b/examples/03-theming/03-theming-css/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/03-theming/03-theming-css/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/03-theming/03-theming-css/package.json b/examples/03-theming/03-theming-css/package.json
new file mode 100644
index 0000000000..b681a22c61
--- /dev/null
+++ b/examples/03-theming/03-theming-css/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-theming-css",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/03-theming-css/styles.css b/examples/03-theming/03-theming-css/styles.css
new file mode 100644
index 0000000000..fb44e1babf
--- /dev/null
+++ b/examples/03-theming/03-theming-css/styles.css
@@ -0,0 +1,9 @@
+/* Adds border and shadow to editor */
+.bn-container[data-theming-css-demo] .bn-editor * {
+ color: blue;
+}
+
+/* Makes slash menu hovered items blue */
+.bn-container[data-theming-css-demo] .bn-slash-menu .mantine-Menu-item[data-hovered] {
+ background-color: blue;
+}
diff --git a/examples/03-theming/03-theming-css/tsconfig.json b/examples/03-theming/03-theming-css/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/03-theming/03-theming-css/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/03-theming-css/vite.config.ts b/examples/03-theming/03-theming-css/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/03-theming/03-theming-css/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/03-theming/04-theming-css-variables/.bnexample.json b/examples/03-theming/04-theming-css-variables/.bnexample.json
new file mode 100644
index 0000000000..aade643575
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Appearance & Styling", "UI Components"]
+}
diff --git a/examples/03-theming/04-theming-css-variables/App.tsx b/examples/03-theming/04-theming-css-variables/App.tsx
new file mode 100644
index 0000000000..dcfc1a4a72
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/App.tsx
@@ -0,0 +1,33 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import "./styles.css";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Open up a menu or toolbar to see more of the red theme",
+ },
+ {
+ type: "paragraph",
+ content:
+ "Toggle light/dark mode in the page footer and see the theme change too",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance using a React component.
+ // Adds `data-theming-css-variables-demo` to restrict styles to only this demo.
+ return ;
+}
diff --git a/examples/03-theming/04-theming-css-variables/README.md b/examples/03-theming/04-theming-css-variables/README.md
new file mode 100644
index 0000000000..e86319a161
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/README.md
@@ -0,0 +1,7 @@
+# Overriding Theme CSS Variables
+
+In this example, we override the editor's default theme CSS variables to create a red theme for both light and dark modes.
+
+**Relevant Docs:**
+
+- [Theme CSS Variables](/docs/styling-theming/themes#theme-css-variables)
\ No newline at end of file
diff --git a/examples/03-theming/04-theming-css-variables/index.html b/examples/03-theming/04-theming-css-variables/index.html
new file mode 100644
index 0000000000..e130442a5c
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Overriding Theme CSS Variables
+
+
+
+
+
+
diff --git a/examples/03-theming/04-theming-css-variables/main.tsx b/examples/03-theming/04-theming-css-variables/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/03-theming/04-theming-css-variables/package.json b/examples/03-theming/04-theming-css-variables/package.json
new file mode 100644
index 0000000000..967decc6c8
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-theming-css-variables",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/04-theming-css-variables/styles.css b/examples/03-theming/04-theming-css-variables/styles.css
new file mode 100644
index 0000000000..59301c371b
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/styles.css
@@ -0,0 +1,28 @@
+/* Base theme */
+.bn-container[data-theming-css-variables-demo][data-color-scheme] {
+ --bn-colors-editor-text: #222222;
+ --bn-colors-editor-background: #ffeeee;
+ --bn-colors-menu-text: #ffffff;
+ --bn-colors-menu-background: #9b0000;
+ --bn-colors-tooltip-text: #ffffff;
+ --bn-colors-tooltip-background: #b00000;
+ --bn-colors-hovered-text: #ffffff;
+ --bn-colors-hovered-background: #b00000;
+ --bn-colors-selected-text: #ffffff;
+ --bn-colors-selected-background: #c50000;
+ --bn-colors-disabled-text: #9b0000;
+ --bn-colors-disabled-background: #7d0000;
+ --bn-colors-shadow: #640000;
+ --bn-colors-border: #870000;
+ --bn-colors-side-menu: #bababa;
+ --bn-color-highlight-colors: #ffffff;
+ --bn-border-radius: 4px;
+ --bn-font-family: Helvetica Neue, sans-serif;
+}
+
+/* Changes for dark mode */
+.bn-container[data-theming-css-variables-demo][data-color-scheme="dark"] {
+ --bn-colors-editor-text: #ffffff;
+ --bn-colors-editor-background: #9b0000;
+ --bn-colors-side-menu: #ffffff;
+}
diff --git a/examples/03-theming/04-theming-css-variables/tsconfig.json b/examples/03-theming/04-theming-css-variables/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/04-theming-css-variables/vite.config.ts b/examples/03-theming/04-theming-css-variables/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/03-theming/04-theming-css-variables/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/03-theming/05-theming-css-variables-code/.bnexample.json b/examples/03-theming/05-theming-css-variables-code/.bnexample.json
new file mode 100644
index 0000000000..aade643575
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Appearance & Styling", "UI Components"]
+}
diff --git a/examples/03-theming/05-theming-css-variables-code/App.tsx b/examples/03-theming/05-theming-css-variables-code/App.tsx
new file mode 100644
index 0000000000..6a4b87de93
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/App.tsx
@@ -0,0 +1,95 @@
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ darkDefaultTheme,
+ lightDefaultTheme,
+ Theme,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+// Base theme
+const lightRedTheme = {
+ colors: {
+ editor: {
+ text: "#222222",
+ background: "#ffeeee",
+ },
+ menu: {
+ text: "#ffffff",
+ background: "#9b0000",
+ },
+ tooltip: {
+ text: "#ffffff",
+ background: "#b00000",
+ },
+ hovered: {
+ text: "#ffffff",
+ background: "#b00000",
+ },
+ selected: {
+ text: "#ffffff",
+ background: "#c50000",
+ },
+ disabled: {
+ text: "#9b0000",
+ background: "#7d0000",
+ },
+ shadow: "#640000",
+ border: "#870000",
+ sideMenu: "#bababa",
+ highlights: lightDefaultTheme.colors!.highlights,
+ },
+ borderRadius: 4,
+ fontFamily: "Helvetica Neue, sans-serif",
+} satisfies Theme;
+
+// Changes for dark mode
+const darkRedTheme = {
+ ...lightRedTheme,
+ colors: {
+ ...lightRedTheme.colors,
+ editor: {
+ text: "#ffffff",
+ background: "#9b0000",
+ },
+ sideMenu: "#ffffff",
+ highlights: darkDefaultTheme.colors!.highlights,
+ },
+} satisfies Theme;
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: "Open up a menu or toolbar to see more of the red theme",
+ },
+ {
+ type: "paragraph",
+ content:
+ "Toggle light/dark mode in the page footer and see the theme change too",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance using a React component.
+ return (
+
+ );
+}
diff --git a/examples/03-theming/05-theming-css-variables-code/README.md b/examples/03-theming/05-theming-css-variables-code/README.md
new file mode 100644
index 0000000000..a5c02c4ab1
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/README.md
@@ -0,0 +1,7 @@
+# Changing Themes Through Code
+
+In this example, we use the `BlockNoteView` component's `theme` props to create a red theme for both light and dark modes.
+
+**Relevant Docs:**
+
+- [Changing CSS Variables Through Code](/docs/styling-theming/themes#changing-css-variables-through-code)
\ No newline at end of file
diff --git a/examples/03-theming/05-theming-css-variables-code/index.html b/examples/03-theming/05-theming-css-variables-code/index.html
new file mode 100644
index 0000000000..aaba1aa427
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Changing Themes Through Code
+
+
+
+
+
+
diff --git a/examples/03-theming/05-theming-css-variables-code/main.tsx b/examples/03-theming/05-theming-css-variables-code/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/03-theming/05-theming-css-variables-code/package.json b/examples/03-theming/05-theming-css-variables-code/package.json
new file mode 100644
index 0000000000..cb64cd9a86
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-theming-css-variables-code",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/05-theming-css-variables-code/tsconfig.json b/examples/03-theming/05-theming-css-variables-code/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/03-theming/05-theming-css-variables-code/vite.config.ts b/examples/03-theming/05-theming-css-variables-code/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/03-theming/05-theming-css-variables-code/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/.bnexample.json b/examples/04-interoperability/01-converting-blocks-to-html/.bnexample.json
new file mode 100644
index 0000000000..9fa5c0b29f
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Blocks", "Import/Export"]
+}
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/App.tsx b/examples/04-interoperability/01-converting-blocks-to-html/App.tsx
new file mode 100644
index 0000000000..698de6f48e
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/App.tsx
@@ -0,0 +1,52 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { useState } from "react";
+
+import "./styles.css";
+
+export default function App() {
+ // Stores the editor's contents as HTML.
+ const [html, setHTML] = useState("");
+
+ // Creates a new editor instance with some initial content.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: [
+ "Hello, ",
+ {
+ type: "text",
+ text: "world!",
+ styles: {
+ bold: true,
+ },
+ },
+ ],
+ },
+ ],
+ });
+
+ const onChange = async () => {
+ // Converts the editor's contents from Block objects to HTML and store to state.
+ const html = await editor.blocksToHTMLLossy(editor.document);
+ setHTML(html);
+ };
+
+ // Renders the editor instance, and its contents as HTML below.
+ return (
+
+
Input (BlockNote Editor):
+
+
+
+
Output (HTML):
+
+
+ );
+}
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/README.md b/examples/04-interoperability/01-converting-blocks-to-html/README.md
new file mode 100644
index 0000000000..8288bba270
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/README.md
@@ -0,0 +1,9 @@
+# Converting Blocks to HTML
+
+This example exports the current document (all blocks) as HTML and displays it below the editor.
+
+**Try it out:** Edit the document to see the HTML representation!
+
+**Relevant Docs:**
+
+- [Converting Blocks to HTML](/docs/editor-api/converting-blocks#converting-blocks-to-html)
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/index.html b/examples/04-interoperability/01-converting-blocks-to-html/index.html
new file mode 100644
index 0000000000..de84a6cd5a
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Converting Blocks to HTML
+
+
+
+
+
+
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/main.tsx b/examples/04-interoperability/01-converting-blocks-to-html/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/package.json b/examples/04-interoperability/01-converting-blocks-to-html/package.json
new file mode 100644
index 0000000000..fd183b85f5
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-converting-blocks-to-html",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/styles.css b/examples/04-interoperability/01-converting-blocks-to-html/styles.css
new file mode 100644
index 0000000000..89d965109f
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/styles.css
@@ -0,0 +1,25 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.item {
+ border-radius: 0.5rem;
+ flex: 1;
+ overflow: hidden;
+}
+
+.item.bordered {
+ border: 1px solid gray;
+}
+
+.item pre {
+ border-radius: 0.5rem;
+ height: 100%;
+ overflow: auto;
+ padding-block: 1rem;
+ padding-inline: 54px;
+ width: 100%;
+ white-space: pre-wrap;
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/tsconfig.json b/examples/04-interoperability/01-converting-blocks-to-html/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/01-converting-blocks-to-html/vite.config.ts b/examples/04-interoperability/01-converting-blocks-to-html/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/04-interoperability/01-converting-blocks-to-html/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/.bnexample.json b/examples/04-interoperability/02-converting-blocks-from-html/.bnexample.json
new file mode 100644
index 0000000000..9fa5c0b29f
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Basic", "Blocks", "Import/Export"]
+}
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/App.tsx b/examples/04-interoperability/02-converting-blocks-from-html/App.tsx
new file mode 100644
index 0000000000..98af0279b5
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/App.tsx
@@ -0,0 +1,49 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { ChangeEvent, useCallback, useEffect } from "react";
+
+import "./styles.css";
+
+const initialHTML = "Hello, world!
";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote();
+
+ const htmlInputChanged = useCallback(
+ async (e: ChangeEvent) => {
+ // Whenever the current HTML content changes, converts it to an array of
+ // Block objects and replaces the editor's content with them.
+ const blocks = await editor.tryParseHTMLToBlocks(e.target.value);
+ editor.replaceBlocks(editor.document, blocks);
+ },
+ [editor]
+ );
+
+ // For initialization; on mount, convert the initial HTML to blocks and replace the default editor's content
+ useEffect(() => {
+ async function loadInitialHTML() {
+ const blocks = await editor.tryParseHTMLToBlocks(initialHTML);
+ editor.replaceBlocks(editor.document, blocks);
+ }
+ loadInitialHTML();
+ }, [editor]);
+
+ // Renders a text area for you to write/paste HTML in, and the editor instance
+ // below, which displays the current HTML as blocks.
+ return (
+
+
Input (HTML):
+
+
+
+
+
+
Output (BlockNote Editor):
+
+
+
+
+ );
+}
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/README.md b/examples/04-interoperability/02-converting-blocks-from-html/README.md
new file mode 100644
index 0000000000..aba507b572
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/README.md
@@ -0,0 +1,11 @@
+# Parsing HTML to Blocks
+
+This example shows how you can convert HTML content to a BlockNote document.
+
+Note that the editor itself is locked for editing by setting `editable` to `false`.
+
+**Try it out:** Edit the HTML in the textarea to see the BlockNote document update!
+
+**Relevant Docs:**
+
+- [Parsing HTML to Blocks](/docs/editor-api/converting-blocks#parsing-html-to-blocks)
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/index.html b/examples/04-interoperability/02-converting-blocks-from-html/index.html
new file mode 100644
index 0000000000..1dfff3bae9
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Parsing HTML to Blocks
+
+
+
+
+
+
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/main.tsx b/examples/04-interoperability/02-converting-blocks-from-html/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/package.json b/examples/04-interoperability/02-converting-blocks-from-html/package.json
new file mode 100644
index 0000000000..bf9c21eb61
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-converting-blocks-from-html",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/styles.css b/examples/04-interoperability/02-converting-blocks-from-html/styles.css
new file mode 100644
index 0000000000..883b3eee6f
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/styles.css
@@ -0,0 +1,26 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.item {
+ border-radius: 0.5rem;
+ flex: 1;
+ overflow: hidden;
+}
+
+.item.bordered {
+ border: 1px solid gray;
+}
+
+.item textarea {
+ background-color: transparent;
+ border-radius: 0.5rem;
+ height: 100%;
+ overflow: auto;
+ padding-block: 1rem;
+ padding-inline: 54px;
+ resize: none;
+ width: 100%;
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/tsconfig.json b/examples/04-interoperability/02-converting-blocks-from-html/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/02-converting-blocks-from-html/vite.config.ts b/examples/04-interoperability/02-converting-blocks-from-html/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/04-interoperability/02-converting-blocks-from-html/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/.bnexample.json b/examples/04-interoperability/03-converting-blocks-to-md/.bnexample.json
new file mode 100644
index 0000000000..8084d453b2
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Basic", "Blocks", "Import/Export"]
+}
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/App.tsx b/examples/04-interoperability/03-converting-blocks-to-md/App.tsx
new file mode 100644
index 0000000000..1e020bfae7
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/App.tsx
@@ -0,0 +1,52 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { useState } from "react";
+
+import "./styles.css";
+
+export default function App() {
+ // Stores the editor's contents as Markdown.
+ const [markdown, setMarkdown] = useState("");
+
+ // Creates a new editor instance with some initial content.
+ const editor = useCreateBlockNote({
+ initialContent: [
+ {
+ type: "paragraph",
+ content: [
+ "Hello, ",
+ {
+ type: "text",
+ text: "world!",
+ styles: {
+ bold: true,
+ },
+ },
+ ],
+ },
+ ],
+ });
+
+ const onChange = async () => {
+ // Converts the editor's contents from Block objects to Markdown and store to state.
+ const markdown = await editor.blocksToMarkdownLossy(editor.document);
+ setMarkdown(markdown);
+ };
+
+ // Renders the editor instance, and its contents as Markdown below.
+ return (
+
+
Input (BlockNote Editor):
+
+
+
+
Output (Markdown):
+
+
+ );
+}
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/README.md b/examples/04-interoperability/03-converting-blocks-to-md/README.md
new file mode 100644
index 0000000000..c89dc71dfd
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/README.md
@@ -0,0 +1,9 @@
+# Converting Blocks to Markdown
+
+This example exports the current document (all blocks) as Markdown and displays it below the editor.
+
+**Try it out:** Edit the document to see the Markdown representation!
+
+**Relevant Docs:**
+
+- [Converting Blocks to Markdown](/docs/editor-api/converting-blocks#converting-blocks-to-markdown)
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/index.html b/examples/04-interoperability/03-converting-blocks-to-md/index.html
new file mode 100644
index 0000000000..d90ecadfd1
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Converting Blocks to Markdown
+
+
+
+
+
+
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/main.tsx b/examples/04-interoperability/03-converting-blocks-to-md/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/package.json b/examples/04-interoperability/03-converting-blocks-to-md/package.json
new file mode 100644
index 0000000000..1d0bff13c8
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-converting-blocks-to-md",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/styles.css b/examples/04-interoperability/03-converting-blocks-to-md/styles.css
new file mode 100644
index 0000000000..89d965109f
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/styles.css
@@ -0,0 +1,25 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.item {
+ border-radius: 0.5rem;
+ flex: 1;
+ overflow: hidden;
+}
+
+.item.bordered {
+ border: 1px solid gray;
+}
+
+.item pre {
+ border-radius: 0.5rem;
+ height: 100%;
+ overflow: auto;
+ padding-block: 1rem;
+ padding-inline: 54px;
+ width: 100%;
+ white-space: pre-wrap;
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/tsconfig.json b/examples/04-interoperability/03-converting-blocks-to-md/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/03-converting-blocks-to-md/vite.config.ts b/examples/04-interoperability/03-converting-blocks-to-md/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/04-interoperability/03-converting-blocks-to-md/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/.bnexample.json b/examples/04-interoperability/04-converting-blocks-from-md/.bnexample.json
new file mode 100644
index 0000000000..8084d453b2
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Basic", "Blocks", "Import/Export"]
+}
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/App.tsx b/examples/04-interoperability/04-converting-blocks-from-md/App.tsx
new file mode 100644
index 0000000000..3015c30f9d
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/App.tsx
@@ -0,0 +1,50 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { ChangeEvent, useCallback, useEffect } from "react";
+
+const initialMarkdown = "Hello, **world!**";
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote();
+
+ const markdownInputChanged = useCallback(
+ async (e: ChangeEvent) => {
+ // Whenever the current Markdown content changes, converts it to an array of
+ // Block objects and replaces the editor's content with them.
+ const blocks = await editor.tryParseMarkdownToBlocks(e.target.value);
+ editor.replaceBlocks(editor.document, blocks);
+ },
+ [editor]
+ );
+
+ // For initialization; on mount, convert the initial Markdown to blocks and replace the default editor's content
+ useEffect(() => {
+ async function loadInitialHTML() {
+ const blocks = await editor.tryParseMarkdownToBlocks(initialMarkdown);
+ editor.replaceBlocks(editor.document, blocks);
+ }
+ loadInitialHTML();
+ }, [editor]);
+
+ // Renders a text area for you to write/paste Markdown in, and the editor instance
+ // below, which displays the current Markdown as blocks.
+ return (
+
+
Input (Markdown):
+
+
+
+
+
+
Output (BlockNote Editor):
+
+
+
+
+ );
+}
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/README.md b/examples/04-interoperability/04-converting-blocks-from-md/README.md
new file mode 100644
index 0000000000..67f5373661
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/README.md
@@ -0,0 +1,11 @@
+# Parsing Markdown to Blocks
+
+This example shows how you can convert HTML content to a BlockNote document.
+
+Note that the editor itself is locked for editing by setting `editable` to `false`.
+
+**Try it out:** Edit the Markdown in the textarea to see the BlockNote document update!
+
+**Relevant Docs:**
+
+- [Parsing Markdown to Blocks](/docs/editor-api/converting-blocks#parsing-markdown-to-blocks)
\ No newline at end of file
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/index.html b/examples/04-interoperability/04-converting-blocks-from-md/index.html
new file mode 100644
index 0000000000..ba17f723a6
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Parsing Markdown to Blocks
+
+
+
+
+
+
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/main.tsx b/examples/04-interoperability/04-converting-blocks-from-md/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/package.json b/examples/04-interoperability/04-converting-blocks-from-md/package.json
new file mode 100644
index 0000000000..67824c2851
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-converting-blocks-from-md",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/styles.css b/examples/04-interoperability/04-converting-blocks-from-md/styles.css
new file mode 100644
index 0000000000..883b3eee6f
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/styles.css
@@ -0,0 +1,26 @@
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+.item {
+ border-radius: 0.5rem;
+ flex: 1;
+ overflow: hidden;
+}
+
+.item.bordered {
+ border: 1px solid gray;
+}
+
+.item textarea {
+ background-color: transparent;
+ border-radius: 0.5rem;
+ height: 100%;
+ overflow: auto;
+ padding-block: 1rem;
+ padding-inline: 54px;
+ resize: none;
+ width: 100%;
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/tsconfig.json b/examples/04-interoperability/04-converting-blocks-from-md/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/04-interoperability/04-converting-blocks-from-md/vite.config.ts b/examples/04-interoperability/04-converting-blocks-from-md/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/04-interoperability/04-converting-blocks-from-md/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/05-custom-schema/01-alert-block/.bnexample.json b/examples/05-custom-schema/01-alert-block/.bnexample.json
new file mode 100644
index 0000000000..218478f9c7
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/.bnexample.json
@@ -0,0 +1,10 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Blocks", "Custom Schemas", "Suggestion Menus", "Slash Menu"],
+ "dependencies": {
+ "@mantine/core": "^7.5.0",
+ "react-icons": "^4.3.1"
+ }
+}
diff --git a/examples/05-custom-schema/01-alert-block/Alert.tsx b/examples/05-custom-schema/01-alert-block/Alert.tsx
new file mode 100644
index 0000000000..99868fda2b
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/Alert.tsx
@@ -0,0 +1,118 @@
+import { defaultProps } from "@blocknote/core";
+import { createReactBlockSpec } from "@blocknote/react";
+import { Menu } from "@mantine/core";
+import { MdCancel, MdCheckCircle, MdError, MdInfo } from "react-icons/md";
+import "./styles.css";
+
+// The types of alerts that users can choose from.
+export const alertTypes = [
+ {
+ title: "Warning",
+ value: "warning",
+ icon: MdError,
+ color: "#e69819",
+ backgroundColor: {
+ light: "#fff6e6",
+ dark: "#805d20",
+ },
+ },
+ {
+ title: "Error",
+ value: "error",
+ icon: MdCancel,
+ color: "#d80d0d",
+ backgroundColor: {
+ light: "#ffe6e6",
+ dark: "#802020",
+ },
+ },
+ {
+ title: "Info",
+ value: "info",
+ icon: MdInfo,
+ color: "#507aff",
+ backgroundColor: {
+ light: "#e6ebff",
+ dark: "#203380",
+ },
+ },
+ {
+ title: "Success",
+ value: "success",
+ icon: MdCheckCircle,
+ color: "#0bc10b",
+ backgroundColor: {
+ light: "#e6ffe6",
+ dark: "#208020",
+ },
+ },
+] as const;
+
+// The Alert block.
+export const Alert = createReactBlockSpec(
+ {
+ type: "alert",
+ propSchema: {
+ textAlignment: defaultProps.textAlignment,
+ textColor: defaultProps.textColor,
+ type: {
+ default: "warning",
+ values: ["warning", "error", "info", "success"],
+ },
+ },
+ content: "inline",
+ },
+ {
+ render: (props) => {
+ const alertType = alertTypes.find(
+ (a) => a.value === props.block.props.type
+ )!;
+ const Icon = alertType.icon;
+ return (
+
+ {/*Icon which opens a menu to choose the Alert type*/}
+
+
+
+
+
+
+ {/*Dropdown to change the Alert type*/}
+
+ Alert Type
+
+ {alertTypes.map((type) => {
+ const ItemIcon = type.icon;
+
+ return (
+
+ }
+ onClick={() =>
+ props.editor.updateBlock(props.block, {
+ type: "alert",
+ props: { type: type.value },
+ })
+ }>
+ {type.title}
+
+ );
+ })}
+
+
+ {/*Rich text field for user to type in*/}
+
+
+ );
+ },
+ }
+);
diff --git a/examples/05-custom-schema/01-alert-block/App.tsx b/examples/05-custom-schema/01-alert-block/App.tsx
new file mode 100644
index 0000000000..0dda8fbe61
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/App.tsx
@@ -0,0 +1,90 @@
+import {
+ BlockNoteSchema,
+ defaultBlockSpecs,
+ filterSuggestionItems,
+ insertOrUpdateBlock,
+} from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ SuggestionMenuController,
+ getDefaultReactSlashMenuItems,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import { RiAlertFill } from "react-icons/ri";
+import { Alert } from "./Alert";
+
+// Our schema with block specs, which contain the configs and implementations for blocks
+// that we want our editor to use.
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ // Adds all default blocks.
+ ...defaultBlockSpecs,
+ // Adds the Alert block.
+ alert: Alert,
+ },
+});
+
+// Slash menu item to insert an Alert block
+const insertAlert = (editor: typeof schema.BlockNoteEditor) => ({
+ title: "Alert",
+ onItemClick: () => {
+ insertOrUpdateBlock(editor, {
+ type: "alert",
+ });
+ },
+ aliases: [
+ "alert",
+ "notification",
+ "emphasize",
+ "warning",
+ "error",
+ "info",
+ "success",
+ ],
+ group: "Other",
+ icon: ,
+});
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ schema,
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "alert",
+ content: "This is an example alert",
+ },
+ {
+ type: "paragraph",
+ content: "Press the '/' key to open the Slash Menu and add another",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ // Renders the editor instance.
+ return (
+
+ {/* Replaces the default Slash Menu. */}
+
+ // Gets all default slash menu items and `insertAlert` item.
+ filterSuggestionItems(
+ [...getDefaultReactSlashMenuItems(editor), insertAlert(editor)],
+ query
+ )
+ }
+ />
+
+ );
+}
diff --git a/examples/05-custom-schema/01-alert-block/README.md b/examples/05-custom-schema/01-alert-block/README.md
new file mode 100644
index 0000000000..1ff916dae4
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/README.md
@@ -0,0 +1,11 @@
+# Alert Block
+
+In this example, we create a custom `Alert` block which is used to emphasize text. In addition, we create a Slash Menu item which inserts an `Alert` block.
+
+**Try it out:** Press the "/" key to open the Slash Menu and insert an `Alert` block!
+
+**Relevant Docs:**
+
+- [Custom Blocks](/docs/custom-schemas/custom-blocks)
+- [Changing Slash Menu Items](/docs/ui-components/slash-menu#changing-slash-menu-items)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/05-custom-schema/01-alert-block/index.html b/examples/05-custom-schema/01-alert-block/index.html
new file mode 100644
index 0000000000..84532134d8
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Alert Block
+
+
+
+
+
+
diff --git a/examples/05-custom-schema/01-alert-block/main.tsx b/examples/05-custom-schema/01-alert-block/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/05-custom-schema/01-alert-block/package.json b/examples/05-custom-schema/01-alert-block/package.json
new file mode 100644
index 0000000000..2c87e3b9f5
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "@blocknote/example-alert-block",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "@mantine/core": "^7.5.0",
+ "react-icons": "^4.3.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/01-alert-block/styles.css b/examples/05-custom-schema/01-alert-block/styles.css
new file mode 100644
index 0000000000..8551401558
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/styles.css
@@ -0,0 +1,74 @@
+.alert {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-grow: 1;
+ border-radius: 4px;
+ height: 48px;
+ padding: 4px;
+}
+
+.alert[data-alert-type="warning"] {
+ background-color: #fff6e6;
+}
+
+.alert[data-alert-type="error"] {
+ background-color: #ffe6e6;
+}
+
+.alert[data-alert-type="info"] {
+ background-color: #e6ebff;
+}
+
+.alert[data-alert-type="success"] {
+ background-color: #e6ffe6;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="warning"] {
+ background-color: #805d20;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="error"] {
+ background-color: #802020;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="info"] {
+ background-color: #203380;
+}
+
+[data-color-scheme="dark"] .alert[data-alert-type="success"] {
+ background-color: #208020;
+}
+
+.alert-icon-wrapper {
+ border-radius: 16px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-left: 12px;
+ margin-right: 12px;
+ height: 18px;
+ width: 18px;
+ user-select: none;
+ cursor: pointer;
+}
+
+.alert-icon[data-alert-icon-type="warning"] {
+ color: #e69819
+}
+
+.alert-icon[data-alert-icon-type="error"] {
+ color: #d80d0d
+}
+
+.alert-icon[data-alert-icon-type="info"] {
+ color: #507aff
+}
+
+.alert-icon[data-alert-icon-type="success"] {
+ color: #0bc10b
+}
+
+.inline-content {
+ flex-grow: 1;
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/01-alert-block/tsconfig.json b/examples/05-custom-schema/01-alert-block/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/01-alert-block/vite.config.ts b/examples/05-custom-schema/01-alert-block/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/05-custom-schema/01-alert-block/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/.bnexample.json b/examples/05-custom-schema/02-suggestion-menus-mentions/.bnexample.json
new file mode 100644
index 0000000000..f347671a56
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/.bnexample.json
@@ -0,0 +1,11 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": [
+ "Intermediate",
+ "Inline Content",
+ "Custom Schemas",
+ "Suggestion Menus"
+ ]
+}
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx b/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx
new file mode 100644
index 0000000000..d3f0463537
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/App.tsx
@@ -0,0 +1,98 @@
+import {
+ BlockNoteSchema,
+ defaultInlineContentSpecs,
+ filterSuggestionItems,
+} from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import {
+ BlockNoteView,
+ DefaultReactSuggestionItem,
+ SuggestionMenuController,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+
+import { Mention } from "./Mention";
+
+// Our schema with inline content specs, which contain the configs and
+// implementations for inline content that we want our editor to use.
+const schema = BlockNoteSchema.create({
+ inlineContentSpecs: {
+ // Adds all default inline content.
+ ...defaultInlineContentSpecs,
+ // Adds the mention tag.
+ mention: Mention,
+ },
+});
+
+// Function which gets all users for the mentions menu.
+const getMentionMenuItems = (
+ editor: typeof schema.BlockNoteEditor
+): DefaultReactSuggestionItem[] => {
+ const users = ["Steve", "Bob", "Joe", "Mike"];
+
+ return users.map((user) => ({
+ title: user,
+ onItemClick: () => {
+ editor.insertInlineContent([
+ {
+ type: "mention",
+ props: {
+ user,
+ },
+ },
+ " ", // add a space after the mention
+ ]);
+ },
+ }));
+};
+
+export function App() {
+ const editor = useCreateBlockNote({
+ schema,
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "mention",
+ props: {
+ user: "Steve",
+ },
+ },
+ {
+ type: "text",
+ text: " <- This is an example mention",
+ styles: {},
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ content: "Press the '@' key to open the mentions menu and add another",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ return (
+
+ {/* Adds a mentions menu which opens with the "@" key */}
+
+ // Gets the mentions menu items
+ filterSuggestionItems(getMentionMenuItems(editor), query)
+ }
+ />
+
+ );
+}
+
+export default App;
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/Mention.tsx b/examples/05-custom-schema/02-suggestion-menus-mentions/Mention.tsx
new file mode 100644
index 0000000000..fdcae6b8c9
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/Mention.tsx
@@ -0,0 +1,21 @@
+import { createReactInlineContentSpec } from "@blocknote/react";
+
+// The Mention inline content.
+export const Mention = createReactInlineContentSpec(
+ {
+ type: "mention",
+ propSchema: {
+ user: {
+ default: "Unknown",
+ },
+ },
+ content: "none",
+ },
+ {
+ render: (props) => (
+
+ @{props.inlineContent.props.user}
+
+ ),
+ }
+);
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/README.md b/examples/05-custom-schema/02-suggestion-menus-mentions/README.md
new file mode 100644
index 0000000000..0b8e909ad9
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/README.md
@@ -0,0 +1,11 @@
+# Mentions Menu
+
+In this example, we create a custom `Mention` inline content type which is used to tag people. In addition, we create a new Suggestion Menu for mentions which opens with the "@" character.
+
+**Try it out:** Press the "@" key to open the mentions menu and insert a mention!
+
+**Relevant Docs:**
+
+- [Custom Inline Content Types](/docs/custom-schemas/custom-inline-content)
+- [Creating Suggestion Menus](/docs/ui-components/slash-menu#creating-suggestion-menus)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/index.html b/examples/05-custom-schema/02-suggestion-menus-mentions/index.html
new file mode 100644
index 0000000000..9b0e7ef2b1
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Mentions Menu
+
+
+
+
+
+
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/main.tsx b/examples/05-custom-schema/02-suggestion-menus-mentions/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/package.json b/examples/05-custom-schema/02-suggestion-menus-mentions/package.json
new file mode 100644
index 0000000000..4015901188
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-suggestion-menus-mentions",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/tsconfig.json b/examples/05-custom-schema/02-suggestion-menus-mentions/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/02-suggestion-menus-mentions/vite.config.ts b/examples/05-custom-schema/02-suggestion-menus-mentions/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/05-custom-schema/02-suggestion-menus-mentions/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/05-custom-schema/03-font-style/.bnexample.json b/examples/05-custom-schema/03-font-style/.bnexample.json
new file mode 100644
index 0000000000..c88fe3b0fa
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "matthewlipski",
+ "tags": ["Intermediate", "Inline Content", "Custom Schemas", "Formatting Toolbar"]
+}
diff --git a/examples/05-custom-schema/03-font-style/App.tsx b/examples/05-custom-schema/03-font-style/App.tsx
new file mode 100644
index 0000000000..1b8c79a96f
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/App.tsx
@@ -0,0 +1,150 @@
+import { BlockNoteSchema, defaultStyleSpecs } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
+import {
+ BasicTextStyleButton,
+ BlockNoteView,
+ BlockTypeDropdown,
+ ColorStyleButton,
+ CreateLinkButton,
+ FormattingToolbar,
+ FormattingToolbarController,
+ ImageCaptionButton,
+ NestBlockButton,
+ ReplaceImageButton,
+ TextAlignButton,
+ ToolbarButton,
+ UnnestBlockButton,
+ useBlockNoteEditor,
+ useCreateBlockNote,
+} from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { RiText } from "react-icons/ri";
+
+import { Font } from "./Font";
+
+// Our schema with style specs, which contain the configs and implementations for styles
+// that we want our editor to use.
+const schema = BlockNoteSchema.create({
+ styleSpecs: {
+ // Adds all default styles.
+ ...defaultStyleSpecs,
+ // Adds the Font style.
+ font: Font,
+ },
+});
+
+// Formatting Toolbar button to set the font style.
+const SetFontStyleButton = () => {
+ const editor = useBlockNoteEditor<
+ typeof schema.blockSchema,
+ typeof schema.inlineContentSchema,
+ typeof schema.styleSchema
+ >();
+
+ return (
+ {
+ const fontName = prompt("Enter a font name") || "Comic Sans MS";
+
+ editor.addStyles({
+ font: fontName,
+ });
+ }}
+ />
+ );
+};
+
+export default function App() {
+ // Creates a new editor instance.
+ const editor = useCreateBlockNote({
+ schema,
+ initialContent: [
+ {
+ type: "paragraph",
+ content: "Welcome to this demo!",
+ },
+ {
+ type: "paragraph",
+ content: [
+ {
+ type: "text",
+ text: "Comic Sans MS",
+ styles: {
+ font: "Comic Sans MS",
+ },
+ },
+ {
+ type: "text",
+ text: " <- This text has a different font",
+ styles: {},
+ },
+ ],
+ },
+ {
+ type: "paragraph",
+ content:
+ "Highlight some text to open the Formatting Toolbar and change the font elsewhere",
+ },
+ {
+ type: "paragraph",
+ },
+ ],
+ });
+
+ return (
+
+ {/* Replaces the default Formatting Toolbar. */}
+ (
+
+
+
+
+
+
+
+
+
+
+ {/* Adds SetFontStyleButton */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+ />
+
+ );
+}
diff --git a/examples/05-custom-schema/03-font-style/Font.tsx b/examples/05-custom-schema/03-font-style/Font.tsx
new file mode 100644
index 0000000000..9cd344f7fe
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/Font.tsx
@@ -0,0 +1,14 @@
+import { createReactStyleSpec } from "@blocknote/react";
+
+// The Font style.
+export const Font = createReactStyleSpec(
+ {
+ type: "font",
+ propSchema: "string",
+ },
+ {
+ render: (props) => (
+
+ ),
+ }
+);
diff --git a/examples/05-custom-schema/03-font-style/README.md b/examples/05-custom-schema/03-font-style/README.md
new file mode 100644
index 0000000000..ce5e332f52
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/README.md
@@ -0,0 +1,11 @@
+# Font Style
+
+In this example, we create a custom `Font` style which is used to set the `fontFamily` style. In addition, we create a Formatting Toolbar button which sets the `Font` style on the selected text.
+
+**Try it out:** Highlight some text to open the Formatting Toolbar and set the `Font` style!
+
+**Relevant Docs:**
+
+- [Custom Styles](/docs/custom-schemas/custom-styles)
+- [Changing the Formatting Toolbar](/docs/ui-components/formatting-toolbar#changing-the-formatting-toolbar)
+- [Editor Setup](/docs/editor-basics/setup)
\ No newline at end of file
diff --git a/examples/05-custom-schema/03-font-style/index.html b/examples/05-custom-schema/03-font-style/index.html
new file mode 100644
index 0000000000..67f1b3fef2
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Font Style
+
+
+
+
+
+
diff --git a/examples/05-custom-schema/03-font-style/main.tsx b/examples/05-custom-schema/03-font-style/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/05-custom-schema/03-font-style/package.json b/examples/05-custom-schema/03-font-style/package.json
new file mode 100644
index 0000000000..b31fbd8e0d
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-font-style",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/03-font-style/tsconfig.json b/examples/05-custom-schema/03-font-style/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/03-font-style/vite.config.ts b/examples/05-custom-schema/03-font-style/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/05-custom-schema/03-font-style/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/05-custom-schema/react-custom-blocks/.bnexample.json b/examples/05-custom-schema/react-custom-blocks/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/editor/examples/react-custom-blocks/App.tsx b/examples/05-custom-schema/react-custom-blocks/App.tsx
similarity index 79%
rename from examples/editor/examples/react-custom-blocks/App.tsx
rename to examples/05-custom-schema/react-custom-blocks/App.tsx
index df96435dd7..49a541a21c 100644
--- a/examples/editor/examples/react-custom-blocks/App.tsx
+++ b/examples/05-custom-schema/react-custom-blocks/App.tsx
@@ -1,13 +1,17 @@
-import { defaultBlockSpecs, defaultProps } from "@blocknote/core";
+import {
+ BlockNoteSchema,
+ defaultBlockSpecs,
+ defaultProps,
+} from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
import {
BlockNoteView,
createReactBlockSpec,
- useBlockNote,
+ useCreateBlockNote,
} from "@blocknote/react";
import "@blocknote/react/style.css";
-import "../vanilla-custom-blocks/style.css";
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
+import "./styles.css";
// The types of alerts that users can choose from
const alertTypes = {
@@ -40,8 +44,8 @@ export const alertBlock = createReactBlockSpec(
textAlignment: defaultProps.textAlignment,
textColor: defaultProps.textColor,
type: {
- default: "warning" as const,
- values: ["warning", "error", "info", "success"] as const,
+ default: "warning",
+ values: ["warning", "error", "info", "success"],
},
},
content: "inline",
@@ -116,20 +120,18 @@ export const bracketsParagraphBlock = createReactBlockSpec(
}
);
-export function ReactCustomBlocks() {
- const editor = useBlockNote({
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
- blockSpecs: {
- ...defaultBlockSpecs,
- alert: alertBlock,
- simpleImage: simpleImageBlock,
- bracketsParagraph: bracketsParagraphBlock,
- },
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ ...defaultBlockSpecs,
+ alert: alertBlock,
+ simpleImage: simpleImageBlock,
+ bracketsParagraph: bracketsParagraphBlock,
+ },
+});
+
+export default function App() {
+ const editor = useCreateBlockNote({
+ schema,
initialContent: [
{
type: "alert",
@@ -151,8 +153,5 @@ export function ReactCustomBlocks() {
],
});
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
- return ;
+ return ;
}
diff --git a/examples/05-custom-schema/react-custom-blocks/README.md b/examples/05-custom-schema/react-custom-blocks/README.md
new file mode 100644
index 0000000000..a65d885629
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/README.md
@@ -0,0 +1 @@
+# Custom Blocks - React API
diff --git a/examples/05-custom-schema/react-custom-blocks/index.html b/examples/05-custom-schema/react-custom-blocks/index.html
new file mode 100644
index 0000000000..dde6760e51
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom Blocks - React API
+
+
+
+
+
+
diff --git a/examples/05-custom-schema/react-custom-blocks/main.tsx b/examples/05-custom-schema/react-custom-blocks/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/05-custom-schema/react-custom-blocks/package.json b/examples/05-custom-schema/react-custom-blocks/package.json
new file mode 100644
index 0000000000..ba0f835841
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-react-custom-blocks",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/editor/examples/vanilla-custom-blocks/style.css b/examples/05-custom-schema/react-custom-blocks/styles.css
similarity index 100%
rename from examples/editor/examples/vanilla-custom-blocks/style.css
rename to examples/05-custom-schema/react-custom-blocks/styles.css
diff --git a/examples/05-custom-schema/react-custom-blocks/tsconfig.json b/examples/05-custom-schema/react-custom-blocks/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/react-custom-blocks/vite.config.ts b/examples/05-custom-schema/react-custom-blocks/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-blocks/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/05-custom-schema/react-custom-inline-content/.bnexample.json b/examples/05-custom-schema/react-custom-inline-content/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/editor/examples/react-custom-inline-content/App.tsx b/examples/05-custom-schema/react-custom-inline-content/App.tsx
similarity index 62%
rename from examples/editor/examples/react-custom-inline-content/App.tsx
rename to examples/05-custom-schema/react-custom-inline-content/App.tsx
index 278386dcc6..e321420646 100644
--- a/examples/editor/examples/react-custom-inline-content/App.tsx
+++ b/examples/05-custom-schema/react-custom-inline-content/App.tsx
@@ -1,13 +1,12 @@
-import { defaultInlineContentSpecs } from "@blocknote/core";
+import { BlockNoteSchema, defaultInlineContentSpecs } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
import {
BlockNoteView,
createReactInlineContentSpec,
- useBlockNote,
+ useCreateBlockNote,
} from "@blocknote/react";
import "@blocknote/react/style.css";
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
-
const mention = createReactInlineContentSpec(
{
type: "mention",
@@ -42,19 +41,17 @@ const tag = createReactInlineContentSpec(
}
);
-export function ReactInlineContent() {
- const editor = useBlockNote({
- inlineContentSpecs: {
- mention,
- tag,
- ...defaultInlineContentSpecs,
- },
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
+const schema = BlockNoteSchema.create({
+ inlineContentSpecs: {
+ mention,
+ tag,
+ ...defaultInlineContentSpecs,
+ },
+});
+
+export default function ReactInlineContent() {
+ const editor = useCreateBlockNote({
+ schema,
initialContent: [
{
type: "paragraph",
@@ -66,7 +63,7 @@ export function ReactInlineContent() {
user: "Matthew",
},
content: undefined,
- } as any,
+ },
],
},
{
@@ -76,14 +73,11 @@ export function ReactInlineContent() {
{
type: "tag",
content: "BlockNote",
- } as any,
+ },
],
},
],
});
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
- return ;
+ return ;
}
diff --git a/examples/05-custom-schema/react-custom-inline-content/README.md b/examples/05-custom-schema/react-custom-inline-content/README.md
new file mode 100644
index 0000000000..7ac9208635
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/README.md
@@ -0,0 +1 @@
+# Custom Inline Content - React API
diff --git a/examples/05-custom-schema/react-custom-inline-content/index.html b/examples/05-custom-schema/react-custom-inline-content/index.html
new file mode 100644
index 0000000000..714e45c7bf
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom Inline Content - React API
+
+
+
+
+
+
diff --git a/examples/05-custom-schema/react-custom-inline-content/main.tsx b/examples/05-custom-schema/react-custom-inline-content/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/05-custom-schema/react-custom-inline-content/package.json b/examples/05-custom-schema/react-custom-inline-content/package.json
new file mode 100644
index 0000000000..e395223b93
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-react-custom-inline-content",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/react-custom-inline-content/tsconfig.json b/examples/05-custom-schema/react-custom-inline-content/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/react-custom-inline-content/vite.config.ts b/examples/05-custom-schema/react-custom-inline-content/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-inline-content/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/05-custom-schema/react-custom-styles/.bnexample.json b/examples/05-custom-schema/react-custom-styles/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/editor/examples/react-custom-styles/App.tsx b/examples/05-custom-schema/react-custom-styles/App.tsx
similarity index 55%
rename from examples/editor/examples/react-custom-styles/App.tsx
rename to examples/05-custom-schema/react-custom-styles/App.tsx
index e7af8f6386..aba31bdeda 100644
--- a/examples/editor/examples/react-custom-styles/App.tsx
+++ b/examples/05-custom-schema/react-custom-styles/App.tsx
@@ -1,22 +1,18 @@
-import {
- BlockNoteEditor,
- DefaultBlockSchema,
- DefaultInlineContentSchema,
- defaultStyleSpecs,
-} from "@blocknote/core";
+import { BlockNoteSchema, defaultStyleSpecs } from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
import {
BlockNoteView,
createReactStyleSpec,
- FormattingToolbarPositioner,
- Toolbar,
+ FormattingToolbar,
+ FormattingToolbarController,
+ FormattingToolbarProps,
ToolbarButton,
useActiveStyles,
- useBlockNote,
+ useBlockNoteEditor,
+ useCreateBlockNote,
} from "@blocknote/react";
import "@blocknote/react/style.css";
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
-
const small = createReactStyleSpec(
{
type: "small",
@@ -43,24 +39,24 @@ const fontSize = createReactStyleSpec(
}
);
-type MyEditorType = BlockNoteEditor<
- DefaultBlockSchema,
- DefaultInlineContentSchema,
- {
- small: (typeof small)["config"];
- fontSize: (typeof fontSize)["config"];
- }
->;
+export const schema = BlockNoteSchema.create({
+ styleSpecs: {
+ ...defaultStyleSpecs,
+ small,
+ fontSize,
+ },
+});
-const CustomFormattingToolbar = (props: { editor: MyEditorType }) => {
- const activeStyles = useActiveStyles(props.editor);
+const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
+ const editor = useBlockNoteEditor(schema);
+ const activeStyles = useActiveStyles(editor);
return (
-
+
{
- props.editor.toggleStyles({
+ editor.toggleStyles({
small: true,
});
}}
@@ -70,36 +66,21 @@ const CustomFormattingToolbar = (props: { editor: MyEditorType }) => {
{
- props.editor.toggleStyles({
+ editor.toggleStyles({
fontSize: "30px",
});
}}
isSelected={!!activeStyles.fontSize}>
Font size
-
+
);
};
-const customReactStyles = {
- ...defaultStyleSpecs,
- small,
- fontSize,
-};
-
-export function ReactStyles() {
- const editor = useBlockNote(
+export default function App() {
+ const editor = useCreateBlockNote(
{
- styleSpecs: customReactStyles,
- onEditorContentChange: (editor) => {
- console.log(editor.topLevelBlocks);
- },
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
+ schema,
initialContent: [
{
type: "paragraph",
@@ -125,13 +106,9 @@ export function ReactStyles() {
[]
);
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
return (
-
-
+
diff --git a/examples/05-custom-schema/react-custom-styles/README.md b/examples/05-custom-schema/react-custom-styles/README.md
new file mode 100644
index 0000000000..01a3bb3f6c
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/README.md
@@ -0,0 +1 @@
+# Custom Styles - React API
diff --git a/examples/05-custom-schema/react-custom-styles/blocknote.d.ts.example b/examples/05-custom-schema/react-custom-styles/blocknote.d.ts.example
new file mode 100644
index 0000000000..5b33b3e037
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/blocknote.d.ts.example
@@ -0,0 +1,18 @@
+/*
+ * Experimental!
+ * You can use a file like this (blocknote.d.ts) to automatically override types with your custom schema.
+ * This way, you can just use types like `PartialBlock`, `Block`, `BlockNoteEditor` and they'll automatically
+ * use the types from your custom schema.
+ *
+ * (the reason is that this is not used in the examples, is that we use multiple BlockNote instances in the website / example project with different shemas.
+ * This method only works if you use one custom schema in your app)
+ */
+import "@blocknote/core";
+import type { schema } from "./App";
+
+declare module "@blocknote/core" {
+ // Override the default schema types
+ type DefaultStyleSchema = typeof schema.styleSchema;
+ type DefaultBlockSchema = typeof schema.blockSchema;
+ type DefaultInlineContentSchema = typeof schema.inlineContentSchema;
+}
diff --git a/examples/05-custom-schema/react-custom-styles/index.html b/examples/05-custom-schema/react-custom-styles/index.html
new file mode 100644
index 0000000000..72db75e1ad
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom Styles - React API
+
+
+
+
+
+
diff --git a/examples/05-custom-schema/react-custom-styles/main.tsx b/examples/05-custom-schema/react-custom-styles/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/05-custom-schema/react-custom-styles/package.json b/examples/05-custom-schema/react-custom-styles/package.json
new file mode 100644
index 0000000000..74fc5e3af2
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-react-custom-styles",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/react-custom-styles/tsconfig.json b/examples/05-custom-schema/react-custom-styles/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/05-custom-schema/react-custom-styles/vite.config.ts b/examples/05-custom-schema/react-custom-styles/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/05-custom-schema/react-custom-styles/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/06-collaboration/01-partykit/.bnexample.json b/examples/06-collaboration/01-partykit/.bnexample.json
new file mode 100644
index 0000000000..d4fa7a4a69
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/.bnexample.json
@@ -0,0 +1,10 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Advanced", "Saving/Loading", "Collaboration"],
+ "dependencies": {
+ "y-partykit": "^0.0.25",
+ "yjs": "^13.6.1"
+ }
+}
diff --git a/examples/06-collaboration/01-partykit/App.tsx b/examples/06-collaboration/01-partykit/App.tsx
new file mode 100644
index 0000000000..5d0e98fb51
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/App.tsx
@@ -0,0 +1,33 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import YPartyKitProvider from "y-partykit/provider";
+import * as Y from "yjs";
+
+// Sets up Yjs document and PartyKit Yjs provider.
+const doc = new Y.Doc();
+const provider = new YPartyKitProvider(
+ "blocknote-dev.yousefed.partykit.dev",
+ // Use a unique name as a "room" for your application.
+ "your-project-name",
+ doc
+);
+
+export default function App() {
+ const editor = useCreateBlockNote({
+ collaboration: {
+ // The Yjs Provider responsible for transporting updates:
+ provider,
+ // Where to store BlockNote data in the Y.Doc:
+ fragment: doc.getXmlFragment("document-store"),
+ // Information (name and color) for this user:
+ user: {
+ name: "My Username",
+ color: "#ff0000",
+ },
+ },
+ });
+
+ // Renders the editor instance.
+ return ;
+}
diff --git a/examples/06-collaboration/01-partykit/README.md b/examples/06-collaboration/01-partykit/README.md
new file mode 100644
index 0000000000..2cf156ac52
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/README.md
@@ -0,0 +1,10 @@
+# Collaborative Editing with PartyKit
+
+In this example, we use PartyKit to let multiple users collaborate on a single BlockNote document in real-time.
+
+**Try it out:** Open this page ion a new browser tab or window to see it in action!
+
+**Relevant Docs:**
+
+- [PartyKit](/docs/advanced/real-time-collaboration#partykit)
+- [Editor Setup](/docs/editor-basics/setup)
diff --git a/examples/06-collaboration/01-partykit/index.html b/examples/06-collaboration/01-partykit/index.html
new file mode 100644
index 0000000000..3bb0ffb452
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Collaborative Editing with PartyKit
+
+
+
+
+
+
diff --git a/examples/06-collaboration/01-partykit/main.tsx b/examples/06-collaboration/01-partykit/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/06-collaboration/01-partykit/package.json b/examples/06-collaboration/01-partykit/package.json
new file mode 100644
index 0000000000..bbfef6771b
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "@blocknote/example-partykit",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "y-partykit": "^0.0.25",
+ "yjs": "^13.6.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/06-collaboration/01-partykit/tsconfig.json b/examples/06-collaboration/01-partykit/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/06-collaboration/01-partykit/vite.config.ts b/examples/06-collaboration/01-partykit/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/06-collaboration/01-partykit/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/06-collaboration/02-liveblocks/.bnexample.json b/examples/06-collaboration/02-liveblocks/.bnexample.json
new file mode 100644
index 0000000000..4d3ad5e278
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/.bnexample.json
@@ -0,0 +1,12 @@
+{
+ "playground": true,
+ "docs": true,
+ "author": "yousefed",
+ "tags": ["Advanced", "Saving/Loading", "Collaboration"],
+ "dependencies": {
+ "@liveblocks/client": "^1.10.0",
+ "@liveblocks/react": "^1.10.0",
+ "@liveblocks/yjs": "^1.10.0",
+ "yjs": "^13.6.1"
+ }
+}
diff --git a/examples/06-collaboration/02-liveblocks/App.tsx b/examples/06-collaboration/02-liveblocks/App.tsx
new file mode 100644
index 0000000000..5259faa113
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/App.tsx
@@ -0,0 +1,40 @@
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
+import "@blocknote/react/style.css";
+import { createClient } from "@liveblocks/client";
+import LiveblocksProvider from "@liveblocks/yjs";
+import * as Y from "yjs";
+
+// Sets up Liveblocks client.
+const client = createClient({
+ publicApiKey:
+ "pk_dev_lJAS4XHx3l1e0x_Gh9VMtrvo8PEB1vrNarC2YRtAOp4t6i9_QAcSX2U953GS6v7B",
+});
+// Enters a multiplayer room.
+// Use a unique name as a "room" for your application.
+const { room } = client.enterRoom("your-project-name", {
+ initialPresence: {},
+});
+
+// Sets up Yjs document and LiveBlocks Yjs provider.
+const doc = new Y.Doc();
+const provider = new LiveblocksProvider(room, doc);
+
+export default function App() {
+ const editor = useCreateBlockNote({
+ collaboration: {
+ // The Yjs Provider responsible for transporting updates:
+ provider,
+ // Where to store BlockNote data in the Y.Doc:
+ fragment: doc.getXmlFragment("document-store"),
+ // Information (name and color) for this user:
+ user: {
+ name: "My Username",
+ color: "#ff0000",
+ },
+ },
+ });
+
+ // Renders the editor instance.
+ return ;
+}
diff --git a/examples/06-collaboration/02-liveblocks/README.md b/examples/06-collaboration/02-liveblocks/README.md
new file mode 100644
index 0000000000..3d0135832c
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/README.md
@@ -0,0 +1,10 @@
+# Collaborative Editing with LiveBlocks
+
+In this example, we use LiveBlocks to let multiple users collaborate on a single BlockNote document in real-time.
+
+**Try it out:** Open this page ion a new browser tab or window to see it in action!
+
+**Relevant Docs:**
+
+- [LiveBlocks](/docs/advanced/real-time-collaboration#liveblocks)
+- [Editor Setup](/docs/editor-basics/setup)
diff --git a/examples/06-collaboration/02-liveblocks/index.html b/examples/06-collaboration/02-liveblocks/index.html
new file mode 100644
index 0000000000..58340d8d8b
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Collaborative Editing with LiveBlocks
+
+
+
+
+
+
diff --git a/examples/06-collaboration/02-liveblocks/main.tsx b/examples/06-collaboration/02-liveblocks/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/06-collaboration/02-liveblocks/package.json b/examples/06-collaboration/02-liveblocks/package.json
new file mode 100644
index 0000000000..cfcccce543
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@blocknote/example-liveblocks",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "@liveblocks/client": "^1.10.0",
+ "@liveblocks/react": "^1.10.0",
+ "@liveblocks/yjs": "^1.10.0",
+ "yjs": "^13.6.1"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/06-collaboration/02-liveblocks/tsconfig.json b/examples/06-collaboration/02-liveblocks/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/06-collaboration/02-liveblocks/vite.config.ts b/examples/06-collaboration/02-liveblocks/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/06-collaboration/02-liveblocks/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/README.md b/examples/README.md
new file mode 100644
index 0000000000..6083de67dc
--- /dev/null
+++ b/examples/README.md
@@ -0,0 +1,7 @@
+# Examples
+
+Here, we collect a number of examples using BlockNote. You can run the examples via the Playground (`npm start` or [playground.blocknotejs.org](https://playground.blocknotejs.org/)).
+
+### (contributors) Adding examples
+
+Just create a folder, add an `App.tsx` file, `.bnexample.json` and `README.md` file. Then run `npm run gen` to generate the rest of the template.
diff --git a/examples/editor/examples/basic/App.tsx b/examples/editor/examples/basic/App.tsx
deleted file mode 100644
index 5eec46aee6..0000000000
--- a/examples/editor/examples/basic/App.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { uploadToTmpFilesDotOrg_DEV_ONLY } from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
-
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
-
-export function App() {
- const editor = useBlockNote({
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
- uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
- });
-
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
- return ;
-}
-
-export default App;
diff --git a/examples/editor/examples/collaboration/App.tsx b/examples/editor/examples/collaboration/App.tsx
deleted file mode 100644
index 5a9c8d8d3b..0000000000
--- a/examples/editor/examples/collaboration/App.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import { uploadToTmpFilesDotOrg_DEV_ONLY } from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
-import "@blocknote/react/style.css";
-
-import YPartyKitProvider from "y-partykit/provider";
-import * as Y from "yjs";
-
-const doc = new Y.Doc();
-
-const provider = new YPartyKitProvider(
- "blocknote-dev.yousefed.partykit.dev",
- // use a unique name as a "room" for your application:
- "your-project-name",
- doc
-);
-
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
-
-export function App() {
- const editor = useBlockNote({
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
- collaboration: {
- // The Yjs Provider responsible for transporting updates:
- provider,
- // Where to store BlockNote data in the Y.Doc:
- fragment: doc.getXmlFragment("document-storesss"),
- // Information (name and color) for this user:
- user: {
- name: "My Username",
- color: "#ff0000",
- },
- },
- uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
- });
-
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
- return ;
-}
-
-export default App;
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/.bnexample.json b/examples/vanilla-js/react-vanilla-custom-blocks/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/editor/examples/vanilla-custom-blocks/App.tsx b/examples/vanilla-js/react-vanilla-custom-blocks/App.tsx
similarity index 85%
rename from examples/editor/examples/vanilla-custom-blocks/App.tsx
rename to examples/vanilla-js/react-vanilla-custom-blocks/App.tsx
index ec691fe1c9..6be9d75827 100644
--- a/examples/editor/examples/vanilla-custom-blocks/App.tsx
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/App.tsx
@@ -1,13 +1,14 @@
import {
+ BlockNoteSchema,
createBlockSpec,
defaultBlockSpecs,
defaultProps,
} from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
import "@blocknote/react/style.css";
-import "./style.css";
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
+import "./styles.css";
// The types of alerts that users can choose from
const alertTypes = {
@@ -40,7 +41,7 @@ const alertBlock = createBlockSpec(
textAlignment: defaultProps.textAlignment,
textColor: defaultProps.textColor,
type: {
- default: "warning" as const,
+ default: "warning",
values: ["warning", "error", "info", "success"] as const,
},
},
@@ -56,7 +57,6 @@ const alertBlock = createBlockSpec(
const dropdown = document.createElement("select");
dropdown.contentEditable = "false";
dropdown.addEventListener("change", () => {
- // TODO: Something is not quite right with the typing seems like
editor.updateBlock(block, {
type: "alert",
props: { type: dropdown.value as keyof typeof alertTypes },
@@ -177,21 +177,18 @@ const bracketsParagraphBlock = createBlockSpec(
},
}
);
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ ...defaultBlockSpecs,
+ alert: alertBlock,
+ bracketsParagraph: bracketsParagraphBlock,
+ simpleImage: simpleImageBlock,
+ },
+});
-export function CustomBlocks() {
- const editor = useBlockNote({
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
- blockSpecs: {
- ...defaultBlockSpecs,
- alert: alertBlock,
- bracketsParagraph: bracketsParagraphBlock,
- simpleImage: simpleImageBlock,
- },
+export default function App() {
+ const editor = useCreateBlockNote({
+ schema,
initialContent: [
{
type: "alert",
@@ -213,8 +210,5 @@ export function CustomBlocks() {
],
});
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
- return ;
+ return ;
}
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/README.md b/examples/vanilla-js/react-vanilla-custom-blocks/README.md
new file mode 100644
index 0000000000..d85814062b
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/README.md
@@ -0,0 +1 @@
+# Custom Blocks - Vanilla JS API
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/index.html b/examples/vanilla-js/react-vanilla-custom-blocks/index.html
new file mode 100644
index 0000000000..91fb6eb142
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom Blocks - Vanilla JS API
+
+
+
+
+
+
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/main.tsx b/examples/vanilla-js/react-vanilla-custom-blocks/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/package.json b/examples/vanilla-js/react-vanilla-custom-blocks/package.json
new file mode 100644
index 0000000000..8fb876e904
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-react-vanilla-custom-blocks",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/styles.css b/examples/vanilla-js/react-vanilla-custom-blocks/styles.css
new file mode 100644
index 0000000000..38747f13bc
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/styles.css
@@ -0,0 +1,17 @@
+.alert, .brackets-paragraph {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-grow: 1;
+ height: 48px;
+ padding: 4px;
+ max-width: 100%;
+}
+
+.simple-image {
+ width: 100%;
+}
+
+.inline-content {
+ flex-grow: 1;
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/tsconfig.json b/examples/vanilla-js/react-vanilla-custom-blocks/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/vite.config.ts b/examples/vanilla-js/react-vanilla-custom-blocks/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-blocks/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/.bnexample.json b/examples/vanilla-js/react-vanilla-custom-inline-content/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/editor/examples/vanilla-custom-inline-content/App.tsx b/examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx
similarity index 69%
rename from examples/editor/examples/vanilla-custom-inline-content/App.tsx
rename to examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx
index a09e3ea152..a090f2aa00 100644
--- a/examples/editor/examples/vanilla-custom-inline-content/App.tsx
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/App.tsx
@@ -1,12 +1,12 @@
import {
+ BlockNoteSchema,
createInlineContentSpec,
defaultInlineContentSpecs,
} from "@blocknote/core";
-import { BlockNoteView, useBlockNote } from "@blocknote/react";
+import "@blocknote/core/fonts/inter.css";
+import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
import "@blocknote/react/style.css";
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
-
const mention = createInlineContentSpec(
{
type: "mention",
@@ -51,19 +51,17 @@ const tag = createInlineContentSpec(
}
);
-export function InlineContent() {
- const editor = useBlockNote({
- inlineContentSpecs: {
- mention,
- tag,
- ...defaultInlineContentSpecs,
- },
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
+const schema = BlockNoteSchema.create({
+ inlineContentSpecs: {
+ mention,
+ tag,
+ ...defaultInlineContentSpecs,
+ },
+});
+
+export default function App() {
+ const editor = useCreateBlockNote({
+ schema,
initialContent: [
{
type: "paragraph",
@@ -91,8 +89,5 @@ export function InlineContent() {
],
});
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
- return ;
+ return ;
}
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/README.md b/examples/vanilla-js/react-vanilla-custom-inline-content/README.md
new file mode 100644
index 0000000000..276cb4107c
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/README.md
@@ -0,0 +1 @@
+# Custom Inline Content - Vanilla JS API
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/index.html b/examples/vanilla-js/react-vanilla-custom-inline-content/index.html
new file mode 100644
index 0000000000..c0f65a2a84
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom Inline Content - Vanilla JS API
+
+
+
+
+
+
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/main.tsx b/examples/vanilla-js/react-vanilla-custom-inline-content/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json
new file mode 100644
index 0000000000..31be158e80
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-react-vanilla-custom-inline-content",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/tsconfig.json b/examples/vanilla-js/react-vanilla-custom-inline-content/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/vite.config.ts b/examples/vanilla-js/react-vanilla-custom-inline-content/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-inline-content/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/.bnexample.json b/examples/vanilla-js/react-vanilla-custom-styles/.bnexample.json
new file mode 100644
index 0000000000..4f4fa636f1
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/.bnexample.json
@@ -0,0 +1,6 @@
+{
+ "playground": true,
+ "docs": false,
+ "author": "matthewlipski",
+ "tags": []
+}
diff --git a/examples/editor/examples/vanilla-custom-styles/App.tsx b/examples/vanilla-js/react-vanilla-custom-styles/App.tsx
similarity index 59%
rename from examples/editor/examples/vanilla-custom-styles/App.tsx
rename to examples/vanilla-js/react-vanilla-custom-styles/App.tsx
index 0db59d1298..ee30b7b8ef 100644
--- a/examples/editor/examples/vanilla-custom-styles/App.tsx
+++ b/examples/vanilla-js/react-vanilla-custom-styles/App.tsx
@@ -1,22 +1,21 @@
import {
- BlockNoteEditor,
+ BlockNoteSchema,
createStyleSpec,
- DefaultBlockSchema,
- DefaultInlineContentSchema,
defaultStyleSpecs,
} from "@blocknote/core";
+import "@blocknote/core/fonts/inter.css";
import {
BlockNoteView,
- FormattingToolbarPositioner,
- Toolbar,
+ FormattingToolbar,
+ FormattingToolbarController,
+ FormattingToolbarProps,
ToolbarButton,
useActiveStyles,
- useBlockNote,
+ useBlockNoteEditor,
+ useCreateBlockNote,
} from "@blocknote/react";
import "@blocknote/react/style.css";
-type WindowWithProseMirror = Window & typeof globalThis & { ProseMirror: any };
-
const small = createStyleSpec(
{
type: "small",
@@ -52,24 +51,24 @@ const fontSize = createStyleSpec(
}
);
-type MyEditorType = BlockNoteEditor<
- DefaultBlockSchema,
- DefaultInlineContentSchema,
- {
- small: (typeof small)["config"];
- fontSize: (typeof fontSize)["config"];
- }
->;
+const schema = BlockNoteSchema.create({
+ styleSpecs: {
+ ...defaultStyleSpecs,
+ small,
+ fontSize,
+ },
+});
-const CustomFormattingToolbar = (props: { editor: MyEditorType }) => {
- const activeStyles = useActiveStyles(props.editor);
+const CustomFormattingToolbar = (props: FormattingToolbarProps) => {
+ const editor = useBlockNoteEditor(schema);
+ const activeStyles = useActiveStyles(editor);
return (
-
+
{
- props.editor.toggleStyles({
+ editor.toggleStyles({
small: true,
});
}}
@@ -79,34 +78,22 @@ const CustomFormattingToolbar = (props: { editor: MyEditorType }) => {
{
- props.editor.toggleStyles({
+ editor.toggleStyles({
fontSize: "30px",
});
}}
isSelected={!!activeStyles.fontSize}>
Font size
-
+
);
};
-export function Styles() {
- const editor = useBlockNote(
+export default function App() {
+ const editor = useCreateBlockNote(
{
- styleSpecs: {
- ...defaultStyleSpecs,
- small,
- fontSize,
- },
- onEditorContentChange: (editor) => {
- console.log(editor.topLevelBlocks);
- },
- domAttributes: {
- editor: {
- class: "editor",
- "data-test": "editor",
- },
- },
+ schema,
+
initialContent: [
{
type: "paragraph",
@@ -132,13 +119,9 @@ export function Styles() {
[]
);
- // Give tests a way to get prosemirror instance
- (window as WindowWithProseMirror).ProseMirror = editor?._tiptapEditor;
-
return (
-
-
+
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/README.md b/examples/vanilla-js/react-vanilla-custom-styles/README.md
new file mode 100644
index 0000000000..5f88176cc1
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/README.md
@@ -0,0 +1 @@
+# Custom Styles - Vanilla JS API
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/index.html b/examples/vanilla-js/react-vanilla-custom-styles/index.html
new file mode 100644
index 0000000000..85482a09dd
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Custom Styles - Vanilla JS API
+
+
+
+
+
+
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/main.tsx b/examples/vanilla-js/react-vanilla-custom-styles/main.tsx
new file mode 100644
index 0000000000..f88b490fbd
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/main.tsx
@@ -0,0 +1,11 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/package.json b/examples/vanilla-js/react-vanilla-custom-styles/package.json
new file mode 100644
index 0000000000..546661877a
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@blocknote/example-react-vanilla-custom-styles",
+ "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "private": true,
+ "version": "0.11.1",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --max-warnings 0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "vite": "^4.4.8"
+ },
+ "eslintConfig": {
+ "extends": [
+ "../../../.eslintrc.js"
+ ]
+ },
+ "eslintIgnore": [
+ "dist"
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/tsconfig.json b/examples/vanilla-js/react-vanilla-custom-styles/tsconfig.json
new file mode 100644
index 0000000000..bb6637c459
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": [
+ "DOM",
+ "DOM.Iterable",
+ "ESNext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": false,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "composite": true
+ },
+ "include": [
+ "."
+ ],
+ "references": [
+ {
+ "path": "../../../packages/core/"
+ },
+ {
+ "path": "../../../packages/react/"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/vanilla-js/react-vanilla-custom-styles/vite.config.ts b/examples/vanilla-js/react-vanilla-custom-styles/vite.config.ts
new file mode 100644
index 0000000000..f62ab20bc2
--- /dev/null
+++ b/examples/vanilla-js/react-vanilla-custom-styles/vite.config.ts
@@ -0,0 +1,32 @@
+// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
diff --git a/examples/vanilla/.gitignore b/examples/vanilla/.gitignore
deleted file mode 100644
index a547bf36d8..0000000000
--- a/examples/vanilla/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/examples/vanilla/README.md b/examples/vanilla/README.md
deleted file mode 100644
index df60c27432..0000000000
--- a/examples/vanilla/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Vanilla editor example
-
-This is an example client application that consumes `@blocknote/core` and creates it's own UI layer.
-
-**This is considered an advanced use-case**, you probably want to use `@blocknote/react` and it's corresponding [example](../editor/README.md).
diff --git a/examples/vanilla/package.json b/examples/vanilla/package.json
deleted file mode 100644
index 32906f0cb5..0000000000
--- a/examples/vanilla/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "@blocknote/example-vanilla",
- "private": true,
- "version": "0.11.2",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "preview": "vite preview",
- "lint": "eslint src --max-warnings 0"
- },
- "dependencies": {
- "@blocknote/core": "^0.11.2"
- },
- "devDependencies": {
- "eslint": "^8.10.0",
- "typescript": "^5.0.4",
- "vite": "^4.4.8",
- "vite-plugin-eslint": "^1.8.1"
- },
- "eslintConfig": {
- "extends": [
- "../../.eslintrc.js"
- ]
- }
-}
diff --git a/examples/vanilla/src/index.css b/examples/vanilla/src/index.css
deleted file mode 100644
index d8ab4ad4a3..0000000000
--- a/examples/vanilla/src/index.css
+++ /dev/null
@@ -1,10 +0,0 @@
-html,
-body,
-#root {
- height: 100%;
-}
-
-.editor {
- padding: 0 calc((100% - 731px) / 2);
- height: 100%;
-}
diff --git a/examples/vanilla/src/main.tsx b/examples/vanilla/src/main.tsx
deleted file mode 100644
index 926d39d3fb..0000000000
--- a/examples/vanilla/src/main.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { BlockNoteEditor } from "@blocknote/core";
-import "./index.css";
-import { addFormattingToolbar } from "./ui/addFormattingToolbar";
-import { addHyperlinkToolbar } from "./ui/addHyperlinkToolbar";
-import { addSideMenu } from "./ui/addSideMenu";
-import { addSlashMenu } from "./ui/addSlashMenu";
-
-const editor = BlockNoteEditor.create({
- parentElement: document.getElementById("root")!,
- onEditorContentChange: () => {
- console.log(editor.topLevelBlocks);
- },
- domAttributes: {
- editor: {
- class: "editor",
- },
- },
-});
-
-console.log("editor created", editor);
-
-addSideMenu(editor);
-addFormattingToolbar(editor);
-addSlashMenu(editor);
-addHyperlinkToolbar(editor);
diff --git a/examples/vanilla/src/ui/addFormattingToolbar.ts b/examples/vanilla/src/ui/addFormattingToolbar.ts
deleted file mode 100644
index bae8673512..0000000000
--- a/examples/vanilla/src/ui/addFormattingToolbar.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { BlockNoteEditor } from "@blocknote/core";
-import { createButton } from "./util";
-
-export const addFormattingToolbar = (editor: BlockNoteEditor) => {
- let element: HTMLElement;
- let boldBtn: HTMLAnchorElement;
-
- editor.formattingToolbar.onUpdate((formattingToolbarState) => {
- if (!element) {
- element = document.createElement("div");
- element.style.background = "gray";
- element.style.position = "absolute";
- element.style.padding = "10px";
- element.style.opacity = "0.8";
- boldBtn = createButton("set bold", () => {
- editor.toggleStyles({ bold: true });
- });
- element.appendChild(boldBtn);
-
- const linkBtn = createButton("set link", () => {
- editor.createLink("https://www.google.com");
- });
-
- element.appendChild(boldBtn);
- element.appendChild(linkBtn);
- element.style.display = "none";
-
- document.getElementById("root")!.appendChild(element);
- }
-
- if (formattingToolbarState.show) {
- element.style.display = "block";
-
- boldBtn.text =
- "bold" in editor.getActiveStyles() ? "unset bold" : "set bold";
- element.style.top = formattingToolbarState.referencePos.top + "px";
- element.style.left =
- formattingToolbarState.referencePos.x - element.offsetWidth + "px";
- } else {
- element.style.display = "none";
- }
- });
-};
diff --git a/examples/vanilla/src/ui/addHyperlinkToolbar.ts b/examples/vanilla/src/ui/addHyperlinkToolbar.ts
deleted file mode 100644
index e495e601ec..0000000000
--- a/examples/vanilla/src/ui/addHyperlinkToolbar.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { BlockNoteEditor } from "@blocknote/core";
-import { createButton } from "./util";
-
-export const addHyperlinkToolbar = (editor: BlockNoteEditor) => {
- let element: HTMLElement;
-
- editor.hyperlinkToolbar.onUpdate((hyperlinkToolbarState) => {
- if (!element) {
- element = document.createElement("div");
- element.style.background = "gray";
- element.style.position = "absolute";
- element.style.padding = "10px";
- element.style.opacity = "0.8";
-
- const url = hyperlinkToolbarState.url;
- const text = hyperlinkToolbarState.text;
-
- const editBtn = createButton("edit", () => {
- const newUrl = prompt("new url") || url;
- editor.hyperlinkToolbar.editHyperlink(newUrl, text);
- });
-
- element.appendChild(editBtn);
-
- const removeBtn = createButton("remove", () => {
- editor.hyperlinkToolbar.deleteHyperlink();
- });
-
- element.appendChild(editBtn);
- element.appendChild(removeBtn);
- element.style.display = "none";
-
- document.getElementById("root")!.appendChild(element);
- }
-
- if (hyperlinkToolbarState.show) {
- element.style.display = "block";
-
- element.style.top = hyperlinkToolbarState.referencePos.top + "px";
- element.style.left =
- hyperlinkToolbarState.referencePos.x - element.offsetWidth + "px";
- } else {
- element.style.display = "none";
- }
- });
-};
diff --git a/examples/vanilla/src/ui/addSideMenu.ts b/examples/vanilla/src/ui/addSideMenu.ts
deleted file mode 100644
index de277aabcc..0000000000
--- a/examples/vanilla/src/ui/addSideMenu.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { BlockNoteEditor } from "@blocknote/core";
-import { createButton } from "./util";
-
-export const addSideMenu = (editor: BlockNoteEditor) => {
- let element: HTMLElement;
-
- editor.sideMenu.onUpdate((sideMenuState) => {
- if (!element) {
- element = document.createElement("div");
- element.style.background = "gray";
- element.style.position = "absolute";
- element.style.padding = "10px";
- element.style.opacity = "0.8";
- const addBtn = createButton("+", () => {
- editor.sideMenu.addBlock();
- });
- element.appendChild(addBtn);
-
- const dragBtn = createButton("::", () => {
- // TODO: render a submenu with a delete option that calls "props.deleteBlock"
- });
-
- dragBtn.addEventListener("dragstart", editor.sideMenu.blockDragStart);
- dragBtn.addEventListener("dragend", editor.sideMenu.blockDragEnd);
- dragBtn.draggable = true;
- element.style.display = "none";
- element.appendChild(dragBtn);
-
- document.getElementById("root")!.appendChild(element);
- }
-
- if (sideMenuState.show) {
- element.style.display = "block";
-
- element.style.top = sideMenuState.referencePos.top + "px";
- element.style.left =
- sideMenuState.referencePos.x - element.offsetWidth + "px";
- } else {
- element.style.display = "none";
- }
- });
-};
diff --git a/examples/vanilla/src/ui/addSlashMenu.ts b/examples/vanilla/src/ui/addSlashMenu.ts
deleted file mode 100644
index 936fcbcb75..0000000000
--- a/examples/vanilla/src/ui/addSlashMenu.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import {
- BaseSlashMenuItem,
- BlockNoteEditor,
- DefaultBlockSchema,
-} from "@blocknote/core";
-import { createButton } from "./util";
-
-export const addSlashMenu = (editor: BlockNoteEditor) => {
- let element: HTMLElement;
-
- function updateItems(
- items: BaseSlashMenuItem[],
- onClick: (item: BaseSlashMenuItem) => void,
- selected: number
- ) {
- element.innerHTML = "";
- const domItems = items.map((val, i) => {
- const element = createButton(val.name, () => {
- onClick(val);
- });
- element.style.display = "block";
- if (selected === i) {
- element.style.fontWeight = "bold";
- }
- return element;
- });
- element.append(...domItems);
- return domItems;
- }
-
- editor.slashMenu.onUpdate((slashMenuState) => {
- if (!element) {
- element = document.createElement("div");
- element.style.background = "gray";
- element.style.position = "absolute";
- element.style.padding = "10px";
- element.style.opacity = "0.8";
- element.style.display = "none";
-
- document.getElementById("root")!.appendChild(element);
- }
-
- if (slashMenuState.show) {
- updateItems(
- slashMenuState.filteredItems,
- editor.slashMenu.itemCallback,
- slashMenuState.keyboardHoveredItemIndex
- );
-
- element.style.display = "block";
-
- element.style.top = slashMenuState.referencePos.top + "px";
- element.style.left =
- slashMenuState.referencePos.x - element.offsetWidth + "px";
- } else {
- element.style.display = "none";
- }
- });
-};
diff --git a/examples/vanilla/src/ui/util.ts b/examples/vanilla/src/ui/util.ts
deleted file mode 100644
index 74e4c55eb1..0000000000
--- a/examples/vanilla/src/ui/util.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-export function createButton(text: string, onClick: () => void) {
- const element = document.createElement("a");
- element.href = "#";
- element.text = text;
- element.style.margin = "10px";
- element.addEventListener("click", (e) => {
- onClick();
- e.preventDefault();
- });
- return element;
-}
diff --git a/examples/vanilla/src/vite-env.d.ts b/examples/vanilla/src/vite-env.d.ts
deleted file mode 100644
index 11f02fe2a0..0000000000
--- a/examples/vanilla/src/vite-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/examples/vanilla/tsconfig.node.json b/examples/vanilla/tsconfig.node.json
deleted file mode 100644
index e993792cb1..0000000000
--- a/examples/vanilla/tsconfig.node.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "esnext",
- "moduleResolution": "node"
- },
- "include": ["vite.config.ts"]
-}
diff --git a/package-lock.json b/package-lock.json
index 5dafe431e2..3312ccef53 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,8 +7,9 @@
"name": "root",
"workspaces": [
"packages/*",
- "examples/*",
- "tests"
+ "playground",
+ "tests",
+ "docs"
],
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.5.0",
@@ -16,267 +17,221 @@
"eslint": "^8.22.0",
"eslint-config-react-app": "^7.0.0",
"eslint-plugin-import": "^2.28.0",
+ "glob": "^10.3.10",
"lerna": "^5.4.0",
"patch-package": "^6.4.7",
- "typescript": "^5.2.2"
+ "typescript": "^5.3.3"
}
},
- "examples/editor": {
- "name": "@blocknote/example-editor",
- "version": "0.11.2",
+ "docs": {
+ "version": "0.1.0",
"dependencies": {
- "@blocknote/core": "^0.11.2",
- "@blocknote/react": "^0.11.2",
- "@mantine/core": "^7.4.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.20.0",
- "y-partykit": "^0.0.0-4c022c1",
- "yjs": "^13.6.10"
+ "@blocknote/core": "*",
+ "@blocknote/react": "*",
+ "@headlessui/react": "^1.7.18",
+ "@mantine/core": "^7.5.0",
+ "@next/bundle-analyzer": "^14.1.0",
+ "@vercel/og": "^0.6.2",
+ "classnames": "2.3.2",
+ "clsx": "^2.1.0",
+ "framer-motion": "^10.16.16",
+ "next": "14.1.0",
+ "next-auth": "^5.0.0-beta.9",
+ "nextra": "^2.13.2",
+ "nextra-theme-docs": "^2.13.2",
+ "partykit": "^0.0.84",
+ "raw-loader": "^4.0.2",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-github-btn": "^1.4.0",
+ "react-icons": "^4.3.1",
+ "y-partykit": "^0.0.25",
+ "yjs": "^13.6.1"
},
"devDependencies": {
- "@types/react": "^18.0.25",
- "@types/react-dom": "^18.0.9",
- "@vitejs/plugin-react": "^4.0.4",
- "eslint": "^8.10.0",
- "rimraf": "^5.0.5",
- "rollup-plugin-webpack-stats": "^0.2.2",
- "vite": "^4.4.8",
- "vite-plugin-eslint": "^1.8.1"
+ "@types/node": "^20",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "autoprefixer": "^10.0.1",
+ "eslint": "^8",
+ "eslint-config-next": "14.1.0",
+ "postcss": "^8",
+ "prettier-plugin-tailwindcss": "^0.5.11",
+ "tailwindcss": "^3.3.0",
+ "typescript": "^5"
+ }
+ },
+ "docs/node_modules/clsx": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
- "examples/editor/node_modules/rimraf": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
- "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
+ "docs/node_modules/prettier": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
+ "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
"dev": true,
- "dependencies": {
- "glob": "^10.3.7"
- },
+ "peer": true,
"bin": {
- "rimraf": "dist/esm/bin.mjs"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
- "url": "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/sponsors/isaacs"
+ "url": "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/prettier/prettier?sponsor=1"
}
},
- "examples/vanilla": {
- "name": "@blocknote/example-vanilla",
- "version": "0.11.2",
- "dependencies": {
- "@blocknote/core": "^0.11.2"
+ "docs/node_modules/prettier-plugin-tailwindcss": {
+ "version": "0.5.11",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.11.tgz",
+ "integrity": "sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.21.3"
},
- "devDependencies": {
- "eslint": "^8.10.0",
- "typescript": "^5.0.4",
- "vite": "^4.4.8",
- "vite-plugin-eslint": "^1.8.1"
+ "peerDependencies": {
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "prettier": "^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-import-sort": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-style-order": "*",
+ "prettier-plugin-svelte": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-import-sort": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-style-order": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "prettier-plugin-twig-melody": {
+ "optional": true
+ }
}
},
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/@algolia/autocomplete-core": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
- "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
"dev": true,
- "dependencies": {
- "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
- "@algolia/autocomplete-shared": "1.9.3"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
- "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@algolia/autocomplete-shared": "1.9.3"
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
},
- "peerDependencies": {
- "search-insights": ">= 1 < 3"
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@algolia/autocomplete-preset-algolia": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz",
- "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==",
- "dev": true,
+ "node_modules/@auth/core": {
+ "version": "0.26.3",
+ "license": "ISC",
"dependencies": {
- "@algolia/autocomplete-shared": "1.9.3"
+ "@panva/hkdf": "^1.1.1",
+ "@types/cookie": "0.6.0",
+ "cookie": "0.6.0",
+ "jose": "^5.1.3",
+ "oauth4webapi": "^2.4.0",
+ "preact": "10.11.3",
+ "preact-render-to-string": "5.2.3"
},
"peerDependencies": {
- "@algolia/client-search": ">= 4.9.1 < 6",
- "algoliasearch": ">= 4.9.1 < 6"
- }
- },
- "node_modules/@algolia/autocomplete-shared": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
- "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
- "dev": true,
- "peerDependencies": {
- "@algolia/client-search": ">= 4.9.1 < 6",
- "algoliasearch": ">= 4.9.1 < 6"
- }
- },
- "node_modules/@algolia/cache-browser-local-storage": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz",
- "integrity": "sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==",
- "dev": true,
- "dependencies": {
- "@algolia/cache-common": "4.22.1"
- }
- },
- "node_modules/@algolia/cache-common": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.22.1.tgz",
- "integrity": "sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==",
- "dev": true
- },
- "node_modules/@algolia/cache-in-memory": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz",
- "integrity": "sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==",
- "dev": true,
- "dependencies": {
- "@algolia/cache-common": "4.22.1"
- }
- },
- "node_modules/@algolia/client-account": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.22.1.tgz",
- "integrity": "sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==",
- "dev": true,
- "dependencies": {
- "@algolia/client-common": "4.22.1",
- "@algolia/client-search": "4.22.1",
- "@algolia/transporter": "4.22.1"
- }
- },
- "node_modules/@algolia/client-analytics": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.22.1.tgz",
- "integrity": "sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==",
- "dev": true,
- "dependencies": {
- "@algolia/client-common": "4.22.1",
- "@algolia/client-search": "4.22.1",
- "@algolia/requester-common": "4.22.1",
- "@algolia/transporter": "4.22.1"
- }
- },
- "node_modules/@algolia/client-common": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.22.1.tgz",
- "integrity": "sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==",
- "dev": true,
- "dependencies": {
- "@algolia/requester-common": "4.22.1",
- "@algolia/transporter": "4.22.1"
- }
- },
- "node_modules/@algolia/client-personalization": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.22.1.tgz",
- "integrity": "sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==",
- "dev": true,
- "dependencies": {
- "@algolia/client-common": "4.22.1",
- "@algolia/requester-common": "4.22.1",
- "@algolia/transporter": "4.22.1"
- }
- },
- "node_modules/@algolia/client-search": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.22.1.tgz",
- "integrity": "sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==",
- "dev": true,
- "dependencies": {
- "@algolia/client-common": "4.22.1",
- "@algolia/requester-common": "4.22.1",
- "@algolia/transporter": "4.22.1"
- }
- },
- "node_modules/@algolia/logger-common": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.22.1.tgz",
- "integrity": "sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==",
- "dev": true
- },
- "node_modules/@algolia/logger-console": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.22.1.tgz",
- "integrity": "sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==",
- "dev": true,
- "dependencies": {
- "@algolia/logger-common": "4.22.1"
- }
- },
- "node_modules/@algolia/requester-browser-xhr": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz",
- "integrity": "sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==",
- "dev": true,
- "dependencies": {
- "@algolia/requester-common": "4.22.1"
- }
- },
- "node_modules/@algolia/requester-common": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.22.1.tgz",
- "integrity": "sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==",
- "dev": true
- },
- "node_modules/@algolia/requester-node-http": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz",
- "integrity": "sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==",
- "dev": true,
- "dependencies": {
- "@algolia/requester-common": "4.22.1"
+ "@simplewebauthn/browser": "^9.0.1",
+ "@simplewebauthn/server": "^9.0.1",
+ "nodemailer": "^6.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@simplewebauthn/browser": {
+ "optional": true
+ },
+ "@simplewebauthn/server": {
+ "optional": true
+ },
+ "nodemailer": {
+ "optional": true
+ }
}
},
- "node_modules/@algolia/transporter": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.22.1.tgz",
- "integrity": "sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==",
- "dev": true,
- "dependencies": {
- "@algolia/cache-common": "4.22.1",
- "@algolia/logger-common": "4.22.1",
- "@algolia/requester-common": "4.22.1"
+ "node_modules/@auth/core/node_modules/cookie": {
+ "version": "0.6.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
+ "node_modules/@auth/core/node_modules/preact": {
+ "version": "10.11.3",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
}
},
"node_modules/@babel/code-frame": {
"version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/highlight": "^7.23.4",
"chalk": "^2.4.2"
@@ -287,9 +242,8 @@
},
"node_modules/@babel/code-frame/node_modules/ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -299,9 +253,8 @@
},
"node_modules/@babel/code-frame/node_modules/chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -313,42 +266,37 @@
},
"node_modules/@babel/code-frame/node_modules/color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/@babel/code-frame/node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@babel/code-frame/node_modules/has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/code-frame/node_modules/supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -358,29 +306,27 @@
},
"node_modules/@babel/compat-data": {
"version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
- "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.23.5",
"@babel/generator": "^7.23.6",
"@babel/helper-compilation-targets": "^7.23.6",
"@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.9",
- "@babel/parser": "^7.23.9",
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9",
+ "@babel/helpers": "^7.23.7",
+ "@babel/parser": "^7.23.6",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -397,18 +343,16 @@
},
"node_modules/@babel/core/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/eslint-parser": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.9.tgz",
- "integrity": "sha512-xPndlO7qxiJbn0ATvfXQBjCS7qApc9xmKHArgI/FTEFxXas5dnjC/VqM37lfZun9dclRYcn+YQAr6uDFy0bB2g==",
+ "version": "7.23.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
"eslint-visitor-keys": "^2.1.0",
@@ -424,27 +368,24 @@
},
"node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10"
}
},
"node_modules/@babel/eslint-parser/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/generator": {
"version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.23.6",
"@jridgewell/gen-mapping": "^0.3.2",
@@ -457,9 +398,8 @@
},
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -469,9 +409,8 @@
},
"node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
"version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
- "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.15"
},
@@ -481,9 +420,8 @@
},
"node_modules/@babel/helper-compilation-targets": {
"version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.23.5",
"@babel/helper-validator-option": "^7.23.5",
@@ -497,18 +435,16 @@
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz",
- "integrity": "sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
@@ -529,18 +465,16 @@
},
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-create-regexp-features-plugin": {
"version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
- "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"regexpu-core": "^5.3.1",
@@ -555,18 +489,16 @@
},
"node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz",
- "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==",
+ "version": "0.4.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.6",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -580,18 +512,16 @@
},
"node_modules/@babel/helper-environment-visitor": {
"version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
"version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/template": "^7.22.15",
"@babel/types": "^7.23.0"
@@ -602,9 +532,8 @@
},
"node_modules/@babel/helper-hoist-variables": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -614,9 +543,8 @@
},
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
- "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.23.0"
},
@@ -626,9 +554,8 @@
},
"node_modules/@babel/helper-module-imports": {
"version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.15"
},
@@ -638,9 +565,8 @@
},
"node_modules/@babel/helper-module-transforms": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-module-imports": "^7.22.15",
@@ -657,9 +583,8 @@
},
"node_modules/@babel/helper-optimise-call-expression": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
- "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -669,18 +594,16 @@
},
"node_modules/@babel/helper-plugin-utils": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-remap-async-to-generator": {
"version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
- "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.20",
@@ -695,9 +618,8 @@
},
"node_modules/@babel/helper-replace-supers": {
"version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
- "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-member-expression-to-functions": "^7.22.15",
@@ -712,9 +634,8 @@
},
"node_modules/@babel/helper-simple-access": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -724,9 +645,8 @@
},
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
- "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -736,9 +656,8 @@
},
"node_modules/@babel/helper-split-export-declaration": {
"version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -748,36 +667,32 @@
},
"node_modules/@babel/helper-string-parser": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
"version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-wrap-function": {
"version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
- "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-function-name": "^7.22.5",
"@babel/template": "^7.22.15",
@@ -788,14 +703,13 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
- "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9"
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6"
},
"engines": {
"node": ">=6.9.0"
@@ -803,9 +717,8 @@
},
"node_modules/@babel/highlight": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
@@ -817,9 +730,8 @@
},
"node_modules/@babel/highlight/node_modules/ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -829,9 +741,8 @@
},
"node_modules/@babel/highlight/node_modules/chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -843,42 +754,37 @@
},
"node_modules/@babel/highlight/node_modules/color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/@babel/highlight/node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@babel/highlight/node_modules/has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/highlight/node_modules/supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -887,10 +793,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
- "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+ "version": "7.23.6",
"dev": true,
+ "license": "MIT",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -900,9 +805,8 @@
},
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz",
- "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -915,9 +819,8 @@
},
"node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz",
- "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
@@ -932,9 +835,8 @@
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
"version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz",
- "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -948,10 +850,8 @@
},
"node_modules/@babel/plugin-proposal-class-properties": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
- "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
@@ -964,12 +864,11 @@
}
},
"node_modules/@babel/plugin-proposal-decorators": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz",
- "integrity": "sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.23.9",
+ "@babel/helper-create-class-features-plugin": "^7.23.7",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-decorators": "^7.23.3"
},
@@ -982,10 +881,8 @@
},
"node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
- "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
@@ -999,10 +896,8 @@
},
"node_modules/@babel/plugin-proposal-numeric-separator": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
- "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.18.6",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
@@ -1016,10 +911,8 @@
},
"node_modules/@babel/plugin-proposal-optional-chaining": {
"version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
- "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.20.2",
"@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
@@ -1034,10 +927,8 @@
},
"node_modules/@babel/plugin-proposal-private-methods": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
- "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
- "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
@@ -1051,9 +942,8 @@
},
"node_modules/@babel/plugin-proposal-private-property-in-object": {
"version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
},
@@ -1063,9 +953,8 @@
},
"node_modules/@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1075,9 +964,8 @@
},
"node_modules/@babel/plugin-syntax-class-properties": {
"version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
},
@@ -1087,9 +975,8 @@
},
"node_modules/@babel/plugin-syntax-class-static-block": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -1102,9 +989,8 @@
},
"node_modules/@babel/plugin-syntax-decorators": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz",
- "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1117,9 +1003,8 @@
},
"node_modules/@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1129,9 +1014,8 @@
},
"node_modules/@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.3"
},
@@ -1141,9 +1025,8 @@
},
"node_modules/@babel/plugin-syntax-flow": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz",
- "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1156,9 +1039,8 @@
},
"node_modules/@babel/plugin-syntax-import-assertions": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
- "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1171,9 +1053,8 @@
},
"node_modules/@babel/plugin-syntax-import-attributes": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
- "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1186,9 +1067,8 @@
},
"node_modules/@babel/plugin-syntax-import-meta": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -1198,9 +1078,8 @@
},
"node_modules/@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1210,9 +1089,8 @@
},
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1225,9 +1103,8 @@
},
"node_modules/@babel/plugin-syntax-logical-assignment-operators": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -1237,9 +1114,8 @@
},
"node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1249,9 +1125,8 @@
},
"node_modules/@babel/plugin-syntax-numeric-separator": {
"version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
},
@@ -1261,9 +1136,8 @@
},
"node_modules/@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1273,9 +1147,8 @@
},
"node_modules/@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1285,9 +1158,8 @@
},
"node_modules/@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
},
@@ -1297,9 +1169,8 @@
},
"node_modules/@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -1312,9 +1183,8 @@
},
"node_modules/@babel/plugin-syntax-top-level-await": {
"version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
},
@@ -1327,9 +1197,8 @@
},
"node_modules/@babel/plugin-syntax-typescript": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
- "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1342,9 +1211,8 @@
},
"node_modules/@babel/plugin-syntax-unicode-sets-regex": {
"version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.18.6",
"@babel/helper-plugin-utils": "^7.18.6"
@@ -1358,9 +1226,8 @@
},
"node_modules/@babel/plugin-transform-arrow-functions": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz",
- "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1372,10 +1239,9 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz",
- "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1391,9 +1257,8 @@
},
"node_modules/@babel/plugin-transform-async-to-generator": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz",
- "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1408,9 +1273,8 @@
},
"node_modules/@babel/plugin-transform-block-scoped-functions": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz",
- "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1423,9 +1287,8 @@
},
"node_modules/@babel/plugin-transform-block-scoping": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz",
- "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1438,9 +1301,8 @@
},
"node_modules/@babel/plugin-transform-class-properties": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz",
- "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1454,9 +1316,8 @@
},
"node_modules/@babel/plugin-transform-class-static-block": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz",
- "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1470,15 +1331,15 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.23.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz",
- "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==",
+ "version": "7.23.5",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.22.15",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-replace-supers": "^7.22.20",
"@babel/helper-split-export-declaration": "^7.22.6",
@@ -1493,18 +1354,16 @@
},
"node_modules/@babel/plugin-transform-classes/node_modules/globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz",
- "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/template": "^7.22.15"
@@ -1518,9 +1377,8 @@
},
"node_modules/@babel/plugin-transform-destructuring": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz",
- "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1533,9 +1391,8 @@
},
"node_modules/@babel/plugin-transform-dotall-regex": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz",
- "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1549,9 +1406,8 @@
},
"node_modules/@babel/plugin-transform-duplicate-keys": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz",
- "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1564,9 +1420,8 @@
},
"node_modules/@babel/plugin-transform-dynamic-import": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz",
- "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-dynamic-import": "^7.8.3"
@@ -1580,9 +1435,8 @@
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz",
- "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1596,9 +1450,8 @@
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
- "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
@@ -1612,9 +1465,8 @@
},
"node_modules/@babel/plugin-transform-flow-strip-types": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz",
- "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-flow": "^7.23.3"
@@ -1628,9 +1480,8 @@
},
"node_modules/@babel/plugin-transform-for-of": {
"version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
- "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
@@ -1644,9 +1495,8 @@
},
"node_modules/@babel/plugin-transform-function-name": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz",
- "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-compilation-targets": "^7.22.15",
"@babel/helper-function-name": "^7.23.0",
@@ -1661,9 +1511,8 @@
},
"node_modules/@babel/plugin-transform-json-strings": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz",
- "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-json-strings": "^7.8.3"
@@ -1677,9 +1526,8 @@
},
"node_modules/@babel/plugin-transform-literals": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz",
- "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1692,9 +1540,8 @@
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz",
- "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
@@ -1708,9 +1555,8 @@
},
"node_modules/@babel/plugin-transform-member-expression-literals": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz",
- "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1723,9 +1569,8 @@
},
"node_modules/@babel/plugin-transform-modules-amd": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz",
- "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1739,9 +1584,8 @@
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
- "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5",
@@ -1755,10 +1599,9 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz",
- "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==",
+ "version": "7.23.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-module-transforms": "^7.23.3",
@@ -1774,9 +1617,8 @@
},
"node_modules/@babel/plugin-transform-modules-umd": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz",
- "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.23.3",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1790,9 +1632,8 @@
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
- "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1806,9 +1647,8 @@
},
"node_modules/@babel/plugin-transform-new-target": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz",
- "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1821,9 +1661,8 @@
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz",
- "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
@@ -1837,9 +1676,8 @@
},
"node_modules/@babel/plugin-transform-numeric-separator": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz",
- "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-numeric-separator": "^7.10.4"
@@ -1853,9 +1691,8 @@
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz",
- "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.23.3",
"@babel/helper-compilation-targets": "^7.22.15",
@@ -1872,9 +1709,8 @@
},
"node_modules/@babel/plugin-transform-object-super": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz",
- "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-replace-supers": "^7.22.20"
@@ -1888,9 +1724,8 @@
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz",
- "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
@@ -1904,9 +1739,8 @@
},
"node_modules/@babel/plugin-transform-optional-chaining": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
- "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
@@ -1921,9 +1755,8 @@
},
"node_modules/@babel/plugin-transform-parameters": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
- "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1936,9 +1769,8 @@
},
"node_modules/@babel/plugin-transform-private-methods": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz",
- "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -1952,9 +1784,8 @@
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz",
- "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-create-class-features-plugin": "^7.22.15",
@@ -1970,9 +1801,8 @@
},
"node_modules/@babel/plugin-transform-property-literals": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz",
- "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1985,9 +1815,8 @@
},
"node_modules/@babel/plugin-transform-react-display-name": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
- "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2000,9 +1829,8 @@
},
"node_modules/@babel/plugin-transform-react-jsx": {
"version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
- "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-module-imports": "^7.22.15",
@@ -2019,9 +1847,8 @@
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
"version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
- "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/plugin-transform-react-jsx": "^7.22.5"
},
@@ -2034,9 +1861,8 @@
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz",
- "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2049,9 +1875,8 @@
},
"node_modules/@babel/plugin-transform-react-jsx-source": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz",
- "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2064,9 +1889,8 @@
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
- "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -2080,9 +1904,8 @@
},
"node_modules/@babel/plugin-transform-regenerator": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
- "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"regenerator-transform": "^0.15.2"
@@ -2096,9 +1919,8 @@
},
"node_modules/@babel/plugin-transform-reserved-words": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz",
- "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2110,16 +1932,15 @@
}
},
"node_modules/@babel/plugin-transform-runtime": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz",
- "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.8",
- "babel-plugin-polyfill-corejs3": "^0.9.0",
- "babel-plugin-polyfill-regenerator": "^0.5.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.7",
+ "babel-plugin-polyfill-corejs3": "^0.8.7",
+ "babel-plugin-polyfill-regenerator": "^0.5.4",
"semver": "^6.3.1"
},
"engines": {
@@ -2131,18 +1952,16 @@
},
"node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/plugin-transform-shorthand-properties": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz",
- "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2155,9 +1974,8 @@
},
"node_modules/@babel/plugin-transform-spread": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz",
- "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
@@ -2171,9 +1989,8 @@
},
"node_modules/@babel/plugin-transform-sticky-regex": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz",
- "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2186,9 +2003,8 @@
},
"node_modules/@babel/plugin-transform-template-literals": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz",
- "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2201,9 +2017,8 @@
},
"node_modules/@babel/plugin-transform-typeof-symbol": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz",
- "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2216,9 +2031,8 @@
},
"node_modules/@babel/plugin-transform-typescript": {
"version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
- "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-create-class-features-plugin": "^7.23.6",
@@ -2234,9 +2048,8 @@
},
"node_modules/@babel/plugin-transform-unicode-escapes": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz",
- "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -2249,9 +2062,8 @@
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz",
- "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -2265,9 +2077,8 @@
},
"node_modules/@babel/plugin-transform-unicode-regex": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz",
- "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -2281,9 +2092,8 @@
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz",
- "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-create-regexp-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5"
@@ -2296,10 +2106,9 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz",
- "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.23.5",
"@babel/helper-compilation-targets": "^7.23.6",
@@ -2328,13 +2137,13 @@
"@babel/plugin-syntax-top-level-await": "^7.14.5",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
"@babel/plugin-transform-arrow-functions": "^7.23.3",
- "@babel/plugin-transform-async-generator-functions": "^7.23.9",
+ "@babel/plugin-transform-async-generator-functions": "^7.23.7",
"@babel/plugin-transform-async-to-generator": "^7.23.3",
"@babel/plugin-transform-block-scoped-functions": "^7.23.3",
"@babel/plugin-transform-block-scoping": "^7.23.4",
"@babel/plugin-transform-class-properties": "^7.23.3",
"@babel/plugin-transform-class-static-block": "^7.23.4",
- "@babel/plugin-transform-classes": "^7.23.8",
+ "@babel/plugin-transform-classes": "^7.23.5",
"@babel/plugin-transform-computed-properties": "^7.23.3",
"@babel/plugin-transform-destructuring": "^7.23.3",
"@babel/plugin-transform-dotall-regex": "^7.23.3",
@@ -2350,7 +2159,7 @@
"@babel/plugin-transform-member-expression-literals": "^7.23.3",
"@babel/plugin-transform-modules-amd": "^7.23.3",
"@babel/plugin-transform-modules-commonjs": "^7.23.3",
- "@babel/plugin-transform-modules-systemjs": "^7.23.9",
+ "@babel/plugin-transform-modules-systemjs": "^7.23.3",
"@babel/plugin-transform-modules-umd": "^7.23.3",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
"@babel/plugin-transform-new-target": "^7.23.3",
@@ -2376,9 +2185,9 @@
"@babel/plugin-transform-unicode-regex": "^7.23.3",
"@babel/plugin-transform-unicode-sets-regex": "^7.23.3",
"@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.8",
- "babel-plugin-polyfill-corejs3": "^0.9.0",
- "babel-plugin-polyfill-regenerator": "^0.5.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.7",
+ "babel-plugin-polyfill-corejs3": "^0.8.7",
+ "babel-plugin-polyfill-regenerator": "^0.5.4",
"core-js-compat": "^3.31.0",
"semver": "^6.3.1"
},
@@ -2391,18 +2200,16 @@
},
"node_modules/@babel/preset-env/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/preset-modules": {
"version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/types": "^7.4.4",
@@ -2414,9 +2221,8 @@
},
"node_modules/@babel/preset-react": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
- "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.15",
@@ -2434,9 +2240,8 @@
},
"node_modules/@babel/preset-typescript": {
"version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz",
- "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/helper-validator-option": "^7.22.15",
@@ -2453,14 +2258,12 @@
},
"node_modules/@babel/regjsgen": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@babel/runtime": {
"version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
- "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -2469,24 +2272,22 @@
}
},
"node_modules/@babel/template": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
- "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+ "version": "7.22.15",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9"
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
- "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+ "version": "7.23.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.23.5",
"@babel/generator": "^7.23.6",
@@ -2494,8 +2295,8 @@
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9",
+ "@babel/parser": "^7.23.6",
+ "@babel/types": "^7.23.6",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -2505,18 +2306,16 @@
},
"node_modules/@babel/traverse/node_modules/globals": {
"version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/types": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
- "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+ "version": "7.23.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
@@ -2530,12 +2329,12 @@
"resolved": "packages/core",
"link": true
},
- "node_modules/@blocknote/example-editor": {
- "resolved": "examples/editor",
+ "node_modules/@blocknote/dev-scripts": {
+ "resolved": "packages/dev-scripts",
"link": true
},
- "node_modules/@blocknote/example-vanilla": {
- "resolved": "examples/vanilla",
+ "node_modules/@blocknote/example-editor": {
+ "resolved": "playground",
"link": true
},
"node_modules/@blocknote/react": {
@@ -2546,1189 +2345,734 @@
"resolved": "tests",
"link": true
},
- "node_modules/@codemirror/autocomplete": {
- "version": "6.12.0",
- "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.12.0.tgz",
- "integrity": "sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==",
- "dev": true,
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0"
- },
- "peerDependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0"
+ "node_modules/@braintree/sanitize-url": {
+ "version": "6.0.4",
+ "license": "MIT"
+ },
+ "node_modules/@cloudflare/workerd-darwin-arm64": {
+ "version": "1.20240129.0",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=16"
}
},
- "node_modules/@codemirror/commands": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz",
- "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==",
- "dev": true,
+ "node_modules/@cloudflare/workers-types": {
+ "version": "4.20240129.0",
+ "license": "MIT OR Apache-2.0"
+ },
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "license": "MIT",
"dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.4.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.1.0"
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@codemirror/lang-css": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz",
- "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==",
- "dev": true,
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "license": "MIT",
"dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.0.2",
- "@lezer/css": "^1.0.0"
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
- "node_modules/@codemirror/lang-html": {
- "version": "6.4.8",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz",
- "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==",
- "dev": true,
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/lang-css": "^6.0.0",
- "@codemirror/lang-javascript": "^6.0.0",
- "@codemirror/language": "^6.4.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0",
- "@lezer/css": "^1.1.0",
- "@lezer/html": "^1.3.0"
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "node_modules/@codemirror/lang-javascript": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.1.tgz",
- "integrity": "sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==",
- "dev": true,
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.6.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0",
- "@lezer/javascript": "^1.0.0"
+ "@emotion/memoize": "0.7.4"
}
},
- "node_modules/@codemirror/language": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.0.tgz",
- "integrity": "sha512-2vaNn9aPGCRFKWcHPFksctzJ8yS5p7YoaT+jHpc0UGKzNuAIx4qy6R5wiqbP+heEEdyaABA582mNqSHzSoYdmg==",
+ "node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.18.20",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.23.0",
- "@lezer/common": "^1.1.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0",
- "style-mod": "^4.0.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@codemirror/lint": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz",
- "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "crelt": "^1.0.5"
- }
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
},
- "node_modules/@codemirror/state": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz",
- "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==",
- "dev": true
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
},
- "node_modules/@codemirror/view": {
- "version": "6.23.1",
- "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.23.1.tgz",
- "integrity": "sha512-J2Xnn5lFYT1ZN/5ewEoMBCmLlL71lZ3mBdb7cUEuHhX2ESoSrNEucpsDXpX22EuTGm9LOgC9v4Z0wx+Ez8QmGA==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@codemirror/state": "^6.4.0",
- "style-mod": "^4.1.0",
- "w3c-keyname": "^2.2.4"
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@codesandbox/sandpack-client": {
- "version": "1.20.9",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-client/-/sandpack-client-1.20.9.tgz",
- "integrity": "sha512-Z/SXVRFzO8BOagLg6+6WQfBpAio3AZNjeposYPyoI7fxT8L9urS+G5uG/oG4vV/YkK5nmIuT7pKdTL66wMUsxA==",
+ "node_modules/@eslint/js": {
+ "version": "8.56.0",
"dev": true,
- "dependencies": {
- "codesandbox-import-utils": "^1.2.3",
- "lodash.isequal": "^4.5.0"
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@codesandbox/sandpack-themes": {
- "version": "2.0.21",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-themes/-/sandpack-themes-2.0.21.tgz",
- "integrity": "sha512-CMH/MO/dh6foPYb/3eSn2Cu/J3+1+/81Fsaj7VggICkCrmRk0qG5dmgjGAearPTnRkOGORIPHuRqwNXgw0E6YQ==",
- "dev": true
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
},
- "node_modules/@docsearch/css": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz",
- "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==",
- "dev": true
+ "node_modules/@floating-ui/core": {
+ "version": "1.5.3",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.0"
+ }
},
- "node_modules/@docsearch/js": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz",
- "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==",
- "dev": true,
+ "node_modules/@floating-ui/dom": {
+ "version": "1.5.4",
+ "license": "MIT",
"dependencies": {
- "@docsearch/react": "3.5.2",
- "preact": "^10.0.0"
+ "@floating-ui/core": "^1.5.3",
+ "@floating-ui/utils": "^0.2.0"
}
},
- "node_modules/@docsearch/react": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz",
- "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==",
- "dev": true,
+ "node_modules/@floating-ui/react": {
+ "version": "0.26.5",
+ "license": "MIT",
"dependencies": {
- "@algolia/autocomplete-core": "1.9.3",
- "@algolia/autocomplete-preset-algolia": "1.9.3",
- "@docsearch/css": "3.5.2",
- "algoliasearch": "^4.19.1"
+ "@floating-ui/react-dom": "^2.0.5",
+ "@floating-ui/utils": "^0.2.0",
+ "tabbable": "^6.0.1"
},
"peerDependencies": {
- "@types/react": ">= 16.8.0 < 19.0.0",
- "react": ">= 16.8.0 < 19.0.0",
- "react-dom": ">= 16.8.0 < 19.0.0",
- "search-insights": ">= 1 < 3"
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/dom": "^1.5.4"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- },
- "search-insights": {
- "optional": true
- }
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
- "node_modules/@esbuild/android-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
- "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.1",
+ "license": "MIT"
+ },
+ "node_modules/@gar/promisify": {
+ "version": "1.1.3",
"dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "license": "MIT"
+ },
+ "node_modules/@headlessui/react": {
+ "version": "1.7.18",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/react-virtual": "^3.0.0-beta.60",
+ "client-only": "^0.0.1"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16 || ^17 || ^18",
+ "react-dom": "^16 || ^17 || ^18"
}
},
- "node_modules/@esbuild/android-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
- "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.13",
"dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=10.10.0"
}
},
- "node_modules/@esbuild/android-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
- "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
"dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "license": "Apache-2.0",
"engines": {
- "node": ">=12"
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/nzakas"
}
},
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
- "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.1",
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
+ "license": "BSD-3-Clause"
},
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
- "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@hutson/parse-repository-url": {
+ "version": "3.0.2",
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "license": "Apache-2.0",
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
}
},
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
- "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
"dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
"engines": {
"node": ">=12"
}
},
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
- "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
"dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "license": "MIT",
"engines": {
"node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/@esbuild/linux-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
- "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "MIT",
"engines": {
"node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
- "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
"engines": {
"node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
- "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
"engines": {
"node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
- "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
- "cpu": [
- "loong64"
- ],
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
"engines": {
"node": ">=12"
+ },
+ "funding": {
+ "url": "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/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
- "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
- "cpu": [
- "mips64el"
- ],
+ "node_modules/@isaacs/string-locale-compare": {
+ "version": "1.1.0",
"dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "ISC"
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
"engines": {
- "node": ">=12"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
- "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.0.0"
}
},
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
- "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=6.0.0"
}
},
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
- "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=6.0.0"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
- "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
}
},
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
- "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "license": "MIT"
},
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
- "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
- "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@lerna/add": {
+ "version": "5.6.2",
"dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "@lerna/bootstrap": "5.6.2",
+ "@lerna/command": "5.6.2",
+ "@lerna/filter-options": "5.6.2",
+ "@lerna/npm-conf": "5.6.2",
+ "@lerna/validation-error": "5.6.2",
+ "dedent": "^0.7.0",
+ "npm-package-arg": "8.1.1",
+ "p-map": "^4.0.0",
+ "pacote": "^13.6.1",
+ "semver": "^7.3.4"
+ },
"engines": {
- "node": ">=12"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
- "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@lerna/bootstrap": {
+ "version": "5.6.2",
"dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "@lerna/command": "5.6.2",
+ "@lerna/filter-options": "5.6.2",
+ "@lerna/has-npm-version": "5.6.2",
+ "@lerna/npm-install": "5.6.2",
+ "@lerna/package-graph": "5.6.2",
+ "@lerna/pulse-till-done": "5.6.2",
+ "@lerna/rimraf-dir": "5.6.2",
+ "@lerna/run-lifecycle": "5.6.2",
+ "@lerna/run-topologically": "5.6.2",
+ "@lerna/symlink-binary": "5.6.2",
+ "@lerna/symlink-dependencies": "5.6.2",
+ "@lerna/validation-error": "5.6.2",
+ "@npmcli/arborist": "5.3.0",
+ "dedent": "^0.7.0",
+ "get-port": "^5.1.1",
+ "multimatch": "^5.0.0",
+ "npm-package-arg": "8.1.1",
+ "npmlog": "^6.0.2",
+ "p-map": "^4.0.0",
+ "p-map-series": "^2.1.0",
+ "p-waterfall": "^2.1.1",
+ "semver": "^7.3.4"
+ },
"engines": {
- "node": ">=12"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
- "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@lerna/changed": {
+ "version": "5.6.2",
"dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "@lerna/collect-updates": "5.6.2",
+ "@lerna/command": "5.6.2",
+ "@lerna/listable": "5.6.2",
+ "@lerna/output": "5.6.2"
+ },
"engines": {
- "node": ">=12"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@esbuild/win32-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
- "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@lerna/check-working-tree": {
+ "version": "5.6.2",
"dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
+ "license": "MIT",
+ "dependencies": {
+ "@lerna/collect-uncommitted": "5.6.2",
+ "@lerna/describe-ref": "5.6.2",
+ "@lerna/validation-error": "5.6.2"
+ },
"engines": {
- "node": ">=12"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "node_modules/@lerna/child-process": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "chalk": "^4.1.0",
+ "execa": "^5.0.0",
+ "strong-log-transformer": "^2.1.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "node_modules/@lerna/clean": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@lerna/command": "5.6.2",
+ "@lerna/filter-options": "5.6.2",
+ "@lerna/prompt": "5.6.2",
+ "@lerna/pulse-till-done": "5.6.2",
+ "@lerna/rimraf-dir": "5.6.2",
+ "p-map": "^4.0.0",
+ "p-map-series": "^2.1.0",
+ "p-waterfall": "^2.1.1"
+ },
"engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "node_modules/@lerna/cli": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
+ "@lerna/global-options": "5.6.2",
+ "dedent": "^0.7.0",
+ "npmlog": "^6.0.2",
+ "yargs": "^16.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@eslint/js": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
- "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "node_modules/@lerna/collect-uncommitted": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@lerna/child-process": "5.6.2",
+ "chalk": "^4.1.0",
+ "npmlog": "^6.0.2"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@floating-ui/core": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
- "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
+ "node_modules/@lerna/collect-updates": {
+ "version": "5.6.2",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.2.1"
+ "@lerna/child-process": "5.6.2",
+ "@lerna/describe-ref": "5.6.2",
+ "minimatch": "^3.0.4",
+ "npmlog": "^6.0.2",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@floating-ui/dom": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz",
- "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==",
+ "node_modules/@lerna/command": {
+ "version": "5.6.2",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@floating-ui/core": "^1.6.0",
- "@floating-ui/utils": "^0.2.1"
- }
- },
- "node_modules/@floating-ui/react": {
- "version": "0.26.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.8.tgz",
- "integrity": "sha512-fOZb8BnJBrVohGPZ8RthDM5cHD9SnBKgY/U7LFXHhuwafSZD7TVmCX67+ezkkwxFbWpQGTEbgcjuHUDRonGy1g==",
- "dependencies": {
- "@floating-ui/react-dom": "^2.0.8",
- "@floating-ui/utils": "^0.2.1",
- "tabbable": "^6.0.1"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@floating-ui/react-dom": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz",
- "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==",
- "dependencies": {
- "@floating-ui/dom": "^1.6.1"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@floating-ui/utils": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
- "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
- },
- "node_modules/@gar/promisify": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
- "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
- "dev": true
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
+ "@lerna/child-process": "5.6.2",
+ "@lerna/package-graph": "5.6.2",
+ "@lerna/project": "5.6.2",
+ "@lerna/validation-error": "5.6.2",
+ "@lerna/write-log-file": "5.6.2",
+ "clone-deep": "^4.0.1",
+ "dedent": "^0.7.0",
+ "execa": "^5.0.0",
+ "is-ci": "^2.0.0",
+ "npmlog": "^6.0.2"
},
- "funding": {
- "type": "github",
- "url": "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/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
- "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
- "dev": true
- },
- "node_modules/@hutson/parse-repository-url": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
- "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==",
- "dev": true,
"engines": {
- "node": ">=6.9.0"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "node_modules/@lerna/conventional-commits": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ "@lerna/validation-error": "5.6.2",
+ "conventional-changelog-angular": "^5.0.12",
+ "conventional-changelog-core": "^4.2.4",
+ "conventional-recommended-bump": "^6.1.0",
+ "fs-extra": "^9.1.0",
+ "get-stream": "^6.0.0",
+ "npm-package-arg": "8.1.1",
+ "npmlog": "^6.0.2",
+ "pify": "^5.0.0",
+ "semver": "^7.3.4"
},
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/ansi-regex?sponsor=1"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "node_modules/@lerna/create": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-regex": "^6.0.1"
+ "@lerna/child-process": "5.6.2",
+ "@lerna/command": "5.6.2",
+ "@lerna/npm-conf": "5.6.2",
+ "@lerna/validation-error": "5.6.2",
+ "dedent": "^0.7.0",
+ "fs-extra": "^9.1.0",
+ "init-package-json": "^3.0.2",
+ "npm-package-arg": "8.1.1",
+ "p-reduce": "^2.1.0",
+ "pacote": "^13.6.1",
+ "pify": "^5.0.0",
+ "semver": "^7.3.4",
+ "slash": "^3.0.0",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "^4.0.0",
+ "yargs-parser": "20.2.4"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/strip-ansi?sponsor=1"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@isaacs/string-locale-compare": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz",
- "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==",
- "dev": true
- },
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "node_modules/@lerna/create-symlink": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@sinclair/typebox": "^0.27.8"
+ "cmd-shim": "^5.0.0",
+ "fs-extra": "^9.1.0",
+ "npmlog": "^6.0.2"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "node_modules/@lerna/describe-ref": {
+ "version": "5.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@lerna/child-process": "5.6.2",
+ "npmlog": "^6.0.2"
},
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
- "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/add": {
+ "node_modules/@lerna/diff": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/add/-/add-5.6.2.tgz",
- "integrity": "sha512-NHrm7kYiqP+EviguY7/NltJ3G9vGmJW6v2BASUOhP9FZDhYbq3O+rCDlFdoVRNtcyrSg90rZFMOWHph4KOoCQQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@lerna/bootstrap": "5.6.2",
+ "@lerna/child-process": "5.6.2",
"@lerna/command": "5.6.2",
- "@lerna/filter-options": "5.6.2",
- "@lerna/npm-conf": "5.6.2",
"@lerna/validation-error": "5.6.2",
- "dedent": "^0.7.0",
- "npm-package-arg": "8.1.1",
- "p-map": "^4.0.0",
- "pacote": "^13.6.1",
- "semver": "^7.3.4"
+ "npmlog": "^6.0.2"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/bootstrap": {
+ "node_modules/@lerna/exec": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-5.6.2.tgz",
- "integrity": "sha512-S2fMOEXbef7nrybQhzBywIGSLhuiQ5huPp1sU+v9Y6XEBsy/2IA+lb0gsZosvPqlRfMtiaFstL+QunaBhlWECA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
+ "@lerna/child-process": "5.6.2",
"@lerna/command": "5.6.2",
"@lerna/filter-options": "5.6.2",
- "@lerna/has-npm-version": "5.6.2",
- "@lerna/npm-install": "5.6.2",
- "@lerna/package-graph": "5.6.2",
- "@lerna/pulse-till-done": "5.6.2",
- "@lerna/rimraf-dir": "5.6.2",
- "@lerna/run-lifecycle": "5.6.2",
+ "@lerna/profiler": "5.6.2",
"@lerna/run-topologically": "5.6.2",
- "@lerna/symlink-binary": "5.6.2",
- "@lerna/symlink-dependencies": "5.6.2",
"@lerna/validation-error": "5.6.2",
- "@npmcli/arborist": "5.3.0",
- "dedent": "^0.7.0",
- "get-port": "^5.1.1",
- "multimatch": "^5.0.0",
- "npm-package-arg": "8.1.1",
- "npmlog": "^6.0.2",
- "p-map": "^4.0.0",
- "p-map-series": "^2.1.0",
- "p-waterfall": "^2.1.1",
- "semver": "^7.3.4"
+ "p-map": "^4.0.0"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/changed": {
+ "node_modules/@lerna/filter-options": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-5.6.2.tgz",
- "integrity": "sha512-uUgrkdj1eYJHQGsXXlpH5oEAfu3x0qzeTjgvpdNrxHEdQWi7zWiW59hRadmiImc14uJJYIwVK5q/QLugrsdGFQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/collect-updates": "5.6.2",
- "@lerna/command": "5.6.2",
- "@lerna/listable": "5.6.2",
- "@lerna/output": "5.6.2"
+ "@lerna/filter-packages": "5.6.2",
+ "dedent": "^0.7.0",
+ "npmlog": "^6.0.2"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/check-working-tree": {
+ "node_modules/@lerna/filter-packages": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-5.6.2.tgz",
- "integrity": "sha512-6Vf3IB6p+iNIubwVgr8A/KOmGh5xb4SyRmhFtAVqe33yWl2p3yc+mU5nGoz4ET3JLF1T9MhsePj0hNt6qyOTLQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@lerna/collect-uncommitted": "5.6.2",
- "@lerna/describe-ref": "5.6.2",
- "@lerna/validation-error": "5.6.2"
+ "@lerna/validation-error": "5.6.2",
+ "multimatch": "^5.0.0",
+ "npmlog": "^6.0.2"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/child-process": {
+ "node_modules/@lerna/get-npm-exec-opts": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-5.6.2.tgz",
- "integrity": "sha512-QIOQ3jIbWdduHd5892fbo3u7/dQgbhzEBB7cvf+Ys/iCPP8UQrBECi1lfRgA4kcTKC2MyMz0SoyXZz/lFcXc3A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "chalk": "^4.1.0",
- "execa": "^5.0.0",
- "strong-log-transformer": "^2.1.0"
+ "npmlog": "^6.0.2"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/clean": {
+ "node_modules/@lerna/get-packed": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-5.6.2.tgz",
- "integrity": "sha512-A7j8r0Hk2pGyLUyaCmx4keNHen1L/KdcOjb4nR6X8GtTJR5AeA47a8rRKOCz9wwdyMPlo2Dau7d3RV9viv7a5g==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@lerna/command": "5.6.2",
- "@lerna/filter-options": "5.6.2",
- "@lerna/prompt": "5.6.2",
- "@lerna/pulse-till-done": "5.6.2",
- "@lerna/rimraf-dir": "5.6.2",
- "p-map": "^4.0.0",
- "p-map-series": "^2.1.0",
- "p-waterfall": "^2.1.1"
+ "fs-extra": "^9.1.0",
+ "ssri": "^9.0.1",
+ "tar": "^6.1.0"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/cli": {
+ "node_modules/@lerna/github-client": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-5.6.2.tgz",
- "integrity": "sha512-w0NRIEqDOmYKlA5t0iyqx0hbY7zcozvApmfvwF0lhkuhf3k6LRAFSamtimGQWicC779a7J2NXw4ASuBV47Fs1Q==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@lerna/global-options": "5.6.2",
- "dedent": "^0.7.0",
- "npmlog": "^6.0.2",
- "yargs": "^16.2.0"
+ "@lerna/child-process": "5.6.2",
+ "@octokit/plugin-enterprise-rest": "^6.0.1",
+ "@octokit/rest": "^19.0.3",
+ "git-url-parse": "^13.1.0",
+ "npmlog": "^6.0.2"
},
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/collect-uncommitted": {
+ "node_modules/@lerna/gitlab-client": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-5.6.2.tgz",
- "integrity": "sha512-i0jhxpypyOsW2PpPwIw4xg6EPh7/N3YuiI6P2yL7PynZ8nOv8DkIdoyMkhUP4gALjBfckH8Bj94eIaKMviqW4w==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@lerna/child-process": "5.6.2",
- "chalk": "^4.1.0",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/collect-updates": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-5.6.2.tgz",
- "integrity": "sha512-DdTK13X6PIsh9HINiMniFeiivAizR/1FBB+hDVe6tOhsXFBfjHMw1xZhXlE+mYIoFmDm1UFK7zvQSexoaxRqFA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "@lerna/describe-ref": "5.6.2",
- "minimatch": "^3.0.4",
- "npmlog": "^6.0.2",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/command": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/command/-/command-5.6.2.tgz",
- "integrity": "sha512-eLVGI9TmxcaGt1M7TXGhhBZoeWOtOedMiH7NuCGHtL6TMJ9k+SCExyx+KpNmE6ImyNOzws6EvYLPLjftiqmoaA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "@lerna/package-graph": "5.6.2",
- "@lerna/project": "5.6.2",
- "@lerna/validation-error": "5.6.2",
- "@lerna/write-log-file": "5.6.2",
- "clone-deep": "^4.0.1",
- "dedent": "^0.7.0",
- "execa": "^5.0.0",
- "is-ci": "^2.0.0",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/conventional-commits": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-5.6.2.tgz",
- "integrity": "sha512-fPrJpYJhxCgY2uyOCTcAAC6+T6lUAtpEGxLbjWHWTb13oKKEygp9THoFpe6SbAD0fYMb3jeZCZCqNofM62rmuA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/validation-error": "5.6.2",
- "conventional-changelog-angular": "^5.0.12",
- "conventional-changelog-core": "^4.2.4",
- "conventional-recommended-bump": "^6.1.0",
- "fs-extra": "^9.1.0",
- "get-stream": "^6.0.0",
- "npm-package-arg": "8.1.1",
- "npmlog": "^6.0.2",
- "pify": "^5.0.0",
- "semver": "^7.3.4"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/create": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/create/-/create-5.6.2.tgz",
- "integrity": "sha512-+Y5cMUxMNXjTTU9IHpgRYIwKo39w+blui1P+s+qYlZUSCUAew0xNpOBG8iN0Nc5X9op4U094oIdHxv7Dyz6tWQ==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "@lerna/command": "5.6.2",
- "@lerna/npm-conf": "5.6.2",
- "@lerna/validation-error": "5.6.2",
- "dedent": "^0.7.0",
- "fs-extra": "^9.1.0",
- "init-package-json": "^3.0.2",
- "npm-package-arg": "8.1.1",
- "p-reduce": "^2.1.0",
- "pacote": "^13.6.1",
- "pify": "^5.0.0",
- "semver": "^7.3.4",
- "slash": "^3.0.0",
- "validate-npm-package-license": "^3.0.4",
- "validate-npm-package-name": "^4.0.0",
- "yargs-parser": "20.2.4"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/create-symlink": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-5.6.2.tgz",
- "integrity": "sha512-0WIs3P6ohPVh2+t5axrLZDE5Dt7fe3Kv0Auj0sBiBd6MmKZ2oS76apIl0Bspdbv8jX8+TRKGv6ib0280D0dtEw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "cmd-shim": "^5.0.0",
- "fs-extra": "^9.1.0",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/describe-ref": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-5.6.2.tgz",
- "integrity": "sha512-UqU0N77aT1W8duYGir7R+Sk3jsY/c4lhcCEcnayMpFScMbAp0ETGsW04cYsHK29sgg+ZCc5zEwebBqabWhMhnA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/diff": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-5.6.2.tgz",
- "integrity": "sha512-aHKzKvUvUI8vOcshC2Za/bdz+plM3r/ycqUrPqaERzp+kc1pYHyPeXezydVdEmgmmwmyKI5hx4+2QNnzOnun2A==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "@lerna/command": "5.6.2",
- "@lerna/validation-error": "5.6.2",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/exec": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-5.6.2.tgz",
- "integrity": "sha512-meZozok5stK7S0oAVn+kdbTmU+kHj9GTXjW7V8kgwG9ld+JJMTH3nKK1L3mEKyk9TFu9vFWyEOF7HNK6yEOoVg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "@lerna/command": "5.6.2",
- "@lerna/filter-options": "5.6.2",
- "@lerna/profiler": "5.6.2",
- "@lerna/run-topologically": "5.6.2",
- "@lerna/validation-error": "5.6.2",
- "p-map": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/filter-options": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-5.6.2.tgz",
- "integrity": "sha512-4Z0HIhPak2TabTsUqEBQaQeOqgqEt0qyskvsY0oviYvqP/nrJfJBZh4H93jIiNQF59LJCn5Ce3KJJrLExxjlzw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/collect-updates": "5.6.2",
- "@lerna/filter-packages": "5.6.2",
- "dedent": "^0.7.0",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/filter-packages": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-5.6.2.tgz",
- "integrity": "sha512-el9V2lTEG0Bbz+Omo45hATkRVnChCTJhcTpth19cMJ6mQ4M5H4IgbWCJdFMBi/RpTnOhz9BhJxDbj95kuIvvzw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/validation-error": "5.6.2",
- "multimatch": "^5.0.0",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/get-npm-exec-opts": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.6.2.tgz",
- "integrity": "sha512-0RbSDJ+QC9D5UWZJh3DN7mBIU1NhBmdHOE289oHSkjDY+uEjdzMPkEUy+wZ8fCzMLFnnNQkAEqNaOAzZ7dmFLA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/get-packed": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-5.6.2.tgz",
- "integrity": "sha512-pp5nNDmtrtd21aKHjwwOY5CS7XNIHxINzGa+Jholn1jMDYUtdskpN++ZqYbATGpW831++NJuiuBVyqAWi9xbXg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "fs-extra": "^9.1.0",
- "ssri": "^9.0.1",
- "tar": "^6.1.0"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/github-client": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-5.6.2.tgz",
- "integrity": "sha512-pjALazZoRZtKqfwLBwmW3HPptVhQm54PvA8s3qhCQ+3JkqrZiIFwkkxNZxs3jwzr+aaSOzfhSzCndg0urb0GXA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "5.6.2",
- "@octokit/plugin-enterprise-rest": "^6.0.1",
- "@octokit/rest": "^19.0.3",
- "git-url-parse": "^13.1.0",
- "npmlog": "^6.0.2"
- },
- "engines": {
- "node": "^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@lerna/gitlab-client": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-5.6.2.tgz",
- "integrity": "sha512-TInJmbrsmYIwUyrRxytjO82KjJbRwm67F7LoZs1shAq6rMvNqi4NxSY9j+hT/939alFmEq1zssoy/caeLXHRfQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "node-fetch": "^2.6.1",
+ "node-fetch": "^2.6.1",
"npmlog": "^6.0.2"
},
"engines": {
@@ -3737,20 +3081,16 @@
},
"node_modules/@lerna/global-options": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-5.6.2.tgz",
- "integrity": "sha512-kaKELURXTlczthNJskdOvh6GGMyt24qat0xMoJZ8plYMdofJfhz24h1OFcvB/EwCUwP/XV1+ohE5P+vdktbrEg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
"node_modules/@lerna/has-npm-version": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-5.6.2.tgz",
- "integrity": "sha512-kXCnSzffmTWsaK0ol30coyCfO8WH26HFbmJjRBzKv7VGkuAIcB6gX2gqRRgNLLlvI+Yrp+JSlpVNVnu15SEH2g==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/child-process": "5.6.2",
"semver": "^7.3.4"
@@ -3761,10 +3101,8 @@
},
"node_modules/@lerna/import": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/import/-/import-5.6.2.tgz",
- "integrity": "sha512-xQUE49mtcP0z3KUdXBsyvp8rGDz6phuYUoQbhcFRJ7WPcQKzMvtm0XYrER6c2YWEX7QOuDac6tU82P8zTrTBaA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/child-process": "5.6.2",
"@lerna/command": "5.6.2",
@@ -3781,10 +3119,8 @@
},
"node_modules/@lerna/info": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/info/-/info-5.6.2.tgz",
- "integrity": "sha512-MPjY5Olj+fiZHgfEdwXUFRKamdEuLr9Ob/qut8JsB/oQSQ4ALdQfnrOcMT8lJIcC2R67EA5yav2lHPBIkezm8A==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/command": "5.6.2",
"@lerna/output": "5.6.2",
@@ -3796,10 +3132,8 @@
},
"node_modules/@lerna/init": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/init/-/init-5.6.2.tgz",
- "integrity": "sha512-ahU3/lgF+J8kdJAQysihFJROHthkIDXfHmvhw7AYnzf94HjxGNXj7nz6i3At1/dM/1nQhR+4/uNR1/OU4tTYYQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/child-process": "5.6.2",
"@lerna/command": "5.6.2",
@@ -3814,10 +3148,8 @@
},
"node_modules/@lerna/link": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/link/-/link-5.6.2.tgz",
- "integrity": "sha512-hXxQ4R3z6rUF1v2x62oIzLyeHL96u7ZBhxqYMJrm763D1VMSDcHKF9CjJfc6J9vH5Z2ZbL6CQg50Hw5mUpJbjg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/command": "5.6.2",
"@lerna/package-graph": "5.6.2",
@@ -3832,10 +3164,8 @@
},
"node_modules/@lerna/list": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/list/-/list-5.6.2.tgz",
- "integrity": "sha512-WjE5O2tQ3TcS+8LqXUaxi0YdldhxUhNihT5+Gg4vzGdIlrPDioO50Zjo9d8jOU7i3LMIk6EzCma0sZr2CVfEGg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/command": "5.6.2",
"@lerna/filter-options": "5.6.2",
@@ -3848,10 +3178,8 @@
},
"node_modules/@lerna/listable": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-5.6.2.tgz",
- "integrity": "sha512-8Yp49BwkY/5XqVru38Zko+6Wj/sgbwzJfIGEPy3Qu575r1NA/b9eI1gX22aMsEeXUeGOybR7nWT5ewnPQHjqvA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/query-graph": "5.6.2",
"chalk": "^4.1.0",
@@ -3863,10 +3191,8 @@
},
"node_modules/@lerna/log-packed": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-5.6.2.tgz",
- "integrity": "sha512-O9GODG7tMtWk+2fufn2MOkIDBYMRoKBhYMHshO5Aw/VIsH76DIxpX1koMzWfUngM/C70R4uNAKcVWineX4qzIw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"byte-size": "^7.0.0",
"columnify": "^1.6.0",
@@ -3879,10 +3205,8 @@
},
"node_modules/@lerna/npm-conf": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-5.6.2.tgz",
- "integrity": "sha512-gWDPhw1wjXYXphk/PAghTLexO5T6abVFhXb+KOMCeem366mY0F5bM88PiorL73aErTNUoR8n+V4X29NTZzDZpQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"config-chain": "^1.1.12",
"pify": "^5.0.0"
@@ -3893,10 +3217,8 @@
},
"node_modules/@lerna/npm-dist-tag": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-5.6.2.tgz",
- "integrity": "sha512-t2RmxV6Eog4acXkUI+EzWuYVbeVVY139pANIWS9qtdajfgp4GVXZi1S8mAIb70yeHdNpCp1mhK0xpCrFH9LvGQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/otplease": "5.6.2",
"npm-package-arg": "8.1.1",
@@ -3909,10 +3231,8 @@
},
"node_modules/@lerna/npm-install": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-5.6.2.tgz",
- "integrity": "sha512-AT226zdEo+uGENd37jwYgdALKJAIJK4pNOfmXWZWzVb9oMOr8I2YSjPYvSYUNG7gOo2YJQU8x5Zd7OShv2924Q==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/child-process": "5.6.2",
"@lerna/get-npm-exec-opts": "5.6.2",
@@ -3926,18 +3246,10 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/npm-install/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
"node_modules/@lerna/npm-publish": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-5.6.2.tgz",
- "integrity": "sha512-ldSyewCfv9fAeC5xNjL0HKGSUxcC048EJoe/B+KRUmd+IPidvZxMEzRu08lSC/q3V9YeUv9ZvRnxATXOM8CffA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/otplease": "5.6.2",
"@lerna/run-lifecycle": "5.6.2",
@@ -3954,10 +3266,8 @@
},
"node_modules/@lerna/npm-run-script": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-5.6.2.tgz",
- "integrity": "sha512-MOQoWNcAyJivM8SYp0zELM7vg/Dj07j4YMdxZkey+S1UO0T4/vKBxb575o16hH4WeNzC3Pd7WBlb7C8dLOfNwQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/child-process": "5.6.2",
"@lerna/get-npm-exec-opts": "5.6.2",
@@ -3969,10 +3279,8 @@
},
"node_modules/@lerna/otplease": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-5.6.2.tgz",
- "integrity": "sha512-dGS4lzkEQVTMAgji82jp8RK6UK32wlzrBAO4P4iiVHCUTuwNLsY9oeBXvVXSMrosJnl6Hbe0NOvi43mqSucGoA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/prompt": "5.6.2"
},
@@ -3982,10 +3290,8 @@
},
"node_modules/@lerna/output": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/output/-/output-5.6.2.tgz",
- "integrity": "sha512-++d+bfOQwY66yo7q1XuAvRcqtRHCG45e/awP5xQomTZ6R1rhWiZ3whWdc9Z6lF7+UtBB9toSYYffKU/xc3L0yQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"npmlog": "^6.0.2"
},
@@ -3995,10 +3301,8 @@
},
"node_modules/@lerna/pack-directory": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-5.6.2.tgz",
- "integrity": "sha512-w5Jk5fo+HkN4Le7WMOudTcmAymcf0xPd302TqAQncjXpk0cb8tZbj+5bbNHsGb58GRjOIm5icQbHXooQUxbHhA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/get-packed": "5.6.2",
"@lerna/package": "5.6.2",
@@ -4014,10 +3318,8 @@
},
"node_modules/@lerna/package": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/package/-/package-5.6.2.tgz",
- "integrity": "sha512-LaOC8moyM5J9WnRiWZkedjOninSclBOJyPqhif6mHb2kCFX6jAroNYzE8KM4cphu8CunHuhI6Ixzswtv+Dultw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"load-json-file": "^6.2.0",
"npm-package-arg": "8.1.1",
@@ -4029,10 +3331,8 @@
},
"node_modules/@lerna/package-graph": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-5.6.2.tgz",
- "integrity": "sha512-TmL61qBBvA3Tc4qICDirZzdFFwWOA6qicIXUruLiE2PblRowRmCO1bKrrP6XbDOspzwrkPef6N2F2/5gHQAnkQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/prerelease-id-from-version": "5.6.2",
"@lerna/validation-error": "5.6.2",
@@ -4046,10 +3346,8 @@
},
"node_modules/@lerna/prerelease-id-from-version": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.6.2.tgz",
- "integrity": "sha512-7gIm9fecWFVNy2kpj/KbH11bRcpyANAwpsft3X5m6J7y7A6FTUscCbEvl3ZNdpQKHNuvnHgCtkm3A5PMSCEgkA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver": "^7.3.4"
},
@@ -4059,10 +3357,8 @@
},
"node_modules/@lerna/profiler": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-5.6.2.tgz",
- "integrity": "sha512-okwkagP5zyRIOYTceu/9/esW7UZFt7lyL6q6ZgpSG3TYC5Ay+FXLtS6Xiha/FQdVdumFqKULDWTGovzUlxcwaw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fs-extra": "^9.1.0",
"npmlog": "^6.0.2",
@@ -4074,10 +3370,8 @@
},
"node_modules/@lerna/project": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/project/-/project-5.6.2.tgz",
- "integrity": "sha512-kPIMcIy/0DVWM91FPMMFmXyAnCuuLm3NdhnA8NusE//VuY9wC6QC/3OwuCY39b2dbko/fPZheqKeAZkkMH6sGg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/package": "5.6.2",
"@lerna/validation-error": "5.6.2",
@@ -4099,9 +3393,8 @@
},
"node_modules/@lerna/project/node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -4111,19 +3404,16 @@
},
"node_modules/@lerna/project/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@lerna/prompt": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-5.6.2.tgz",
- "integrity": "sha512-4hTNmVYADEr0GJTMegWV+GW6n+dzKx1vN9v2ISqyle283Myv930WxuyO0PeYGqTrkneJsyPreCMovuEGCvZ0iQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inquirer": "^8.2.4",
"npmlog": "^6.0.2"
@@ -4134,10 +3424,8 @@
},
"node_modules/@lerna/publish": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-5.6.2.tgz",
- "integrity": "sha512-QaW0GjMJMuWlRNjeDCjmY/vjriGSWgkLS23yu8VKNtV5U3dt5yIKA3DNGV3HgZACuu45kQxzMDsfLzgzbGNtYA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/check-working-tree": "5.6.2",
"@lerna/child-process": "5.6.2",
@@ -4174,10 +3462,8 @@
},
"node_modules/@lerna/pulse-till-done": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-5.6.2.tgz",
- "integrity": "sha512-eA/X1RCxU5YGMNZmbgPi+Kyfx1Q3bn4P9jo/LZy+/NRRr1po3ASXP2GJZ1auBh/9A2ELDvvKTOXCVHqczKC6rA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"npmlog": "^6.0.2"
},
@@ -4187,10 +3473,8 @@
},
"node_modules/@lerna/query-graph": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-5.6.2.tgz",
- "integrity": "sha512-KRngr96yBP8XYDi9/U62fnGO+ZXqm04Qk6a2HtoTr/ha8QvO1s7Tgm0xs/G7qWXDQHZgunWIbmK/LhxM7eFQrw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/package-graph": "5.6.2"
},
@@ -4200,10 +3484,8 @@
},
"node_modules/@lerna/resolve-symlink": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-5.6.2.tgz",
- "integrity": "sha512-PDQy+7M8JEFtwIVHJgWvSxHkxJf9zXCENkvIWDB+SsoDPhw9+caewt46bTeP5iGm9pOMu3oZukaWo/TvF7sNjg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fs-extra": "^9.1.0",
"npmlog": "^6.0.2",
@@ -4215,10 +3497,8 @@
},
"node_modules/@lerna/rimraf-dir": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-5.6.2.tgz",
- "integrity": "sha512-jgEfzz7uBUiQKteq3G8MtJiA2D2VoKmZSSY3VSiW/tPOSXYxxSHxEsClQdCeNa6+sYrDNDT8fP6MJ3lPLjDeLA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/child-process": "5.6.2",
"npmlog": "^6.0.2",
@@ -4231,10 +3511,8 @@
},
"node_modules/@lerna/run": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/run/-/run-5.6.2.tgz",
- "integrity": "sha512-c2kJxdFrNg5KOkrhmgwKKUOsfSrGNlFCe26EttufOJ3xfY0VnXlEw9rHOkTgwtu7969rfCdyaVP1qckMrF1Dgw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/command": "5.6.2",
"@lerna/filter-options": "5.6.2",
@@ -4253,10 +3531,8 @@
},
"node_modules/@lerna/run-lifecycle": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-5.6.2.tgz",
- "integrity": "sha512-u9gGgq/50Fm8dvfcc/TSHOCAQvzLD7poVanDMhHYWOAqRDnellJEEmA1K/Yka4vZmySrzluahkry9G6jcREt+g==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/npm-conf": "5.6.2",
"@npmcli/run-script": "^4.1.7",
@@ -4269,10 +3545,8 @@
},
"node_modules/@lerna/run-topologically": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-5.6.2.tgz",
- "integrity": "sha512-QQ/jGOIsVvUg3izShWsd67RlWYh9UOH2yw97Ol1zySX9+JspCMVQrn9eKq1Pk8twQOFhT87LpT/aaxbTBgREPw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/query-graph": "5.6.2",
"p-queue": "^6.6.2"
@@ -4283,10 +3557,8 @@
},
"node_modules/@lerna/symlink-binary": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-5.6.2.tgz",
- "integrity": "sha512-Cth+miwYyO81WAmrQbPBrLHuF+F0UUc0el5kRXLH6j5zzaRS3kMM68r40M7MmfH8m3GPi7691UARoWFEotW5jw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/create-symlink": "5.6.2",
"@lerna/package": "5.6.2",
@@ -4299,10 +3571,8 @@
},
"node_modules/@lerna/symlink-dependencies": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-5.6.2.tgz",
- "integrity": "sha512-dUVNQLEcjVOIQiT9OlSAKt0ykjyJPy8l9i4NJDe2/0XYaUjo8PWsxJ0vrutz27jzi2aZUy07ASmowQZEmnLHAw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/create-symlink": "5.6.2",
"@lerna/resolve-symlink": "5.6.2",
@@ -4317,10 +3587,8 @@
},
"node_modules/@lerna/temp-write": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/temp-write/-/temp-write-5.6.2.tgz",
- "integrity": "sha512-S5ZNVTurSwWBmc9kh5alfSjmO3+BnRT6shYtOlmVIUYqWeYVYA5C1Htj322bbU4CSNCMFK6NQl4qGKL17HMuig==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.15",
"is-stream": "^2.0.0",
@@ -4331,20 +3599,16 @@
},
"node_modules/@lerna/timer": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-5.6.2.tgz",
- "integrity": "sha512-AjMOiLc2B+5Nzdd9hNORetAdZ/WK8YNGX/+2ypzM68TMAPfIT5C40hMlSva9Yg4RsBz22REopXgM5s2zQd5ZQA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || >=16.0.0"
}
},
"node_modules/@lerna/validation-error": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-5.6.2.tgz",
- "integrity": "sha512-4WlDUHaa+RSJNyJRtX3gVIAPVzjZD2tle8AJ0ZYBfdZnZmG0VlB2pD1FIbOQPK8sY2h5m0cHLRvfLoLncqHvdQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"npmlog": "^6.0.2"
},
@@ -4354,10 +3618,8 @@
},
"node_modules/@lerna/version": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/version/-/version-5.6.2.tgz",
- "integrity": "sha512-odNSR2rTbHW++xMZSQKu/F6Syrd/sUvwDLPaMKktoOSPKmycHt/eWcuQQyACdtc43Iqeu4uQd7PCLsniqOVFrw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/check-working-tree": "5.6.2",
"@lerna/child-process": "5.6.2",
@@ -4393,10 +3655,8 @@
},
"node_modules/@lerna/write-log-file": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-5.6.2.tgz",
- "integrity": "sha512-J09l18QnWQ3sXIRwuJkjXY3+KwPR2uO5NgbZGE3GXJK1V/LzOBRMvjGAIbuQHXw25uqe7vpLUpB8drtnFrubCQ==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"npmlog": "^6.0.2",
"write-file-atomic": "^4.0.1"
@@ -4405,67 +3665,35 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lezer/common": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz",
- "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==",
- "dev": true
- },
- "node_modules/@lezer/css": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.7.tgz",
- "integrity": "sha512-7BlFFAKNn/b39jJLrhdLSX5A2k56GIJvyLqdmm7UU+7XvequY084iuKDMAEhAmAzHnwDE8FK4OQtsIUssW91tg==",
- "dev": true,
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/highlight": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz",
- "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==",
- "dev": true,
- "dependencies": {
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@lezer/html": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.8.tgz",
- "integrity": "sha512-EXseJ3pUzWxE6XQBQdqWHZqqlGQRSuNMBcLb6mZWS2J2v+QZhOObD+3ZIKIcm59ntTzyor4LqFTb72iJc3k23Q==",
- "dev": true,
+ "node_modules/@liveblocks/client": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@liveblocks/client/-/client-1.10.0.tgz",
+ "integrity": "sha512-UL32qEgjYdUaQbTBnMAegab4umVRQYFJEBccVW94hDc2wwxdf0rIcqZTvZOX2vqmWXWhKiIiWo1Pu8rCTorFfg==",
"dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
+ "@liveblocks/core": "1.10.0"
}
},
- "node_modules/@lezer/javascript": {
- "version": "1.4.13",
- "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.13.tgz",
- "integrity": "sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow==",
- "dev": true,
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.1.3",
- "@lezer/lr": "^1.3.0"
- }
+ "node_modules/@liveblocks/core": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@liveblocks/core/-/core-1.10.0.tgz",
+ "integrity": "sha512-FwIHCITs34GrsjEx9gty+4KQQ89IDjKoivuuqDio0oSoZeZn2z5QxOfX6T2E189HDrviTp2998vtz7kKQLCPiA=="
},
- "node_modules/@lezer/lr": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz",
- "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==",
- "dev": true,
+ "node_modules/@liveblocks/yjs": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@liveblocks/yjs/-/yjs-1.10.0.tgz",
+ "integrity": "sha512-Q5FVdtMMdhgR7N+gfEEECmBXcHC0ZnrUl675GQD8Up8nQy+1eJyyqPdiGNdPJa29dbADiQQCD8EiOdJHRlS8fw==",
"dependencies": {
- "@lezer/common": "^1.0.0"
+ "@liveblocks/client": "1.10.0",
+ "@liveblocks/core": "1.10.0",
+ "js-base64": "^3.7.5"
+ },
+ "peerDependencies": {
+ "yjs": "^13.6.1"
}
},
"node_modules/@mantine/core": {
"version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.5.0.tgz",
- "integrity": "sha512-0Qfn4oLCs6Qrli+JK6Q325xhNblVEPSKOB4sDMUkvKYUlCt/2lsIhwUXarVBgiIV3X+rKccf0/LcEWmpn/dYuw==",
+ "license": "MIT",
"dependencies": {
"@floating-ui/react": "^0.24.8",
"clsx": "2.0.0",
@@ -4482,8 +3710,7 @@
},
"node_modules/@mantine/core/node_modules/@floating-ui/react": {
"version": "0.24.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.24.8.tgz",
- "integrity": "sha512-AuYeDoaR8jtUlUXtZ1IJ/6jtBkGnSpJXbGNzokBL87VDJ8opMq1Bgrc0szhK482ReQY6KZsMoZCVSb4xwalkBA==",
+ "license": "MIT",
"dependencies": {
"@floating-ui/react-dom": "^2.0.1",
"aria-hidden": "^1.2.3",
@@ -4496,56 +3723,286 @@
},
"node_modules/@mantine/hooks": {
"version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.5.0.tgz",
- "integrity": "sha512-KCL/RRMO+9HRIaNww3RIykifWL9XHovnANAyaCU2YUHOPyGCLSXs1UfFxsKNU71HaZ7cHwqSd7J0rR8JpVYLxw==",
+ "license": "MIT",
"peerDependencies": {
"react": "^18.2.0"
}
},
"node_modules/@mantine/utils": {
"version": "6.0.21",
- "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.21.tgz",
- "integrity": "sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==",
+ "license": "MIT",
"peerDependencies": {
"react": ">=16.8.0"
}
},
- "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
- "version": "5.1.1-v1",
- "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
- "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
- "dev": true,
+ "node_modules/@mdx-js/mdx": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/mdx": "^2.0.0",
+ "estree-util-build-jsx": "^2.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "estree-util-to-js": "^1.1.0",
+ "estree-walker": "^3.0.0",
+ "hast-util-to-estree": "^2.0.0",
+ "markdown-extensions": "^1.0.0",
+ "periscopic": "^3.0.0",
+ "remark-mdx": "^2.0.0",
+ "remark-parse": "^10.0.0",
+ "remark-rehype": "^10.0.0",
+ "unified": "^10.0.0",
+ "unist-util-position-from-estree": "^1.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "unist-util-visit": "^4.0.0",
+ "vfile": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@mdx-js/mdx/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
- "eslint-scope": "5.1.1"
+ "@types/estree": "^1.0.0"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
+ "node_modules/@mdx-js/react": {
+ "version": "2.3.0",
+ "license": "MIT",
"dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "@types/mdx": "^2.0.0",
+ "@types/react": ">=16"
},
- "engines": {
- "node": ">= 8"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "react": ">=16"
}
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
+ "node_modules/@napi-rs/simple-git": {
+ "version": "0.1.16",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@napi-rs/simple-git-android-arm-eabi": "0.1.16",
+ "@napi-rs/simple-git-android-arm64": "0.1.16",
+ "@napi-rs/simple-git-darwin-arm64": "0.1.16",
+ "@napi-rs/simple-git-darwin-x64": "0.1.16",
+ "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.16",
+ "@napi-rs/simple-git-linux-arm64-gnu": "0.1.16",
+ "@napi-rs/simple-git-linux-arm64-musl": "0.1.16",
+ "@napi-rs/simple-git-linux-x64-gnu": "0.1.16",
+ "@napi-rs/simple-git-linux-x64-musl": "0.1.16",
+ "@napi-rs/simple-git-win32-arm64-msvc": "0.1.16",
+ "@napi-rs/simple-git-win32-x64-msvc": "0.1.16"
+ }
+ },
+ "node_modules/@napi-rs/simple-git-darwin-arm64": {
+ "version": "0.1.16",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/bundle-analyzer": {
+ "version": "14.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "webpack-bundle-analyzer": "4.10.1"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.1.0",
+ "license": "MIT"
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "14.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob": "10.3.10"
+ }
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.1.0",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz",
+ "integrity": "sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz",
+ "integrity": "sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz",
+ "integrity": "sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz",
+ "integrity": "sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz",
+ "integrity": "sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz",
+ "integrity": "sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz",
+ "integrity": "sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz",
+ "integrity": "sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+ "version": "5.1.1-v1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-scope": "5.1.1"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
@@ -4556,9 +4013,8 @@
},
"node_modules/@npmcli/arborist": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-5.3.0.tgz",
- "integrity": "sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
"@npmcli/installed-package-contents": "^1.0.7",
@@ -4604,9 +4060,8 @@
},
"node_modules/@npmcli/arborist/node_modules/hosted-git-info": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
@@ -4616,18 +4071,16 @@
},
"node_modules/@npmcli/arborist/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/@npmcli/arborist/node_modules/npm-package-arg": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^5.0.0",
"proc-log": "^2.0.1",
@@ -4640,9 +4093,8 @@
},
"node_modules/@npmcli/fs": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
- "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@gar/promisify": "^1.1.3",
"semver": "^7.3.5"
@@ -4653,9 +4105,8 @@
},
"node_modules/@npmcli/git": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz",
- "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@npmcli/promise-spawn": "^3.0.0",
"lru-cache": "^7.4.4",
@@ -4673,18 +4124,16 @@
},
"node_modules/@npmcli/git/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/@npmcli/installed-package-contents": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz",
- "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"npm-bundled": "^1.1.1",
"npm-normalize-package-bin": "^1.0.1"
@@ -4698,9 +4147,8 @@
},
"node_modules/@npmcli/map-workspaces": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz",
- "integrity": "sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@npmcli/name-from-folder": "^1.0.1",
"glob": "^8.0.1",
@@ -4713,18 +4161,16 @@
},
"node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/@npmcli/map-workspaces/node_modules/glob": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -4741,9 +4187,8 @@
},
"node_modules/@npmcli/map-workspaces/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -4753,9 +4198,8 @@
},
"node_modules/@npmcli/metavuln-calculator": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz",
- "integrity": "sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"cacache": "^16.0.0",
"json-parse-even-better-errors": "^2.3.1",
@@ -4768,10 +4212,8 @@
},
"node_modules/@npmcli/move-file": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
- "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
- "deprecated": "This functionality has been moved to @npmcli/fs",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mkdirp": "^1.0.4",
"rimraf": "^3.0.2"
@@ -4782,24 +4224,21 @@
},
"node_modules/@npmcli/name-from-folder": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz",
- "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@npmcli/node-gyp": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz",
- "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/@npmcli/package-json": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz",
- "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"json-parse-even-better-errors": "^2.3.1"
},
@@ -4809,9 +4248,8 @@
},
"node_modules/@npmcli/promise-spawn": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz",
- "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"infer-owner": "^1.0.4"
},
@@ -4821,9 +4259,8 @@
},
"node_modules/@npmcli/run-script": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz",
- "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@npmcli/node-gyp": "^2.0.0",
"@npmcli/promise-spawn": "^3.0.0",
@@ -4837,18 +4274,16 @@
},
"node_modules/@nrwl/cli": {
"version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.7.tgz",
- "integrity": "sha512-1jtHBDuJzA57My5nLzYiM372mJW0NY6rFKxlWt5a0RLsAZdPTHsd8lE3Gs9XinGC1jhXbruWmhhnKyYtZvX/zA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"nx": "15.9.7"
}
},
"node_modules/@nrwl/devkit": {
"version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.7.tgz",
- "integrity": "sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ejs": "^3.1.7",
"ignore": "^5.0.4",
@@ -4862,8 +4297,6 @@
},
"node_modules/@nrwl/nx-darwin-arm64": {
"version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.7.tgz",
- "integrity": "sha512-aBUgnhlkrgC0vu0fK6eb9Vob7eFnkuknrK+YzTjmLrrZwj7FGNAeyGXSlyo1dVokIzjVKjJg2saZZ0WQbfuCJw==",
"cpu": [
"arm64"
],
@@ -4876,139 +4309,10 @@
"node": ">= 10"
}
},
- "node_modules/@nrwl/nx-darwin-x64": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.7.tgz",
- "integrity": "sha512-L+elVa34jhGf1cmn38Z0sotQatmLovxoASCIw5r1CBZZeJ5Tg7Y9nOwjRiDixZxNN56hPKXm6xl9EKlVHVeKlg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-linux-arm-gnueabihf": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.7.tgz",
- "integrity": "sha512-pqmfqqEUGFu6PmmHKyXyUw1Al0Ki8PSaR0+ndgCAb1qrekVDGDfznJfaqxN0JSLeolPD6+PFtLyXNr9ZyPFlFg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-linux-arm64-gnu": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.7.tgz",
- "integrity": "sha512-NYOa/eRrqmM+In5g3M0rrPVIS9Z+q6fvwXJYf/KrjOHqqan/KL+2TOfroA30UhcBrwghZvib7O++7gZ2hzwOnA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-linux-arm64-musl": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.7.tgz",
- "integrity": "sha512-zyStqjEcmbvLbejdTOrLUSEdhnxNtdQXlmOuymznCzYUEGRv+4f7OAepD3yRoR0a/57SSORZmmGQB7XHZoYZJA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-linux-x64-gnu": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.7.tgz",
- "integrity": "sha512-saNK5i2A8pKO3Il+Ejk/KStTApUpWgCxjeUz9G+T8A+QHeDloZYH2c7pU/P3jA9QoNeKwjVO9wYQllPL9loeVg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-linux-x64-musl": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.7.tgz",
- "integrity": "sha512-extIUThYN94m4Vj4iZggt6hhMZWQSukBCo8pp91JHnDcryBg7SnYmnikwtY1ZAFyyRiNFBLCKNIDFGkKkSrZ9Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-win32-arm64-msvc": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.7.tgz",
- "integrity": "sha512-GSQ54hJ5AAnKZb4KP4cmBnJ1oC4ILxnrG1mekxeM65c1RtWg9NpBwZ8E0gU3xNrTv8ZNsBeKi/9UhXBxhsIh8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nrwl/nx-win32-x64-msvc": {
- "version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.7.tgz",
- "integrity": "sha512-x6URof79RPd8AlapVbPefUD3ynJZpmah3tYaYZ9xZRMXojVtEHV8Qh5vysKXQ1rNYJiiB8Ah6evSKWLbAH60tw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
"node_modules/@nrwl/tao": {
"version": "15.9.7",
- "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.7.tgz",
- "integrity": "sha512-OBnHNvQf3vBH0qh9YnvBQQWyyFZ+PWguF6dJ8+1vyQYlrLVk/XZ8nJ4ukWFb+QfPv/O8VBmqaofaOI9aFC4yTw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"nx": "15.9.7"
},
@@ -5018,18 +4322,16 @@
},
"node_modules/@octokit/auth-token": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz",
- "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
},
"node_modules/@octokit/core": {
"version": "4.2.4",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz",
- "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/auth-token": "^3.0.0",
"@octokit/graphql": "^5.0.0",
@@ -5045,9 +4347,8 @@
},
"node_modules/@octokit/endpoint": {
"version": "7.0.6",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz",
- "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^9.0.0",
"is-plain-object": "^5.0.0",
@@ -5059,9 +4360,8 @@
},
"node_modules/@octokit/graphql": {
"version": "5.0.6",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz",
- "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/request": "^6.0.0",
"@octokit/types": "^9.0.0",
@@ -5073,21 +4373,18 @@
},
"node_modules/@octokit/openapi-types": {
"version": "18.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz",
- "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@octokit/plugin-enterprise-rest": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz",
- "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "6.1.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz",
- "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/tsconfig": "^1.0.2",
"@octokit/types": "^9.2.3"
@@ -5101,18 +4398,16 @@
},
"node_modules/@octokit/plugin-request-log": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
- "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"@octokit/core": ">=3"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz",
- "integrity": "sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^10.0.0"
},
@@ -5125,18 +4420,16 @@
},
"node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
"version": "10.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-10.0.0.tgz",
- "integrity": "sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^18.0.0"
}
},
"node_modules/@octokit/request": {
"version": "6.2.8",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz",
- "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/endpoint": "^7.0.0",
"@octokit/request-error": "^3.0.0",
@@ -5151,9 +4444,8 @@
},
"node_modules/@octokit/request-error": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz",
- "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/types": "^9.0.0",
"deprecation": "^2.0.0",
@@ -5165,9 +4457,8 @@
},
"node_modules/@octokit/rest": {
"version": "19.0.13",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.13.tgz",
- "integrity": "sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/core": "^4.2.1",
"@octokit/plugin-paginate-rest": "^6.1.2",
@@ -5180,25 +4471,29 @@
},
"node_modules/@octokit/tsconfig": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz",
- "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@octokit/types": {
"version": "9.3.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz",
- "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^18.0.0"
}
},
+ "node_modules/@panva/hkdf": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "funding": {
+ "url": "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/sponsors/panva"
+ }
+ },
"node_modules/@parcel/watcher": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz",
- "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
"node-addon-api": "^3.2.1",
"node-gyp-build": "^4.3.0"
@@ -5213,23 +4508,21 @@
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@playwright/experimental-ct-core": {
- "version": "1.41.1",
- "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.41.1.tgz",
- "integrity": "sha512-d7PxESV29x6W9RYs0mhkXmxr+6FfTbg2Tm/WJZlhgbIP+OLv79uJ8hl8ERsiBBFtH88sR+WmxHBMiZRpfpa6Fw==",
+ "version": "1.40.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright": "1.41.1",
- "playwright-core": "1.41.1",
- "vite": "^4.4.12"
+ "playwright": "1.40.1",
+ "playwright-core": "1.40.1",
+ "vite": "^4.4.10"
},
"bin": {
"playwright": "cli.js"
@@ -5239,12 +4532,11 @@
}
},
"node_modules/@playwright/experimental-ct-react": {
- "version": "1.41.1",
- "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.41.1.tgz",
- "integrity": "sha512-Ht04RKD/4J69EPHOR4iAWtsOkkqswxonkcEEhniTNflGn30SoPyNww72LJECDrls+7AJayflJf4qe/cK1Ao/ug==",
+ "version": "1.40.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@playwright/experimental-ct-core": "1.41.1",
+ "@playwright/experimental-ct-core": "1.40.1",
"@vitejs/plugin-react": "^4.0.0"
},
"bin": {
@@ -5255,12 +4547,11 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.41.1",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.41.1.tgz",
- "integrity": "sha512-9g8EWTjiQ9yFBXc6HjCWe41msLpxEX0KhmfmPl9RPLJdfzL4F0lg2BdJ91O9azFdl11y1pmpwdjBiSxvqc+btw==",
+ "version": "1.40.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright": "1.41.1"
+ "playwright": "1.40.1"
},
"bin": {
"playwright": "cli.js"
@@ -5269,10 +4560,13 @@
"node": ">=16"
}
},
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.24",
+ "license": "MIT"
+ },
"node_modules/@popperjs/core": {
"version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
@@ -5280,13 +4574,11 @@
},
"node_modules/@remirror/core-constants": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz",
- "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ=="
+ "license": "MIT"
},
"node_modules/@remirror/core-helpers": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@remirror/core-helpers/-/core-helpers-3.0.0.tgz",
- "integrity": "sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==",
+ "license": "MIT",
"dependencies": {
"@remirror/core-constants": "^2.0.2",
"@remirror/types": "^1.0.1",
@@ -5305,16 +4597,14 @@
},
"node_modules/@remirror/types": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@remirror/types/-/types-1.0.1.tgz",
- "integrity": "sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==",
+ "license": "MIT",
"dependencies": {
"type-fest": "^2.19.0"
}
},
"node_modules/@remirror/types/node_modules/type-fest": {
"version": "2.19.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
- "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=12.20"
},
@@ -5323,26 +4613,24 @@
}
},
"node_modules/@remix-run/router": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz",
- "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==",
+ "version": "1.14.1",
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@resvg/resvg-wasm": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@resvg/resvg-wasm/-/resvg-wasm-2.6.0.tgz",
- "integrity": "sha512-iDkBM6Ivex8nULtBu8cX670/lfsGxq8U1cuqE+qS9xFpPQP1enPdVm/33Kq3+B+bAldA+AHNZnCgpmlHo/fZrQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-wasm/-/resvg-wasm-2.4.0.tgz",
+ "integrity": "sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==",
"engines": {
"node": ">= 10"
}
},
"node_modules/@rollup/pluginutils": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
- "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"estree-walker": "^2.0.1",
"picomatch": "^2.2.2"
@@ -5351,193 +4639,23 @@
"node": ">= 8.0.0"
}
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz",
- "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz",
- "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "peer": true
- },
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz",
- "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==",
+ "version": "4.9.4",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
],
"peer": true
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz",
- "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz",
- "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz",
- "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz",
- "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz",
- "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz",
- "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz",
- "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz",
- "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz",
- "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz",
- "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "peer": true
- },
"node_modules/@rushstack/eslint-patch": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
- "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
- "dev": true
+ "version": "1.6.1",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@shuding/opentype.js": {
"version": "1.4.0-beta.0",
@@ -5556,20 +4674,95 @@
},
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/@stitches/core": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz",
- "integrity": "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==",
- "dev": true
+ "node_modules/@swc/helpers": {
+ "version": "0.5.2",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tanstack/react-virtual": {
+ "version": "3.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@tanstack/virtual-core": "3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@tanstack/virtual-core": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@theguild/remark-mermaid": {
+ "version": "0.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "mermaid": "^10.2.2",
+ "unist-util-visit": "^5.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/@theguild/remark-mermaid/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/@theguild/remark-mermaid/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/@theguild/remark-npm2yarn": {
+ "version": "0.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "npm-to-yarn": "^2.1.0",
+ "unist-util-visit": "^5.0.0"
+ }
+ },
+ "node_modules/@theguild/remark-npm2yarn/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/@theguild/remark-npm2yarn/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
"node_modules/@tiptap/core": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.0.tgz",
- "integrity": "sha512-ped7XlQ9k5VyE2xUwyRegn1yVF/CAsaF+riBUBJ9+71/gSo2mCZ+6gQvee+LVN1+rD1qN/vWgKhKNDVaU+VaFg==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5579,9 +4772,8 @@
}
},
"node_modules/@tiptap/extension-bold": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.0.tgz",
- "integrity": "sha512-GlrI0FzUSzYhXoYbctcXALbyc22uKfZ0nv1k0qTw8qkKbWsz6qT/rm+rcB2YgugW3r6cu5n5HDQbzbgjapNAEA==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5591,9 +4783,8 @@
}
},
"node_modules/@tiptap/extension-bubble-menu": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.0.tgz",
- "integrity": "sha512-ukwFb9wbwA/GkM7wGGv/ScKRBn4QSZkNzObhU6TgDKISjo1b7gGaUdC6gPoAFtQamCOCL8559PJIXXJ4wtL5/w==",
+ "version": "2.1.13",
+ "license": "MIT",
"dependencies": {
"tippy.js": "^6.3.7"
},
@@ -5607,9 +4798,8 @@
}
},
"node_modules/@tiptap/extension-code": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.0.tgz",
- "integrity": "sha512-SqAoJFuwqMzxyaKoULxEgo0e0fJjr/iOLQbnPSQEOuhgVaqRsaBSS3dbxgm94Gt29P7YPZ6IMqLSv/QZQzyjXw==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5619,9 +4809,8 @@
}
},
"node_modules/@tiptap/extension-collaboration": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.2.0.tgz",
- "integrity": "sha512-8riEqnfQ465gxRzHynKbjhlc0oZ6iiEx8Rhhmabc1zjV1U49k/MC+ZmSz2WiDqKl22BCKUtSMt1VPi7QELVYYA==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5629,26 +4818,24 @@
"peerDependencies": {
"@tiptap/core": "^2.0.0",
"@tiptap/pm": "^2.0.0",
- "y-prosemirror": "^1.2.1"
+ "y-prosemirror": "1.0.20"
}
},
"node_modules/@tiptap/extension-collaboration-cursor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.2.0.tgz",
- "integrity": "sha512-CfjCQJ9YEeXobC4KBcNON8RV4jC6GWLFfFVkWmpi0BBy1Ds9EiHlyTXSH/R+gu9VaM1gt7oRUwsP+HCOEu9rhA==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
},
"peerDependencies": {
"@tiptap/core": "^2.0.0",
- "y-prosemirror": "^1.2.1"
+ "y-prosemirror": "1.0.20"
}
},
"node_modules/@tiptap/extension-dropcursor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.0.tgz",
- "integrity": "sha512-7OfGn/EmDp3IN+OyjlFrgeO/GfmBZXMzwW/yWl+42ulhWItqeQ1qmApxOAj1zWes0hbVcULZXIpw3alfTvfPOA==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5659,9 +4846,8 @@
}
},
"node_modules/@tiptap/extension-floating-menu": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.0.tgz",
- "integrity": "sha512-psvRz/69Q/DnVHABYwMKlZv2C6AuLmcQQKTrEBHZKz7OX6E3pLveRVIjaetFg8jci8ZeNMPupKmeLzBVuN8U2A==",
+ "version": "2.1.13",
+ "license": "MIT",
"dependencies": {
"tippy.js": "^6.3.7"
},
@@ -5675,9 +4861,8 @@
}
},
"node_modules/@tiptap/extension-gapcursor": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.0.tgz",
- "integrity": "sha512-FsIoLA2xC1tUCK2cw5jWOKlwYNZgex3puMRwQaZjbph2oz8Jel8SRAzAwsfoi4JkaN9TpNlRP1i00xzGGaezow==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5688,9 +4873,8 @@
}
},
"node_modules/@tiptap/extension-hard-break": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.0.tgz",
- "integrity": "sha512-VptjsgvYOK6EcErn7GdEZZ5CjRkC4O6dsz2cRFA/DIY1IecB628X81n4G6cCyVsb+D98cYnsY44D3Qo+70Xkzw==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5700,9 +4884,8 @@
}
},
"node_modules/@tiptap/extension-history": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.0.tgz",
- "integrity": "sha512-djHQxD5KP4EI3U6cri0/wcJxyMspU1B6+UVXL1G7867JiV9mvAw/HUoZsHTOsn+kajTi8szFfl2exa6dCYVrmA==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5713,9 +4896,8 @@
}
},
"node_modules/@tiptap/extension-horizontal-rule": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.0.tgz",
- "integrity": "sha512-AmaMBZwCEBH2eoy9Qt8Z+fiP6olSelz/cODz8/8XiXXi8ydY6oHW2s4pmrEYZH0un9dQAGWMP/LGUwyQZof1GQ==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5726,9 +4908,8 @@
}
},
"node_modules/@tiptap/extension-italic": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.0.tgz",
- "integrity": "sha512-eOesosmbf8mXCJ8E58PnuhO5gtDpviCTpi3ZaGn1yP0gLRV3wlo8wpCbxlGXLStgFT0tejN26MGbEHCJHkRkFQ==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5738,9 +4919,8 @@
}
},
"node_modules/@tiptap/extension-link": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.0.tgz",
- "integrity": "sha512-1evYv5Fjod47kobd/0RsHYyCFWrkU5IYZSIBC7bAGsnzG4fId2O5SEyn9SPsMYOVtEL2EIhiqb0i+wcwXf6jOQ==",
+ "version": "2.1.13",
+ "license": "MIT",
"dependencies": {
"linkifyjs": "^4.1.0"
},
@@ -5754,9 +4934,8 @@
}
},
"node_modules/@tiptap/extension-paragraph": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.0.tgz",
- "integrity": "sha512-niuvuBEkhz9gnQvFHbxs5z044bpDXRH9zz8QW2bA8+IDSxWHfnVmSZ3AZsed7OJ4EK1AcgGxy+gFOpAcZ73XTw==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5766,9 +4945,8 @@
}
},
"node_modules/@tiptap/extension-strike": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.0.tgz",
- "integrity": "sha512-AMVC94mWNCAXLyZdkB5KqLai9FMUaQDkWAZSD1DKCRq2OJeA71nW9G1eDPa2TzQezl2IVTW9mU4m37hcsTmRfg==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5778,9 +4956,8 @@
}
},
"node_modules/@tiptap/extension-table-cell": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.2.0.tgz",
- "integrity": "sha512-wWLJnQdxF7tnS0oyZGWlUj3k+wf0R2fbq1n0n0EbnOmZV9CWhYwmKnUbdMEsW/HCYm1lgc94TAYGwaHkqQvHWQ==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5790,9 +4967,8 @@
}
},
"node_modules/@tiptap/extension-table-header": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.2.0.tgz",
- "integrity": "sha512-U2XQcXinMNlx4fhRI7mivx8mFclajR7q3+gU1sFwGaRuyufOUM/1LwoiuzHK1VqMQWkWq8u+XEqtw9K6BtmyNw==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5802,9 +4978,8 @@
}
},
"node_modules/@tiptap/extension-table-row": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.2.0.tgz",
- "integrity": "sha512-sR0MWUz5hy6QZsaaI/v4+wC8V8IKRZOZvl7PMhKAJVnAGr5nF34V8h/E9kWGDDyYw2mKi5dSf1E/cEZVAwdlVQ==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5814,9 +4989,8 @@
}
},
"node_modules/@tiptap/extension-text": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.0.tgz",
- "integrity": "sha512-h3lJRUZaUBisqUSQDEO+NU4SgKW7rj/vvbsbML8klWdEhg8U9btdv4eZgoJxbsqOdpUc6Cy6dBhre4myWI8Y2w==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5826,9 +5000,8 @@
}
},
"node_modules/@tiptap/extension-underline": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.2.0.tgz",
- "integrity": "sha512-y+D9gUWa/sVeCftZBMCEpcD1tD4OgNXfjsS7/qxv6ge9t0HCRhAJfHWm6rX8P7QybjacinZuun/T6CudRdGbMg==",
+ "version": "2.1.13",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/ueberdosis"
@@ -5838,28 +5011,27 @@
}
},
"node_modules/@tiptap/pm": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.0.tgz",
- "integrity": "sha512-CL/ys9rvUgYcRHyeQFuIQdw09+0LUgKAfYWzCr6Pu4DDdbRooiex/a9M29imnRMEgS9SwuHN2v17fKHH0w65Hg==",
- "dependencies": {
- "prosemirror-changeset": "^2.2.1",
- "prosemirror-collab": "^1.3.1",
- "prosemirror-commands": "^1.5.2",
- "prosemirror-dropcursor": "^1.8.1",
- "prosemirror-gapcursor": "^1.3.2",
- "prosemirror-history": "^1.3.2",
- "prosemirror-inputrules": "^1.3.0",
- "prosemirror-keymap": "^1.2.2",
- "prosemirror-markdown": "^1.12.0",
- "prosemirror-menu": "^1.2.4",
- "prosemirror-model": "^1.19.4",
- "prosemirror-schema-basic": "^1.2.2",
- "prosemirror-schema-list": "^1.3.0",
- "prosemirror-state": "^1.4.3",
- "prosemirror-tables": "^1.3.5",
- "prosemirror-trailing-node": "^2.0.7",
- "prosemirror-transform": "^1.8.0",
- "prosemirror-view": "^1.32.7"
+ "version": "2.1.13",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-changeset": "^2.2.0",
+ "prosemirror-collab": "^1.3.0",
+ "prosemirror-commands": "^1.3.1",
+ "prosemirror-dropcursor": "^1.5.0",
+ "prosemirror-gapcursor": "^1.3.1",
+ "prosemirror-history": "^1.3.0",
+ "prosemirror-inputrules": "^1.2.0",
+ "prosemirror-keymap": "^1.2.0",
+ "prosemirror-markdown": "^1.10.1",
+ "prosemirror-menu": "^1.2.1",
+ "prosemirror-model": "^1.18.1",
+ "prosemirror-schema-basic": "^1.2.0",
+ "prosemirror-schema-list": "^1.2.2",
+ "prosemirror-state": "^1.4.1",
+ "prosemirror-tables": "^1.3.0",
+ "prosemirror-trailing-node": "^2.0.2",
+ "prosemirror-transform": "^1.7.0",
+ "prosemirror-view": "^1.28.2"
},
"funding": {
"type": "github",
@@ -5867,12 +5039,11 @@
}
},
"node_modules/@tiptap/react": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.2.0.tgz",
- "integrity": "sha512-6A/o6vzD06S8Ds9NJJ4deMBEGVhtIAoGImKuc0aBDBY0ISUSaowaO/hVvZC+ClU74CpmjIUz242HotYXgHNxOw==",
+ "version": "2.1.13",
+ "license": "MIT",
"dependencies": {
- "@tiptap/extension-bubble-menu": "^2.2.0",
- "@tiptap/extension-floating-menu": "^2.2.0"
+ "@tiptap/extension-bubble-menu": "^2.1.13",
+ "@tiptap/extension-floating-menu": "^2.1.13"
},
"funding": {
"type": "github",
@@ -5887,18 +5058,23 @@
},
"node_modules/@tootallnate/once": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10"
}
},
+ "node_modules/@types/acorn": {
+ "version": "4.0.6",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
@@ -5909,18 +5085,16 @@
},
"node_modules/@types/babel__generator": {
"version": "7.6.8",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
- "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.0.0"
}
},
"node_modules/@types/babel__template": {
"version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/parser": "^7.1.0",
"@babel/types": "^7.0.0"
@@ -5928,182 +5102,197 @@
},
"node_modules/@types/babel__traverse": {
"version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
- "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/types": "^7.20.7"
}
},
"node_modules/@types/chai": {
"version": "4.3.11",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz",
- "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/chai-subset": {
"version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz",
- "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/chai": "*"
}
},
+ "node_modules/@types/cookie": {
+ "version": "0.6.0",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-scale": {
+ "version": "4.0.8",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-time": "*"
+ }
+ },
+ "node_modules/@types/d3-scale-chromatic": {
+ "version": "3.0.3",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-time": {
+ "version": "3.0.3",
+ "license": "MIT"
+ },
"node_modules/@types/debug": {
"version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
"dependencies": {
"@types/ms": "*"
}
},
"node_modules/@types/eslint": {
- "version": "8.56.2",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz",
- "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==",
- "dev": true,
+ "version": "8.56.1",
+ "license": "MIT",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.7",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
"node_modules/@types/estree": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
+ "license": "MIT"
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
},
"node_modules/@types/extend": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.4.tgz",
- "integrity": "sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA=="
+ "license": "MIT"
},
"node_modules/@types/hast": {
- "version": "2.3.10",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
- "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
+ "version": "2.3.9",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2"
}
},
+ "node_modules/@types/js-yaml": {
+ "version": "4.0.9",
+ "license": "MIT"
+ },
"node_modules/@types/json-schema": {
"version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@types/json5": {
"version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/katex": {
+ "version": "0.16.7",
+ "license": "MIT"
},
"node_modules/@types/lodash": {
"version": "4.14.202",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",
- "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/lodash.foreach": {
"version": "4.5.9",
- "resolved": "https://registry.npmjs.org/@types/lodash.foreach/-/lodash.foreach-4.5.9.tgz",
- "integrity": "sha512-vmq0p/FK66PsALXRmK/qsnlLlCpnudvozWYrxJImHujHhXMADdeoPEY10zwmu26437w85wCvdxUqpFi+ALtkiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@types/lodash.groupby": {
"version": "4.6.9",
- "resolved": "https://registry.npmjs.org/@types/lodash.groupby/-/lodash.groupby-4.6.9.tgz",
- "integrity": "sha512-z2xtCX2ko7GrqORnnYea4+ksT7jZNAvaOcLd6mP9M7J09RHvJs06W8BGdQQAX8ARef09VQLdeRilSOcfHlDQJQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@types/lodash.merge": {
"version": "4.6.9",
- "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.9.tgz",
- "integrity": "sha512-23sHDPmzd59kUgWyKGiOMO2Qb9YtqRO/x4IhkgNUiPQ1+5MUVqi6bCZeq9nBJ17msjIMbEIO5u+XW4Kz6aGUhQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@types/mdast": {
"version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2"
}
},
+ "node_modules/@types/mdx": {
+ "version": "2.0.11",
+ "license": "MIT"
+ },
"node_modules/@types/minimatch": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/minimist": {
"version": "1.2.5",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/ms": {
"version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+ "license": "MIT"
},
"node_modules/@types/node": {
- "version": "20.11.13",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz",
- "integrity": "sha512-5G4zQwdiQBSWYTDAH1ctw2eidqdhMJaNsiIDKHFr55ihz5Trl2qqR8fdrT732yPBho5gkNxXm67OxWFBqX9aPg==",
- "dev": true,
+ "version": "20.10.7",
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/object.omit": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.3.tgz",
- "integrity": "sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew=="
+ "license": "MIT"
},
"node_modules/@types/object.pick": {
"version": "1.3.4",
- "resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.4.tgz",
- "integrity": "sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA=="
+ "license": "MIT"
},
"node_modules/@types/parse-json": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
- "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/parse5": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
- "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
+ "license": "MIT"
},
"node_modules/@types/prop-types": {
"version": "15.7.11",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
- "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==",
- "devOptional": true
+ "license": "MIT"
},
"node_modules/@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "devOptional": true,
+ "version": "18.2.47",
+ "license": "MIT",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -6112,52 +5301,38 @@
},
"node_modules/@types/react-dom": {
"version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/scheduler": {
"version": "0.16.8",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
- "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
- "devOptional": true
+ "license": "MIT"
},
"node_modules/@types/semver": {
"version": "7.5.6",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
- "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/throttle-debounce": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz",
- "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ=="
+ "license": "MIT"
},
"node_modules/@types/unist": {
"version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
+ "license": "MIT"
},
"node_modules/@types/uuid": {
"version": "8.3.4",
- "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
- "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
- "dev": true
- },
- "node_modules/@types/web-bluetooth": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
- "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.62.0",
@@ -6189,9 +5364,8 @@
},
"node_modules/@typescript-eslint/experimental-utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz",
- "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/utils": "5.62.0"
},
@@ -6208,9 +5382,8 @@
},
"node_modules/@typescript-eslint/parser": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@typescript-eslint/scope-manager": "5.62.0",
"@typescript-eslint/types": "5.62.0",
@@ -6235,9 +5408,8 @@
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/types": "5.62.0",
"@typescript-eslint/visitor-keys": "5.62.0"
@@ -6252,9 +5424,8 @@
},
"node_modules/@typescript-eslint/type-utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/typescript-estree": "5.62.0",
"@typescript-eslint/utils": "5.62.0",
@@ -6279,9 +5450,8 @@
},
"node_modules/@typescript-eslint/types": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -6292,9 +5462,8 @@
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@typescript-eslint/types": "5.62.0",
"@typescript-eslint/visitor-keys": "5.62.0",
@@ -6319,9 +5488,8 @@
},
"node_modules/@typescript-eslint/utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
@@ -6345,9 +5513,8 @@
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/types": "5.62.0",
"eslint-visitor-keys": "^3.3.0"
@@ -6362,16 +5529,14 @@
},
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
+ "license": "ISC"
},
"node_modules/@vercel/og": {
- "version": "0.5.20",
- "resolved": "https://registry.npmjs.org/@vercel/og/-/og-0.5.20.tgz",
- "integrity": "sha512-zi+ZXSx/peXA+1lq7s/5Vzmm/TTfTSf/5P1qNYnh42+7X+pZmahWoXt0i7SWiq3WagfsNUNA4hUDapDiHRoXqA==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@vercel/og/-/og-0.6.2.tgz",
+ "integrity": "sha512-OTe0KE37F5Y2eTys6eMnfopC+P4qr2ooXUTFyFPTplYSPwowmFk/HLD1FXtbKLjqsIH0SgekcJWad+C5uX4nkg==",
"dependencies": {
- "@resvg/resvg-wasm": "2.6.0",
+ "@resvg/resvg-wasm": "2.4.0",
"satori": "0.10.9",
"yoga-wasm-web": "0.3.3"
},
@@ -6381,9 +5546,8 @@
},
"node_modules/@vitejs/plugin-react": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz",
- "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.23.5",
"@babel/plugin-transform-react-jsx-self": "^7.23.3",
@@ -6398,24 +5562,10 @@
"vite": "^4.2.0 || ^5.0.0"
}
},
- "node_modules/@vitejs/plugin-vue": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
- "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
- "dev": true,
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.0.0 || ^5.0.0",
- "vue": "^3.2.25"
- }
- },
"node_modules/@vitest/expect": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz",
- "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@vitest/spy": "0.34.6",
"@vitest/utils": "0.34.6",
@@ -6427,9 +5577,8 @@
},
"node_modules/@vitest/runner": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz",
- "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@vitest/utils": "0.34.6",
"p-limit": "^4.0.0",
@@ -6441,9 +5590,8 @@
},
"node_modules/@vitest/runner/node_modules/p-limit": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^1.0.0"
},
@@ -6456,9 +5604,8 @@
},
"node_modules/@vitest/runner/node_modules/yocto-queue": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.20"
},
@@ -6468,9 +5615,8 @@
},
"node_modules/@vitest/snapshot": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz",
- "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"magic-string": "^0.30.1",
"pathe": "^1.1.1",
@@ -6482,9 +5628,8 @@
},
"node_modules/@vitest/spy": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz",
- "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tinyspy": "^2.1.1"
},
@@ -6494,9 +5639,8 @@
},
"node_modules/@vitest/utils": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz",
- "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"diff-sequences": "^29.4.3",
"loupe": "^2.3.6",
@@ -6506,316 +5650,156 @@
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vue/compiler-core": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
- "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/shared": "3.4.15",
- "entities": "^4.5.0",
- "estree-walker": "^2.0.2",
- "source-map-js": "^1.0.2"
- }
- },
- "node_modules/@vue/compiler-dom": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
- "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
- "dev": true,
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@vue/compiler-core": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
}
},
- "node_modules/@vue/compiler-sfc": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
- "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/compiler-core": "3.4.15",
- "@vue/compiler-dom": "3.4.15",
- "@vue/compiler-ssr": "3.4.15",
- "@vue/shared": "3.4.15",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.30.5",
- "postcss": "^8.4.33",
- "source-map-js": "^1.0.2"
- }
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
},
- "node_modules/@vue/compiler-ssr": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
- "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
- "dev": true,
- "dependencies": {
- "@vue/compiler-dom": "3.4.15",
- "@vue/shared": "3.4.15"
- }
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
},
- "node_modules/@vue/devtools-api": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
- "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==",
- "dev": true
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
},
- "node_modules/@vue/reactivity": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz",
- "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==",
- "dev": true,
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@vue/shared": "3.4.15"
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
}
},
- "node_modules/@vue/runtime-core": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz",
- "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==",
- "dev": true,
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@vue/reactivity": "3.4.15",
- "@vue/shared": "3.4.15"
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
}
},
- "node_modules/@vue/runtime-dom": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz",
- "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==",
- "dev": true,
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@vue/runtime-core": "3.4.15",
- "@vue/shared": "3.4.15",
- "csstype": "^3.1.3"
+ "@xtuc/ieee754": "^1.2.0"
}
},
- "node_modules/@vue/server-renderer": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz",
- "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==",
- "dev": true,
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@vue/compiler-ssr": "3.4.15",
- "@vue/shared": "3.4.15"
- },
- "peerDependencies": {
- "vue": "3.4.15"
+ "@xtuc/long": "4.2.2"
}
},
- "node_modules/@vue/shared": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
- "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==",
- "dev": true
- },
- "node_modules/@vue/tsconfig": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
- "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
- "dev": true,
- "peerDependencies": {
- "@types/node": "*"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
},
- "node_modules/@vueuse/core": {
- "version": "10.7.2",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.2.tgz",
- "integrity": "sha512-AOyAL2rK0By62Hm+iqQn6Rbu8bfmbgaIMXcE3TSr7BdQ42wnSFlwIdPjInO62onYsEMK/yDMU8C6oGfDAtZ2qQ==",
- "dev": true,
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@types/web-bluetooth": "^0.0.20",
- "@vueuse/metadata": "10.7.2",
- "@vueuse/shared": "10.7.2",
- "vue-demi": ">=0.14.6"
- },
- "funding": {
- "url": "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/sponsors/antfu"
- }
- },
- "node_modules/@vueuse/core/node_modules/vue-demi": {
- "version": "0.14.6",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
- "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
}
},
- "node_modules/@vueuse/integrations": {
- "version": "10.7.2",
- "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.7.2.tgz",
- "integrity": "sha512-+u3RLPFedjASs5EKPc69Ge49WNgqeMfSxFn+qrQTzblPXZg6+EFzhjarS5edj2qAf6xQ93f95TUxRwKStXj/sQ==",
- "dev": true,
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@vueuse/core": "10.7.2",
- "@vueuse/shared": "10.7.2",
- "vue-demi": ">=0.14.6"
- },
- "funding": {
- "url": "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/sponsors/antfu"
- },
- "peerDependencies": {
- "async-validator": "*",
- "axios": "*",
- "change-case": "*",
- "drauu": "*",
- "focus-trap": "*",
- "fuse.js": "*",
- "idb-keyval": "*",
- "jwt-decode": "*",
- "nprogress": "*",
- "qrcode": "*",
- "sortablejs": "*",
- "universal-cookie": "*"
- },
- "peerDependenciesMeta": {
- "async-validator": {
- "optional": true
- },
- "axios": {
- "optional": true
- },
- "change-case": {
- "optional": true
- },
- "drauu": {
- "optional": true
- },
- "focus-trap": {
- "optional": true
- },
- "fuse.js": {
- "optional": true
- },
- "idb-keyval": {
- "optional": true
- },
- "jwt-decode": {
- "optional": true
- },
- "nprogress": {
- "optional": true
- },
- "qrcode": {
- "optional": true
- },
- "sortablejs": {
- "optional": true
- },
- "universal-cookie": {
- "optional": true
- }
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
}
},
- "node_modules/@vueuse/integrations/node_modules/vue-demi": {
- "version": "0.14.6",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
- "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
}
},
- "node_modules/@vueuse/metadata": {
- "version": "10.7.2",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.2.tgz",
- "integrity": "sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==",
- "dev": true,
- "funding": {
- "url": "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/sponsors/antfu"
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
}
},
- "node_modules/@vueuse/shared": {
- "version": "10.7.2",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.2.tgz",
- "integrity": "sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==",
- "dev": true,
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "vue-demi": ">=0.14.6"
- },
- "funding": {
- "url": "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/sponsors/antfu"
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
}
},
- "node_modules/@vueuse/shared/node_modules/vue-demi": {
- "version": "0.14.6",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
- "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
- }
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "license": "Apache-2.0",
+ "peer": true
},
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
- "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/@yarnpkg/parsers": {
"version": "3.0.0-rc.46",
- "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz",
- "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"js-yaml": "^3.10.0",
"tslib": "^2.4.0"
@@ -6826,18 +5810,16 @@
},
"node_modules/@yarnpkg/parsers/node_modules/argparse": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
}
},
"node_modules/@yarnpkg/parsers/node_modules/js-yaml": {
"version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -6848,9 +5830,8 @@
},
"node_modules/@zkochan/js-yaml": {
"version": "0.0.6",
- "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz",
- "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -6860,22 +5841,17 @@
},
"node_modules/abab": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "deprecated": "Use your platform's native atob() and btoa() methods instead",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/abbrev": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/acorn": {
"version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -6885,43 +5861,44 @@
},
"node_modules/acorn-globals": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
- "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn": "^8.1.0",
"acorn-walk": "^8.0.2"
}
},
+ "node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
"node_modules/acorn-jsx": {
"version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/acorn-walk": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
- "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
- "dev": true,
+ "version": "8.3.1",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/add-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
- "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/agent-base": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "4"
},
@@ -6931,9 +5908,8 @@
},
"node_modules/agentkeepalive": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
- "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"humanize-ms": "^1.2.1"
},
@@ -6943,9 +5919,8 @@
},
"node_modules/aggregate-error": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -6956,9 +5931,7 @@
},
"node_modules/ajv": {
"version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -6970,42 +5943,25 @@
"url": "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/sponsors/epoberezkin"
}
},
- "node_modules/algoliasearch": {
- "version": "4.22.1",
- "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.22.1.tgz",
- "integrity": "sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==",
- "dev": true,
- "dependencies": {
- "@algolia/cache-browser-local-storage": "4.22.1",
- "@algolia/cache-common": "4.22.1",
- "@algolia/cache-in-memory": "4.22.1",
- "@algolia/client-account": "4.22.1",
- "@algolia/client-analytics": "4.22.1",
- "@algolia/client-common": "4.22.1",
- "@algolia/client-personalization": "4.22.1",
- "@algolia/client-search": "4.22.1",
- "@algolia/logger-common": "4.22.1",
- "@algolia/logger-console": "4.22.1",
- "@algolia/requester-browser-xhr": "4.22.1",
- "@algolia/requester-common": "4.22.1",
- "@algolia/requester-node-http": "4.22.1",
- "@algolia/transporter": "4.22.1"
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "license": "MIT",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
}
},
"node_modules/ansi-colors": {
"version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/ansi-escapes": {
"version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -7018,9 +5974,8 @@
},
"node_modules/ansi-escapes/node_modules/type-fest": {
"version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -7030,24 +5985,20 @@
},
"node_modules/ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-sequence-parser": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz",
- "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==",
- "dev": true
+ "license": "MIT"
},
"node_modules/ansi-styles": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -7058,11 +6009,15 @@
"url": "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/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/anymatch": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
+ "devOptional": true,
+ "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -7073,15 +6028,31 @@
},
"node_modules/aproba": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
},
"node_modules/are-we-there-yet": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
- "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
@@ -7090,15 +6061,18 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/argparse": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ "license": "Python-2.0"
},
"node_modules/aria-hidden": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz",
- "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==",
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.0"
},
@@ -7108,18 +6082,16 @@
},
"node_modules/aria-query": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"dequal": "^2.0.3"
}
},
"node_modules/array-buffer-byte-length": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"is-array-buffer": "^3.0.1"
@@ -7130,24 +6102,21 @@
},
"node_modules/array-differ": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
- "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/array-ify": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
- "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/array-includes": {
"version": "3.1.7",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
- "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7164,18 +6133,16 @@
},
"node_modules/array-union": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/array.prototype.findlastindex": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
- "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7192,9 +6159,8 @@
},
"node_modules/array.prototype.flat": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
- "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7210,9 +6176,8 @@
},
"node_modules/array.prototype.flatmap": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7228,9 +6193,8 @@
},
"node_modules/array.prototype.tosorted": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz",
- "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7241,9 +6205,8 @@
},
"node_modules/arraybuffer.prototype.slice": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
- "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.0",
"call-bind": "^1.0.2",
@@ -7262,69 +6225,110 @@
},
"node_modules/arrify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/as-table": {
+ "version": "1.0.55",
+ "license": "MIT",
+ "dependencies": {
+ "printable-characters": "^1.0.42"
+ }
+ },
"node_modules/asap": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/assertion-error": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/ast-types-flow": {
"version": "0.0.8",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
- "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/astring": {
+ "version": "1.8.6",
+ "license": "MIT",
+ "bin": {
+ "astring": "bin/astring"
+ }
},
"node_modules/async": {
"version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/asynciterator.prototype": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
- "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/at-least-node": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 4.0.0"
}
},
+ "node_modules/autoprefixer": {
+ "version": "10.4.17",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.22.2",
+ "caniuse-lite": "^1.0.30001578",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
"node_modules/available-typed-arrays": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7334,18 +6338,16 @@
},
"node_modules/axe-core": {
"version": "4.7.0",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz",
- "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==",
"dev": true,
+ "license": "MPL-2.0",
"engines": {
"node": ">=4"
}
},
"node_modules/axios": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
- "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
+ "version": "1.6.5",
"dev": true,
+ "license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
@@ -7354,18 +6356,16 @@
},
"node_modules/axobject-query": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
- "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"dequal": "^2.0.3"
}
},
"node_modules/babel-plugin-macros": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
- "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.5",
"cosmiconfig": "^7.0.0",
@@ -7377,13 +6377,12 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.8",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz",
- "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==",
+ "version": "0.4.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.5.0",
+ "@babel/helper-define-polyfill-provider": "^0.4.4",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -7392,33 +6391,30 @@
},
"node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz",
- "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==",
+ "version": "0.8.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.5.0",
- "core-js-compat": "^3.34.0"
+ "@babel/helper-define-polyfill-provider": "^0.4.4",
+ "core-js-compat": "^3.33.1"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz",
- "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==",
+ "version": "0.5.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.5.0"
+ "@babel/helper-define-polyfill-provider": "^0.4.4"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -7426,15 +6422,13 @@
},
"node_modules/babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
- "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/babel-preset-react-app": {
"version": "10.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz",
- "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/core": "^7.16.0",
"@babel/plugin-proposal-class-properties": "^7.16.0",
@@ -7456,8 +6450,7 @@
},
"node_modules/bail": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -7465,14 +6458,11 @@
},
"node_modules/balanced-match": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
"funding": [
{
@@ -7487,19 +6477,25 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/before-after-hook": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
},
"node_modules/bin-links": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz",
- "integrity": "sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"cmd-shim": "^5.0.0",
"mkdirp-infer-owner": "^2.0.0",
@@ -7514,60 +6510,34 @@
},
"node_modules/bin-links/node_modules/npm-normalize-package-bin": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz",
- "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/binary-extensions": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/binaryextensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz",
- "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
"node_modules/bl": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
}
},
- "node_modules/blocknote-website": {
- "resolved": "packages/website",
- "link": true
- },
- "node_modules/body-scroll-lock": {
- "version": "4.0.0-beta.0",
- "resolved": "https://registry.npmjs.org/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz",
- "integrity": "sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==",
- "dev": true
- },
"node_modules/brace-expansion": {
"version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -7575,9 +6545,8 @@
},
"node_modules/braces": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"fill-range": "^7.0.1"
},
@@ -7586,10 +6555,7 @@
}
},
"node_modules/browserslist": {
- "version": "4.22.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
- "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
- "dev": true,
+ "version": "4.22.2",
"funding": [
{
"type": "opencollective",
@@ -7604,9 +6570,10 @@
"url": "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/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001580",
- "electron-to-chromium": "^1.4.648",
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
"node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
@@ -7619,8 +6586,6 @@
},
"node_modules/buffer": {
"version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"funding": [
{
@@ -7636,6 +6601,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@@ -7643,42 +6609,45 @@
},
"node_modules/buffer-from": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
+ "license": "MIT"
},
"node_modules/builtins": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver": "^7.0.0"
}
},
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
"node_modules/byte-size": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz",
- "integrity": "sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/cac": {
"version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/cacache": {
"version": "16.1.3",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
- "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@npmcli/fs": "^2.1.0",
"@npmcli/move-file": "^2.0.0",
@@ -7705,18 +6674,16 @@
},
"node_modules/cacache/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/cacache/node_modules/glob": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -7733,18 +6700,16 @@
},
"node_modules/cacache/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/cacache/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -7752,29 +6717,10 @@
"node": ">=10"
}
},
- "node_modules/cacache/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacache/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/call-bind": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.1",
@@ -7786,27 +6732,32 @@
},
"node_modules/callsites": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/camelcase": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/camelcase-keys": {
"version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^5.3.1",
"map-obj": "^4.0.0",
@@ -7829,9 +6780,6 @@
},
"node_modules/caniuse-lite": {
"version": "1.0.30001581",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz",
- "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -7845,12 +6793,20 @@
"type": "github",
"url": "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/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/capnp-ts": {
+ "version": "0.7.0",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.1",
+ "tslib": "^2.2.0"
+ }
},
"node_modules/case-anything": {
"version": "2.1.13",
- "resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.13.tgz",
- "integrity": "sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==",
+ "license": "MIT",
"engines": {
"node": ">=12.13"
},
@@ -7860,18 +6816,16 @@
},
"node_modules/ccount": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
}
},
"node_modules/chai": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz",
- "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==",
+ "version": "4.4.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.3",
@@ -7887,9 +6841,8 @@
},
"node_modules/chalk": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -7903,8 +6856,7 @@
},
"node_modules/character-entities": {
"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==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -7912,8 +6864,7 @@
},
"node_modules/character-entities-html4": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -7921,8 +6872,15 @@
},
"node_modules/character-entities-legacy": {
"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==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -7930,15 +6888,13 @@
},
"node_modules/chardet": {
"version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/check-error": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
- "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-func-name": "^2.0.2"
},
@@ -7948,15 +6904,14 @@
},
"node_modules/chokidar": {
"version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
+ "devOptional": true,
"funding": [
{
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
],
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -7975,9 +6930,8 @@
},
"node_modules/chokidar/node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
+ "devOptional": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -7987,39 +6941,41 @@
},
"node_modules/chownr": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
"node_modules/ci-info": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/clean-set": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz",
- "integrity": "sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==",
- "dev": true
+ "node_modules/classnames": {
+ "version": "2.3.2",
+ "license": "MIT"
},
"node_modules/clean-stack": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/cli-cursor": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"restore-cursor": "^3.1.0"
},
@@ -8029,9 +6985,8 @@
},
"node_modules/cli-spinners": {
"version": "2.6.1",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz",
- "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -8041,49 +6996,136 @@
},
"node_modules/cli-width": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 10"
}
},
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "license": "MIT"
+ },
+ "node_modules/clipboardy": {
+ "version": "1.2.2",
+ "license": "MIT",
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "arch": "^2.1.0",
+ "execa": "^0.8.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "node_modules/clipboardy/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
},
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
+ "node_modules/clipboardy/node_modules/execa": {
+ "version": "0.8.0",
+ "license": "MIT",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/get-stream": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/is-stream": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "license": "ISC",
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/clipboardy/node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/path-key": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/clipboardy/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboardy/node_modules/which": {
+ "version": "1.3.1",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/clipboardy/node_modules/yallist": {
+ "version": "2.1.2",
+ "license": "ISC"
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
}
},
"node_modules/cliui/node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -8098,18 +7140,16 @@
},
"node_modules/clone": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8"
}
},
"node_modules/clone-deep": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.2",
@@ -8121,9 +7161,8 @@
},
"node_modules/clone-deep/node_modules/is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -8133,17 +7172,15 @@
},
"node_modules/clsx": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
- "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/cmd-shim": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz",
- "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"mkdirp-infer-owner": "^2.0.0"
},
@@ -8151,43 +7188,10 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/code-hike-classer-vue3": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/code-hike-classer-vue3/-/code-hike-classer-vue3-0.1.7.tgz",
- "integrity": "sha512-JNQ+z8pxP/9ybBVBMeXlEuVjYtDXv6b3mfVymyZzDDQiSW/Se17aUpAHUc/mGnpPOA0udC1fdoJAGRD3EMgZDg==",
- "dev": true,
- "hasInstallScript": true,
- "peerDependencies": {
- "vue": "^3.2.0"
- },
- "peerDependenciesMeta": {
- "vue": {
- "optional": true
- }
- }
- },
- "node_modules/codesandbox-import-util-types": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/codesandbox-import-util-types/-/codesandbox-import-util-types-1.3.7.tgz",
- "integrity": "sha512-8oP3emA0jyEuVOM2FBTpo/AF4C9vxHn14saVWZf2CQ/QhMtonBlNPE98ElrHkW+PFNXiO7Ad52Qr73b03n8qlA==",
- "dev": true
- },
- "node_modules/codesandbox-import-utils": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/codesandbox-import-utils/-/codesandbox-import-utils-1.3.8.tgz",
- "integrity": "sha512-S12zO49QEkldoYLGh5KbkHRLOacg5BCNTue2vlyZXSpuK3oQdArwC/G1hCLKryV460bW3Ecn5xdkpfkUcFeOwQ==",
- "dev": true,
- "dependencies": {
- "codesandbox-import-util-types": "^1.3.7",
- "istextorbinary": "2.2.1",
- "lz-string": "^1.4.4"
- }
- },
"node_modules/color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -8197,23 +7201,20 @@
},
"node_modules/color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "license": "MIT"
},
"node_modules/color-support": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
"dev": true,
+ "license": "ISC",
"bin": {
"color-support": "bin.js"
}
},
"node_modules/columnify": {
"version": "1.6.0",
- "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz",
- "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"strip-ansi": "^6.0.1",
"wcwidth": "^1.0.0"
@@ -8224,9 +7225,8 @@
},
"node_modules/combined-stream": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -8236,24 +7236,28 @@
},
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
}
},
+ "node_modules/commander": {
+ "version": "8.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/common-ancestor-path": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
- "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/compare-func": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
- "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-ify": "^1.0.0",
"dot-prop": "^5.1.0"
@@ -8261,9 +7265,8 @@
},
"node_modules/compare-func/node_modules/dot-prop": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-obj": "^2.0.0"
},
@@ -8271,20 +7274,22 @@
"node": ">=8"
}
},
+ "node_modules/compute-scroll-into-view": {
+ "version": "3.1.0",
+ "license": "MIT"
+ },
"node_modules/concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/concat-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
"dev": true,
"engines": [
"node >= 6.0"
],
+ "license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -8294,9 +7299,8 @@
},
"node_modules/config-chain": {
"version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
@@ -8304,21 +7308,18 @@
},
"node_modules/confusing-browser-globals": {
"version": "1.0.11",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
- "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/console-control-strings": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/conventional-changelog-angular": {
"version": "5.0.13",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
- "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"compare-func": "^2.0.0",
"q": "^1.5.1"
@@ -8329,9 +7330,8 @@
},
"node_modules/conventional-changelog-core": {
"version": "4.2.4",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz",
- "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"add-stream": "^1.0.0",
"conventional-changelog-writer": "^5.0.0",
@@ -8354,18 +7354,16 @@
},
"node_modules/conventional-changelog-preset-loader": {
"version": "2.3.4",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
- "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/conventional-changelog-writer": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz",
- "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"conventional-commits-filter": "^2.0.7",
"dateformat": "^3.0.0",
@@ -8386,18 +7384,16 @@
},
"node_modules/conventional-changelog-writer/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/conventional-commits-filter": {
"version": "2.0.7",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
- "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lodash.ismatch": "^4.4.0",
"modify-values": "^1.0.0"
@@ -8408,9 +7404,8 @@
},
"node_modules/conventional-commits-parser": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz",
- "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-text-path": "^1.0.1",
"JSONStream": "^1.0.4",
@@ -8428,9 +7423,8 @@
},
"node_modules/conventional-recommended-bump": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
- "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"concat-stream": "^2.0.0",
"conventional-changelog-preset-loader": "^2.3.4",
@@ -8450,15 +7444,20 @@
},
"node_modules/convert-source-map": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
},
"node_modules/core-js-compat": {
- "version": "3.35.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz",
- "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==",
+ "version": "3.35.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"browserslist": "^4.22.2"
},
@@ -8469,15 +7468,20 @@
},
"node_modules/core-util-is": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cose-base": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "layout-base": "^1.0.0"
+ }
},
"node_modules/cosmiconfig": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/parse-json": "^4.0.0",
"import-fresh": "^3.2.1",
@@ -8491,14 +7495,11 @@
},
"node_modules/crelt": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
- "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
+ "license": "MIT"
},
"node_modules/cross-spawn": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -8536,11 +7537,21 @@
"postcss-value-parser": "^4.0.2"
}
},
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/cssstyle": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz",
- "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"rrweb-cssom": "^0.6.0"
},
@@ -8550,1983 +7561,1938 @@
},
"node_modules/csstype": {
"version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "devOptional": true
- },
- "node_modules/damerau-levenshtein": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
- "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
- "dev": true
+ "license": "MIT"
},
- "node_modules/dargs": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
- "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
- "dev": true,
+ "node_modules/cytoscape": {
+ "version": "3.28.1",
+ "license": "MIT",
+ "dependencies": {
+ "heap": "^0.2.6",
+ "lodash": "^4.17.21"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=0.10"
}
},
- "node_modules/dash-get": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/dash-get/-/dash-get-1.0.2.tgz",
- "integrity": "sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ=="
+ "node_modules/cytoscape-cose-bilkent": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "cose-base": "^1.0.0"
+ },
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
+ }
},
- "node_modules/data-urls": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz",
- "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==",
- "dev": true,
+ "node_modules/cytoscape-fcose": {
+ "version": "2.2.0",
+ "license": "MIT",
"dependencies": {
- "abab": "^2.0.6",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^12.0.0"
+ "cose-base": "^2.2.0"
},
- "engines": {
- "node": ">=14"
+ "peerDependencies": {
+ "cytoscape": "^3.2.0"
}
},
- "node_modules/dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
- "dev": true,
+ "node_modules/cytoscape-fcose/node_modules/cose-base": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "layout-base": "^2.0.0"
+ }
+ },
+ "node_modules/cytoscape-fcose/node_modules/layout-base": {
+ "version": "2.0.1",
+ "license": "MIT"
+ },
+ "node_modules/d3": {
+ "version": "7.8.5",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "3",
+ "d3-axis": "3",
+ "d3-brush": "3",
+ "d3-chord": "3",
+ "d3-color": "3",
+ "d3-contour": "4",
+ "d3-delaunay": "6",
+ "d3-dispatch": "3",
+ "d3-drag": "3",
+ "d3-dsv": "3",
+ "d3-ease": "3",
+ "d3-fetch": "3",
+ "d3-force": "3",
+ "d3-format": "3",
+ "d3-geo": "3",
+ "d3-hierarchy": "3",
+ "d3-interpolate": "3",
+ "d3-path": "3",
+ "d3-polygon": "3",
+ "d3-quadtree": "3",
+ "d3-random": "3",
+ "d3-scale": "4",
+ "d3-scale-chromatic": "3",
+ "d3-selection": "3",
+ "d3-shape": "3",
+ "d3-time": "3",
+ "d3-time-format": "4",
+ "d3-timer": "3",
+ "d3-transition": "3",
+ "d3-zoom": "3"
+ },
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "license": "ISC",
"dependencies": {
- "ms": "2.1.2"
+ "internmap": "1 - 2"
},
"engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "node": ">=12"
}
},
- "node_modules/debuglog": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
- "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
+ "node_modules/d3-axis": {
+ "version": "3.0.0",
+ "license": "ISC",
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true,
+ "node_modules/d3-brush": {
+ "version": "3.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "3",
+ "d3-transition": "3"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dev": true,
+ "node_modules/d3-chord": {
+ "version": "3.0.1",
+ "license": "ISC",
"dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
+ "d3-path": "1 - 3"
},
"engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "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/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true,
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "license": "ISC",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
- },
- "node_modules/decode-named-character-reference": {
- "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==",
+ "node_modules/d3-contour": {
+ "version": "4.0.2",
+ "license": "ISC",
"dependencies": {
- "character-entities": "^2.0.0"
+ "d3-array": "^3.2.0"
},
- "funding": {
- "type": "github",
- "url": "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/sponsors/wooorm"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
- "node_modules/deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
- "dev": true,
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "license": "ISC",
"dependencies": {
- "type-detect": "^4.0.0"
+ "delaunator": "5"
},
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "node_modules/d3-dispatch": {
+ "version": "3.0.1",
+ "license": "ISC",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/defaults": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
- "dev": true,
+ "node_modules/d3-drag": {
+ "version": "3.0.0",
+ "license": "ISC",
"dependencies": {
- "clone": "^1.0.2"
+ "d3-dispatch": "1 - 3",
+ "d3-selection": "3"
},
- "funding": {
- "url": "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/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "dev": true,
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "license": "ISC",
"dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
}
},
- "node_modules/define-lazy-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
- "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
- "dev": true,
+ "node_modules/d3-dsv/node_modules/commander": {
+ "version": "7.2.0",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 10"
}
},
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
+ "node_modules/d3-dsv/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "license": "MIT",
"dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
- "funding": {
- "url": "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/sponsors/ljharb"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
"engines": {
- "node": ">=0.4.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
- "dev": true
- },
- "node_modules/deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "node_modules/d3-ease": {
+ "version": "3.0.1",
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/detect-indent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
- "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
- "dev": true,
+ "node_modules/d3-fetch": {
+ "version": "3.0.1",
+ "license": "ISC",
+ "dependencies": {
+ "d3-dsv": "1 - 3"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/detect-node-es": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
- "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
- },
- "node_modules/dezalgo": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
- "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
- "dev": true,
+ "node_modules/d3-force": {
+ "version": "3.0.0",
+ "license": "ISC",
"dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "node_modules/diff": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
- "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
+ "d3-dispatch": "1 - 3",
+ "d3-quadtree": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
"engines": {
- "node": ">=0.3.1"
+ "node": ">=12"
}
},
- "node_modules/diff-sequences": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
- "dev": true,
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "license": "ISC",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=12"
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
+ "node_modules/d3-geo": {
+ "version": "3.1.0",
+ "license": "ISC",
"dependencies": {
- "path-type": "^4.0.0"
+ "d3-array": "2.5.0 - 3"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
+ "node_modules/d3-hierarchy": {
+ "version": "3.1.2",
+ "license": "ISC",
"engines": {
- "node": ">=6.0.0"
+ "node": ">=12"
}
},
- "node_modules/domexception": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
- "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
- "deprecated": "Use your platform's native DOMException instead",
- "dev": true,
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "license": "ISC",
"dependencies": {
- "webidl-conversions": "^7.0.0"
+ "d3-color": "1 - 3"
},
"engines": {
"node": ">=12"
}
},
- "node_modules/dot-prop": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
- "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
- "dev": true,
- "dependencies": {
- "is-obj": "^2.0.0"
- },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "license": "ISC",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "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/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/dotenv": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
- "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
- "dev": true,
+ "node_modules/d3-polygon": {
+ "version": "3.0.1",
+ "license": "ISC",
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
- "node_modules/duplexer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
- "dev": true
- },
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
+ "node_modules/d3-quadtree": {
+ "version": "3.0.1",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/editions": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz",
- "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==",
- "dev": true,
+ "node_modules/d3-random": {
+ "version": "3.0.1",
+ "license": "ISC",
"engines": {
- "node": ">=0.8"
+ "node": ">=12"
}
},
- "node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "dev": true,
+ "node_modules/d3-sankey": {
+ "version": "0.12.3",
+ "license": "BSD-3-Clause",
"dependencies": {
- "jake": "^10.8.5"
- },
- "bin": {
- "ejs": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
+ "d3-array": "1 - 2",
+ "d3-shape": "^1.2.0"
}
},
- "node_modules/electron-to-chromium": {
- "version": "1.4.651",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.651.tgz",
- "integrity": "sha512-jjks7Xx+4I7dslwsbaFocSwqBbGHQmuXBJUK9QBZTIrzPq3pzn6Uf2szFSP728FtLYE3ldiccmlkOM/zhGKCpA==",
- "dev": true
+ "node_modules/d3-sankey/node_modules/d3-array": {
+ "version": "2.12.1",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
},
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "node_modules/d3-sankey/node_modules/d3-path": {
+ "version": "1.0.9",
+ "license": "BSD-3-Clause"
},
- "node_modules/encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-sankey/node_modules/d3-shape": {
+ "version": "1.3.7",
+ "license": "BSD-3-Clause",
"dependencies": {
- "iconv-lite": "^0.6.2"
+ "d3-path": "1"
}
},
- "node_modules/encoding/node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dev": true,
- "optional": true,
+ "node_modules/d3-sankey/node_modules/internmap": {
+ "version": "1.0.1",
+ "license": "ISC"
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "license": "ISC",
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.0.0",
+ "license": "ISC",
"dependencies": {
- "once": "^1.4.0"
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/enquirer": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
- "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
- "dev": true,
+ "node_modules/d3-selection": {
+ "version": "3.0.0",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "license": "ISC",
"dependencies": {
- "ansi-colors": "^4.1.1"
+ "d3-path": "^3.1.0"
},
"engines": {
- "node": ">=8.6"
+ "node": ">=12"
}
},
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "engines": {
- "node": ">=0.12"
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "2 - 3"
},
- "funding": {
- "url": "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/fb55/entities?sponsor=1"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "license": "ISC",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/envinfo": {
- "version": "7.11.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
- "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
- "dev": true,
- "bin": {
- "envinfo": "dist/cli.js"
- },
+ "node_modules/d3-timer": {
+ "version": "3.0.1",
+ "license": "ISC",
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/err-code": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
- "dev": true
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
+ "node_modules/d3-transition": {
+ "version": "3.0.1",
+ "license": "ISC",
"dependencies": {
- "is-arrayish": "^0.2.1"
+ "d3-color": "1 - 3",
+ "d3-dispatch": "1 - 3",
+ "d3-ease": "1 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-timer": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "d3-selection": "2 - 3"
}
},
- "node_modules/es-abstract": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
- "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
- "dev": true,
+ "node_modules/d3-zoom": {
+ "version": "3.0.0",
+ "license": "ISC",
"dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.2",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.5",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.2",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.12",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "safe-array-concat": "^1.0.1",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.8",
- "string.prototype.trimend": "^1.0.7",
- "string.prototype.trimstart": "^1.0.7",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.13"
+ "d3-dispatch": "1 - 3",
+ "d3-drag": "2 - 3",
+ "d3-interpolate": "1 - 3",
+ "d3-selection": "2 - 3",
+ "d3-transition": "2 - 3"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
+ "node": ">=12"
}
},
- "node_modules/es-iterator-helpers": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz",
- "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==",
- "dev": true,
+ "node_modules/dagre-d3-es": {
+ "version": "7.0.10",
+ "license": "MIT",
"dependencies": {
- "asynciterator.prototype": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.1",
- "es-set-tostringtag": "^2.0.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "iterator.prototype": "^1.1.2",
- "safe-array-concat": "^1.0.1"
+ "d3": "^7.8.2",
+ "lodash-es": "^4.17.21"
}
},
- "node_modules/es-set-tostringtag": {
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/dargs": {
+ "version": "7.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dash-get": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/data-uri-to-buffer": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
- "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
+ "license": "MIT"
+ },
+ "node_modules/data-urls": {
+ "version": "4.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.2",
- "has-tostringtag": "^1.0.0",
- "hasown": "^2.0.0"
+ "abab": "^2.0.6",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^12.0.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=14"
}
},
- "node_modules/es-shim-unscopables": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
- "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "node_modules/dateformat": {
+ "version": "3.0.3",
"dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": "*"
}
},
- "node_modules/es-to-primitive": {
+ "node_modules/dayjs": {
+ "version": "1.11.10",
+ "license": "MIT"
+ },
+ "node_modules/debounce": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/debuglog": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=0.10.0"
},
"funding": {
- "url": "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/sponsors/ljharb"
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/esbuild": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
- "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+ "node_modules/decamelize-keys/node_modules/map-obj": {
+ "version": "1.0.1",
"dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
},
- "optionalDependencies": {
- "@esbuild/android-arm": "0.18.20",
- "@esbuild/android-arm64": "0.18.20",
- "@esbuild/android-x64": "0.18.20",
- "@esbuild/darwin-arm64": "0.18.20",
- "@esbuild/darwin-x64": "0.18.20",
- "@esbuild/freebsd-arm64": "0.18.20",
- "@esbuild/freebsd-x64": "0.18.20",
- "@esbuild/linux-arm": "0.18.20",
- "@esbuild/linux-arm64": "0.18.20",
- "@esbuild/linux-ia32": "0.18.20",
- "@esbuild/linux-loong64": "0.18.20",
- "@esbuild/linux-mips64el": "0.18.20",
- "@esbuild/linux-ppc64": "0.18.20",
- "@esbuild/linux-riscv64": "0.18.20",
- "@esbuild/linux-s390x": "0.18.20",
- "@esbuild/linux-x64": "0.18.20",
- "@esbuild/netbsd-x64": "0.18.20",
- "@esbuild/openbsd-x64": "0.18.20",
- "@esbuild/sunos-x64": "0.18.20",
- "@esbuild/win32-arm64": "0.18.20",
- "@esbuild/win32-ia32": "0.18.20",
- "@esbuild/win32-x64": "0.18.20"
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
}
},
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/deep-eql": {
+ "version": "4.1.3",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-detect": "^4.0.0"
+ },
"engines": {
"node": ">=6"
}
},
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^1.0.2"
},
"funding": {
"url": "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/sponsors/sindresorhus"
}
},
- "node_modules/escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
},
"engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
+ "node": ">= 0.4"
}
},
- "node_modules/eslint": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
- "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
"dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.56.0",
- "@humanwhocodes/config-array": "^0.11.13",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=8"
}
},
- "node_modules/eslint-config-react-app": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz",
- "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==",
+ "node_modules/define-properties": {
+ "version": "1.2.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/core": "^7.16.0",
- "@babel/eslint-parser": "^7.16.3",
- "@rushstack/eslint-patch": "^1.1.0",
- "@typescript-eslint/eslint-plugin": "^5.5.0",
- "@typescript-eslint/parser": "^5.5.0",
- "babel-preset-react-app": "^10.0.1",
- "confusing-browser-globals": "^1.0.11",
- "eslint-plugin-flowtype": "^8.0.3",
- "eslint-plugin-import": "^2.25.3",
- "eslint-plugin-jest": "^25.3.0",
- "eslint-plugin-jsx-a11y": "^6.5.1",
- "eslint-plugin-react": "^7.27.1",
- "eslint-plugin-react-hooks": "^4.3.0",
- "eslint-plugin-testing-library": "^5.0.1"
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">= 0.4"
},
- "peerDependencies": {
- "eslint": "^8.0.0"
+ "funding": {
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
- "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
- "dev": true,
+ "node_modules/delaunator": {
+ "version": "5.0.1",
+ "license": "ISC",
"dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.13.0",
- "resolve": "^1.22.4"
+ "robust-predicates": "^3.0.2"
}
},
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
"dev": true,
- "dependencies": {
- "ms": "^2.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
}
},
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "node_modules/delegates": {
+ "version": "1.0.0",
"dev": true,
- "dependencies": {
- "debug": "^3.2.7"
- },
+ "license": "MIT"
+ },
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "license": "MIT",
"engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
+ "node": ">=6"
}
},
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/detect-indent": {
+ "version": "6.1.0",
"dev": true,
- "dependencies": {
- "ms": "^2.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/eslint-plugin-flowtype": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz",
- "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==",
- "dev": true,
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "license": "MIT",
"dependencies": {
- "lodash": "^4.17.21",
- "string-natural-compare": "^3.0.1"
- },
- "engines": {
- "node": ">=12.0.0"
+ "dequal": "^2.0.0"
},
- "peerDependencies": {
- "@babel/plugin-syntax-flow": "^7.14.5",
- "@babel/plugin-transform-react-jsx": "^7.14.9",
- "eslint": "^8.1.0"
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
}
},
- "node_modules/eslint-plugin-import": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
- "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+ "node_modules/dezalgo": {
+ "version": "1.0.4",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlastindex": "^1.2.3",
- "array.prototype.flat": "^1.3.2",
- "array.prototype.flatmap": "^1.3.2",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "hasown": "^2.0.0",
- "is-core-module": "^2.13.1",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.7",
- "object.groupby": "^1.0.1",
- "object.values": "^1.1.7",
- "semver": "^6.3.1",
- "tsconfig-paths": "^3.15.0"
- },
+ "asap": "^2.0.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/diff": {
+ "version": "5.1.0",
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ "node": ">=0.3.1"
}
},
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
"dev": true,
- "dependencies": {
- "ms": "^2.1.1"
+ "license": "MIT",
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esutils": "^2.0.2"
+ "path-type": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/eslint-plugin-import/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "node_modules/dlv": {
+ "version": "1.1.3",
"dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
+ "license": "MIT"
},
- "node_modules/eslint-plugin-jest": {
- "version": "25.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz",
- "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==",
+ "node_modules/docs": {
+ "resolved": "docs",
+ "link": true
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@typescript-eslint/experimental-utils": "^5.0.0"
+ "esutils": "^2.0.2"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- },
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/domexception": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "webidl-conversions": "^7.0.0"
},
- "peerDependenciesMeta": {
- "@typescript-eslint/eslint-plugin": {
- "optional": true
- },
- "jest": {
- "optional": true
- }
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/eslint-plugin-jsx-a11y": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz",
- "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==",
+ "node_modules/dompurify": {
+ "version": "3.0.8",
+ "license": "(MPL-2.0 OR Apache-2.0)"
+ },
+ "node_modules/dot-prop": {
+ "version": "6.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.23.2",
- "aria-query": "^5.3.0",
- "array-includes": "^3.1.7",
- "array.prototype.flatmap": "^1.3.2",
- "ast-types-flow": "^0.0.8",
- "axe-core": "=4.7.0",
- "axobject-query": "^3.2.1",
- "damerau-levenshtein": "^1.0.8",
- "emoji-regex": "^9.2.2",
- "es-iterator-helpers": "^1.0.15",
- "hasown": "^2.0.0",
- "jsx-ast-utils": "^3.3.5",
- "language-tags": "^1.0.9",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.7",
- "object.fromentries": "^2.0.7"
+ "is-obj": "^2.0.0"
},
"engines": {
- "node": ">=4.0"
+ "node": ">=10"
},
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/eslint-plugin-react": {
- "version": "7.33.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz",
- "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flatmap": "^1.3.1",
- "array.prototype.tosorted": "^1.1.1",
- "doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.12",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.6",
- "object.fromentries": "^2.0.6",
- "object.hasown": "^1.1.2",
- "object.values": "^1.1.6",
- "prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.4",
- "semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.8"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
- "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
+ "node_modules/dotenv": {
+ "version": "10.0.0",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
}
},
- "node_modules/eslint-plugin-react/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "license": "MIT"
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
"dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "MIT"
},
- "node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "node_modules/ejs": {
+ "version": "3.1.9",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
+ "jake": "^10.8.5"
},
"bin": {
- "resolve": "bin/resolve"
+ "ejs": "bin/cli.js"
},
- "funding": {
- "url": "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/sponsors/ljharb"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/eslint-plugin-react/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.623",
+ "license": "ISC"
+ },
+ "node_modules/elkjs": {
+ "version": "0.9.1",
+ "license": "EPL-2.0"
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
"dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "license": "MIT"
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
- "node_modules/eslint-plugin-testing-library": {
- "version": "5.11.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz",
- "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==",
+ "node_modules/encoding": {
+ "version": "0.1.13",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@typescript-eslint/utils": "^5.58.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0",
- "npm": ">=6"
- },
- "peerDependencies": {
- "eslint": "^7.5.0 || ^8.0.0"
+ "iconv-lite": "^0.6.2"
}
},
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/eslint-scope/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
"dev": true,
- "engines": {
- "node": ">=4.0"
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "node_modules/enquirer": {
+ "version": "2.3.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "ansi-colors": "^4.1.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "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/fb55/entities?sponsor=1"
}
},
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "node_modules/env-paths": {
+ "version": "2.2.1",
"dev": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=6"
}
},
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "node_modules/envinfo": {
+ "version": "7.11.0",
"dev": true,
+ "license": "MIT",
"bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
+ "envinfo": "dist/cli.js"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "node_modules/err-code": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
+ "is-arrayish": "^0.2.1"
}
},
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "node_modules/es-abstract": {
+ "version": "1.22.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "estraverse": "^5.2.0"
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.5",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.2",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.13"
},
"engines": {
- "node": ">=4.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.15",
"dev": true,
- "engines": {
- "node": ">=4.0"
+ "license": "MIT",
+ "dependencies": {
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.0.1"
}
},
- "node_modules/estree-walker": {
- "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==",
- "dev": true
+ "node_modules/es-module-lexer": {
+ "version": "1.4.1",
+ "license": "MIT",
+ "peer": true
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.2",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "has-tostringtag": "^1.0.0",
+ "hasown": "^2.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 0.4"
}
},
- "node_modules/eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
- "dev": true
- },
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "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/sindresorhus/execa?sponsor=1"
+ "hasown": "^2.0.0"
}
},
- "node_modules/execa/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/exponential-backoff": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz",
- "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==",
- "dev": true
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "node_modules/external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
},
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/external-editor/node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "node_modules/esbuild": {
+ "version": "0.18.20",
"dev": true,
- "dependencies": {
- "os-tmpdir": "~1.0.2"
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=0.6.0"
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.18.20",
+ "@esbuild/android-arm64": "0.18.20",
+ "@esbuild/android-x64": "0.18.20",
+ "@esbuild/darwin-arm64": "0.18.20",
+ "@esbuild/darwin-x64": "0.18.20",
+ "@esbuild/freebsd-arm64": "0.18.20",
+ "@esbuild/freebsd-x64": "0.18.20",
+ "@esbuild/linux-arm": "0.18.20",
+ "@esbuild/linux-arm64": "0.18.20",
+ "@esbuild/linux-ia32": "0.18.20",
+ "@esbuild/linux-loong64": "0.18.20",
+ "@esbuild/linux-mips64el": "0.18.20",
+ "@esbuild/linux-ppc64": "0.18.20",
+ "@esbuild/linux-riscv64": "0.18.20",
+ "@esbuild/linux-s390x": "0.18.20",
+ "@esbuild/linux-x64": "0.18.20",
+ "@esbuild/netbsd-x64": "0.18.20",
+ "@esbuild/openbsd-x64": "0.18.20",
+ "@esbuild/sunos-x64": "0.18.20",
+ "@esbuild/win32-arm64": "0.18.20",
+ "@esbuild/win32-ia32": "0.18.20",
+ "@esbuild/win32-x64": "0.18.20"
}
},
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "license": "MIT",
"engines": {
- "node": ">=8.6.0"
+ "node": ">=6"
}
},
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "license": "MIT",
"engines": {
- "node": ">= 6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/fast-json-stable-stringify": {
+ "node_modules/escodegen": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
- "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "reusify": "^1.0.4"
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
}
},
- "node_modules/fflate": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz",
- "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw=="
- },
- "node_modules/figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "node_modules/eslint": {
+ "version": "8.56.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "escape-string-regexp": "^1.0.5"
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
},
"engines": {
- "node": ">=8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "url": "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/sponsors/sindresorhus"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/figures/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/eslint-config-next": {
+ "version": "14.1.0",
"dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "license": "MIT",
+ "dependencies": {
+ "@next/eslint-plugin-next": "14.1.0",
+ "@rushstack/eslint-patch": "^1.3.3",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "node_modules/eslint-config-react-app": {
+ "version": "7.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "@babel/core": "^7.16.0",
+ "@babel/eslint-parser": "^7.16.3",
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@typescript-eslint/eslint-plugin": "^5.5.0",
+ "@typescript-eslint/parser": "^5.5.0",
+ "babel-preset-react-app": "^10.0.1",
+ "confusing-browser-globals": "^1.0.11",
+ "eslint-plugin-flowtype": "^8.0.3",
+ "eslint-plugin-import": "^2.25.3",
+ "eslint-plugin-jest": "^25.3.0",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-react": "^7.27.1",
+ "eslint-plugin-react-hooks": "^4.3.0",
+ "eslint-plugin-testing-library": "^5.0.1"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.0.0"
}
},
- "node_modules/filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "minimatch": "^5.0.1"
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
}
},
- "node_modules/filelist/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "ms": "^2.1.1"
}
},
- "node_modules/filelist/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.1",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "debug": "^4.3.4",
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3"
},
"engines": {
- "node": ">=10"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*"
}
},
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "to-regex-range": "^5.0.1"
+ "debug": "^3.2.7"
},
"engines": {
- "node": ">=8"
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-flowtype": {
+ "version": "8.0.3",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "lodash": "^4.17.21",
+ "string-natural-compare": "^3.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12.0.0"
},
- "funding": {
- "url": "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/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@babel/plugin-syntax-flow": "^7.14.5",
+ "@babel/plugin-transform-react-jsx": "^7.14.9",
+ "eslint": "^8.1.0"
}
},
- "node_modules/find-yarn-workspace-root": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
- "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "micromatch": "^4.0.2"
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
}
},
- "node_modules/flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
"dev": true,
- "bin": {
- "flat": "cli.js"
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
}
},
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "esutils": "^2.0.2"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
- "dev": true
- },
- "node_modules/focus-trap": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz",
- "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
"dev": true,
- "dependencies": {
- "tabbable": "^6.2.0"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "node_modules/follow-redirects": {
- "version": "1.15.5",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
- "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "node_modules/eslint-plugin-jest": {
+ "version": "25.7.0",
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "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/sponsors/RubenVerborgh"
- }
- ],
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/experimental-utils": "^5.0.0"
+ },
"engines": {
- "node": ">=4.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
- "debug": {
+ "@typescript-eslint/eslint-plugin": {
+ "optional": true
+ },
+ "jest": {
"optional": true
}
}
},
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.8.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^4.0.1"
+ "@babel/runtime": "^7.23.2",
+ "aria-query": "^5.3.0",
+ "array-includes": "^3.1.7",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "=4.7.0",
+ "axobject-query": "^3.2.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.15",
+ "hasown": "^2.0.0",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.7",
+ "object.fromentries": "^2.0.7"
},
"engines": {
- "node": ">=14"
+ "node": ">=4.0"
},
- "funding": {
- "url": "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/sponsors/isaacs"
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "node_modules/eslint-plugin-react": {
+ "version": "7.33.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
},
"engines": {
- "node": ">= 6"
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
- },
- "node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
"dev": true,
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
+ "license": "MIT",
"engines": {
"node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
}
},
- "node_modules/fs-minipass": {
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "minipass": "^3.0.0"
+ "esutils": "^2.0.2"
},
"engines": {
- "node": ">= 8"
+ "node": ">=0.10.0"
}
},
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "yallist": "^4.0.0"
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
},
- "engines": {
- "node": ">=8"
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/fs-minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
"dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "node_modules/eslint-plugin-testing-library": {
+ "version": "5.11.1",
"dev": true,
- "funding": {
- "url": "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/sponsors/ljharb"
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^5.58.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "eslint": "^7.5.0 || ^8.0.0"
}
},
- "node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
- "dev": true,
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "license": "BSD-2-Clause",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
+ "node": ">=8.0.0"
}
},
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "node_modules/eslint-scope/node_modules/estraverse": {
+ "version": "4.3.0",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
"dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
"funding": {
- "url": "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/sponsors/ljharb"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/gauge": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
- "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.3",
- "console-control-strings": "^1.1.0",
- "has-unicode": "^2.0.1",
- "signal-exit": "^3.0.7",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.5"
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/gauge/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/gauge/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/gauge/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/espree": {
+ "version": "9.6.1",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
},
"engines": {
- "node": ">=8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/gensync": {
- "version": "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==",
- "dev": true,
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=4"
}
},
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "node_modules/esquery": {
+ "version": "1.5.0",
"dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": ">=0.10"
}
},
- "node_modules/get-func-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
- "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
- "dev": true,
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
"engines": {
- "node": "*"
+ "node": ">=4.0"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
- "dev": true,
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-util-attach-comments": {
+ "version": "2.1.1",
+ "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "@types/estree": "^1.0.0"
},
"funding": {
- "url": "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/sponsors/ljharb"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/get-nonce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
- "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
- "engines": {
- "node": ">=6"
+ "node_modules/estree-util-build-jsx": {
+ "version": "2.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "estree-walker": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/get-pkg-repo": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz",
- "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==",
- "dev": true,
+ "node_modules/estree-util-build-jsx/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
- "@hutson/parse-repository-url": "^3.0.0",
- "hosted-git-info": "^4.0.0",
- "through2": "^2.0.0",
- "yargs": "^16.2.0"
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-to-js": {
+ "version": "1.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "astring": "^1.8.0",
+ "source-map": "^0.7.0"
},
- "bin": {
- "get-pkg-repo": "src/cli.js"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-util-to-js/node_modules/source-map": {
+ "version": "0.7.4",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/estree-util-value-to-estree": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-obj": "^3.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=12.0.0"
}
},
- "node_modules/get-pkg-repo/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "node_modules/estree-util-value-to-estree/node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
},
- "node_modules/get-pkg-repo/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
+ "node_modules/estree-util-visit": {
+ "version": "1.2.1",
+ "license": "MIT",
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "@types/estree-jsx": "^1.0.0",
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/get-pkg-repo/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/get-pkg-repo/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "node_modules/esutils": {
+ "version": "2.0.3",
"dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/get-pkg-repo/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
"dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
+ "license": "MIT"
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.x"
}
},
- "node_modules/get-port": {
+ "node_modules/execa": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
- "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"funding": {
- "url": "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/sponsors/sindresorhus"
+ "url": "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/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
+ "node_modules/exit-hook": {
+ "version": "2.2.1",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=6"
},
"funding": {
"url": "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/sponsors/sindresorhus"
}
},
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "node_modules/exponential-backoff": {
+ "version": "3.1.1",
"dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "is-extendable": "^0.1.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
+ "node": ">=0.10.0"
}
},
- "node_modules/git-raw-commits": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz",
- "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==",
- "dev": true,
- "dependencies": {
- "dargs": "^7.0.0",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
- },
- "bin": {
- "git-raw-commits": "cli.js"
- },
+ "node_modules/extend-shallow/node_modules/is-extendable": {
+ "version": "0.1.1",
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
}
},
- "node_modules/git-remote-origin-url": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
- "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==",
+ "node_modules/external-editor": {
+ "version": "3.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "gitconfiglocal": "^1.0.0",
- "pify": "^2.3.0"
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/git-remote-origin-url/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "node_modules/external-editor/node_modules/tmp": {
+ "version": "0.0.33",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=0.6.0"
}
},
- "node_modules/git-semver-tags": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
- "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "meow": "^8.0.0",
- "semver": "^6.0.0"
- },
- "bin": {
- "git-semver-tags": "cli.js"
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/git-semver-tags/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "node": ">=8.6.0"
}
},
- "node_modules/git-up": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz",
- "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==",
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "is-ssh": "^1.4.0",
- "parse-url": "^8.1.0"
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/git-url-parse": {
- "version": "13.1.1",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz",
- "integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==",
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
"dev": true,
- "dependencies": {
- "git-up": "^7.0.0"
- }
+ "license": "MIT"
},
- "node_modules/gitconfiglocal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
- "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==",
+ "node_modules/fastq": {
+ "version": "1.16.0",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "ini": "^1.3.2"
+ "reusify": "^1.0.4"
}
},
- "node_modules/github-buttons": {
- "version": "2.27.0",
- "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.27.0.tgz",
- "integrity": "sha512-PmfRMI2Rttg/2jDfKBeSl621sEznrsKF019SuoLdoNlO7qRUZaOyEI5Li4uW+79pVqnDtKfIEVuHTIJ5lgy64w=="
+ "node_modules/fflate": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz",
+ "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw=="
},
- "node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "node_modules/figures": {
+ "version": "3.2.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
+ "escape-string-regexp": "^1.0.5"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=8"
},
"funding": {
- "url": "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/sponsors/isaacs"
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-glob": "^4.0.3"
+ "flat-cache": "^3.0.4"
},
"engines": {
- "node": ">=10.13.0"
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/glob/node_modules/brace-expansion": {
+ "node_modules/filelist": {
+ "version": "1.0.4",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "minimatch": "^5.0.1"
+ }
+ },
+ "node_modules/filelist/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
- "node_modules/glob/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "node_modules/filelist/node_modules/minimatch": {
+ "version": "5.1.6",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "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/sponsors/isaacs"
+ "node": ">=10"
}
},
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
- "type-fest": "^0.20.2"
+ "to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
- },
- "funding": {
- "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/globals/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "node_modules/find-up": {
+ "version": "5.0.0",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
"engines": {
"node": ">=10"
},
@@ -10534,156 +9500,211 @@
"url": "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/sponsors/sindresorhus"
}
},
- "node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "node_modules/find-yarn-workspace-root": {
+ "version": "2.0.0",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
+ "micromatch": "^4.0.2"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "node_modules/flat": {
+ "version": "5.0.2",
"dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "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/sponsors/sindresorhus"
+ "license": "BSD-3-Clause",
+ "bin": {
+ "flat": "cli.js"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.1.3"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
},
- "funding": {
- "url": "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/sponsors/ljharb"
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/graceful-fs": {
- "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==",
- "dev": true
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "dev": true,
+ "license": "ISC"
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
+ "node_modules/flexsearch": {
+ "version": "0.7.43",
+ "license": "Apache-2.0"
},
- "node_modules/handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "node_modules/focus-visible": {
+ "version": "5.2.0",
+ "license": "W3C"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.4",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.2",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "handlebars": "bin/handlebars"
- },
+ "funding": [
+ {
+ "type": "individual",
+ "url": "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/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": ">=0.4.7"
+ "node": ">=4.0"
},
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
}
},
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+ "node_modules/for-each": {
+ "version": "0.3.3",
"dev": true,
- "engines": {
- "node": ">=6"
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
}
},
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
"funding": {
- "url": "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/sponsors/ljharb"
+ "url": "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/sponsors/isaacs"
}
},
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
"dev": true,
+ "license": "ISC",
"engines": {
- "node": ">=8"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "node_modules/form-data": {
+ "version": "4.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.2"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
},
- "funding": {
- "url": "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/sponsors/ljharb"
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
+ "node": "*"
},
"funding": {
- "url": "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/sponsors/ljharb"
+ "type": "patreon",
+ "url": "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/sponsors/rawify"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "node_modules/framer-motion": {
+ "version": "10.18.0",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
},
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/ljharb"
}
},
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-symbols": "^1.0.2"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
},
"engines": {
"node": ">= 0.4"
@@ -10692,153 +9713,932 @@
"url": "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/sponsors/ljharb"
}
},
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
- "dev": true
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
},
- "node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "node_modules/gauge": {
+ "version": "4.0.4",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "function-bind": "^1.1.2"
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/hast-util-embedded": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz",
- "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-is-element": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/hast-util-embedded/node_modules/@types/hast": {
- "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": "*"
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/hast-util-from-dom": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-4.2.0.tgz",
- "integrity": "sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==",
+ "node_modules/get-func-name": {
+ "version": "2.0.2",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "hastscript": "^7.0.0",
- "web-namespaces": "^2.0.0"
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/hast-util-from-parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz",
- "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==",
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-pkg-repo": {
+ "version": "4.2.1",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "hastscript": "^7.0.0",
- "property-information": "^6.0.0",
- "vfile": "^5.0.0",
- "vfile-location": "^4.0.0",
- "web-namespaces": "^2.0.0"
+ "@hutson/parse-repository-url": "^3.0.0",
+ "hosted-git-info": "^4.0.0",
+ "through2": "^2.0.0",
+ "yargs": "^16.2.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "bin": {
+ "get-pkg-repo": "src/cli.js"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/hast-util-has-property": {
- "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==",
+ "node_modules/get-pkg-repo/node_modules/isarray": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/get-pkg-repo/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "node_modules/hast-util-has-property/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "node_modules/get-pkg-repo/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/get-pkg-repo/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/unist": "*"
+ "safe-buffer": "~5.1.0"
}
},
- "node_modules/hast-util-is-body-ok-link": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.0.tgz",
- "integrity": "sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==",
+ "node_modules/get-pkg-repo/node_modules/through2": {
+ "version": "2.0.5",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^3.0.0"
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "5.1.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/hast-util-is-body-ok-link/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "node_modules/get-source": {
+ "version": "2.0.12",
+ "license": "Unlicense",
"dependencies": {
- "@types/unist": "*"
+ "data-uri-to-buffer": "^2.0.0",
+ "source-map": "^0.6.1"
}
},
- "node_modules/hast-util-is-element": {
- "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"
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/hast-util-is-element/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/unist": "*"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/hast-util-parse-selector": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz",
- "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==",
+ "node_modules/get-tsconfig": {
+ "version": "4.7.2",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0"
+ "resolve-pkg-maps": "^1.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "url": "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/privatenumber/get-tsconfig?sponsor=1"
}
},
- "node_modules/hast-util-phrasing": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz",
- "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==",
- "dependencies": {
+ "node_modules/git-raw-commits": {
+ "version": "2.0.11",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dargs": "^7.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "git-raw-commits": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/git-remote-origin-url": {
+ "version": "2.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/git-remote-origin-url/node_modules/pify": {
+ "version": "2.3.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/git-semver-tags": {
+ "version": "4.1.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "meow": "^8.0.0",
+ "semver": "^6.0.0"
+ },
+ "bin": {
+ "git-semver-tags": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/git-semver-tags/node_modules/semver": {
+ "version": "6.3.1",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/git-up": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "is-ssh": "^1.4.0",
+ "parse-url": "^8.1.0"
+ }
+ },
+ "node_modules/git-url-parse": {
+ "version": "13.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "git-up": "^7.0.0"
+ }
+ },
+ "node_modules/gitconfiglocal": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "BSD",
+ "dependencies": {
+ "ini": "^1.3.2"
+ }
+ },
+ "node_modules/github-buttons": {
+ "version": "2.27.0",
+ "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.27.0.tgz",
+ "integrity": "sha512-PmfRMI2Rttg/2jDfKBeSl621sEznrsKF019SuoLdoNlO7qRUZaOyEI5Li4uW+79pVqnDtKfIEVuHTIJ5lgy64w=="
+ },
+ "node_modules/github-slugger": {
+ "version": "2.0.0",
+ "license": "ISC"
+ },
+ "node_modules/glob": {
+ "version": "10.3.10",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.3",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob/node_modules/minipass": {
+ "version": "7.0.4",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globals/node_modules/type-fest": {
+ "version": "0.20.2",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/gray-matter/node_modules/argparse": {
+ "version": "1.0.10",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/gray-matter/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/hard-rejection": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-unicode": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/hash-obj": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^3.0.0",
+ "sort-keys": "^5.0.0",
+ "type-fest": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hash-obj/node_modules/is-obj": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hash-obj/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hash-obj/node_modules/sort-keys": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-obj": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hash-obj/node_modules/type-fest": {
+ "version": "1.4.0",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-embedded": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-is-element": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-embedded/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-dom": {
+ "version": "4.2.0",
+ "license": "ISC",
+ "dependencies": {
+ "hastscript": "^7.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-dom": "^5.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unist-util-remove-position": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic/node_modules/hast-util-from-dom": {
+ "version": "5.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hastscript": "^8.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic/node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html-isomorphic/node_modules/hastscript": {
+ "version": "8.0.0",
+ "license": "MIT",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/hast-util-from-html/node_modules/hast-util-from-parse5": {
+ "version": "8.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^8.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/hastscript": {
+ "version": "8.0.0",
+ "license": "MIT",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/vfile": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/vfile-location": {
+ "version": "5.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-html/node_modules/vfile-message": {
+ "version": "4.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5": {
+ "version": "7.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/unist": "^2.0.0",
+ "hastscript": "^7.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^5.0.0",
+ "vfile-location": "^4.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-has-property": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-has-property/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-is-body-ok-link": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-body-ok-link/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "3.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-phrasing": {
+ "version": "3.0.1",
+ "license": "MIT",
+ "dependencies": {
"@types/hast": "^3.0.0",
"hast-util-embedded": "^3.0.0",
"hast-util-has-property": "^3.0.0",
@@ -10851,17 +10651,15 @@
}
},
"node_modules/hast-util-phrasing/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/hast-util-raw": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz",
- "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/parse5": "^6.0.0",
@@ -10882,13 +10680,44 @@
},
"node_modules/hast-util-raw/node_modules/parse5": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+ "license": "MIT"
+ },
+ "node_modules/hast-util-to-estree": {
+ "version": "2.3.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/unist": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "estree-util-attach-comments": "^2.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "hast-util-whitespace": "^2.0.0",
+ "mdast-util-mdx-expression": "^1.0.0",
+ "mdast-util-mdxjs-esm": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.4.1",
+ "unist-util-position": "^4.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-estree/node_modules/hast-util-whitespace": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
"node_modules/hast-util-to-html": {
"version": "8.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz",
- "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/unist": "^2.0.0",
@@ -10909,8 +10738,7 @@
},
"node_modules/hast-util-to-html/node_modules/hast-util-whitespace": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
- "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -10918,8 +10746,7 @@
},
"node_modules/hast-util-to-mdast": {
"version": "8.4.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-8.4.1.tgz",
- "integrity": "sha512-tfmBLASuCgyhCzpkTXM5kU8xeuS5jkMZ17BYm2YftGT5wvgc7uHXTZ/X8WfNd6F5NV/IGmrLsuahZ+jXQir4zQ==",
+ "license": "MIT",
"dependencies": {
"@types/extend": "^3.0.0",
"@types/hast": "^2.0.0",
@@ -10944,8 +10771,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/hast-util-embedded": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-2.0.1.tgz",
- "integrity": "sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==",
+ "license": "MIT",
"dependencies": {
"hast-util-is-element": "^2.0.0"
},
@@ -10956,8 +10782,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/hast-util-has-property": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.1.tgz",
- "integrity": "sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -10965,8 +10790,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/hast-util-is-body-ok-link": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-2.0.0.tgz",
- "integrity": "sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"hast-util-has-property": "^2.0.0",
@@ -10979,8 +10803,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/hast-util-is-element": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz",
- "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/unist": "^2.0.0"
@@ -10992,8 +10815,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/hast-util-phrasing": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-2.0.2.tgz",
- "integrity": "sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"hast-util-embedded": "^2.0.0",
@@ -11008,8 +10830,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/hast-util-whitespace": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
- "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -11017,8 +10838,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/rehype-minify-whitespace": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-5.0.1.tgz",
- "integrity": "sha512-PPp4lWJiBPlePI/dv1BeYktbwkfgXkrK59MUa+tYbMPgleod+4DvFK2PLU0O0O60/xuhHfiR9GUIUlXTU8sRIQ==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"hast-util-embedded": "^2.0.0",
@@ -11034,8 +10854,7 @@
},
"node_modules/hast-util-to-mdast/node_modules/unist-util-is": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -11046,8 +10865,7 @@
},
"node_modules/hast-util-to-parse5": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz",
- "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"comma-separated-tokens": "^2.0.0",
@@ -11063,8 +10881,7 @@
},
"node_modules/hast-util-to-text": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz",
- "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/unist": "^2.0.0",
@@ -11078,8 +10895,7 @@
},
"node_modules/hast-util-to-text/node_modules/hast-util-is-element": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz",
- "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/unist": "^2.0.0"
@@ -11091,8 +10907,7 @@
},
"node_modules/hast-util-whitespace": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0"
},
@@ -11102,17 +10917,15 @@
}
},
"node_modules/hast-util-whitespace/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
"@types/unist": "*"
}
},
"node_modules/hastscript": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz",
- "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"comma-separated-tokens": "^2.0.0",
@@ -11125,6 +10938,10 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/heap": {
+ "version": "0.2.7",
+ "license": "MIT"
+ },
"node_modules/hex-rgb": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz",
@@ -11138,9 +10955,8 @@
},
"node_modules/hosted-git-info": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -11150,9 +10966,8 @@
},
"node_modules/hosted-git-info/node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11162,15 +10977,13 @@
},
"node_modules/hosted-git-info/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/html-encoding-sniffer": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
- "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-encoding": "^2.0.0"
},
@@ -11178,10 +10991,13 @@
"node": ">=12"
}
},
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "license": "MIT"
+ },
"node_modules/html-void-elements": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
- "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -11189,8 +11005,7 @@
},
"node_modules/html-whitespace-sensitive-tag-names": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.0.tgz",
- "integrity": "sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -11198,15 +11013,13 @@
},
"node_modules/http-cache-semantics": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/http-proxy-agent": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@tootallnate/once": "2",
"agent-base": "6",
@@ -11218,9 +11031,8 @@
},
"node_modules/https-proxy-agent": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "6",
"debug": "4"
@@ -11231,27 +11043,24 @@
},
"node_modules/human-signals": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.17.0"
}
},
"node_modules/humanize-ms": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "^2.0.0"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -11261,8 +11070,6 @@
},
"node_modules/ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"dev": true,
"funding": [
{
@@ -11277,22 +11084,21 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/ignore-walk": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz",
- "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"minimatch": "^5.0.1"
},
@@ -11302,18 +11108,16 @@
},
"node_modules/ignore-walk/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/ignore-walk/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -11322,16 +11126,15 @@
}
},
"node_modules/immutable": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
- "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
- "dev": true
+ "version": "4.3.4",
+ "license": "MIT",
+ "optional": true,
+ "peer": true
},
"node_modules/import-fresh": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -11345,9 +11148,8 @@
},
"node_modules/import-local": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pkg-dir": "^4.2.0",
"resolve-cwd": "^3.0.0"
@@ -11364,33 +11166,29 @@
},
"node_modules/imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
},
"node_modules/indent-string": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/infer-owner": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -11398,21 +11196,18 @@
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/ini": {
"version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/init-package-json": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz",
- "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"npm-package-arg": "^9.0.1",
"promzard": "^0.3.0",
@@ -11428,9 +11223,8 @@
},
"node_modules/init-package-json/node_modules/hosted-git-info": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
@@ -11440,18 +11234,16 @@
},
"node_modules/init-package-json/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/init-package-json/node_modules/npm-package-arg": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^5.0.0",
"proc-log": "^2.0.1",
@@ -11462,11 +11254,14 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/inline-style-parser": {
+ "version": "0.1.1",
+ "license": "MIT"
+ },
"node_modules/inquirer": {
"version": "8.2.6",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz",
- "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-escapes": "^4.2.1",
"chalk": "^4.1.1",
@@ -11488,45 +11283,10 @@
"node": ">=12.0.0"
}
},
- "node_modules/inquirer/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/inquirer/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inquirer/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/internal-slot": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
- "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.2",
"hasown": "^2.0.0",
@@ -11536,25 +11296,53 @@
"node": ">= 0.4"
}
},
+ "node_modules/internmap": {
+ "version": "2.0.3",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/intersection-observer": {
+ "version": "0.12.2",
+ "license": "Apache-2.0"
+ },
"node_modules/invariant": {
"version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/ip": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz",
- "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
},
"node_modules/is-array-buffer": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.0",
@@ -11566,15 +11354,13 @@
},
"node_modules/is-arrayish": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-async-function": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
- "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -11587,9 +11373,8 @@
},
"node_modules/is-bigint": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-bigints": "^1.0.1"
},
@@ -11599,9 +11384,8 @@
},
"node_modules/is-binary-path": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -11611,9 +11395,8 @@
},
"node_modules/is-boolean-object": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -11627,8 +11410,6 @@
},
"node_modules/is-buffer": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
"funding": [
{
"type": "github",
@@ -11643,15 +11424,15 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/is-callable": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -11661,9 +11442,8 @@
},
"node_modules/is-ci": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ci-info": "^2.0.0"
},
@@ -11673,9 +11453,8 @@
},
"node_modules/is-core-module": {
"version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
},
@@ -11685,9 +11464,8 @@
},
"node_modules/is-date-object": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -11698,11 +11476,18 @@
"url": "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/sponsors/ljharb"
}
},
+ "node_modules/is-decimal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
"node_modules/is-docker": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -11715,8 +11500,7 @@
},
"node_modules/is-extendable": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4"
},
@@ -11726,8 +11510,7 @@
},
"node_modules/is-extendable/node_modules/is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -11737,18 +11520,16 @@
},
"node_modules/is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-finalizationregistry": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
- "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -11758,18 +11539,16 @@
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-generator-function": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -11782,9 +11561,8 @@
},
"node_modules/is-glob": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
@@ -11792,35 +11570,68 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container/node_modules/is-docker": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-interactive": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-lambda": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
- "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-map": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
- "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/ljharb"
}
},
"node_modules/is-negative-zero": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -11830,18 +11641,16 @@
},
"node_modules/is-number": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/is-number-object": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -11854,51 +11663,51 @@
},
"node_modules/is-obj": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-path-inside": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-plain-obj": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-plain-object": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-reference": {
+ "version": "3.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
},
"node_modules/is-regex": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -11912,18 +11721,16 @@
},
"node_modules/is-set": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
- "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/ljharb"
}
},
"node_modules/is-shared-array-buffer": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -11933,18 +11740,15 @@
},
"node_modules/is-ssh": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz",
- "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"protocols": "^2.0.1"
}
},
"node_modules/is-stream": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -11954,9 +11758,8 @@
},
"node_modules/is-string": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -11969,9 +11772,8 @@
},
"node_modules/is-symbol": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.2"
},
@@ -11984,9 +11786,8 @@
},
"node_modules/is-text-path": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
- "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"text-extensions": "^1.0.0"
},
@@ -11996,9 +11797,8 @@
},
"node_modules/is-typed-array": {
"version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"which-typed-array": "^1.1.11"
},
@@ -12011,15 +11811,13 @@
},
"node_modules/is-typedarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-unicode-supported": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -12029,18 +11827,16 @@
},
"node_modules/is-weakmap": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
- "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/ljharb"
}
},
"node_modules/is-weakref": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -12050,9 +11846,8 @@
},
"node_modules/is-weakset": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
- "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.1"
@@ -12063,9 +11858,8 @@
},
"node_modules/is-wsl": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -12073,54 +11867,47 @@
"node": ">=8"
}
},
+ "node_modules/is64bit": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "system-architecture": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
"node_modules/isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "license": "ISC"
},
"node_modules/isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/isomorphic.js": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz",
- "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==",
+ "license": "MIT",
"funding": {
"type": "GitHub Sponsors ❤",
"url": "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/sponsors/dmonad"
}
},
- "node_modules/istextorbinary": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz",
- "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==",
- "dev": true,
- "dependencies": {
- "binaryextensions": "2",
- "editions": "^1.3.3",
- "textextensions": "2"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/iterator.prototype": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
- "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.2.1",
"get-intrinsic": "^1.2.1",
@@ -12131,9 +11918,8 @@
},
"node_modules/jackspeak": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
@@ -12149,9 +11935,8 @@
},
"node_modules/jake": {
"version": "10.8.7",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
- "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
@@ -12165,16 +11950,60 @@
"node": ">=10"
}
},
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "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/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/jose": {
+ "version": "5.2.1",
+ "license": "MIT",
+ "funding": {
+ "url": "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/sponsors/panva"
+ }
+ },
+ "node_modules/js-base64": {
+ "version": "3.7.7",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz",
+ "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ "license": "MIT"
},
"node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -12184,9 +12013,8 @@
},
"node_modules/jsdom": {
"version": "21.1.2",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.2.tgz",
- "integrity": "sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"abab": "^2.0.6",
"acorn": "^8.8.2",
@@ -12229,9 +12057,8 @@
},
"node_modules/jsesc": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
+ "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
@@ -12241,54 +12068,43 @@
},
"node_modules/json-buffer": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "license": "MIT"
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-stringify-nice": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz",
- "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==",
"dev": true,
+ "license": "ISC",
"funding": {
"url": "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/sponsors/isaacs"
}
},
"node_modules/json-stringify-safe": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/json5": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
},
@@ -12298,15 +12114,12 @@
},
"node_modules/jsonc-parser": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
- "dev": true
+ "license": "MIT"
},
"node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
},
@@ -12316,18 +12129,16 @@
},
"node_modules/jsonparse": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
"dev": true,
"engines": [
"node >= 0.2.0"
- ]
+ ],
+ "license": "MIT"
},
"node_modules/JSONStream": {
"version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
"dev": true,
+ "license": "(MIT OR Apache-2.0)",
"dependencies": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
@@ -12341,9 +12152,8 @@
},
"node_modules/jsx-ast-utils": {
"version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-includes": "^3.1.6",
"array.prototype.flat": "^1.3.1",
@@ -12356,62 +12166,70 @@
},
"node_modules/just-diff": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz",
- "integrity": "sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/just-diff-apply": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz",
- "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/katex": {
+ "version": "0.16.9",
+ "funding": [
+ "https://opencollective.com/katex",
+ "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/sponsors/katex"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^8.3.0"
+ },
+ "bin": {
+ "katex": "cli.js"
+ }
},
"node_modules/keyv": {
"version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"json-buffer": "3.0.1"
}
},
+ "node_modules/khroma": {
+ "version": "2.1.0"
+ },
"node_modules/kind-of": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/klaw-sync": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz",
- "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.11"
}
},
"node_modules/kleur": {
"version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/language-subtag-registry": {
"version": "0.3.22",
- "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
- "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/language-tags": {
"version": "1.0.9",
- "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
- "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"language-subtag-registry": "^0.3.20"
},
@@ -12419,11 +12237,14 @@
"node": ">=0.10"
}
},
+ "node_modules/layout-base": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
"node_modules/lerna": {
"version": "5.6.2",
- "resolved": "https://registry.npmjs.org/lerna/-/lerna-5.6.2.tgz",
- "integrity": "sha512-Y0yMPslvnBnTZi7Nrs/gDyYZYauNf61xWNCehISHIORxZmmpoluNkcWTfcyb47is5uJQCv5QJX5xKKubbs+a6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@lerna/add": "5.6.2",
"@lerna/bootstrap": "5.6.2",
@@ -12458,9 +12279,8 @@
},
"node_modules/lerna/node_modules/typescript": {
"version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -12471,9 +12291,8 @@
},
"node_modules/levn": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -12483,9 +12302,9 @@
}
},
"node_modules/lib0": {
- "version": "0.2.88",
- "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.88.tgz",
- "integrity": "sha512-KyroiEvCeZcZEMx5Ys+b4u4eEBbA1ch7XUaBhYpwa/nPMrzTjUhI4RfcytmQfYoTBPcdyx+FX6WFNIoNuJzJfQ==",
+ "version": "0.2.90",
+ "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.90.tgz",
+ "integrity": "sha512-iQmk+fThPq1ZTD2cFUu8xN6JLp9gFWnjs8auR6hmI6QQXoy6sSEh85uKcdkqpuEnkhhwQm4GSlKHOYfSCVp0Mw==",
"dependencies": {
"isomorphic.js": "^0.2.4"
},
@@ -12503,9 +12322,8 @@
},
"node_modules/libnpmaccess": {
"version": "6.0.4",
- "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz",
- "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"aproba": "^2.0.0",
"minipass": "^3.1.1",
@@ -12518,9 +12336,8 @@
},
"node_modules/libnpmaccess/node_modules/hosted-git-info": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
@@ -12530,30 +12347,16 @@
},
"node_modules/libnpmaccess/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
- "node_modules/libnpmaccess/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/libnpmaccess/node_modules/npm-package-arg": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^5.0.0",
"proc-log": "^2.0.1",
@@ -12564,17 +12367,10 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/libnpmaccess/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/libnpmpublish": {
"version": "6.0.5",
- "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-6.0.5.tgz",
- "integrity": "sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"normalize-package-data": "^4.0.0",
"npm-package-arg": "^9.0.1",
@@ -12588,9 +12384,8 @@
},
"node_modules/libnpmpublish/node_modules/hosted-git-info": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
@@ -12600,18 +12395,16 @@
},
"node_modules/libnpmpublish/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/libnpmpublish/node_modules/normalize-package-data": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz",
- "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^5.0.0",
"is-core-module": "^2.8.1",
@@ -12624,9 +12417,8 @@
},
"node_modules/libnpmpublish/node_modules/npm-package-arg": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^5.0.0",
"proc-log": "^2.0.1",
@@ -12637,6 +12429,14 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/linebreak": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz",
@@ -12656,31 +12456,27 @@
},
"node_modules/lines-and-columns": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
- "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
"node_modules/linkify-it": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "license": "MIT",
"dependencies": {
"uc.micro": "^2.0.0"
}
},
"node_modules/linkifyjs": {
"version": "4.1.3",
- "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz",
- "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg=="
+ "license": "MIT"
},
"node_modules/load-json-file": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz",
- "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.15",
"parse-json": "^5.0.0",
@@ -12693,18 +12489,36 @@
},
"node_modules/load-json-file/node_modules/type-fest": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=8"
}
},
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "2.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
"node_modules/local-pkg": {
"version": "0.4.3",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
},
@@ -12714,9 +12528,8 @@
},
"node_modules/locate-path": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -12729,47 +12542,33 @@
},
"node_modules/lodash": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "license": "MIT"
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "license": "MIT"
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
- },
- "node_modules/lodash.foreach": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
- "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
- },
- "node_modules/lodash.groupby": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz",
- "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw=="
+ "license": "MIT"
},
- "node_modules/lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
- "dev": true
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "license": "MIT"
},
"node_modules/lodash.ismatch": {
"version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
- "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.merge": {
"version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ "license": "MIT"
},
"node_modules/log-symbols": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
@@ -12783,8 +12582,7 @@
},
"node_modules/longest-streak": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -12792,8 +12590,7 @@
},
"node_modules/loose-envify": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
@@ -12803,36 +12600,24 @@
},
"node_modules/loupe": {
"version": "2.3.7",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
- "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"get-func-name": "^2.0.1"
}
},
"node_modules/lru-cache": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
}
},
- "node_modules/lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
- "dev": true,
- "bin": {
- "lz-string": "bin/bin.js"
- }
- },
"node_modules/magic-string": {
"version": "0.30.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
- "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
@@ -12842,9 +12627,8 @@
},
"node_modules/make-dir": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"semver": "^6.0.0"
},
@@ -12857,23 +12641,20 @@
},
"node_modules/make-dir/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/make-error": {
"version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
+ "license": "ISC"
},
"node_modules/make-fetch-happen": {
"version": "10.2.1",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
- "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"agentkeepalive": "^4.2.1",
"cacache": "^16.1.0",
@@ -12898,36 +12679,16 @@
},
"node_modules/make-fetch-happen/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
- "node_modules/make-fetch-happen/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/make-fetch-happen/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/map-obj": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -12935,16 +12696,16 @@
"url": "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/sponsors/sindresorhus"
}
},
- "node_modules/mark.js": {
- "version": "8.11.1",
- "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
- "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
- "dev": true
+ "node_modules/markdown-extensions": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/markdown-it": {
"version": "14.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz",
- "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==",
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1",
"entities": "^4.4.0",
@@ -12957,25 +12718,25 @@
"markdown-it": "bin/markdown-it.mjs"
}
},
- "node_modules/markdown-it-container": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz",
- "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==",
- "dev": true
- },
"node_modules/markdown-table": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
- "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
}
},
+ "node_modules/match-sorter": {
+ "version": "6.3.3",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.8",
+ "remove-accents": "0.5.0"
+ }
+ },
"node_modules/mdast-util-definitions": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz",
- "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
@@ -12988,8 +12749,7 @@
},
"node_modules/mdast-util-find-and-replace": {
"version": "2.2.2",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz",
- "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"escape-string-regexp": "^5.0.0",
@@ -13003,8 +12763,7 @@
},
"node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
"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==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -13014,8 +12773,7 @@
},
"node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -13026,8 +12784,7 @@
},
"node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
@@ -13039,8 +12796,7 @@
},
"node_modules/mdast-util-from-markdown": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
- "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
@@ -13062,8 +12818,7 @@
},
"node_modules/mdast-util-gfm": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz",
- "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==",
+ "license": "MIT",
"dependencies": {
"mdast-util-from-markdown": "^1.0.0",
"mdast-util-gfm-autolink-literal": "^1.0.0",
@@ -13080,8 +12835,7 @@
},
"node_modules/mdast-util-gfm-autolink-literal": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz",
- "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"ccount": "^2.0.0",
@@ -13095,8 +12849,7 @@
},
"node_modules/mdast-util-gfm-footnote": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz",
- "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-to-markdown": "^1.3.0",
@@ -13109,8 +12862,7 @@
},
"node_modules/mdast-util-gfm-strikethrough": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz",
- "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-to-markdown": "^1.3.0"
@@ -13122,8 +12874,7 @@
},
"node_modules/mdast-util-gfm-table": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz",
- "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"markdown-table": "^3.0.0",
@@ -13137,10 +12888,22 @@
},
"node_modules/mdast-util-gfm-task-list-item": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz",
- "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-markdown": "^1.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-math": {
+ "version": "2.0.2",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
+ "longest-streak": "^3.0.0",
"mdast-util-to-markdown": "^1.3.0"
},
"funding": {
@@ -13148,10 +12911,88 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-mdx": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-mdx-expression": "^1.0.0",
+ "mdast-util-mdx-jsx": "^2.0.0",
+ "mdast-util-mdxjs-esm": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "1.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "2.1.4",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "ccount": "^2.0.0",
+ "mdast-util-from-markdown": "^1.1.0",
+ "mdast-util-to-markdown": "^1.3.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-remove-position": "^4.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": {
+ "version": "4.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-visit": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "1.3.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "mdast-util-to-markdown": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-phrasing": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"unist-util-is": "^5.0.0"
@@ -13163,8 +13004,7 @@
},
"node_modules/mdast-util-phrasing/node_modules/unist-util-is": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -13175,8 +13015,7 @@
},
"node_modules/mdast-util-to-hast": {
"version": "12.3.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz",
- "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
@@ -13194,8 +13033,7 @@
},
"node_modules/mdast-util-to-markdown": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
@@ -13213,8 +13051,7 @@
},
"node_modules/mdast-util-to-string": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0"
},
@@ -13225,14 +13062,12 @@
},
"node_modules/mdurl": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
- "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="
+ "license": "MIT"
},
"node_modules/meow": {
"version": "8.1.2",
- "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
- "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/minimist": "^1.2.0",
"camelcase-keys": "^6.2.2",
@@ -13255,9 +13090,8 @@
},
"node_modules/meow/node_modules/find-up": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -13268,15 +13102,13 @@
},
"node_modules/meow/node_modules/hosted-git-info": {
"version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/meow/node_modules/locate-path": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -13286,9 +13118,8 @@
},
"node_modules/meow/node_modules/p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -13301,9 +13132,8 @@
},
"node_modules/meow/node_modules/p-locate": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -13313,9 +13143,8 @@
},
"node_modules/meow/node_modules/read-pkg": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/normalize-package-data": "^2.4.0",
"normalize-package-data": "^2.5.0",
@@ -13328,9 +13157,8 @@
},
"node_modules/meow/node_modules/read-pkg-up": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.1.0",
"read-pkg": "^5.2.0",
@@ -13345,18 +13173,16 @@
},
"node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": {
"version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=8"
}
},
"node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": {
"version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
@@ -13366,27 +13192,24 @@
},
"node_modules/meow/node_modules/read-pkg/node_modules/type-fest": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=8"
}
},
"node_modules/meow/node_modules/semver": {
"version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/meow/node_modules/type-fest": {
"version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -13396,23 +13219,55 @@
},
"node_modules/merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
+ "node_modules/mermaid": {
+ "version": "10.7.0",
+ "license": "MIT",
+ "dependencies": {
+ "@braintree/sanitize-url": "^6.0.1",
+ "@types/d3-scale": "^4.0.3",
+ "@types/d3-scale-chromatic": "^3.0.0",
+ "cytoscape": "^3.23.0",
+ "cytoscape-cose-bilkent": "^4.1.0",
+ "cytoscape-fcose": "^2.1.0",
+ "d3": "^7.4.0",
+ "d3-sankey": "^0.12.3",
+ "dagre-d3-es": "7.0.10",
+ "dayjs": "^1.11.7",
+ "dompurify": "^3.0.5",
+ "elkjs": "^0.9.0",
+ "khroma": "^2.0.0",
+ "lodash-es": "^4.17.21",
+ "mdast-util-from-markdown": "^1.3.0",
+ "non-layered-tidy-tree-layout": "^2.0.2",
+ "stylis": "^4.1.3",
+ "ts-dedent": "^2.2.0",
+ "uuid": "^9.0.0",
+ "web-worker": "^1.2.0"
+ }
+ },
+ "node_modules/mermaid/node_modules/uuid": {
+ "version": "9.0.1",
+ "funding": [
+ "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/sponsors/broofa",
+ "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/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/micromark": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
- "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13423,6 +13278,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"@types/debug": "^4.0.0",
"debug": "^4.0.0",
@@ -13445,8 +13301,6 @@
},
"node_modules/micromark-core-commonmark": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz",
- "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13457,6 +13311,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"decode-named-character-reference": "^1.0.0",
"micromark-factory-destination": "^1.0.0",
@@ -13478,8 +13333,7 @@
},
"node_modules/micromark-extension-gfm": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz",
- "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==",
+ "license": "MIT",
"dependencies": {
"micromark-extension-gfm-autolink-literal": "^1.0.0",
"micromark-extension-gfm-footnote": "^1.0.0",
@@ -13497,8 +13351,7 @@
},
"node_modules/micromark-extension-gfm-autolink-literal": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz",
- "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==",
+ "license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-sanitize-uri": "^1.0.0",
@@ -13512,8 +13365,7 @@
},
"node_modules/micromark-extension-gfm-footnote": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz",
- "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==",
+ "license": "MIT",
"dependencies": {
"micromark-core-commonmark": "^1.0.0",
"micromark-factory-space": "^1.0.0",
@@ -13531,42 +13383,144 @@
},
"node_modules/micromark-extension-gfm-strikethrough": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz",
- "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==",
+ "license": "MIT",
"dependencies": {
"micromark-util-chunked": "^1.0.0",
"micromark-util-classify-character": "^1.0.0",
"micromark-util-resolve-all": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
"micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "1.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-math": {
+ "version": "2.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/katex": "^0.16.0",
+ "katex": "^0.16.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-expression": {
+ "version": "1.0.8",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "micromark-factory-mdx-expression": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-events-to-acorn": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "estree-util-is-identifier-name": "^2.0.0",
+ "micromark-factory-mdx-expression": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-table": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz",
- "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==",
+ "node_modules/micromark-extension-mdx-md": {
+ "version": "1.0.1",
+ "license": "MIT",
"dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "micromark-util-types": "^1.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-tagfilter": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz",
- "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==",
- "dependencies": {
+ "node_modules/micromark-extension-mdxjs": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.0.0",
+ "acorn-jsx": "^5.0.0",
+ "micromark-extension-mdx-expression": "^1.0.0",
+ "micromark-extension-mdx-jsx": "^1.0.0",
+ "micromark-extension-mdx-md": "^1.0.0",
+ "micromark-extension-mdxjs-esm": "^1.0.0",
+ "micromark-util-combine-extensions": "^1.0.0",
"micromark-util-types": "^1.0.0"
},
"funding": {
@@ -13574,16 +13528,19 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-gfm-task-list-item": {
+ "node_modules/micromark-extension-mdxjs-esm": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz",
- "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==",
+ "license": "MIT",
"dependencies": {
- "micromark-factory-space": "^1.0.0",
+ "@types/estree": "^1.0.0",
+ "micromark-core-commonmark": "^1.0.0",
"micromark-util-character": "^1.0.0",
+ "micromark-util-events-to-acorn": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
"micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
+ "unist-util-position-from-estree": "^1.1.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
},
"funding": {
"type": "opencollective",
@@ -13592,8 +13549,6 @@
},
"node_modules/micromark-factory-destination": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz",
- "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13604,6 +13559,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
@@ -13612,8 +13568,6 @@
},
"node_modules/micromark-factory-label": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz",
- "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13624,6 +13578,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
@@ -13631,10 +13586,32 @@
"uvu": "^0.5.0"
}
},
+ "node_modules/micromark-factory-mdx-expression": {
+ "version": "1.0.9",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-events-to-acorn": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "unist-util-position-from-estree": "^1.0.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
"node_modules/micromark-factory-space": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
- "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13645,6 +13622,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-types": "^1.0.0"
@@ -13652,8 +13630,6 @@
},
"node_modules/micromark-factory-title": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz",
- "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13664,6 +13640,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-factory-space": "^1.0.0",
"micromark-util-character": "^1.0.0",
@@ -13673,8 +13650,6 @@
},
"node_modules/micromark-factory-whitespace": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz",
- "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13685,6 +13660,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-factory-space": "^1.0.0",
"micromark-util-character": "^1.0.0",
@@ -13694,8 +13670,6 @@
},
"node_modules/micromark-util-character": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
- "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13706,6 +13680,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0",
"micromark-util-types": "^1.0.0"
@@ -13713,8 +13688,6 @@
},
"node_modules/micromark-util-chunked": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz",
- "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13725,14 +13698,13 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0"
}
},
"node_modules/micromark-util-classify-character": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz",
- "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13743,6 +13715,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
@@ -13751,8 +13724,6 @@
},
"node_modules/micromark-util-combine-extensions": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz",
- "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13763,6 +13734,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-chunked": "^1.0.0",
"micromark-util-types": "^1.0.0"
@@ -13770,8 +13742,6 @@
},
"node_modules/micromark-util-decode-numeric-character-reference": {
"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==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13782,14 +13752,13 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0"
}
},
"node_modules/micromark-util-decode-string": {
"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==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13800,6 +13769,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"decode-named-character-reference": "^1.0.0",
"micromark-util-character": "^1.0.0",
@@ -13809,8 +13779,6 @@
},
"node_modules/micromark-util-encode": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz",
- "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13820,12 +13788,35 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-events-to-acorn": {
+ "version": "1.2.3",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/acorn": "^4.0.0",
+ "@types/estree": "^1.0.0",
+ "@types/unist": "^2.0.0",
+ "estree-util-visit": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0",
+ "vfile-message": "^3.0.0"
+ }
},
"node_modules/micromark-util-html-tag-name": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz",
- "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13835,12 +13826,11 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/micromark-util-normalize-identifier": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
- "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13851,14 +13841,13 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0"
}
},
"node_modules/micromark-util-resolve-all": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz",
- "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13869,14 +13858,13 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-types": "^1.0.0"
}
},
"node_modules/micromark-util-sanitize-uri": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz",
- "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13887,6 +13875,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-encode": "^1.0.0",
@@ -13895,8 +13884,6 @@
},
"node_modules/micromark-util-subtokenize": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz",
- "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13907,6 +13894,7 @@
"url": "https://opencollective.com/unified"
}
],
+ "license": "MIT",
"dependencies": {
"micromark-util-chunked": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
@@ -13916,8 +13904,6 @@
},
"node_modules/micromark-util-symbol": {
"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==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13927,12 +13913,11 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/micromark-util-types": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
- "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
"funding": [
{
"type": "GitHub Sponsors",
@@ -13942,13 +13927,13 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/micromatch": {
"version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -13959,18 +13944,14 @@
},
"node_modules/mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -13980,27 +13961,48 @@
},
"node_modules/mimic-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/min-indent": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
+ "node_modules/miniflare": {
+ "version": "3.20240129.0",
+ "license": "MIT",
+ "dependencies": {
+ "@cspotcode/source-map-support": "0.8.1",
+ "acorn": "^8.8.0",
+ "acorn-walk": "^8.2.0",
+ "capnp-ts": "^0.7.0",
+ "exit-hook": "^2.2.1",
+ "glob-to-regexp": "^0.4.1",
+ "stoppable": "^1.1.0",
+ "undici": "^5.28.2",
+ "workerd": "1.20240129.0",
+ "ws": "^8.11.0",
+ "youch": "^3.2.2",
+ "zod": "^3.20.6"
+ },
+ "bin": {
+ "miniflare": "bootstrap.js"
+ },
+ "engines": {
+ "node": ">=16.13"
+ }
+ },
"node_modules/minimatch": {
"version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -14010,18 +14012,16 @@
},
"node_modules/minimist": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/ljharb"
}
},
"node_modules/minimist-options": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"arrify": "^1.0.1",
"is-plain-obj": "^1.1.0",
@@ -14032,19 +14032,20 @@
}
},
"node_modules/minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "version": "3.3.6",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=8"
}
},
"node_modules/minipass-collect": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
- "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"minipass": "^3.0.0"
},
@@ -14052,29 +14053,10 @@
"node": ">= 8"
}
},
- "node_modules/minipass-collect/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-collect/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/minipass-fetch": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
- "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minipass": "^3.1.6",
"minipass-sized": "^1.0.3",
@@ -14087,29 +14069,10 @@
"encoding": "^0.1.13"
}
},
- "node_modules/minipass-fetch/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-fetch/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/minipass-flush": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
- "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"minipass": "^3.0.0"
},
@@ -14117,57 +14080,19 @@
"node": ">= 8"
}
},
- "node_modules/minipass-flush/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-flush/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/minipass-json-stream": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
- "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jsonparse": "^1.3.1",
"minipass": "^3.0.0"
}
},
- "node_modules/minipass-json-stream/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-json-stream/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/minipass-pipeline": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
- "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"minipass": "^3.0.0"
},
@@ -14175,29 +14100,10 @@
"node": ">=8"
}
},
- "node_modules/minipass-pipeline/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-pipeline/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/minipass-sized": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
- "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"minipass": "^3.0.0"
},
@@ -14205,35 +14111,15 @@
"node": ">=8"
}
},
- "node_modules/minipass-sized/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-sized/node_modules/yallist": {
+ "node_modules/minipass/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/minisearch": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz",
- "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/minizlib": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
@@ -14242,29 +14128,15 @@
"node": ">= 8"
}
},
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/minizlib/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/mkdirp": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
+ "license": "MIT",
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -14274,9 +14146,8 @@
},
"node_modules/mkdirp-infer-owner": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz",
- "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"chownr": "^2.0.0",
"infer-owner": "^1.0.4",
@@ -14287,44 +14158,46 @@
}
},
"node_modules/mlly": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz",
- "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==",
+ "version": "1.4.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "acorn": "^8.11.3",
- "pathe": "^1.1.2",
+ "acorn": "^8.10.0",
+ "pathe": "^1.1.1",
"pkg-types": "^1.0.3",
- "ufo": "^1.3.2"
+ "ufo": "^1.3.0"
}
},
"node_modules/modify-values": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
- "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/mri": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
+ "node_modules/mrmime": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "license": "MIT"
},
"node_modules/multimatch": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
- "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/minimatch": "^3.0.3",
"array-differ": "^3.0.0",
@@ -14341,81 +14214,309 @@
},
"node_modules/multimatch/node_modules/arrify": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
- "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/mustache": {
+ "version": "4.2.0",
+ "license": "MIT",
+ "bin": {
+ "mustache": "bin/mustache"
+ }
+ },
"node_modules/mute-stream": {
"version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
},
"node_modules/nanoid": {
"version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/natural-compare-lite": {
+ "version": "1.4.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
"dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "license": "MIT"
+ },
+ "node_modules/next": {
+ "version": "14.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "14.1.0",
+ "@swc/helpers": "0.5.2",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.1.0",
+ "@next/swc-darwin-x64": "14.1.0",
+ "@next/swc-linux-arm64-gnu": "14.1.0",
+ "@next/swc-linux-arm64-musl": "14.1.0",
+ "@next/swc-linux-x64-gnu": "14.1.0",
+ "@next/swc-linux-x64-musl": "14.1.0",
+ "@next/swc-win32-arm64-msvc": "14.1.0",
+ "@next/swc-win32-ia32-msvc": "14.1.0",
+ "@next/swc-win32-x64-msvc": "14.1.0"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next-auth": {
+ "version": "5.0.0-beta.9",
+ "license": "ISC",
+ "dependencies": {
+ "@auth/core": "0.26.3"
+ },
+ "peerDependencies": {
+ "@simplewebauthn/browser": "^9.0.1",
+ "@simplewebauthn/server": "^9.0.1",
+ "next": "^14",
+ "nodemailer": "^6.6.5",
+ "react": "^18.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@simplewebauthn/browser": {
+ "optional": true
+ },
+ "@simplewebauthn/server": {
+ "optional": true
+ },
+ "nodemailer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next-mdx-remote": {
+ "version": "4.4.1",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@mdx-js/mdx": "^2.2.1",
+ "@mdx-js/react": "^2.2.1",
+ "vfile": "^5.3.0",
+ "vfile-matter": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">=7"
+ },
+ "peerDependencies": {
+ "react": ">=16.x <=18.x",
+ "react-dom": ">=16.x <=18.x"
+ }
+ },
+ "node_modules/next-seo": {
+ "version": "6.4.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "next": "^8.1.1-canary.54 || >=9.0.0",
+ "react": ">=16.0.0",
+ "react-dom": ">=16.0.0"
+ }
+ },
+ "node_modules/next-themes": {
+ "version": "0.2.1",
+ "license": "MIT",
+ "peerDependencies": {
+ "next": "*",
+ "react": "*",
+ "react-dom": "*"
+ }
+ },
+ "node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
"funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
{
"type": "github",
"url": "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/sponsors/ai"
}
],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
+ "node_modules/nextra": {
+ "version": "2.13.2",
+ "license": "MIT",
+ "dependencies": {
+ "@headlessui/react": "^1.7.10",
+ "@mdx-js/mdx": "^2.3.0",
+ "@mdx-js/react": "^2.3.0",
+ "@napi-rs/simple-git": "^0.1.9",
+ "@theguild/remark-mermaid": "^0.0.5",
+ "@theguild/remark-npm2yarn": "^0.2.0",
+ "clsx": "^2.0.0",
+ "github-slugger": "^2.0.0",
+ "graceful-fs": "^4.2.11",
+ "gray-matter": "^4.0.3",
+ "katex": "^0.16.9",
+ "lodash.get": "^4.4.2",
+ "next-mdx-remote": "^4.2.1",
+ "p-limit": "^3.1.0",
+ "rehype-katex": "^7.0.0",
+ "rehype-pretty-code": "0.9.11",
+ "rehype-raw": "^7.0.0",
+ "remark-gfm": "^3.0.1",
+ "remark-math": "^5.1.1",
+ "remark-reading-time": "^2.0.1",
+ "shiki": "^0.14.3",
+ "slash": "^3.0.0",
+ "title": "^3.5.3",
+ "unist-util-remove": "^4.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zod": "^3.22.3"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "next": ">=9.5.3",
+ "react": ">=16.13.1",
+ "react-dom": ">=16.13.1"
+ }
},
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
+ "node_modules/nextra-theme-docs": {
+ "version": "2.13.2",
+ "license": "MIT",
+ "dependencies": {
+ "@headlessui/react": "^1.7.10",
+ "@popperjs/core": "^2.11.6",
+ "clsx": "^2.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "flexsearch": "^0.7.31",
+ "focus-visible": "^5.2.0",
+ "git-url-parse": "^13.1.0",
+ "intersection-observer": "^0.12.2",
+ "match-sorter": "^6.3.1",
+ "next-seo": "^6.0.0",
+ "next-themes": "^0.2.1",
+ "scroll-into-view-if-needed": "^3.0.0",
+ "zod": "^3.22.3"
+ },
+ "peerDependencies": {
+ "next": ">=9.5.3",
+ "nextra": "2.13.2",
+ "react": ">=16.13.1",
+ "react-dom": ">=16.13.1"
+ }
},
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
+ "node_modules/nextra-theme-docs/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
+ "node_modules/nextra/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/nextra/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
"node_modules/nice-try": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-addon-api": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
- "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-fetch": {
"version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -14433,21 +14534,18 @@
},
"node_modules/node-fetch/node_modules/tr46": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/node-fetch/node_modules/webidl-conversions": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/node-fetch/node_modules/whatwg-url": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
@@ -14455,9 +14553,8 @@
},
"node_modules/node-gyp": {
"version": "9.4.1",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz",
- "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"env-paths": "^2.2.0",
"exponential-backoff": "^3.1.1",
@@ -14480,9 +14577,8 @@
},
"node_modules/node-gyp-build": {
"version": "4.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz",
- "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==",
"dev": true,
+ "license": "MIT",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@@ -14491,9 +14587,8 @@
},
"node_modules/node-gyp/node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -14511,9 +14606,8 @@
},
"node_modules/node-gyp/node_modules/nopt": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
- "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"abbrev": "^1.0.0"
},
@@ -14526,15 +14620,16 @@
},
"node_modules/node-releases": {
"version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true
+ "license": "MIT"
+ },
+ "node_modules/non-layered-tidy-tree-layout": {
+ "version": "2.0.2",
+ "license": "MIT"
},
"node_modules/nopt": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"abbrev": "1"
},
@@ -14547,9 +14642,8 @@
},
"node_modules/normalize-package-data": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^4.0.1",
"is-core-module": "^2.5.0",
@@ -14562,27 +14656,32 @@
},
"node_modules/normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/npm-bundled": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
- "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"node_modules/npm-install-checks": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz",
- "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"semver": "^7.1.1"
},
@@ -14592,15 +14691,13 @@
},
"node_modules/npm-normalize-package-bin": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/npm-package-arg": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz",
- "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^3.0.6",
"semver": "^7.0.0",
@@ -14612,15 +14709,13 @@
},
"node_modules/npm-package-arg/node_modules/builtins": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/npm-package-arg/node_modules/hosted-git-info": {
"version": "3.0.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
- "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -14630,9 +14725,8 @@
},
"node_modules/npm-package-arg/node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -14642,24 +14736,21 @@
},
"node_modules/npm-package-arg/node_modules/validate-npm-package-name": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
- "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"builtins": "^1.0.3"
}
},
"node_modules/npm-package-arg/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/npm-packlist": {
"version": "5.1.3",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz",
- "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^8.0.1",
"ignore-walk": "^5.0.1",
@@ -14675,18 +14766,16 @@
},
"node_modules/npm-packlist/node_modules/brace-expansion": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/npm-packlist/node_modules/glob": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -14703,9 +14792,8 @@
},
"node_modules/npm-packlist/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -14715,9 +14803,8 @@
},
"node_modules/npm-packlist/node_modules/npm-bundled": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz",
- "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"npm-normalize-package-bin": "^2.0.0"
},
@@ -14727,18 +14814,16 @@
},
"node_modules/npm-packlist/node_modules/npm-normalize-package-bin": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz",
- "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/npm-pick-manifest": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz",
- "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"npm-install-checks": "^5.0.0",
"npm-normalize-package-bin": "^2.0.0",
@@ -14751,9 +14836,8 @@
},
"node_modules/npm-pick-manifest/node_modules/hosted-git-info": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
@@ -14763,27 +14847,24 @@
},
"node_modules/npm-pick-manifest/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz",
- "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/npm-pick-manifest/node_modules/npm-package-arg": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^5.0.0",
"proc-log": "^2.0.1",
@@ -14796,9 +14877,8 @@
},
"node_modules/npm-registry-fetch": {
"version": "13.3.1",
- "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz",
- "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"make-fetch-happen": "^10.0.6",
"minipass": "^3.1.6",
@@ -14814,9 +14894,8 @@
},
"node_modules/npm-registry-fetch/node_modules/hosted-git-info": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^7.5.1"
},
@@ -14826,30 +14905,16 @@
},
"node_modules/npm-registry-fetch/node_modules/lru-cache": {
"version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
- "node_modules/npm-registry-fetch/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/npm-registry-fetch/node_modules/npm-package-arg": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"hosted-git-info": "^5.0.0",
"proc-log": "^2.0.1",
@@ -14860,17 +14925,10 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm-registry-fetch/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/npm-run-path": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
@@ -14878,11 +14936,20 @@
"node": ">=8"
}
},
+ "node_modules/npm-to-yarn": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "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/nebrelbug/npm-to-yarn?sponsor=1"
+ }
+ },
"node_modules/npmlog": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
- "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"are-we-there-yet": "^3.0.0",
"console-control-strings": "^1.1.0",
@@ -14895,16 +14962,14 @@
},
"node_modules/nwsapi": {
"version": "2.2.7",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
- "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/nx": {
"version": "15.9.7",
- "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.7.tgz",
- "integrity": "sha512-1qlEeDjX9OKZEryC8i4bA+twNg+lB5RKrozlNwWx/lLJHqWPUfvUTvxh+uxlPYL9KzVReQjUuxMLFMsHNqWUrA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
"@nrwl/cli": "15.9.7",
"@nrwl/tao": "15.9.7",
@@ -14969,17 +15034,10 @@
}
}
},
- "node_modules/nx/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
"node_modules/nx/node_modules/fast-glob": {
"version": "3.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
- "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -14993,9 +15051,8 @@
},
"node_modules/nx/node_modules/fs-extra": {
"version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -15007,9 +15064,8 @@
},
"node_modules/nx/node_modules/glob": {
"version": "7.1.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -15024,9 +15080,8 @@
},
"node_modules/nx/node_modules/glob-parent": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -15036,9 +15091,8 @@
},
"node_modules/nx/node_modules/minimatch": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
- "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -15046,34 +15100,18 @@
"node": "*"
}
},
- "node_modules/nx/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/nx/node_modules/strip-bom": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/nx/node_modules/tsconfig-paths": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
- "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"json5": "^2.2.2",
"minimist": "^1.2.6",
@@ -15085,9 +15123,8 @@
},
"node_modules/nx/node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -15102,9 +15139,8 @@
},
"node_modules/nx/node_modules/yargs": {
"version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -15120,18 +15156,16 @@
},
"node_modules/nx/node_modules/yargs-parser": {
"version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/nx/node_modules/yargs/node_modules/cliui": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -15141,37 +15175,48 @@
"node": ">=12"
}
},
+ "node_modules/oauth4webapi": {
+ "version": "2.10.3",
+ "license": "MIT",
+ "funding": {
+ "url": "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/sponsors/panva"
+ }
+ },
"node_modules/object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/object-inspect": {
"version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/ljharb"
}
},
"node_modules/object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.assign": {
"version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"define-properties": "^1.2.1",
@@ -15187,9 +15232,8 @@
},
"node_modules/object.entries": {
"version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
- "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -15201,9 +15245,8 @@
},
"node_modules/object.fromentries": {
"version": "2.0.7",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
- "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -15218,9 +15261,8 @@
},
"node_modules/object.groupby": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
- "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -15230,9 +15272,8 @@
},
"node_modules/object.hasown": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz",
- "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.2.0",
"es-abstract": "^1.22.1"
@@ -15243,8 +15284,7 @@
},
"node_modules/object.omit": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz",
- "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==",
+ "license": "MIT",
"dependencies": {
"is-extendable": "^1.0.0"
},
@@ -15254,8 +15294,7 @@
},
"node_modules/object.pick": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -15265,9 +15304,8 @@
},
"node_modules/object.values": {
"version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
- "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -15282,18 +15320,16 @@
},
"node_modules/once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/onetime": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -15306,9 +15342,8 @@
},
"node_modules/open": {
"version": "8.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
- "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1",
@@ -15321,11 +15356,17 @@
"url": "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/sponsors/sindresorhus"
}
},
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "license": "(WTFPL OR MIT)",
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
+ },
"node_modules/optionator": {
"version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
@@ -15340,9 +15381,8 @@
},
"node_modules/ora": {
"version": "5.4.1",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^4.1.0",
"chalk": "^4.1.0",
@@ -15363,32 +15403,26 @@
},
"node_modules/orderedmap": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
- "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="
+ "license": "MIT"
},
"node_modules/os-tmpdir": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/p-finally": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/p-limit": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -15401,9 +15435,8 @@
},
"node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -15416,9 +15449,8 @@
},
"node_modules/p-map": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -15431,18 +15463,16 @@
},
"node_modules/p-map-series": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz",
- "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/p-pipe": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz",
- "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -15452,9 +15482,8 @@
},
"node_modules/p-queue": {
"version": "6.6.2",
- "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
- "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eventemitter3": "^4.0.4",
"p-timeout": "^3.2.0"
@@ -15468,18 +15497,16 @@
},
"node_modules/p-reduce": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz",
- "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/p-timeout": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
- "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-finally": "^1.0.0"
},
@@ -15489,18 +15516,16 @@
},
"node_modules/p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/p-waterfall": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz",
- "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-reduce": "^2.0.0"
},
@@ -15513,9 +15538,8 @@
},
"node_modules/pacote": {
"version": "13.6.2",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz",
- "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"@npmcli/git": "^3.0.0",
"@npmcli/installed-package-contents": "^1.0.7",
@@ -15543,162 +15567,361 @@
"pacote": "lib/bin.js"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/hosted-git-info": {
+ "version": "5.2.1",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^7.5.1"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pacote/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/pacote/node_modules/npm-package-arg": {
+ "version": "9.1.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^5.0.0",
+ "proc-log": "^2.0.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-conflict-json": {
+ "version": "2.0.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^2.3.1",
+ "just-diff": "^5.0.1",
+ "just-diff-apply": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/parse-css-color": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/parse-css-color/-/parse-css-color-0.2.1.tgz",
+ "integrity": "sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==",
+ "dependencies": {
+ "color-name": "^1.1.4",
+ "hex-rgb": "^4.1.0"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "4.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "character-entities": "^2.0.0",
+ "character-entities-legacy": "^3.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-json/node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/parse-numeric-range": {
+ "version": "1.3.0",
+ "license": "ISC"
+ },
+ "node_modules/parse-path": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "protocols": "^2.0.0"
+ }
+ },
+ "node_modules/parse-url": {
+ "version": "8.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "parse-path": "^7.0.0"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "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/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/partykit": {
+ "version": "0.0.84",
+ "license": "MIT",
+ "dependencies": {
+ "@cloudflare/workers-types": "4.20240129.0",
+ "clipboardy": "4.0.0",
+ "esbuild": "0.20.0",
+ "miniflare": "3.20240129.0",
+ "yoga-wasm-web": "0.3.3"
+ },
+ "bin": {
+ "partykit": "dist/bin.mjs"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.3"
+ }
+ },
+ "node_modules/partykit/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.20.0",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/pacote/node_modules/hosted-git-info": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
- "dev": true,
+ "node_modules/partykit/node_modules/clipboardy": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "lru-cache": "^7.5.1"
+ "execa": "^8.0.1",
+ "is-wsl": "^3.1.0",
+ "is64bit": "^2.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/pacote/node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
+ "node_modules/partykit/node_modules/esbuild": {
+ "version": "0.20.0",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
"engines": {
"node": ">=12"
- }
- },
- "node_modules/pacote/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.20.0",
+ "@esbuild/android-arm": "0.20.0",
+ "@esbuild/android-arm64": "0.20.0",
+ "@esbuild/android-x64": "0.20.0",
+ "@esbuild/darwin-arm64": "0.20.0",
+ "@esbuild/darwin-x64": "0.20.0",
+ "@esbuild/freebsd-arm64": "0.20.0",
+ "@esbuild/freebsd-x64": "0.20.0",
+ "@esbuild/linux-arm": "0.20.0",
+ "@esbuild/linux-arm64": "0.20.0",
+ "@esbuild/linux-ia32": "0.20.0",
+ "@esbuild/linux-loong64": "0.20.0",
+ "@esbuild/linux-mips64el": "0.20.0",
+ "@esbuild/linux-ppc64": "0.20.0",
+ "@esbuild/linux-riscv64": "0.20.0",
+ "@esbuild/linux-s390x": "0.20.0",
+ "@esbuild/linux-x64": "0.20.0",
+ "@esbuild/netbsd-x64": "0.20.0",
+ "@esbuild/openbsd-x64": "0.20.0",
+ "@esbuild/sunos-x64": "0.20.0",
+ "@esbuild/win32-arm64": "0.20.0",
+ "@esbuild/win32-ia32": "0.20.0",
+ "@esbuild/win32-x64": "0.20.0"
+ }
+ },
+ "node_modules/partykit/node_modules/execa": {
+ "version": "8.0.1",
+ "license": "MIT",
"dependencies": {
- "yallist": "^4.0.0"
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "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/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/pacote/node_modules/npm-package-arg": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz",
- "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^5.0.0",
- "proc-log": "^2.0.1",
- "semver": "^7.3.5",
- "validate-npm-package-name": "^4.0.0"
- },
+ "node_modules/partykit/node_modules/get-stream": {
+ "version": "8.0.1",
+ "license": "MIT",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/pacote/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/pako": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
- "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
+ "node_modules/partykit/node_modules/human-signals": {
+ "version": "5.0.0",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.17.0"
+ }
},
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
+ "node_modules/partykit/node_modules/is-stream": {
+ "version": "3.0.0",
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/parse-conflict-json": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz",
- "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==",
- "dev": true,
+ "node_modules/partykit/node_modules/is-wsl": {
+ "version": "3.1.0",
+ "license": "MIT",
"dependencies": {
- "json-parse-even-better-errors": "^2.3.1",
- "just-diff": "^5.0.1",
- "just-diff-apply": "^5.2.0"
+ "is-inside-container": "^1.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/parse-css-color": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/parse-css-color/-/parse-css-color-0.2.1.tgz",
- "integrity": "sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==",
- "dependencies": {
- "color-name": "^1.1.4",
- "hex-rgb": "^4.1.0"
+ "node_modules/partykit/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/parse-json": {
+ "node_modules/partykit/node_modules/npm-run-path": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
+ "path-key": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "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/sponsors/sindresorhus"
}
},
- "node_modules/parse-json/node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "node_modules/parse-path": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz",
- "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==",
- "dev": true,
+ "node_modules/partykit/node_modules/onetime": {
+ "version": "6.0.0",
+ "license": "MIT",
"dependencies": {
- "protocols": "^2.0.0"
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/parse-url": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz",
- "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==",
- "dev": true,
- "dependencies": {
- "parse-path": "^7.0.0"
+ "node_modules/partykit/node_modules/path-key": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
- "node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
- "dependencies": {
- "entities": "^4.4.0"
+ "node_modules/partykit/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
},
"funding": {
- "url": "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/inikulin/parse5?sponsor=1"
+ "url": "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/sponsors/isaacs"
+ }
+ },
+ "node_modules/partykit/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
}
},
"node_modules/patch-package": {
"version": "6.5.1",
- "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz",
- "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@yarnpkg/lockfile": "^1.1.0",
"chalk": "^4.1.2",
@@ -15725,9 +15948,8 @@
},
"node_modules/patch-package/node_modules/cross-spawn": {
"version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
@@ -15741,9 +15963,8 @@
},
"node_modules/patch-package/node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -15761,9 +15982,8 @@
},
"node_modules/patch-package/node_modules/open": {
"version": "7.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-docker": "^2.0.0",
"is-wsl": "^2.1.1"
@@ -15777,18 +15997,16 @@
},
"node_modules/patch-package/node_modules/path-key": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/patch-package/node_modules/rimraf": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -15798,18 +16016,16 @@
},
"node_modules/patch-package/node_modules/semver": {
"version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/patch-package/node_modules/shebang-command": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^1.0.0"
},
@@ -15819,27 +16035,24 @@
},
"node_modules/patch-package/node_modules/shebang-regex": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/patch-package/node_modules/slash": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/patch-package/node_modules/tmp": {
"version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"os-tmpdir": "~1.0.2"
},
@@ -15849,9 +16062,8 @@
},
"node_modules/patch-package/node_modules/which": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -15861,42 +16073,36 @@
},
"node_modules/path-exists": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/path-key": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/path-parse": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/path-scurry": {
"version": "1.10.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
"lru-cache": "^9.1.1 || ^10.0.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -15909,49 +16115,66 @@
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
- "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "version": "10.1.0",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "14 || >=16.14"
}
},
+ "node_modules/path-scurry/node_modules/minipass": {
+ "version": "7.0.4",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
"node_modules/path-type": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/pathe": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true
+ "version": "1.1.1",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pathval": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
+ "node_modules/periscopic": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "is-reference": "^3.0.0"
+ }
+ },
+ "node_modules/periscopic/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
"node_modules/picocolors": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -15961,9 +16184,8 @@
},
"node_modules/pify": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz",
- "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -15971,11 +16193,18 @@
"url": "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/sponsors/sindresorhus"
}
},
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/pkg-dir": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
},
@@ -15985,9 +16214,8 @@
},
"node_modules/pkg-dir/node_modules/find-up": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -15998,9 +16226,8 @@
},
"node_modules/pkg-dir/node_modules/locate-path": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -16010,9 +16237,8 @@
},
"node_modules/pkg-dir/node_modules/p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -16025,9 +16251,8 @@
},
"node_modules/pkg-dir/node_modules/p-locate": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -16037,9 +16262,8 @@
},
"node_modules/pkg-types": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
- "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jsonc-parser": "^3.2.0",
"mlly": "^1.2.0",
@@ -16047,12 +16271,11 @@
}
},
"node_modules/playwright": {
- "version": "1.41.1",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.1.tgz",
- "integrity": "sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ==",
+ "version": "1.40.1",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.41.1"
+ "playwright-core": "1.40.1"
},
"bin": {
"playwright": "cli.js"
@@ -16065,10 +16288,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.41.1",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.41.1.tgz",
- "integrity": "sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg==",
+ "version": "1.40.1",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
},
@@ -16076,10 +16298,21 @@
"node": ">=16"
}
},
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/postcss": {
"version": "8.4.33",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
- "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
"dev": true,
"funding": [
{
@@ -16095,44 +16328,169 @@
"url": "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/sponsors/ai"
}
],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "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/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/yaml": {
+ "version": "2.3.4",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": "^10 || ^12 || >=14"
+ "node": ">=4"
}
},
"node_modules/postcss-value-parser": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ "license": "MIT"
},
"node_modules/preact": {
"version": "10.19.3",
- "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.3.tgz",
- "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==",
- "dev": true,
+ "license": "MIT",
+ "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
+ "node_modules/preact-render-to-string": {
+ "version": "5.2.3",
+ "license": "MIT",
+ "dependencies": {
+ "pretty-format": "^3.8.0"
+ },
+ "peerDependencies": {
+ "preact": ">=10"
+ }
+ },
+ "node_modules/preact-render-to-string/node_modules/pretty-format": {
+ "version": "3.8.0",
+ "license": "MIT"
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/prettier": {
"version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
+ "license": "MIT",
"bin": {
"prettier": "bin-prettier.js"
},
@@ -16145,9 +16503,8 @@
},
"node_modules/pretty-format": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
@@ -16159,9 +16516,8 @@
},
"node_modules/pretty-format/node_modules/ansi-styles": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -16171,54 +16527,51 @@
},
"node_modules/pretty-format/node_modules/react-is": {
"version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/printable-characters": {
+ "version": "1.0.42",
+ "license": "Unlicense"
},
"node_modules/proc-log": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz",
- "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/promise-all-reject-late": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz",
- "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==",
"dev": true,
+ "license": "ISC",
"funding": {
"url": "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/sponsors/isaacs"
}
},
"node_modules/promise-call-limit": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz",
- "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==",
"dev": true,
+ "license": "ISC",
"funding": {
"url": "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/sponsors/isaacs"
}
},
"node_modules/promise-inflight": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/promise-retry": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
- "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"err-code": "^2.0.2",
"retry": "^0.12.0"
@@ -16229,17 +16582,15 @@
},
"node_modules/promzard": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz",
- "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"read": "1"
}
},
"node_modules/prop-types": {
"version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -16247,9 +16598,8 @@
}
},
"node_modules/property-information": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz",
- "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==",
+ "version": "6.4.0",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -16257,921 +16607,1308 @@
},
"node_modules/prosemirror-changeset": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz",
- "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-transform": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-collab": {
+ "version": "1.3.1",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-state": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-commands": {
+ "version": "1.5.2",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.0.0",
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-transform": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-dropcursor": {
+ "version": "1.8.1",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-transform": "^1.1.0",
+ "prosemirror-view": "^1.1.0"
+ }
+ },
+ "node_modules/prosemirror-gapcursor": {
+ "version": "1.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-keymap": "^1.0.0",
+ "prosemirror-model": "^1.0.0",
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-view": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-history": {
+ "version": "1.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-state": "^1.2.2",
+ "prosemirror-transform": "^1.0.0",
+ "prosemirror-view": "^1.31.0",
+ "rope-sequence": "^1.3.0"
+ }
+ },
+ "node_modules/prosemirror-inputrules": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-transform": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-keymap": {
+ "version": "1.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-state": "^1.0.0",
+ "w3c-keyname": "^2.2.0"
+ }
+ },
+ "node_modules/prosemirror-markdown": {
+ "version": "1.12.0",
+ "license": "MIT",
+ "dependencies": {
+ "markdown-it": "^14.0.0",
+ "prosemirror-model": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-menu": {
+ "version": "1.2.4",
+ "license": "MIT",
+ "dependencies": {
+ "crelt": "^1.0.0",
+ "prosemirror-commands": "^1.0.0",
+ "prosemirror-history": "^1.0.0",
+ "prosemirror-state": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-model": {
+ "version": "1.18.3",
+ "license": "MIT",
+ "dependencies": {
+ "orderedmap": "^2.0.0"
+ }
+ },
+ "node_modules/prosemirror-schema-basic": {
+ "version": "1.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.19.0"
+ }
+ },
+ "node_modules/prosemirror-schema-list": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.0.0",
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-transform": "^1.7.3"
+ }
+ },
+ "node_modules/prosemirror-state": {
+ "version": "1.4.3",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.0.0",
+ "prosemirror-transform": "^1.0.0",
+ "prosemirror-view": "^1.27.0"
+ }
+ },
+ "node_modules/prosemirror-tables": {
+ "version": "1.3.5",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-keymap": "^1.1.2",
+ "prosemirror-model": "^1.8.1",
+ "prosemirror-state": "^1.3.1",
+ "prosemirror-transform": "^1.2.1",
+ "prosemirror-view": "^1.13.3"
+ }
+ },
+ "node_modules/prosemirror-trailing-node": {
+ "version": "2.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "@remirror/core-constants": "^2.0.2",
+ "@remirror/core-helpers": "^3.0.0",
+ "escape-string-regexp": "^4.0.0"
+ },
+ "peerDependencies": {
+ "prosemirror-model": "^1.19.0",
+ "prosemirror-state": "^1.4.2",
+ "prosemirror-view": "^1.31.2"
+ }
+ },
+ "node_modules/prosemirror-transform": {
+ "version": "1.8.0",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.0.0"
+ }
+ },
+ "node_modules/prosemirror-view": {
+ "version": "1.32.7",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.16.0",
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-transform": "^1.1.0"
+ }
+ },
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/protocols": {
+ "version": "2.0.1",
+ "license": "MIT"
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "license": "ISC"
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/q": {
+ "version": "1.5.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.0",
+ "teleport": ">=0.2.0"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/quick-lru": {
+ "version": "4.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/raw-loader": {
+ "version": "4.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "license": "MIT",
"dependencies": {
- "prosemirror-transform": "^1.0.0"
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
}
},
- "node_modules/prosemirror-collab": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz",
- "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==",
+ "node_modules/react-github-btn": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/react-github-btn/-/react-github-btn-1.4.0.tgz",
+ "integrity": "sha512-lV4FYClAfjWnBfv0iNlJUGhamDgIq6TayD0kPZED6VzHWdpcHmPfsYOZ/CFwLfPv4Zp+F4m8QKTj0oy2HjiGXg==",
"dependencies": {
- "prosemirror-state": "^1.0.0"
+ "github-buttons": "^2.22.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.3.0"
}
},
- "node_modules/prosemirror-commands": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz",
- "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==",
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
+ "node_modules/react-icons": {
+ "version": "4.12.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*"
}
},
- "node_modules/prosemirror-dropcursor": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz",
- "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==",
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "license": "MIT"
+ },
+ "node_modules/react-number-format": {
+ "version": "5.3.1",
+ "license": "MIT",
"dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0",
- "prosemirror-view": "^1.1.0"
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/prosemirror-gapcursor": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz",
- "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==",
- "dependencies": {
- "prosemirror-keymap": "^1.0.0",
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-view": "^1.0.0"
+ "node_modules/react-refresh": {
+ "version": "0.14.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/prosemirror-history": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz",
- "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==",
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.7",
+ "license": "MIT",
"dependencies": {
- "prosemirror-state": "^1.2.2",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.31.0",
- "rope-sequence": "^1.3.0"
+ "react-remove-scroll-bar": "^2.3.4",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/prosemirror-inputrules": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz",
- "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==",
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.4",
+ "license": "MIT",
"dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/prosemirror-keymap": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz",
- "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==",
+ "node_modules/react-router": {
+ "version": "6.21.1",
+ "license": "MIT",
"dependencies": {
- "prosemirror-state": "^1.0.0",
- "w3c-keyname": "^2.2.0"
+ "@remix-run/router": "1.14.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
}
},
- "node_modules/prosemirror-markdown": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz",
- "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==",
+ "node_modules/react-router-dom": {
+ "version": "6.21.1",
+ "license": "MIT",
"dependencies": {
- "markdown-it": "^14.0.0",
- "prosemirror-model": "^1.0.0"
+ "@remix-run/router": "1.14.1",
+ "react-router": "6.21.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
}
},
- "node_modules/prosemirror-menu": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz",
- "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==",
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "license": "MIT",
"dependencies": {
- "crelt": "^1.0.0",
- "prosemirror-commands": "^1.0.0",
- "prosemirror-history": "^1.0.0",
- "prosemirror-state": "^1.0.0"
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/prosemirror-model": {
- "version": "1.18.3",
- "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.18.3.tgz",
- "integrity": "sha512-yUVejauEY3F1r7PDy4UJKEGeIU+KFc71JQl5sNvG66CLVdKXRjhWpBW6KMeduGsmGOsw85f6EGrs6QxIKOVILA==",
+ "node_modules/react-textarea-autosize": {
+ "version": "8.5.3",
+ "license": "MIT",
"dependencies": {
- "orderedmap": "^2.0.0"
+ "@babel/runtime": "^7.20.13",
+ "use-composed-ref": "^1.3.0",
+ "use-latest": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/prosemirror-schema-basic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz",
- "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==",
+ "node_modules/read": {
+ "version": "1.0.7",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "prosemirror-model": "^1.19.0"
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
}
},
- "node_modules/prosemirror-schema-list": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz",
- "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==",
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.7.3"
+ "pify": "^2.3.0"
}
},
- "node_modules/prosemirror-state": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",
- "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.27.0"
+ "node_modules/read-cache/node_modules/pify": {
+ "version": "2.3.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/prosemirror-tables": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.5.tgz",
- "integrity": "sha512-JSZ2cCNlApu/ObAhdPyotrjBe2cimniniTpz60YXzbL0kZ+47nEYk2LWbfKU2lKpBkUNquta2PjteoNi4YCluQ==",
- "dependencies": {
- "prosemirror-keymap": "^1.1.2",
- "prosemirror-model": "^1.8.1",
- "prosemirror-state": "^1.3.1",
- "prosemirror-transform": "^1.2.1",
- "prosemirror-view": "^1.13.3"
+ "node_modules/read-cmd-shim": {
+ "version": "3.0.1",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/prosemirror-trailing-node": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz",
- "integrity": "sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==",
+ "node_modules/read-package-json": {
+ "version": "5.0.2",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "@remirror/core-constants": "^2.0.2",
- "@remirror/core-helpers": "^3.0.0",
- "escape-string-regexp": "^4.0.0"
+ "glob": "^8.0.1",
+ "json-parse-even-better-errors": "^2.3.1",
+ "normalize-package-data": "^4.0.0",
+ "npm-normalize-package-bin": "^2.0.0"
},
- "peerDependencies": {
- "prosemirror-model": "^1.19.0",
- "prosemirror-state": "^1.4.2",
- "prosemirror-view": "^1.31.2"
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/prosemirror-transform": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz",
- "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==",
+ "node_modules/read-package-json-fast": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "prosemirror-model": "^1.0.0"
+ "json-parse-even-better-errors": "^2.3.0",
+ "npm-normalize-package-bin": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/prosemirror-view": {
- "version": "1.32.7",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.7.tgz",
- "integrity": "sha512-pvxiOoD4shW41X5bYDjRQk3DSG4fMqxh36yPMt7VYgU3dWRmqFzWJM/R6zeo1KtC8nyk717ZbQND3CC9VNeptw==",
+ "node_modules/read-package-json/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "prosemirror-model": "^1.16.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0"
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
- },
- "node_modules/protocols": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
- "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==",
- "dev": true
- },
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
+ "node_modules/read-package-json/node_modules/glob": {
+ "version": "8.1.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
+ }
},
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "node_modules/read-package-json/node_modules/hosted-git-info": {
+ "version": "5.2.1",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^7.5.1"
+ },
"engines": {
- "node": ">=6"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/punycode.js": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
- "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "node_modules/read-package-json/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "dev": true,
+ "license": "ISC",
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "node_modules/read-package-json/node_modules/minimatch": {
+ "version": "5.1.6",
"dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
"engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
+ "node": ">=10"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "node_modules/read-package-json/node_modules/normalize-package-data": {
+ "version": "4.0.1",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "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/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^5.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
},
- "node_modules/quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "node_modules/read-package-json/node_modules/npm-normalize-package-bin": {
+ "version": "2.0.0",
"dev": true,
+ "license": "ISC",
"engines": {
- "node": ">=8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "node_modules/read-pkg": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "loose-envify": "^1.1.0"
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "node_modules/read-pkg-up": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
},
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/react-icons": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz",
- "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==",
- "peerDependencies": {
- "react": "*"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/react-number-format": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.3.1.tgz",
- "integrity": "sha512-qpYcQLauIeEhCZUZY9jXZnnroOtdy3jYaS1zQ3M1Sr6r/KMOBEIGNIb7eKT19g2N1wbYgFgvDzs19hw5TrB8XQ==",
+ "node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "prop-types": "^15.7.2"
+ "locate-path": "^2.0.0"
},
- "peerDependencies": {
- "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "node_modules/read-pkg-up/node_modules/locate-path": {
+ "version": "2.0.0",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/react-remove-scroll": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz",
- "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==",
+ "node_modules/read-pkg-up/node_modules/p-limit": {
+ "version": "1.3.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "react-remove-scroll-bar": "^2.3.4",
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.1.0",
- "use-callback-ref": "^1.3.0",
- "use-sidecar": "^1.1.2"
+ "p-try": "^1.0.0"
},
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "node": ">=4"
}
},
- "node_modules/react-remove-scroll-bar": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
- "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
+ "node_modules/read-pkg-up/node_modules/p-locate": {
+ "version": "2.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.0.0"
+ "p-limit": "^1.1.0"
},
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "node": ">=4"
}
},
- "node_modules/react-router": {
- "version": "6.21.3",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz",
- "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==",
+ "node_modules/read-pkg-up/node_modules/p-try": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/path-exists": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/read-pkg/node_modules/load-json-file": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@remix-run/router": "1.14.2"
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
},
"engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
+ "node": ">=4"
}
},
- "node_modules/react-router-dom": {
- "version": "6.21.3",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz",
- "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==",
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@remix-run/router": "1.14.2",
- "react-router": "6.21.3"
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
},
"engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
+ "node": ">=4"
}
},
- "node_modules/react-style-singleton": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
- "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "node_modules/read-pkg/node_modules/path-type": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "get-nonce": "^1.0.0",
- "invariant": "^2.2.4",
- "tslib": "^2.0.0"
+ "pify": "^3.0.0"
},
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg/node_modules/pify": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg/node_modules/semver": {
+ "version": "5.7.2",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/read-pkg/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/react-textarea-autosize": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz",
- "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==",
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.20.13",
- "use-composed-ref": "^1.3.0",
- "use-latest": "^1.2.1"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ "node": ">= 6"
}
},
- "node_modules/read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "node_modules/readdir-scoped-modules": {
+ "version": "1.1.0",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "mute-stream": "~0.0.4"
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
},
"engines": {
- "node": ">=0.8"
+ "node": ">=8.10.0"
}
},
- "node_modules/read-cmd-shim": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz",
- "integrity": "sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==",
+ "node_modules/reading-time": {
+ "version": "1.5.0",
+ "license": "MIT"
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=8"
}
},
- "node_modules/read-package-json": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz",
- "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==",
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "glob": "^8.0.1",
- "json-parse-even-better-errors": "^2.3.1",
- "normalize-package-data": "^4.0.0",
- "npm-normalize-package-bin": "^2.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/read-package-json-fast": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
- "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==",
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "json-parse-even-better-errors": "^2.3.0",
- "npm-normalize-package-bin": "^1.0.1"
+ "regenerate": "^1.4.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=4"
}
},
- "node_modules/read-package-json/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "license": "MIT"
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "@babel/runtime": "^7.8.4"
}
},
- "node_modules/read-package-json/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
},
"funding": {
- "url": "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/sponsors/isaacs"
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/read-package-json/node_modules/hosted-git-info": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz",
- "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==",
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "lru-cache": "^7.5.1"
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=4"
}
},
- "node_modules/read-package-json/node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
"dev": true,
- "engines": {
- "node": ">=12"
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
}
},
- "node_modules/read-package-json/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
"dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/rehype-format": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "@types/hast": "^3.0.0",
+ "hast-util-embedded": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "hast-util-phrasing": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-whitespace-sensitive-tag-names": "^3.0.0",
+ "rehype-minify-whitespace": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
},
- "engines": {
- "node": ">=10"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-package-json/node_modules/normalize-package-data": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz",
- "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==",
- "dev": true,
+ "node_modules/rehype-format/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
- "hosted-git-info": "^5.0.0",
- "is-core-module": "^2.8.1",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/rehype-katex": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/katex": "^0.16.0",
+ "hast-util-from-html-isomorphic": "^2.0.0",
+ "hast-util-to-text": "^4.0.0",
+ "katex": "^0.16.0",
+ "unist-util-visit-parents": "^6.0.0",
+ "vfile": "^6.0.0"
},
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-package-json/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz",
- "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==",
- "dev": true,
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node_modules/rehype-katex/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
}
},
- "node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
- "dev": true,
+ "node_modules/rehype-katex/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/rehype-katex/node_modules/hast-util-to-text": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "unist-util-find-after": "^5.0.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
- "dev": true,
+ "node_modules/rehype-katex/node_modules/unist-util-find-after": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
- "dev": true,
+ "node_modules/rehype-katex/node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "locate-path": "^2.0.0"
+ "@types/unist": "^3.0.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
- "dev": true,
+ "node_modules/rehype-katex/node_modules/vfile": {
+ "version": "6.0.1",
+ "license": "MIT",
"dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-katex/node_modules/vfile-message": {
+ "version": "4.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-minify-whitespace": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-embedded": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
+ "node_modules/rehype-minify-whitespace/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
+ "@types/unist": "*"
}
},
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
- "dev": true,
+ "node_modules/rehype-parse": {
+ "version": "8.0.5",
+ "license": "MIT",
"dependencies": {
- "p-limit": "^1.1.0"
+ "@types/hast": "^2.0.0",
+ "hast-util-from-parse5": "^7.0.0",
+ "parse5": "^6.0.0",
+ "unified": "^10.0.0"
},
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ "node_modules/rehype-parse/node_modules/parse5": {
+ "version": "6.0.1",
+ "license": "MIT"
},
- "node_modules/read-pkg/node_modules/load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
- "dev": true,
+ "node_modules/rehype-pretty-code": {
+ "version": "0.9.11",
+ "license": "MIT",
+ "workspaces": [
+ "./word-highlighter-playground"
+ ],
"dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
+ "@types/hast": "^2.0.0",
+ "hash-obj": "^4.0.0",
+ "parse-numeric-range": "^1.3.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "shiki": "*"
}
},
- "node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "license": "MIT",
"dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg/node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/@types/hast": {
+ "version": "3.0.3",
+ "license": "MIT",
"dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
+ "@types/unist": "*"
}
},
- "node_modules/read-pkg/node_modules/path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/@types/mdast": {
+ "version": "4.0.3",
+ "license": "MIT",
"dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "@types/unist": "*"
}
},
- "node_modules/read-pkg/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
+ "node_modules/rehype-raw/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
},
- "node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
+ "node_modules/rehype-raw/node_modules/hast-util-from-parse5": {
+ "version": "8.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^8.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/read-pkg/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/rehype-raw/node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/hast-util-raw": {
+ "version": "9.0.2",
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "@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"
},
- "engines": {
- "node": ">= 6"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/readdir-scoped-modules": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
- "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
- "deprecated": "This functionality has been moved to @npmcli/fs",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/hast-util-to-parse5": {
+ "version": "8.0.0",
+ "license": "MIT",
"dependencies": {
- "debuglog": "^1.0.1",
- "dezalgo": "^1.0.0",
- "graceful-fs": "^4.1.2",
- "once": "^1.3.0"
+ "@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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/hastscript": {
+ "version": "8.0.0",
+ "license": "MIT",
"dependencies": {
- "picomatch": "^2.2.1"
+ "@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"
},
- "engines": {
- "node": ">=8.10.0"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/redent": {
+ "node_modules/rehype-raw/node_modules/html-void-elements": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "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/sponsors/wooorm"
}
},
- "node_modules/reflect.getprototypeof": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz",
- "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/mdast-util-to-hast": {
+ "version": "13.1.0",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "which-builtin-type": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
+ "@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"
},
"funding": {
- "url": "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/sponsors/ljharb"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
+ "node_modules/rehype-raw/node_modules/micromark-util-character": {
+ "version": "2.1.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
},
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/micromark-util-encode": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/rehype-raw/node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ "node_modules/rehype-raw/node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
+ "node_modules/rehype-raw/node_modules/micromark-util-types": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "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/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "set-function-name": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "@types/unist": "^3.0.0"
},
"funding": {
- "url": "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/sponsors/ljharb"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
+ "node_modules/rehype-raw/node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "license": "MIT",
"dependencies": {
- "jsesc": "~0.5.0"
+ "@types/unist": "^3.0.0"
},
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/rehype-format": {
+ "node_modules/rehype-raw/node_modules/unist-util-visit": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.0.tgz",
- "integrity": "sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-embedded": "^3.0.0",
- "hast-util-is-element": "^3.0.0",
- "hast-util-phrasing": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "html-whitespace-sensitive-tag-names": "^3.0.0",
- "rehype-minify-whitespace": "^6.0.0",
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
"unist-util-visit-parents": "^6.0.0"
},
"funding": {
@@ -17179,62 +17916,46 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/rehype-format/node_modules/@types/hast": {
- "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": "*"
- }
- },
- "node_modules/rehype-minify-whitespace": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.0.tgz",
- "integrity": "sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==",
+ "node_modules/rehype-raw/node_modules/vfile": {
+ "version": "6.0.1",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-embedded": "^3.0.0",
- "hast-util-is-element": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "unist-util-is": "^6.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0",
+ "vfile-message": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/rehype-minify-whitespace/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "node_modules/rehype-raw/node_modules/vfile-location": {
+ "version": "5.0.2",
+ "license": "MIT",
"dependencies": {
- "@types/unist": "*"
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/rehype-parse": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz",
- "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==",
+ "node_modules/rehype-raw/node_modules/vfile-message": {
+ "version": "4.0.2",
+ "license": "MIT",
"dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-from-parse5": "^7.0.0",
- "parse5": "^6.0.0",
- "unified": "^10.0.0"
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
- "node_modules/rehype-parse/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
"node_modules/rehype-remark": {
"version": "9.1.2",
- "resolved": "https://registry.npmjs.org/rehype-remark/-/rehype-remark-9.1.2.tgz",
- "integrity": "sha512-c0fG3/CrJ95zAQ07xqHSkdpZybwdsY7X5dNWvgL2XqLKZuqmG3+vk6kP/4miCnp+R+x/0uKKRSpfXb9aGR8Z5w==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
@@ -17248,8 +17969,7 @@
},
"node_modules/rehype-stringify": {
"version": "9.0.4",
- "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.4.tgz",
- "integrity": "sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"hast-util-to-html": "^8.0.0",
@@ -17262,8 +17982,7 @@
},
"node_modules/remark-gfm": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz",
- "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-gfm": "^2.0.0",
@@ -17275,10 +17994,35 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-math": {
+ "version": "5.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-math": "^2.0.0",
+ "micromark-extension-math": "^2.0.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-mdx": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-mdx": "^2.0.0",
+ "micromark-extension-mdxjs": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/remark-parse": {
"version": "10.0.2",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz",
- "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-from-markdown": "^1.0.0",
@@ -17289,10 +18033,55 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-reading-time": {
+ "version": "2.0.1",
+ "license": "ISC",
+ "dependencies": {
+ "estree-util-is-identifier-name": "^2.0.0",
+ "estree-util-value-to-estree": "^1.3.0",
+ "reading-time": "^1.3.0",
+ "unist-util-visit": "^3.1.0"
+ }
+ },
+ "node_modules/remark-reading-time/node_modules/unist-util-is": {
+ "version": "5.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-reading-time/node_modules/unist-util-visit": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": {
+ "version": "4.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/remark-rehype": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz",
- "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==",
+ "license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
@@ -17306,8 +18095,7 @@
},
"node_modules/remark-stringify": {
"version": "10.0.3",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.3.tgz",
- "integrity": "sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==",
+ "license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-to-markdown": "^1.0.0",
@@ -17318,26 +18106,27 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remove-accents": {
+ "version": "0.5.0",
+ "license": "MIT"
+ },
"node_modules/require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/requires-port": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/resolve": {
"version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -17352,9 +18141,8 @@
},
"node_modules/resolve-cwd": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-from": "^5.0.0"
},
@@ -17364,27 +18152,32 @@
},
"node_modules/resolve-cwd/node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/resolve-from": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "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/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
"node_modules/restore-cursor": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"onetime": "^5.1.0",
"signal-exit": "^3.0.2"
@@ -17393,26 +18186,18 @@
"node": ">=8"
}
},
- "node_modules/restore-cursor/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
"node_modules/retry": {
"version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -17420,9 +18205,8 @@
},
"node_modules/rimraf": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -17435,9 +18219,8 @@
},
"node_modules/rimraf/node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -17453,11 +18236,14 @@
"url": "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/sponsors/isaacs"
}
},
+ "node_modules/robust-predicates": {
+ "version": "3.0.2",
+ "license": "Unlicense"
+ },
"node_modules/rollup": {
- "version": "4.9.6",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz",
- "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==",
+ "version": "4.9.4",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "1.0.5"
@@ -17470,27 +18256,26 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.9.6",
- "@rollup/rollup-android-arm64": "4.9.6",
- "@rollup/rollup-darwin-arm64": "4.9.6",
- "@rollup/rollup-darwin-x64": "4.9.6",
- "@rollup/rollup-linux-arm-gnueabihf": "4.9.6",
- "@rollup/rollup-linux-arm64-gnu": "4.9.6",
- "@rollup/rollup-linux-arm64-musl": "4.9.6",
- "@rollup/rollup-linux-riscv64-gnu": "4.9.6",
- "@rollup/rollup-linux-x64-gnu": "4.9.6",
- "@rollup/rollup-linux-x64-musl": "4.9.6",
- "@rollup/rollup-win32-arm64-msvc": "4.9.6",
- "@rollup/rollup-win32-ia32-msvc": "4.9.6",
- "@rollup/rollup-win32-x64-msvc": "4.9.6",
+ "@rollup/rollup-android-arm-eabi": "4.9.4",
+ "@rollup/rollup-android-arm64": "4.9.4",
+ "@rollup/rollup-darwin-arm64": "4.9.4",
+ "@rollup/rollup-darwin-x64": "4.9.4",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.9.4",
+ "@rollup/rollup-linux-arm64-gnu": "4.9.4",
+ "@rollup/rollup-linux-arm64-musl": "4.9.4",
+ "@rollup/rollup-linux-riscv64-gnu": "4.9.4",
+ "@rollup/rollup-linux-x64-gnu": "4.9.4",
+ "@rollup/rollup-linux-x64-musl": "4.9.4",
+ "@rollup/rollup-win32-arm64-msvc": "4.9.4",
+ "@rollup/rollup-win32-ia32-msvc": "4.9.4",
+ "@rollup/rollup-win32-x64-msvc": "4.9.4",
"fsevents": "~2.3.2"
}
},
"node_modules/rollup-plugin-webpack-stats": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/rollup-plugin-webpack-stats/-/rollup-plugin-webpack-stats-0.2.4.tgz",
- "integrity": "sha512-bWGNGWpCFXB662mdIN2OHCrxXFBIgG+wS4UEksmORlT670F2ucLFYrrOVFTU6wjifGwPPRWwJMx5Z03rbDisWw==",
+ "version": "0.2.3",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
},
@@ -17500,28 +18285,23 @@
},
"node_modules/rope-sequence": {
"version": "1.3.4",
- "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
- "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="
+ "license": "MIT"
},
"node_modules/rrweb-cssom": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
- "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/run-async": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/run-parallel": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
{
@@ -17537,202 +18317,90 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "license": "BSD-3-Clause"
+ },
"node_modules/rxjs": {
"version": "7.8.1",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
- "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/sade": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "license": "MIT",
"dependencies": {
"mri": "^1.1.0"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz",
- "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "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/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
- "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
- "is-regex": "^1.1.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "node_modules/sandpack-vue3": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/sandpack-vue3/-/sandpack-vue3-2.2.3.tgz",
- "integrity": "sha512-eMaG2yTiuwKpe9qq8+JSbN2NwELpAx6CP5Ex7ylJvnIKncPw6mAu07J1EdfPev47/PTauu6Y/xJmuy/GL1deIw==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "@codemirror/autocomplete": "^6.4.0",
- "@codemirror/commands": "^6.2.0",
- "@codemirror/lang-css": "^6.0.2",
- "@codemirror/lang-html": "^6.4.1",
- "@codemirror/lang-javascript": "^6.1.2",
- "@codemirror/language": "^6.4.0",
- "@codemirror/state": "^6.2.0",
- "@codemirror/view": "^6.7.3",
- "@codesandbox/sandpack-client": "^1.20.7",
- "@lezer/highlight": "^1.1.3",
- "@stitches/core": "^1.2.8",
- "clean-set": "^1.1.2",
- "code-hike-classer-vue3": "^0.1.6",
- "lodash.isequal": "^4.5.0",
- "lz-string": "^1.4.4",
- "rimraf": "^4.1.2"
- },
- "engines": {
- "node": ">=16",
- "npm": ">=7"
- },
- "peerDependencies": {
- "vue": "^3.2.0"
- },
- "peerDependenciesMeta": {
- "vue": {
- "optional": true
- }
- }
- },
- "node_modules/sandpack-vue3/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/sandpack-vue3/node_modules/glob": {
- "version": "9.3.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
- "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "minimatch": "^8.0.2",
- "minipass": "^4.2.4",
- "path-scurry": "^1.6.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "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/sponsors/isaacs"
+ "node": ">=6"
}
},
- "node_modules/sandpack-vue3/node_modules/minimatch": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
- "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
+ "node_modules/safe-array-concat": {
+ "version": "1.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=0.4"
},
"funding": {
- "url": "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/sponsors/isaacs"
+ "url": "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/sponsors/ljharb"
}
},
- "node_modules/sandpack-vue3/node_modules/minipass": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
- "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "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/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
},
- "node_modules/sandpack-vue3/node_modules/rimraf": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
- "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
+ "node_modules/safe-regex-test": {
+ "version": "1.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "glob": "^9.2.0"
- },
- "bin": {
- "rimraf": "dist/cjs/src/bin.js"
- },
- "engines": {
- "node": ">=14"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
},
"funding": {
- "url": "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/sponsors/isaacs"
+ "url": "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/sponsors/ljharb"
}
},
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "license": "MIT"
+ },
"node_modules/sass": {
- "version": "1.70.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz",
- "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==",
- "dev": true,
+ "version": "1.69.7",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -17772,9 +18440,8 @@
},
"node_modules/saxes": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
- "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"xmlchars": "^2.2.0"
},
@@ -17784,24 +18451,49 @@
},
"node_modules/scheduler": {
"version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
}
},
- "node_modules/search-insights": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz",
- "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==",
- "dev": true,
- "peer": true
+ "node_modules/schema-utils": {
+ "version": "3.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "compute-scroll-into-view": "^3.0.2"
+ }
+ },
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
"node_modules/semver": {
"version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -17814,9 +18506,8 @@
},
"node_modules/semver/node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -17826,27 +18517,31 @@
},
"node_modules/semver/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
},
"node_modules/set-blocking": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/set-function-length": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
- "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
+ "version": "1.1.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.2",
+ "get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
+ "has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -17854,9 +18549,8 @@
},
"node_modules/set-function-name": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
- "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
"functions-have-names": "^1.2.3",
@@ -17868,9 +18562,8 @@
},
"node_modules/shallow-clone": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"kind-of": "^6.0.2"
},
@@ -17880,9 +18573,7 @@
},
"node_modules/shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -17892,18 +18583,14 @@
},
"node_modules/shebang-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/shiki": {
"version": "0.14.7",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz",
- "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-sequence-parser": "^1.1.0",
"jsonc-parser": "^3.2.0",
@@ -17913,9 +18600,8 @@
},
"node_modules/side-channel": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
@@ -17927,36 +18613,36 @@
},
"node_modules/siginfo": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "engines": {
- "node": ">=14"
+ "version": "3.0.7",
+ "license": "ISC"
+ },
+ "node_modules/sirv": {
+ "version": "2.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
},
- "funding": {
- "url": "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/sponsors/isaacs"
+ "engines": {
+ "node": ">= 10"
}
},
"node_modules/slash": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/smart-buffer": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
@@ -17964,9 +18650,8 @@
},
"node_modules/socks": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz",
- "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ip": "^2.0.0",
"smart-buffer": "^4.2.0"
@@ -17978,9 +18663,8 @@
},
"node_modules/socks-proxy-agent": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
- "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
@@ -17992,9 +18676,8 @@
},
"node_modules/sort-keys": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz",
- "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-obj": "^2.0.0"
},
@@ -18007,35 +18690,38 @@
},
"node_modules/sort-keys/node_modules/is-plain-obj": {
"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==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"node_modules/space-separated-tokens": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -18043,25 +18729,22 @@
},
"node_modules/spdx-correct": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"node_modules/spdx-exceptions": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz",
- "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==",
- "dev": true
+ "version": "2.3.0",
+ "dev": true,
+ "license": "CC-BY-3.0"
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -18069,15 +18752,13 @@
},
"node_modules/spdx-license-ids": {
"version": "3.0.16",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
- "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
- "dev": true
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/split": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"through": "2"
},
@@ -18087,24 +18768,20 @@
},
"node_modules/split2": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"readable-stream": "^3.0.0"
}
},
"node_modules/sprintf-js": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
+ "license": "BSD-3-Clause"
},
"node_modules/ssri": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
- "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"minipass": "^3.1.1"
},
@@ -18112,74 +18789,69 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/ssri/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "node_modules/stackback": {
+ "version": "0.0.2",
"dev": true,
+ "license": "MIT"
+ },
+ "node_modules/stacktracey": {
+ "version": "2.1.8",
+ "license": "Unlicense",
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "as-table": "^1.0.36",
+ "get-source": "^2.0.12"
}
},
- "node_modules/ssri/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/stackback": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
- "dev": true
- },
"node_modules/std-env": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
- "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/stoppable": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "engines": {
+ "node": ">=10.0.0"
+ }
},
"node_modules/string_decoder": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.2.0"
}
},
"node_modules/string-natural-compare": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz",
- "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "version": "4.2.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/string-width-cjs": {
"name": "string-width",
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -18191,36 +18863,13 @@
},
"node_modules/string-width-cjs/node_modules/emoji-regex": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/ansi-regex?sponsor=1"
- }
+ "license": "MIT"
},
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "node_modules/string-width/node_modules/emoji-regex": {
+ "version": "8.0.0",
"dev": true,
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/strip-ansi?sponsor=1"
- }
+ "license": "MIT"
},
"node_modules/string.prototype.codepointat": {
"version": "0.2.1",
@@ -18229,9 +18878,8 @@
},
"node_modules/string.prototype.matchall": {
"version": "4.0.10",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
- "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -18249,9 +18897,8 @@
},
"node_modules/string.prototype.trim": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
- "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -18266,9 +18913,8 @@
},
"node_modules/string.prototype.trimend": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
- "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -18280,9 +18926,8 @@
},
"node_modules/string.prototype.trimstart": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
- "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -18294,8 +18939,7 @@
},
"node_modules/stringify-entities": {
"version": "4.0.3",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz",
- "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==",
+ "license": "MIT",
"dependencies": {
"character-entities-html4": "^2.0.0",
"character-entities-legacy": "^3.0.0"
@@ -18307,9 +18951,8 @@
},
"node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -18320,9 +18963,8 @@
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -18332,27 +18974,38 @@
},
"node_modules/strip-bom": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/strip-indent": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"min-indent": "^1.0.0"
},
@@ -18362,9 +19015,8 @@
},
"node_modules/strip-json-comments": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -18374,9 +19026,8 @@
},
"node_modules/strip-literal": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz",
- "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"acorn": "^8.10.0"
},
@@ -18386,9 +19037,8 @@
},
"node_modules/strong-log-transformer": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz",
- "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"duplexer": "^0.1.1",
"minimist": "^1.2.0",
@@ -18401,17 +19051,76 @@
"node": ">=4"
}
},
- "node_modules/style-mod": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz",
- "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==",
- "dev": true
+ "node_modules/style-to-object": {
+ "version": "0.4.4",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.1.1"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.3.1",
+ "license": "MIT"
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/sucrase/node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/supports-color": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -18419,34 +19128,83 @@
"node": ">=8"
}
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/sponsors/ljharb"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/system-architecture": {
+ "version": "0.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "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/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "license": "MIT"
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "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/sponsors/ljharb"
+ "node": ">=6"
}
},
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "node_modules/tabbable": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
- },
"node_modules/tar": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
- "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -18461,9 +19219,8 @@
},
"node_modules/tar-stream": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@@ -18477,74 +19234,128 @@
},
"node_modules/tar/node_modules/minipass": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=8"
}
},
"node_modules/tar/node_modules/yallist": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/temp-dir": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
- "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
+ "node_modules/terser": {
+ "version": "5.27.0",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.10",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.20",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.26.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/text-extensions": {
"version": "1.9.0",
- "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
- "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
},
"node_modules/text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
},
- "node_modules/textextensions": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.6.0.tgz",
- "integrity": "sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==",
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
"engines": {
"node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
}
},
"node_modules/throttle-debounce": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/through": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/through2": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"readable-stream": "3"
}
@@ -18555,42 +19366,118 @@
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
},
"node_modules/tinybench": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz",
- "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==",
- "dev": true
+ "version": "2.5.1",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/tinypool": {
"version": "0.7.0",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz",
- "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/tinyspy": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz",
- "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/tippy.js": {
"version": "6.3.7",
- "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
- "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==",
+ "license": "MIT",
"dependencies": {
"@popperjs/core": "^2.9.0"
}
},
+ "node_modules/title": {
+ "version": "3.5.3",
+ "license": "MIT",
+ "dependencies": {
+ "arg": "1.0.0",
+ "chalk": "2.3.0",
+ "clipboardy": "1.2.2",
+ "titleize": "1.0.0"
+ },
+ "bin": {
+ "title": "bin/title.js"
+ }
+ },
+ "node_modules/title/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/title/node_modules/arg": {
+ "version": "1.0.0",
+ "license": "MIT"
+ },
+ "node_modules/title/node_modules/chalk": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/title/node_modules/color-convert": {
+ "version": "1.9.3",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/title/node_modules/color-name": {
+ "version": "1.1.3",
+ "license": "MIT"
+ },
+ "node_modules/title/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/title/node_modules/has-flag": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/title/node_modules/supports-color": {
+ "version": "4.5.0",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/titleize": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/tmp": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"rimraf": "^3.0.0"
},
@@ -18600,18 +19487,16 @@
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -18619,11 +19504,17 @@
"node": ">=8.0"
}
},
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/tough-cookie": {
"version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -18636,18 +19527,16 @@
},
"node_modules/tough-cookie/node_modules/universalify": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/tr46": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
- "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"punycode": "^2.3.0"
},
@@ -18657,17 +19546,15 @@
},
"node_modules/treeverse": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz",
- "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/trim-lines": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -18675,17 +19562,15 @@
},
"node_modules/trim-newlines": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/trim-trailing-lines": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz",
- "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -18693,18 +19578,28 @@
},
"node_modules/trough": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz",
- "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
}
},
+ "node_modules/ts-dedent": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.10"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/tsconfig-paths": {
"version": "3.15.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
- "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json5": "^0.0.29",
"json5": "^1.0.2",
@@ -18714,9 +19609,8 @@
},
"node_modules/tsconfig-paths/node_modules/json5": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimist": "^1.2.0"
},
@@ -18726,23 +19620,20 @@
},
"node_modules/tsconfig-paths/node_modules/strip-bom": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/tslib": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "license": "0BSD"
},
"node_modules/tsutils": {
"version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^1.8.1"
},
@@ -18755,15 +19646,83 @@
},
"node_modules/tsutils/node_modules/tslib": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/tsx": {
+ "version": "4.7.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.19.10",
+ "get-tsconfig": "^4.7.2"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.19.12",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/tsx/node_modules/esbuild": {
+ "version": "0.19.12",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.19.12",
+ "@esbuild/android-arm": "0.19.12",
+ "@esbuild/android-arm64": "0.19.12",
+ "@esbuild/android-x64": "0.19.12",
+ "@esbuild/darwin-arm64": "0.19.12",
+ "@esbuild/darwin-x64": "0.19.12",
+ "@esbuild/freebsd-arm64": "0.19.12",
+ "@esbuild/freebsd-x64": "0.19.12",
+ "@esbuild/linux-arm": "0.19.12",
+ "@esbuild/linux-arm64": "0.19.12",
+ "@esbuild/linux-ia32": "0.19.12",
+ "@esbuild/linux-loong64": "0.19.12",
+ "@esbuild/linux-mips64el": "0.19.12",
+ "@esbuild/linux-ppc64": "0.19.12",
+ "@esbuild/linux-riscv64": "0.19.12",
+ "@esbuild/linux-s390x": "0.19.12",
+ "@esbuild/linux-x64": "0.19.12",
+ "@esbuild/netbsd-x64": "0.19.12",
+ "@esbuild/openbsd-x64": "0.19.12",
+ "@esbuild/sunos-x64": "0.19.12",
+ "@esbuild/win32-arm64": "0.19.12",
+ "@esbuild/win32-ia32": "0.19.12",
+ "@esbuild/win32-x64": "0.19.12"
+ }
},
"node_modules/type-check": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -18773,17 +19732,15 @@
},
"node_modules/type-detect": {
"version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/type-fest": {
"version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=14.16"
},
@@ -18793,9 +19750,8 @@
},
"node_modules/typed-array-buffer": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
- "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.1",
@@ -18807,9 +19763,8 @@
},
"node_modules/typed-array-byte-length": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"for-each": "^0.3.3",
@@ -18825,9 +19780,8 @@
},
"node_modules/typed-array-byte-offset": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2",
@@ -18844,9 +19798,8 @@
},
"node_modules/typed-array-length": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"for-each": "^0.3.3",
@@ -18858,24 +19811,21 @@
},
"node_modules/typedarray": {
"version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
- "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
- "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-typedarray": "^1.0.0"
}
},
"node_modules/typescript": {
"version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -18886,20 +19836,17 @@
},
"node_modules/uc.micro": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz",
- "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig=="
+ "license": "MIT"
},
"node_modules/ufo": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz",
- "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/uglify-js": {
"version": "3.17.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
- "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
"dev": true,
+ "license": "BSD-2-Clause",
"optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
@@ -18910,9 +19857,8 @@
},
"node_modules/unbox-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
@@ -18923,26 +19869,32 @@
"url": "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/sponsors/ljharb"
}
},
+ "node_modules/undici": {
+ "version": "5.28.3",
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/busboy": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.0"
+ }
+ },
"node_modules/undici-types": {
"version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "dev": true
+ "license": "MIT"
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/unicode-match-property-ecmascript": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"unicode-canonical-property-names-ecmascript": "^2.0.0",
"unicode-property-aliases-ecmascript": "^2.0.0"
@@ -18953,18 +19905,16 @@
},
"node_modules/unicode-match-property-value-ecmascript": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/unicode-property-aliases-ecmascript": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -18980,8 +19930,7 @@
},
"node_modules/unified": {
"version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"bail": "^2.0.0",
@@ -18998,8 +19947,7 @@
},
"node_modules/unified/node_modules/is-plain-obj": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -19009,9 +19957,8 @@
},
"node_modules/unique-filename": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
- "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"unique-slug": "^3.0.0"
},
@@ -19021,9 +19968,8 @@
},
"node_modules/unique-slug": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
- "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4"
},
@@ -19033,8 +19979,7 @@
},
"node_modules/unist-util-find-after": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz",
- "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
@@ -19046,8 +19991,7 @@
},
"node_modules/unist-util-find-after/node_modules/unist-util-is": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -19058,8 +20002,7 @@
},
"node_modules/unist-util-generated": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
- "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
@@ -19067,8 +20010,7 @@
},
"node_modules/unist-util-is": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0"
},
@@ -19079,13 +20021,22 @@
},
"node_modules/unist-util-is/node_modules/@types/unist": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
- "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ "license": "MIT"
},
"node_modules/unist-util-position": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz",
- "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position-from-estree": {
+ "version": "1.1.2",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -19094,10 +20045,55 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/unist-util-remove": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/unist-util-remove-position/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove/node_modules/@types/unist": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
"node_modules/unist-util-stringify-position": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -19108,8 +20104,7 @@
},
"node_modules/unist-util-visit": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0",
@@ -19122,8 +20117,7 @@
},
"node_modules/unist-util-visit-parents": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
"unist-util-is": "^6.0.0"
@@ -19135,13 +20129,11 @@
},
"node_modules/unist-util-visit-parents/node_modules/@types/unist": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
- "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
+ "license": "MIT"
},
"node_modules/unist-util-visit/node_modules/unist-util-is": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
@@ -19152,8 +20144,7 @@
},
"node_modules/unist-util-visit/node_modules/unist-util-visit-parents": {
"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==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
@@ -19165,24 +20156,21 @@
},
"node_modules/universal-user-agent": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
- "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/universalify": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/upath": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
- "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4",
"yarn": "*"
@@ -19190,9 +20178,6 @@
},
"node_modules/update-browserslist-db": {
"version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -19207,6 +20192,7 @@
"url": "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/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -19220,18 +20206,15 @@
},
"node_modules/uri-js": {
"version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/url-parse": {
"version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
@@ -19239,8 +20222,7 @@
},
"node_modules/use-callback-ref": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz",
- "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==",
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.0"
},
@@ -19259,16 +20241,14 @@
},
"node_modules/use-composed-ref": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
- "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
+ "license": "MIT",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/use-isomorphic-layout-effect": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
- "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "license": "MIT",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},
@@ -19280,8 +20260,7 @@
},
"node_modules/use-latest": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz",
- "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==",
+ "license": "MIT",
"dependencies": {
"use-isomorphic-layout-effect": "^1.1.1"
},
@@ -19296,8 +20275,7 @@
},
"node_modules/use-prefers-color-scheme": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/use-prefers-color-scheme/-/use-prefers-color-scheme-1.1.3.tgz",
- "integrity": "sha512-ZRgDfb5BFLum/Sud4SpZ+d1YcV+lRbsupw0qQ/rGy5kGrpE3KMUQgEQOKiQQSa4Wslex46n5fKFO+9FGMTosUQ==",
+ "license": "MIT",
"engines": {
"node": ">=8",
"npm": ">=5"
@@ -19308,8 +20286,7 @@
},
"node_modules/use-sidecar": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
- "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "license": "MIT",
"dependencies": {
"detect-node-es": "^1.1.0",
"tslib": "^2.0.0"
@@ -19329,22 +20306,19 @@
},
"node_modules/util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/uuid": {
"version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/uvu": {
"version": "0.5.6",
- "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
- "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
+ "license": "MIT",
"dependencies": {
"dequal": "^2.0.0",
"diff": "^5.0.0",
@@ -19360,15 +20334,13 @@
},
"node_modules/v8-compile-cache": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
- "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
@@ -19376,9 +20348,8 @@
},
"node_modules/validate-npm-package-name": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz",
- "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"builtins": "^5.0.0"
},
@@ -19386,19 +20357,9 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/veaury": {
- "version": "2.3.12",
- "resolved": "https://registry.npmjs.org/veaury/-/veaury-2.3.12.tgz",
- "integrity": "sha512-RC1WwpVMDrXgEDTU4p3FGVtlmzob0EBBGejJYmBVyYm+yGFkjMWLjn9i8q9ep2i2W15G1az6pvjCTEBBiwgUgw==",
- "peerDependencies": {
- "react": ">= 16.4.0",
- "react-dom": ">= 16.4.0"
- }
- },
"node_modules/vfile": {
"version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
@@ -19412,8 +20373,7 @@
},
"node_modules/vfile-location": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz",
- "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"vfile": "^5.0.0"
@@ -19423,10 +20383,22 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/vfile-matter": {
+ "version": "3.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/js-yaml": "^4.0.0",
+ "is-buffer": "^2.0.0",
+ "js-yaml": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/vfile-message": {
"version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-stringify-position": "^3.0.0"
@@ -19437,10 +20409,9 @@
}
},
"node_modules/vite": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",
- "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==",
+ "version": "4.5.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
"esbuild": "^0.18.10",
"postcss": "^8.4.27",
@@ -19493,9 +20464,8 @@
},
"node_modules/vite-node": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz",
- "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cac": "^6.7.14",
"debug": "^4.3.4",
@@ -19516,9 +20486,8 @@
},
"node_modules/vite-plugin-eslint": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz",
- "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^4.2.1",
"@types/eslint": "^8.4.5",
@@ -19531,9 +20500,8 @@
},
"node_modules/vite-plugin-eslint/node_modules/rollup": {
"version": "2.79.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
"dev": true,
+ "license": "MIT",
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -19546,9 +20514,8 @@
},
"node_modules/vite-plugin-externalize-deps": {
"version": "0.7.0",
- "resolved": "https://registry.npmjs.org/vite-plugin-externalize-deps/-/vite-plugin-externalize-deps-0.7.0.tgz",
- "integrity": "sha512-do2gPrR79Tm8UKcqsw3RTAtN4YO8GkVRBckWdJWINZ3Qdp3KN9S1oyUZxKszTB/iyg4zdOUweLOeBI8t86QVow==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "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/sponsors/voracious"
},
@@ -19558,80 +20525,23 @@
},
"node_modules/vite/node_modules/rollup": {
"version": "3.29.4",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
- "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"dev": true,
+ "license": "MIT",
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=14.18.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/vitepress": {
- "version": "1.0.0-beta.1",
- "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-beta.1.tgz",
- "integrity": "sha512-V2yyCwQ+v9fh7rbnGDLp8M7vHa9sLElexXf/JHtBOsOwv7ed9wt1QI4WUagYgKR3TeoJT9v2s6f0UaQSne0EvQ==",
- "dev": true,
- "dependencies": {
- "@docsearch/css": "^3.3.5",
- "@docsearch/js": "^3.3.5",
- "@vitejs/plugin-vue": "^4.2.3",
- "@vue/devtools-api": "^6.5.0",
- "@vueuse/core": "^10.1.2",
- "@vueuse/integrations": "^10.1.2",
- "body-scroll-lock": "4.0.0-beta.0",
- "focus-trap": "^7.4.2",
- "mark.js": "8.11.1",
- "minisearch": "^6.1.0",
- "shiki": "^0.14.2",
- "vite": "^4.3.8",
- "vue": "^3.3.4"
- },
- "bin": {
- "vitepress": "bin/vitepress.js"
- }
- },
- "node_modules/vitepress-plugin-sandpack": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/vitepress-plugin-sandpack/-/vitepress-plugin-sandpack-0.2.3.tgz",
- "integrity": "sha512-3slNW/FyrR3W9/C0blKGdO8pvfridDrjMHzQhvtCr/aU3MtG5f+yKCSRVsvSyNsZYZxytGKSPTQpnbXuH3eB0w==",
- "dev": true,
- "dependencies": {
- "@codesandbox/sandpack-themes": "^2.0.21",
- "markdown-it-container": "^3.0.0",
- "sandpack-vue3": "^2.2.3"
- },
- "engines": {
- "node": ">=16",
- "npm": ">=7"
- },
- "peerDependencies": {
- "vite": "^4.0.4",
- "vitepress": "latest",
- "vue": "^3.2.0"
- },
- "peerDependenciesMeta": {
- "vite": {
- "optional": true
- },
- "vitepress": {
- "optional": true
- },
- "vue": {
- "optional": true
- }
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
}
},
"node_modules/vitest": {
"version": "0.34.6",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz",
- "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/chai": "^4.3.5",
"@types/chai-subset": "^1.3.3",
@@ -19706,55 +20616,20 @@
},
"node_modules/vscode-oniguruma": {
"version": "1.7.0",
- "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz",
- "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==",
- "dev": true
+ "license": "MIT"
},
"node_modules/vscode-textmate": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz",
- "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==",
- "dev": true
- },
- "node_modules/vue": {
- "version": "3.4.15",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz",
- "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==",
- "dev": true,
- "dependencies": {
- "@vue/compiler-dom": "3.4.15",
- "@vue/compiler-sfc": "3.4.15",
- "@vue/runtime-dom": "3.4.15",
- "@vue/server-renderer": "3.4.15",
- "@vue/shared": "3.4.15"
- },
- "peerDependencies": {
- "typescript": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/vue-github-button": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vue-github-button/-/vue-github-button-3.1.0.tgz",
- "integrity": "sha512-S69NFalucetUW4AjMkLlHY/fgTWu6LEGEtehMewXRNLnjODhDvJj4lwt0u0BSPXLTDB+PLk1tWlwx3pw+ItLgQ==",
- "dependencies": {
- "github-buttons": "^2.22.0"
- }
+ "license": "MIT"
},
"node_modules/w3c-keyname": {
"version": "2.2.8",
- "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
- "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
+ "license": "MIT"
},
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
- "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"xml-name-validator": "^4.0.0"
},
@@ -19764,42 +20639,158 @@
},
"node_modules/walk-up-path": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz",
- "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
},
"node_modules/wcwidth": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"defaults": "^1.0.3"
}
},
"node_modules/web-namespaces": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
- "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
}
},
+ "node_modules/web-worker": {
+ "version": "1.3.0",
+ "license": "Apache-2.0"
+ },
"node_modules/webidl-conversions": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
+ "node_modules/webpack": {
+ "version": "5.90.0",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.21.10",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.15.0",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-bundle-analyzer": {
+ "version": "4.10.1",
+ "license": "MIT",
+ "dependencies": {
+ "@discoveryjs/json-ext": "0.5.7",
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "commander": "^7.2.0",
+ "debounce": "^1.2.1",
+ "escape-string-regexp": "^4.0.0",
+ "gzip-size": "^6.0.0",
+ "html-escaper": "^2.0.2",
+ "is-plain-object": "^5.0.0",
+ "opener": "^1.5.2",
+ "picocolors": "^1.0.0",
+ "sirv": "^2.0.3",
+ "ws": "^7.3.1"
+ },
+ "bin": {
+ "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/commander": {
+ "version": "7.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/ws": {
+ "version": "7.5.9",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/whatwg-encoding": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
- "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"iconv-lite": "0.6.3"
},
@@ -19809,9 +20800,8 @@
},
"node_modules/whatwg-encoding/node_modules/iconv-lite": {
"version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
@@ -19821,18 +20811,16 @@
},
"node_modules/whatwg-mimetype": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
- "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/whatwg-url": {
"version": "12.0.1",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
- "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "^4.1.1",
"webidl-conversions": "^7.0.0"
@@ -19843,9 +20831,7 @@
},
"node_modules/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -19858,9 +20844,8 @@
},
"node_modules/which-boxed-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
@@ -19874,9 +20859,8 @@
},
"node_modules/which-builtin-type": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
- "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"function.prototype.name": "^1.1.5",
"has-tostringtag": "^1.0.0",
@@ -19900,9 +20884,8 @@
},
"node_modules/which-collection": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
- "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-map": "^2.0.1",
"is-set": "^2.0.1",
@@ -19915,9 +20898,8 @@
},
"node_modules/which-typed-array": {
"version": "1.1.13",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
- "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.4",
@@ -19934,9 +20916,8 @@
},
"node_modules/why-is-node-running": {
"version": "2.2.2",
- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz",
- "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"siginfo": "^2.0.0",
"stackback": "0.0.2"
@@ -19950,62 +20931,53 @@
},
"node_modules/wide-align": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
- "node_modules/wide-align/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/wide-align/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
"dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "license": "MIT"
+ },
+ "node_modules/workerd": {
+ "version": "1.20240129.0",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "workerd": "bin/workerd"
},
"engines": {
- "node": ">=8"
+ "node": ">=16"
+ },
+ "optionalDependencies": {
+ "@cloudflare/workerd-darwin-64": "1.20240129.0",
+ "@cloudflare/workerd-darwin-arm64": "1.20240129.0",
+ "@cloudflare/workerd-linux-64": "1.20240129.0",
+ "@cloudflare/workerd-linux-arm64": "1.20240129.0",
+ "@cloudflare/workerd-windows-64": "1.20240129.0"
}
},
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
- },
"node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "version": "6.2.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/wrap-ansi?sponsor=1"
+ "node": ">=8"
}
},
"node_modules/wrap-ansi-cjs": {
"name": "wrap-ansi",
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -20018,76 +20990,15 @@
"url": "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/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "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/chalk/strip-ansi?sponsor=1"
- }
- },
"node_modules/wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/write-file-atomic": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.7"
@@ -20096,17 +21007,10 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/write-file-atomic/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
"node_modules/write-json-file": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz",
- "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"detect-indent": "^6.0.0",
"graceful-fs": "^4.1.15",
@@ -20124,24 +21028,16 @@
},
"node_modules/write-json-file/node_modules/is-plain-obj": {
"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==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/write-json-file/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
"node_modules/write-json-file/node_modules/write-file-atomic": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
@@ -20151,9 +21047,8 @@
},
"node_modules/write-pkg": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz",
- "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sort-keys": "^2.0.0",
"type-fest": "^0.4.1",
@@ -20165,18 +21060,16 @@
},
"node_modules/write-pkg/node_modules/detect-indent": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
- "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/write-pkg/node_modules/make-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pify": "^4.0.1",
"semver": "^5.6.0"
@@ -20187,33 +21080,24 @@
},
"node_modules/write-pkg/node_modules/pify": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/write-pkg/node_modules/semver": {
"version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
- "node_modules/write-pkg/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
"node_modules/write-pkg/node_modules/sort-keys": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-obj": "^1.0.0"
},
@@ -20223,18 +21107,16 @@
},
"node_modules/write-pkg/node_modules/type-fest": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz",
- "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=6"
}
},
"node_modules/write-pkg/node_modules/write-file-atomic": {
"version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
@@ -20243,9 +21125,8 @@
},
"node_modules/write-pkg/node_modules/write-json-file": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz",
- "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"detect-indent": "^5.0.0",
"graceful-fs": "^4.1.15",
@@ -20260,9 +21141,7 @@
},
"node_modules/ws": {
"version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
@@ -20281,43 +21160,41 @@
},
"node_modules/xml-name-validator": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
- "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=12"
}
},
"node_modules/xmlchars": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/xtend": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
},
"node_modules/y-partykit": {
- "version": "0.0.0-fffe721",
- "resolved": "https://registry.npmjs.org/y-partykit/-/y-partykit-0.0.0-fffe721.tgz",
- "integrity": "sha512-JXnUsSyuWIPnYWFss7FiOiIgMs4z1usLtPpxh2kvN2UpcztxYr1ytci6/oFUdwieFQD7UEkshSl0bXthZVChNQ==",
+ "version": "0.0.25",
+ "resolved": "https://registry.npmjs.org/y-partykit/-/y-partykit-0.0.25.tgz",
+ "integrity": "sha512-/EIL73TuYX6lYnxM4mb/kTTKllS1vNjBXk9KJXFwTXFrUqMo8hbJMqnE+glvBG2EDejEI06rk3jR50lpDB8Dqg==",
"dependencies": {
- "lib0": "^0.2.60",
+ "lib0": "^0.2.89",
"lodash.debounce": "^4.0.8",
- "y-protocols": "^1.0.5",
- "yjs": "^13.5.44"
+ "react": "^18.2.0",
+ "y-protocols": "^1.0.6",
+ "yjs": "^13.6.12"
}
},
"node_modules/y-prosemirror": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/y-prosemirror/-/y-prosemirror-1.2.1.tgz",
- "integrity": "sha512-czMBfB1eL2awqmOSxQM8cS/fsUOGE6fjvyPLInrh4crPxFiw67wDpwIW+EGBYKRa04sYbS0ScGj7ZgvWuDrmBQ==",
+ "version": "1.0.20",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
"lib0": "^0.2.42"
},
@@ -20330,13 +21207,12 @@
"prosemirror-state": "^1.2.3",
"prosemirror-view": "^1.9.10",
"y-protocols": "^1.0.1",
- "yjs": "^13.5.38"
+ "yjs": "^13.3.2"
}
},
"node_modules/y-protocols": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz",
- "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==",
+ "license": "MIT",
"dependencies": {
"lib0": "^0.2.85"
},
@@ -20354,33 +21230,29 @@
},
"node_modules/y18n": {
"version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/yallist": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/yaml": {
"version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 6"
}
},
"node_modules/yargs": {
"version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -20396,37 +21268,16 @@
},
"node_modules/yargs-parser": {
"version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/yjs": {
- "version": "13.6.11",
- "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.11.tgz",
- "integrity": "sha512-FvRRJKX9u270dOLkllGF/UDCWwmIv2Z+ucM4v1QO1TuxdmoiMnSUXH1HAcOKOrkBEhQtPTkxep7tD2DrQB+l0g==",
+ "version": "13.6.14",
+ "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.14.tgz",
+ "integrity": "sha512-D+7KcUr0j+vBCUSKXXEWfA+bG4UQBviAwP3gYBhkstkgwy5+8diOPMx0iqLIOxNo/HxaREUimZRxqHGAHCL2BQ==",
"dependencies": {
"lib0": "^0.2.86"
},
@@ -20441,9 +21292,7 @@
},
"node_modules/yocto-queue": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -20453,13 +21302,27 @@
},
"node_modules/yoga-wasm-web": {
"version": "0.3.3",
- "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz",
- "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA=="
+ "license": "MIT"
+ },
+ "node_modules/youch": {
+ "version": "3.3.3",
+ "license": "MIT",
+ "dependencies": {
+ "cookie": "^0.5.0",
+ "mustache": "^4.2.0",
+ "stacktracey": "^2.1.8"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.22.4",
+ "license": "MIT",
+ "funding": {
+ "url": "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/sponsors/colinhacks"
+ }
},
"node_modules/zwitch": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "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/sponsors/wooorm"
@@ -20518,7 +21381,7 @@
"prettier": "^2.7.1",
"rimraf": "^5.0.5",
"rollup-plugin-webpack-stats": "^0.2.2",
- "typescript": "^5.0.4",
+ "typescript": "^5.3.3",
"vite": "^4.4.8",
"vite-plugin-eslint": "^1.8.1",
"vitest": "^0.34.1"
@@ -20526,9 +21389,8 @@
},
"packages/core/node_modules/rimraf": {
"version": "5.0.5",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
- "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^10.3.7"
},
@@ -20542,6 +21404,42 @@
"url": "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/sponsors/isaacs"
}
},
+ "packages/core/node_modules/y-prosemirror": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/y-prosemirror/-/y-prosemirror-1.2.1.tgz",
+ "integrity": "sha512-czMBfB1eL2awqmOSxQM8cS/fsUOGE6fjvyPLInrh4crPxFiw67wDpwIW+EGBYKRa04sYbS0ScGj7ZgvWuDrmBQ==",
+ "dependencies": {
+ "lib0": "^0.2.42"
+ },
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "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/sponsors/dmonad"
+ },
+ "peerDependencies": {
+ "prosemirror-model": "^1.7.1",
+ "prosemirror-state": "^1.2.3",
+ "prosemirror-view": "^1.9.10",
+ "y-protocols": "^1.0.1",
+ "yjs": "^13.5.38"
+ }
+ },
+ "packages/dev-scripts": {
+ "name": "@blocknote/dev-scripts",
+ "version": "0.10.0",
+ "license": "MPL-2.0",
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "eslint": "^8.10.0",
+ "fast-glob": "^3.3.2",
+ "glob": "^10.3.10",
+ "prettier": "^2.7.1",
+ "react": "^18",
+ "react-dom": "^18",
+ "tsx": "^4.6.2",
+ "typescript": "^5.3.3"
+ }
+ },
"packages/react": {
"name": "@blocknote/react",
"version": "0.11.2",
@@ -20554,8 +21452,6 @@
"@mantine/utils": "^6.0.21",
"@tiptap/core": "^2.0.3",
"@tiptap/react": "^2.0.3",
- "lodash.foreach": "^4.5.0",
- "lodash.groupby": "^4.6.0",
"lodash.merge": "^4.6.2",
"react": "^18",
"react-dom": "^18.2.0",
@@ -20573,7 +21469,7 @@
"prettier": "^2.7.1",
"rimraf": "^5.0.5",
"rollup-plugin-webpack-stats": "^0.2.2",
- "typescript": "^5.0.4",
+ "typescript": "^5.3.3",
"vite": "^4.4.8",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-externalize-deps": "^0.7.0",
@@ -20586,9 +21482,8 @@
},
"packages/react/node_modules/rimraf": {
"version": "5.0.5",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
- "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^10.3.7"
},
@@ -20602,36 +21497,47 @@
"url": "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/sponsors/isaacs"
}
},
- "packages/website": {
- "name": "blocknote-website",
+ "playground": {
+ "name": "@blocknote/example-editor",
"version": "0.11.2",
- "license": "MPL-2.0",
"dependencies": {
+ "@blocknote/core": "^0.11.2",
"@blocknote/react": "^0.11.2",
- "@vercel/og": "^0.5.6",
- "veaury": "^2.3.12",
- "vue-github-button": "^3.1.0",
- "y-partykit": "^0.0.10",
- "yjs": "^13.6.1"
+ "@liveblocks/client": "^1.10.0",
+ "@liveblocks/yjs": "^1.10.0",
+ "@mantine/core": "^7.5.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-router-dom": "^6.20.0",
+ "y-partykit": "^0.0.25",
+ "yjs": "^13.6.10"
},
"devDependencies": {
- "@vue/tsconfig": "^0.1.3",
- "sass": "^1.58.0",
- "vitepress": "1.0.0-beta.1",
- "vitepress-plugin-sandpack": "^0.2.2",
- "vue": "^3.2.47"
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ "eslint": "^8.10.0",
+ "rimraf": "^5.0.5",
+ "rollup-plugin-webpack-stats": "^0.2.2",
+ "vite": "^4.4.8",
+ "vite-plugin-eslint": "^1.8.1"
}
},
- "packages/website/node_modules/y-partykit": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/y-partykit/-/y-partykit-0.0.10.tgz",
- "integrity": "sha512-DFzaQbbgUm4jZx8oj3uHigRUKw0sYvq7QQlw/Kq+yOrci+AD0b38cgyWEs5TWYQDCC2a7Wqs33oiJ5YgOCDqVg==",
+ "playground/node_modules/rimraf": {
+ "version": "5.0.5",
+ "dev": true,
+ "license": "ISC",
"dependencies": {
- "lib0": "^0.2.86",
- "lodash.debounce": "^4.0.8",
- "react": "^18.2.0",
- "y-protocols": "^1.0.6",
- "yjs": "^13.6.8"
+ "glob": "^10.3.7"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "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/sponsors/isaacs"
}
},
"tests": {
@@ -20653,9 +21559,8 @@
},
"tests/node_modules/rimraf": {
"version": "5.0.5",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
- "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^10.3.7"
},
diff --git a/package.json b/package.json
index 7c9fa0dad3..e17267e7e8 100644
--- a/package.json
+++ b/package.json
@@ -3,23 +3,26 @@
"private": true,
"workspaces": [
"packages/*",
- "examples/*",
- "tests"
+ "playground",
+ "tests",
+ "docs"
],
"devDependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.5.0",
+ "@typescript-eslint/parser": "^5.5.0",
"eslint": "^8.22.0",
- "eslint-plugin-import": "^2.28.0",
"eslint-config-react-app": "^7.0.0",
+ "eslint-plugin-import": "^2.28.0",
+ "glob": "^10.3.10",
"lerna": "^5.4.0",
"patch-package": "^6.4.7",
- "typescript": "^5.2.2",
- "@typescript-eslint/parser": "^5.5.0",
- "@typescript-eslint/eslint-plugin": "^5.5.0"
+ "typescript": "^5.3.3"
},
"scripts": {
"start": "lerna run --stream --scope @blocknote/example-editor dev",
- "start:built": "npx serve examples/editor/dist -c ../serve.json",
- "build": "npm run clean && lerna run --stream build --concurrency 1",
+ "gen": "lerna run --stream --scope @blocknote/dev-scripts gen",
+ "start:built": "npx serve playground/dist -c ../serve.json",
+ "build": "npm run clean && npm run gen && npm run clean && lerna run --stream build --concurrency 1",
"build:site": "lerna run --stream docs:build --concurrency 1",
"lint": "lerna run --stream lint",
"bootstrap": "lerna bootstrap --ci -- --force && patch-package",
diff --git a/packages/core/package.json b/packages/core/package.json
index 97256acd98..f06a73772d 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -37,6 +37,10 @@
"./style.css": {
"import": "./dist/style.css",
"require": "./dist/style.css"
+ },
+ "./fonts/inter.css": {
+ "import": "./src/fonts/inter.css",
+ "require": "./src/fonts/inter.css"
}
},
"scripts": {
@@ -98,7 +102,7 @@
"prettier": "^2.7.1",
"rimraf": "^5.0.5",
"rollup-plugin-webpack-stats": "^0.2.2",
- "typescript": "^5.0.4",
+ "typescript": "^5.3.3",
"vite": "^4.4.8",
"vite-plugin-eslint": "^1.8.1",
"vitest": "^0.34.1"
diff --git a/packages/core/src/api/blockManipulation/blockManipulation.test.ts b/packages/core/src/api/blockManipulation/blockManipulation.test.ts
index f7d0521e2a..e76996e1bb 100644
--- a/packages/core/src/api/blockManipulation/blockManipulation.test.ts
+++ b/packages/core/src/api/blockManipulation/blockManipulation.test.ts
@@ -1,13 +1,15 @@
import { afterEach, beforeEach, describe, expect, it } from "vitest";
import {
+ Block,
DefaultBlockSchema,
DefaultInlineContentSchema,
DefaultStyleSchema,
+ PartialBlock,
} from "../../blocks/defaultBlocks";
import { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { Block, PartialBlock } from "../../schema/blocks/types";
let editor: BlockNoteEditor;
+const div = document.createElement("div");
function waitForEditor() {
// wait for create event on editor,
@@ -42,6 +44,7 @@ let insert: (
beforeEach(() => {
editor = BlockNoteEditor.create();
+ editor.mount(div);
singleBlock = {
type: "paragraph",
@@ -84,14 +87,15 @@ beforeEach(() => {
];
insert = (placement) => {
- const existingBlock = editor.topLevelBlocks[0];
+ const existingBlock = editor.document[0];
editor.insertBlocks(multipleBlocks, existingBlock, placement);
- return editor.topLevelBlocks;
+ return editor.document;
};
});
afterEach(() => {
+ editor.mount(undefined);
editor._tiptapEditor.destroy();
editor = undefined as any;
});
@@ -172,12 +176,12 @@ describe("Insert, Update, & Delete Blocks", () => {
it("Insert, update, & delete single block", async () => {
await waitForEditor();
- const existingBlock = editor.topLevelBlocks[0];
+ const existingBlock = editor.document[0];
editor.insertBlocks([singleBlock], existingBlock);
- expect(editor.topLevelBlocks).toMatchSnapshot();
+ expect(editor.document).toMatchSnapshot();
- const newBlock = editor.topLevelBlocks[0];
+ const newBlock = editor.document[0];
editor.updateBlock(newBlock, {
type: "heading",
props: {
@@ -203,32 +207,32 @@ describe("Insert, Update, & Delete Blocks", () => {
children: [singleBlock],
});
- expect(editor.topLevelBlocks).toMatchSnapshot();
+ expect(editor.document).toMatchSnapshot();
- const updatedBlock = editor.topLevelBlocks[0];
+ const updatedBlock = editor.document[0];
editor.removeBlocks([updatedBlock]);
- expect(editor.topLevelBlocks).toMatchSnapshot();
+ expect(editor.document).toMatchSnapshot();
});
it("Insert, update, & delete multiple blocks", async () => {
await waitForEditor();
- const existingBlock = editor.topLevelBlocks[0];
+ const existingBlock = editor.document[0];
editor.insertBlocks(multipleBlocks, existingBlock);
- expect(editor.topLevelBlocks).toMatchSnapshot();
+ expect(editor.document).toMatchSnapshot();
- const newBlock = editor.topLevelBlocks[0];
+ const newBlock = editor.document[0];
editor.updateBlock(newBlock, {
type: "paragraph",
});
- expect(editor.topLevelBlocks).toMatchSnapshot();
+ expect(editor.document).toMatchSnapshot();
- const updatedBlocks = editor.topLevelBlocks.slice(0, 2);
+ const updatedBlocks = editor.document.slice(0, 2);
editor.removeBlocks([updatedBlocks[0].children[0], updatedBlocks[1]]);
- expect(editor.topLevelBlocks).toMatchSnapshot();
+ expect(editor.document).toMatchSnapshot();
});
});
diff --git a/packages/core/src/api/blockManipulation/blockManipulation.ts b/packages/core/src/api/blockManipulation/blockManipulation.ts
index 892a8be8bb..c9033f80e3 100644
--- a/packages/core/src/api/blockManipulation/blockManipulation.ts
+++ b/packages/core/src/api/blockManipulation/blockManipulation.ts
@@ -1,17 +1,17 @@
import { Node } from "prosemirror-model";
+import { selectionToInsertionEnd } from "@tiptap/core";
+import { Transaction } from "prosemirror-state";
+import { Block, PartialBlock } from "../../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
import {
- Block,
BlockIdentifier,
BlockSchema,
InlineContentSchema,
- PartialBlock,
StyleSchema,
} from "../../schema";
import { blockToNode, nodeToBlock } from "../nodeConversions/nodeConversions";
import { getNodeById } from "../nodeUtil";
-import { Transaction } from "prosemirror-state";
export function insertBlocks<
BSchema extends BlockSchema,
@@ -31,7 +31,7 @@ export function insertBlocks<
const nodesToInsert: Node[] = [];
for (const blockSpec of blocksToInsert) {
nodesToInsert.push(
- blockToNode(blockSpec, ttEditor.schema, editor.styleSchema)
+ blockToNode(blockSpec, ttEditor.schema, editor.schema.styleSchema)
);
}
@@ -73,9 +73,9 @@ export function insertBlocks<
insertedBlocks.push(
nodeToBlock(
node,
- editor.blockSchema,
- editor.inlineContentSchema,
- editor.styleSchema,
+ editor.schema.blockSchema,
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema,
editor.blockCache
)
);
@@ -107,9 +107,9 @@ export function updateBlock<
return nodeToBlock(
blockContainerNode,
- editor.blockSchema,
- editor.inlineContentSchema,
- editor.styleSchema,
+ editor.schema.blockSchema,
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema,
editor.blockCache
);
}
@@ -158,9 +158,9 @@ function removeBlocksWithCallback<
removedBlocks.push(
nodeToBlock(
node,
- editor.blockSchema,
- editor.inlineContentSchema,
- editor.styleSchema,
+ editor.schema.blockSchema,
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema,
editor.blockCache
)
);
@@ -218,7 +218,9 @@ export function replaceBlocks<
const nodesToInsert: Node[] = [];
for (const block of blocksToInsert) {
- nodesToInsert.push(blockToNode(block, ttEditor.schema, editor.styleSchema));
+ nodesToInsert.push(
+ blockToNode(block, ttEditor.schema, editor.schema.styleSchema)
+ );
}
const idOfFirstBlock =
@@ -248,9 +250,9 @@ export function replaceBlocks<
insertedBlocks.push(
nodeToBlock(
node,
- editor.blockSchema,
- editor.inlineContentSchema,
- editor.styleSchema,
+ editor.schema.blockSchema,
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema,
editor.blockCache
)
);
@@ -258,3 +260,91 @@ export function replaceBlocks<
return { insertedBlocks, removedBlocks };
}
+
+// similar to tiptap insertContentAt
+export function insertContentAt<
+ BSchema extends BlockSchema,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+>(
+ position: any,
+ nodes: Node[],
+ editor: BlockNoteEditor,
+ options: {
+ updateSelection: boolean;
+ } = { updateSelection: true }
+) {
+ const ttEditor = editor._tiptapEditor;
+ const tr = ttEditor.state.tr;
+
+ // don’t dispatch an empty fragment because this can lead to strange errors
+ // if (content.toString() === "<>") {
+ // return true;
+ // }
+
+ let { from, to } =
+ typeof position === "number"
+ ? { from: position, to: position }
+ : { from: position.from, to: position.to };
+
+ let isOnlyTextContent = true;
+ let isOnlyBlockContent = true;
+ // const nodes = isFragment(content) ? content : [content];
+
+ let text = "";
+
+ nodes.forEach((node) => {
+ // check if added node is valid
+ node.check();
+
+ if (isOnlyTextContent && node.isText && node.marks.length === 0) {
+ text += node.text;
+ } else {
+ isOnlyTextContent = false;
+ }
+
+ isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false;
+ });
+
+ // check if we can replace the wrapping node by
+ // the newly inserted content
+ // example:
+ // replace an empty paragraph by an inserted image
+ // instead of inserting the image below the paragraph
+ if (from === to && isOnlyBlockContent) {
+ const { parent } = tr.doc.resolve(from);
+ const isEmptyTextBlock =
+ parent.isTextblock && !parent.type.spec.code && !parent.childCount;
+
+ if (isEmptyTextBlock) {
+ from -= 1;
+ to += 1;
+ }
+ }
+
+ // if there is only plain text we have to use `insertText`
+ // because this will keep the current marks
+ if (isOnlyTextContent) {
+ // if value is string, we can use it directly
+ // otherwise if it is an array, we have to join it
+ // if (Array.isArray(value)) {
+ // tr.insertText(value.map((v) => v.text || "").join(""), from, to);
+ // } else if (typeof value === "object" && !!value && !!value.text) {
+ // tr.insertText(value.text, from, to);
+ // } else {
+ // tr.insertText(value as string, from, to);
+ // }
+ tr.insertText(text, from, to);
+ } else {
+ tr.replaceWith(from, to, nodes);
+ }
+
+ // set cursor at end of inserted content
+ if (options.updateSelection) {
+ selectionToInsertionEnd(tr, tr.steps.length - 1, -1);
+ }
+
+ ttEditor.view.dispatch(tr);
+
+ return true;
+}
diff --git a/packages/core/src/api/exporters/html/externalHTMLExporter.ts b/packages/core/src/api/exporters/html/externalHTMLExporter.ts
index 43b591b610..743d6ea391 100644
--- a/packages/core/src/api/exporters/html/externalHTMLExporter.ts
+++ b/packages/core/src/api/exporters/html/externalHTMLExporter.ts
@@ -3,13 +3,9 @@ import rehypeParse from "rehype-parse";
import rehypeStringify from "rehype-stringify";
import { unified } from "unified";
+import { PartialBlock } from "../../../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
-import {
- BlockSchema,
- InlineContentSchema,
- PartialBlock,
- StyleSchema,
-} from "../../../schema";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema";
import { blockToNode } from "../../nodeConversions/nodeConversions";
import {
serializeNodeInner,
@@ -87,7 +83,7 @@ export const createExternalHTMLExporter = <
serializer.exportBlocks = (blocks: PartialBlock[]) => {
const nodes = blocks.map((block) =>
- blockToNode(block, schema, editor.styleSchema)
+ blockToNode(block, schema, editor.schema.styleSchema)
);
const blockGroup = schema.nodes["blockGroup"].create(null, nodes);
diff --git a/packages/core/src/api/exporters/html/htmlConversion.test.ts b/packages/core/src/api/exporters/html/htmlConversion.test.ts
index 6671037f19..a0b0db347f 100644
--- a/packages/core/src/api/exporters/html/htmlConversion.test.ts
+++ b/packages/core/src/api/exporters/html/htmlConversion.test.ts
@@ -2,7 +2,8 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
import { addIdsToBlocks, partialBlocksToBlocksForTesting } from "../../..";
-import { BlockSchema, PartialBlock } from "../../../schema/blocks/types";
+import { PartialBlock } from "../../../blocks/defaultBlocks";
+import { BlockSchema } from "../../../schema/blocks/types";
import { InlineContentSchema } from "../../../schema/inlineContent/types";
import { StyleSchema } from "../../../schema/styles/types";
import { customBlocksTestCases } from "../../testUtil/cases/customBlocks";
@@ -38,7 +39,7 @@ async function convertToHTMLAndCompareSnapshots<
// turn the internalHTML back into blocks, and make sure no data was lost
const fullBlocks = partialBlocksToBlocksForTesting(
- editor.blockSchema,
+ editor.schema.blockSchema,
blocks
);
const parsed = await editor.tryParseHTMLToBlocks(internalHTML);
@@ -71,12 +72,14 @@ describe("Test HTML conversion", () => {
for (const testCase of testCases) {
describe("Case: " + testCase.name, () => {
let editor: BlockNoteEditor;
-
+ const div = document.createElement("div");
beforeEach(() => {
editor = testCase.createEditor();
+ editor.mount(div);
});
afterEach(() => {
+ editor.mount(undefined);
editor._tiptapEditor.destroy();
editor = undefined as any;
diff --git a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts
index a635819caa..7d7f409011 100644
--- a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts
+++ b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts
@@ -1,11 +1,7 @@
import { DOMSerializer, Fragment, Node, Schema } from "prosemirror-model";
+import { PartialBlock } from "../../../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
-import {
- BlockSchema,
- InlineContentSchema,
- PartialBlock,
- StyleSchema,
-} from "../../../schema";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema";
import { blockToNode } from "../../nodeConversions/nodeConversions";
import {
serializeNodeInner,
@@ -69,7 +65,7 @@ export const createInternalHTMLSerializer = <
serializer.serializeBlocks = (blocks: PartialBlock[]) => {
const nodes = blocks.map((block) =>
- blockToNode(block, schema, editor.styleSchema)
+ blockToNode(block, schema, editor.schema.styleSchema)
);
const blockGroup = schema.nodes["blockGroup"].create(null, nodes);
diff --git a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts
index 7042e30bbb..7a1d0748a0 100644
--- a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts
+++ b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts
@@ -71,9 +71,9 @@ export const serializeNodeInner = <
const blockContent = toHTML(
nodeToBlock(
node,
- editor.blockSchema,
- editor.inlineContentSchema,
- editor.styleSchema,
+ editor.schema.blockSchema,
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema,
editor.blockCache
),
editor as any
diff --git a/packages/core/src/api/exporters/markdown/markdownExporter.test.ts b/packages/core/src/api/exporters/markdown/markdownExporter.test.ts
index a4f391bc11..7d6f907f23 100644
--- a/packages/core/src/api/exporters/markdown/markdownExporter.test.ts
+++ b/packages/core/src/api/exporters/markdown/markdownExporter.test.ts
@@ -1,15 +1,16 @@
import fs from "node:fs";
import path from "node:path";
import { afterEach, beforeEach, describe, expect, it } from "vitest";
+import { PartialBlock } from "../../../blocks/defaultBlocks";
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
-import { BlockSchema, PartialBlock } from "../../../schema/blocks/types";
+import { BlockSchema } from "../../../schema/blocks/types";
import { InlineContentSchema } from "../../../schema/inlineContent/types";
import { StyleSchema } from "../../../schema/styles/types";
-import { partialBlocksToBlocksForTesting } from "../../testUtil/partialBlockTestUtil";
import { customBlocksTestCases } from "../../testUtil/cases/customBlocks";
import { customInlineContentTestCases } from "../../testUtil/cases/customInlineContent";
import { customStylesTestCases } from "../../testUtil/cases/customStyles";
import { defaultSchemaTestCases } from "../../testUtil/cases/defaultSchema";
+import { partialBlocksToBlocksForTesting } from "../../testUtil/partialBlockTestUtil";
async function convertToMarkdownAndCompareSnapshots<
B extends BlockSchema,
@@ -22,7 +23,7 @@ async function convertToMarkdownAndCompareSnapshots<
snapshotName: string
) {
const fullBlocks = partialBlocksToBlocksForTesting(
- editor.blockSchema,
+ editor.schema.blockSchema,
blocks
);
const md = await editor.blocksToMarkdownLossy(fullBlocks);
@@ -56,12 +57,15 @@ describe("markdownExporter", () => {
for (const testCase of testCases) {
describe("Case: " + testCase.name, () => {
let editor: BlockNoteEditor;
+ const div = document.createElement("div");
beforeEach(() => {
editor = testCase.createEditor();
+ editor.mount(div);
});
afterEach(() => {
+ editor.mount(undefined);
editor._tiptapEditor.destroy();
editor = undefined as any;
diff --git a/packages/core/src/api/exporters/markdown/markdownExporter.ts b/packages/core/src/api/exporters/markdown/markdownExporter.ts
index 841ff6381e..24990edee3 100644
--- a/packages/core/src/api/exporters/markdown/markdownExporter.ts
+++ b/packages/core/src/api/exporters/markdown/markdownExporter.ts
@@ -4,13 +4,9 @@ import rehypeRemark from "rehype-remark";
import remarkGfm from "remark-gfm";
import remarkStringify from "remark-stringify";
import { unified } from "unified";
+import { Block } from "../../../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
-import {
- Block,
- BlockSchema,
- InlineContentSchema,
- StyleSchema,
-} from "../../../schema";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema";
import { createExternalHTMLExporter } from "../html/externalHTMLExporter";
import { removeUnderlines } from "./removeUnderlinesRehypePlugin";
diff --git a/packages/core/src/api/nodeConversions/nodeConversions.test.ts b/packages/core/src/api/nodeConversions/nodeConversions.test.ts
index 68d583dd55..fe3b9bc3df 100644
--- a/packages/core/src/api/nodeConversions/nodeConversions.test.ts
+++ b/packages/core/src/api/nodeConversions/nodeConversions.test.ts
@@ -1,12 +1,16 @@
import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { PartialBlock } from "../../schema/blocks/types";
+
+import { PartialBlock } from "../../blocks/defaultBlocks";
import { customInlineContentTestCases } from "../testUtil/cases/customInlineContent";
import { customStylesTestCases } from "../testUtil/cases/customStyles";
import { defaultSchemaTestCases } from "../testUtil/cases/defaultSchema";
+import {
+ addIdsToBlock,
+ partialBlockToBlockForTesting,
+} from "../testUtil/partialBlockTestUtil";
import { blockToNode, nodeToBlock } from "./nodeConversions";
-import { addIdsToBlock, partialBlockToBlockForTesting } from "../testUtil/partialBlockTestUtil";
function validateConversion(
block: PartialBlock,
@@ -16,20 +20,20 @@ function validateConversion(
const node = blockToNode(
block,
editor._tiptapEditor.schema,
- editor.styleSchema
+ editor.schema.styleSchema
);
expect(node).toMatchSnapshot();
const outputBlock = nodeToBlock(
node,
- editor.blockSchema,
- editor.inlineContentSchema,
- editor.styleSchema
+ editor.schema.blockSchema,
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema
);
const fullOriginalBlock = partialBlockToBlockForTesting(
- editor.blockSchema,
+ editor.schema.blockSchema,
block
);
@@ -46,12 +50,15 @@ describe("Test BlockNote-Prosemirror conversion", () => {
for (const testCase of testCases) {
describe("Case: " + testCase.name, () => {
let editor: BlockNoteEditor;
+ const div = document.createElement("div");
beforeEach(() => {
editor = testCase.createEditor();
+ editor.mount(div);
});
afterEach(() => {
+ editor.mount(undefined);
editor._tiptapEditor.destroy();
editor = undefined as any;
diff --git a/packages/core/src/api/nodeConversions/nodeConversions.ts b/packages/core/src/api/nodeConversions/nodeConversions.ts
index 3f82377c5a..fba56c71ca 100644
--- a/packages/core/src/api/nodeConversions/nodeConversions.ts
+++ b/packages/core/src/api/nodeConversions/nodeConversions.ts
@@ -2,14 +2,12 @@ import { Mark, Node, Schema } from "@tiptap/pm/model";
import UniqueID from "../../extensions/UniqueID/UniqueID";
import type {
- Block,
BlockSchema,
CustomInlineContentConfig,
CustomInlineContentFromConfig,
InlineContent,
InlineContentFromConfig,
InlineContentSchema,
- PartialBlock,
PartialCustomInlineContentFromConfig,
PartialInlineContent,
PartialLink,
@@ -21,6 +19,7 @@ import type {
} from "../../schema";
import { getBlockInfo } from "../getBlockInfoFromPos";
+import type { Block, PartialBlock } from "../../blocks/defaultBlocks";
import {
isLinkInlineContent,
isPartialLinkInlineContent,
diff --git a/packages/core/src/api/parsers/html/parseHTML.test.ts b/packages/core/src/api/parsers/html/parseHTML.test.ts
index 69be9d69bb..52951e2c26 100644
--- a/packages/core/src/api/parsers/html/parseHTML.test.ts
+++ b/packages/core/src/api/parsers/html/parseHTML.test.ts
@@ -11,6 +11,8 @@ async function parseHTMLAndCompareSnapshots(
const view: any = await import("prosemirror-view");
const editor = BlockNoteEditor.create();
+ const div = document.createElement("div");
+ editor.mount(div);
const blocks = await editor.tryParseHTMLToBlocks(html);
const snapshotPath = "./__snapshots__/paste/" + snapshotName + ".json";
@@ -53,9 +55,11 @@ async function parseHTMLAndCompareSnapshots(
// },
// } as any);
- const pastedBlocks = editor.topLevelBlocks;
+ const pastedBlocks = editor.document;
pastedBlocks.pop(); // trailing paragraph
expect(pastedBlocks).toStrictEqual(blocks);
+
+ editor.mount(undefined);
}
describe("Parse HTML", () => {
diff --git a/packages/core/src/api/parsers/html/parseHTML.ts b/packages/core/src/api/parsers/html/parseHTML.ts
index dad025f9dc..97f743c2cd 100644
--- a/packages/core/src/api/parsers/html/parseHTML.ts
+++ b/packages/core/src/api/parsers/html/parseHTML.ts
@@ -1,11 +1,7 @@
import { DOMParser, Schema } from "prosemirror-model";
-import {
- Block,
- BlockSchema,
- InlineContentSchema,
- StyleSchema,
-} from "../../../schema";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema";
+import { Block } from "../../../blocks/defaultBlocks";
import { nodeToBlock } from "../../nodeConversions/nodeConversions";
import { nestedListsToBlockNoteStructure } from "./util/nestedLists";
export async function HTMLToBlocks<
diff --git a/packages/core/src/api/parsers/html/util/nestedLists.ts b/packages/core/src/api/parsers/html/util/nestedLists.ts
index 78c60b2a1a..7e8a9fe657 100644
--- a/packages/core/src/api/parsers/html/util/nestedLists.ts
+++ b/packages/core/src/api/parsers/html/util/nestedLists.ts
@@ -99,11 +99,21 @@ function createGroups(element: HTMLElement) {
});
}
+// prevent XSS, similar to https://github.com/ProseMirror/prosemirror-view/blob/1251b2b412656a2a06263e4187574beb43651273/src/clipboard.ts#L204
+// https://github.com/TypeCellOS/BlockNote/issues/601
+let _detachedDoc: Document | null = null;
+function detachedDoc() {
+ return (
+ _detachedDoc ||
+ (_detachedDoc = document.implementation.createHTMLDocument("title"))
+ );
+}
+
export function nestedListsToBlockNoteStructure(
elementOrHTML: HTMLElement | string
) {
if (typeof elementOrHTML === "string") {
- const element = document.createElement("div");
+ const element = detachedDoc().createElement("div");
element.innerHTML = elementOrHTML;
elementOrHTML = element;
}
diff --git a/packages/core/src/api/parsers/markdown/parseMarkdown.test.ts b/packages/core/src/api/parsers/markdown/parseMarkdown.test.ts
index 2c78b7f9e2..b8ef953af5 100644
--- a/packages/core/src/api/parsers/markdown/parseMarkdown.test.ts
+++ b/packages/core/src/api/parsers/markdown/parseMarkdown.test.ts
@@ -6,12 +6,15 @@ async function parseMarkdownAndCompareSnapshots(
snapshotName: string
) {
const editor = BlockNoteEditor.create();
+ const div = document.createElement("div");
+ editor.mount(div);
const blocks = await editor.tryParseMarkdownToBlocks(md);
const snapshotPath = "./__snapshots__/" + snapshotName + ".json";
expect(JSON.stringify(blocks, undefined, 2)).toMatchFileSnapshot(
snapshotPath
);
+ editor.mount(undefined);
}
describe("Parse Markdown", () => {
diff --git a/packages/core/src/api/parsers/markdown/parseMarkdown.ts b/packages/core/src/api/parsers/markdown/parseMarkdown.ts
index 6e4fab74e2..c3418fc5e3 100644
--- a/packages/core/src/api/parsers/markdown/parseMarkdown.ts
+++ b/packages/core/src/api/parsers/markdown/parseMarkdown.ts
@@ -4,12 +4,8 @@ import remarkGfm from "remark-gfm";
import remarkParse from "remark-parse";
import remarkRehype, { defaultHandlers } from "remark-rehype";
import { unified } from "unified";
-import {
- Block,
- BlockSchema,
- InlineContentSchema,
- StyleSchema,
-} from "../../../schema";
+import { Block } from "../../../blocks/defaultBlocks";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../../schema";
import { HTMLToBlocks } from "../html/parseHTML";
// modified version of https://github.com/syntax-tree/mdast-util-to-hast/blob/main/lib/handlers/code.js
diff --git a/packages/core/src/api/testUtil/cases/customBlocks.ts b/packages/core/src/api/testUtil/cases/customBlocks.ts
index 4c278ea408..bd7e96cce1 100644
--- a/packages/core/src/api/testUtil/cases/customBlocks.ts
+++ b/packages/core/src/api/testUtil/cases/customBlocks.ts
@@ -1,19 +1,19 @@
import { EditorTestCases } from "../index";
-import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
+import {
+ imagePropSchema,
+ renderImage,
+} from "../../../blocks/ImageBlockContent/ImageBlockContent";
+import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
import {
DefaultInlineContentSchema,
DefaultStyleSchema,
defaultBlockSpecs,
} from "../../../blocks/defaultBlocks";
import { defaultProps } from "../../../blocks/defaultProps";
-import {
- imagePropSchema,
- renderImage,
-} from "../../../blocks/ImageBlockContent/ImageBlockContent";
-import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
+import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
+import { BlockNoteSchema } from "../../../editor/BlockNoteSchema";
import { createBlockSpec } from "../../../schema/blocks/createSpec";
-import { BlockSchemaFromSpecs, BlockSpecs } from "../../../schema/blocks/types";
// This is a modified version of the default image block that does not implement
// a `serialize` function. It's used to test if the custom serializer by default
@@ -74,22 +74,24 @@ const SimpleCustomParagraph = createBlockSpec(
}
);
-const customSpecs = {
- ...defaultBlockSpecs,
- simpleImage: SimpleImage,
- customParagraph: CustomParagraph,
- simpleCustomParagraph: SimpleCustomParagraph,
-} satisfies BlockSpecs;
+const schema = BlockNoteSchema.create({
+ blockSpecs: {
+ ...defaultBlockSpecs,
+ simpleImage: SimpleImage,
+ customParagraph: CustomParagraph,
+ simpleCustomParagraph: SimpleCustomParagraph,
+ },
+});
export const customBlocksTestCases: EditorTestCases<
- BlockSchemaFromSpecs,
+ typeof schema.blockSchema,
DefaultInlineContentSchema,
DefaultStyleSchema
> = {
name: "custom blocks schema",
createEditor: () => {
return BlockNoteEditor.create({
- blockSpecs: customSpecs,
+ schema,
uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
});
},
@@ -98,7 +100,7 @@ export const customBlocksTestCases: EditorTestCases<
name: "simpleImage/button",
blocks: [
{
- type: "simpleImage" as const,
+ type: "simpleImage",
},
],
},
diff --git a/packages/core/src/api/testUtil/cases/customInlineContent.ts b/packages/core/src/api/testUtil/cases/customInlineContent.ts
index 737cab3db9..290edb0b8b 100644
--- a/packages/core/src/api/testUtil/cases/customInlineContent.ts
+++ b/packages/core/src/api/testUtil/cases/customInlineContent.ts
@@ -1,17 +1,14 @@
import { EditorTestCases } from "../index";
-import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
+import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
import {
DefaultBlockSchema,
DefaultStyleSchema,
defaultInlineContentSpecs,
} from "../../../blocks/defaultBlocks";
-import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
+import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
+import { BlockNoteSchema } from "../../../editor/BlockNoteSchema";
import { createInlineContentSpec } from "../../../schema/inlineContent/createSpec";
-import {
- InlineContentSchemaFromSpecs,
- InlineContentSpecs,
-} from "../../../schema/inlineContent/types";
const mention = createInlineContentSpec(
{
@@ -57,22 +54,24 @@ const tag = createInlineContentSpec(
}
);
-const customInlineContent = {
- ...defaultInlineContentSpecs,
- mention,
- tag,
-} satisfies InlineContentSpecs;
+const schema = BlockNoteSchema.create({
+ inlineContentSpecs: {
+ ...defaultInlineContentSpecs,
+ mention,
+ tag,
+ },
+});
export const customInlineContentTestCases: EditorTestCases<
DefaultBlockSchema,
- InlineContentSchemaFromSpecs,
+ typeof schema.inlineContentSchema,
DefaultStyleSchema
> = {
name: "custom inline content schema",
createEditor: () => {
return BlockNoteEditor.create({
uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
- inlineContentSpecs: customInlineContent,
+ schema,
});
},
documents: [
diff --git a/packages/core/src/api/testUtil/cases/customStyles.ts b/packages/core/src/api/testUtil/cases/customStyles.ts
index cd19064a99..de6556deb4 100644
--- a/packages/core/src/api/testUtil/cases/customStyles.ts
+++ b/packages/core/src/api/testUtil/cases/customStyles.ts
@@ -1,14 +1,14 @@
import { EditorTestCases } from "../index";
-import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
+import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
import {
DefaultBlockSchema,
DefaultInlineContentSchema,
defaultStyleSpecs,
} from "../../../blocks/defaultBlocks";
-import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
+import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
+import { BlockNoteSchema } from "../../../editor/BlockNoteSchema";
import { createStyleSpec } from "../../../schema/styles/createSpec";
-import { StyleSchemaFromSpecs, StyleSpecs } from "../../../schema/styles/types";
const small = createStyleSpec(
{
@@ -43,22 +43,24 @@ const fontSize = createStyleSpec(
}
);
-const customStyles = {
- ...defaultStyleSpecs,
- small,
- fontSize,
-} satisfies StyleSpecs;
+const schema = BlockNoteSchema.create({
+ styleSpecs: {
+ ...defaultStyleSpecs,
+ small,
+ fontSize,
+ },
+});
export const customStylesTestCases: EditorTestCases<
DefaultBlockSchema,
DefaultInlineContentSchema,
- StyleSchemaFromSpecs
+ typeof schema.styleSchema
> = {
name: "custom style schema",
createEditor: () => {
return BlockNoteEditor.create({
uploadFile: uploadToTmpFilesDotOrg_DEV_ONLY,
- styleSpecs: customStyles,
+ schema,
});
},
documents: [
diff --git a/packages/core/src/api/testUtil/index.ts b/packages/core/src/api/testUtil/index.ts
index d3269f3e86..ccac58d4f6 100644
--- a/packages/core/src/api/testUtil/index.ts
+++ b/packages/core/src/api/testUtil/index.ts
@@ -1,7 +1,9 @@
+import { PartialBlock } from "../../blocks/defaultBlocks";
import { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { BlockSchema, PartialBlock } from "../../schema/blocks/types";
+import { BlockSchema } from "../../schema/blocks/types";
import { InlineContentSchema } from "../../schema/inlineContent/types";
import { StyleSchema } from "../../schema/styles/types";
+import { NoInfer } from "../../util/typescript";
export type EditorTestCases<
B extends BlockSchema,
@@ -12,6 +14,6 @@ export type EditorTestCases<
createEditor: () => BlockNoteEditor;
documents: Array<{
name: string;
- blocks: PartialBlock[];
+ blocks: PartialBlock, NoInfer, NoInfer>[];
}>;
};
diff --git a/packages/core/src/api/testUtil/partialBlockTestUtil.ts b/packages/core/src/api/testUtil/partialBlockTestUtil.ts
index 6d91a204f3..3be300c7bd 100644
--- a/packages/core/src/api/testUtil/partialBlockTestUtil.ts
+++ b/packages/core/src/api/testUtil/partialBlockTestUtil.ts
@@ -1,10 +1,6 @@
+import { Block, PartialBlock } from "../../blocks/defaultBlocks";
import UniqueID from "../../extensions/UniqueID/UniqueID";
-import {
- Block,
- BlockSchema,
- PartialBlock,
- TableContent,
-} from "../../schema/blocks/types";
+import { BlockSchema, TableContent } from "../../schema/blocks/types";
import {
InlineContent,
InlineContentSchema,
diff --git a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts
index 6fd56d7494..8bfc3d4678 100644
--- a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts
+++ b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts
@@ -1,5 +1,4 @@
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { imageToolbarPluginKey } from "../../extensions/ImageToolbar/ImageToolbarPlugin";
import {
BlockFromConfig,
@@ -235,7 +234,7 @@ export const renderImage = (
// Opens the image toolbar.
const addImageButtonClickHandler = () => {
editor._tiptapEditor.view.dispatch(
- editor._tiptapEditor.state.tr.setMeta(imageToolbarPluginKey, {
+ editor._tiptapEditor.state.tr.setMeta(editor.imageToolbar!.plugin, {
block: block,
})
);
diff --git a/packages/core/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts b/packages/core/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts
index 21c09bb645..6ec9401ec3 100644
--- a/packages/core/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts
+++ b/packages/core/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts
@@ -1,4 +1,11 @@
-export const uploadToTmpFilesDotOrg_DEV_ONLY = async (file: File) => {
+/**
+ * Uploads a file to tmpfiles.org and returns the URL to the uploaded file.
+ *
+ * @warning This function should only be used for development purposes, replace with your own backend!
+ */
+export const uploadToTmpFilesDotOrg_DEV_ONLY = async (
+ file: File
+): Promise => {
const body = new FormData();
body.append("file", file);
diff --git a/packages/core/src/blocks/defaultBlockHelpers.ts b/packages/core/src/blocks/defaultBlockHelpers.ts
index 710ca57aa0..7519beed85 100644
--- a/packages/core/src/blocks/defaultBlockHelpers.ts
+++ b/packages/core/src/blocks/defaultBlockHelpers.ts
@@ -1,7 +1,7 @@
import { blockToNode } from "../api/nodeConversions/nodeConversions";
import type { BlockNoteEditor } from "../editor/BlockNoteEditor";
import type {
- Block,
+ BlockNoDefaults,
BlockSchema,
InlineContentSchema,
StyleSchema,
@@ -61,7 +61,7 @@ export const defaultBlockToHTML = <
I extends InlineContentSchema,
S extends StyleSchema
>(
- block: Block,
+ block: BlockNoDefaults,
editor: BlockNoteEditor
): {
dom: HTMLElement;
@@ -70,7 +70,7 @@ export const defaultBlockToHTML = <
const node = blockToNode(
block,
editor._tiptapEditor.schema,
- editor.styleSchema
+ editor.schema.styleSchema
).firstChild!;
const toDOM = editor._tiptapEditor.schema.nodes[node.type.name].spec.toDOM;
diff --git a/packages/core/src/blocks/defaultBlockTypeGuards.ts b/packages/core/src/blocks/defaultBlockTypeGuards.ts
new file mode 100644
index 0000000000..175aabca2b
--- /dev/null
+++ b/packages/core/src/blocks/defaultBlockTypeGuards.ts
@@ -0,0 +1,84 @@
+import type { BlockNoteEditor } from "../editor/BlockNoteEditor";
+import { BlockFromConfig, InlineContentSchema, StyleSchema } from "../schema";
+import { Block, DefaultBlockSchema, defaultBlockSchema } from "./defaultBlocks";
+import { defaultProps } from "./defaultProps";
+
+export function checkDefaultBlockTypeInSchema<
+ BlockType extends keyof DefaultBlockSchema,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+>(
+ blockType: BlockType,
+ editor: BlockNoteEditor
+): editor is BlockNoteEditor<{ Type: DefaultBlockSchema[BlockType] }, I, S> {
+ return (
+ blockType in editor.schema.blockSchema &&
+ editor.schema.blockSchema[blockType] === defaultBlockSchema[blockType]
+ );
+}
+
+export function checkBlockIsDefaultType<
+ BlockType extends keyof DefaultBlockSchema,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+>(
+ blockType: BlockType,
+ block: Block,
+ editor: BlockNoteEditor
+): block is BlockFromConfig {
+ return (
+ block.type === blockType &&
+ block.type in editor.schema.blockSchema &&
+ checkDefaultBlockTypeInSchema(block.type, editor)
+ );
+}
+
+export function checkBlockTypeHasDefaultProp<
+ Prop extends keyof typeof defaultProps,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+>(
+ prop: Prop,
+ blockType: string,
+ editor: BlockNoteEditor
+): editor is BlockNoteEditor<
+ {
+ [BT in string]: {
+ type: BT;
+ propSchema: {
+ [P in Prop]: (typeof defaultProps)[P];
+ };
+ content: "table" | "inline" | "none";
+ };
+ },
+ I,
+ S
+> {
+ return (
+ blockType in editor.schema.blockSchema &&
+ prop in editor.schema.blockSchema[blockType].propSchema &&
+ editor.schema.blockSchema[blockType].propSchema[prop] === defaultProps[prop]
+ );
+}
+
+export function checkBlockHasDefaultProp<
+ Prop extends keyof typeof defaultProps,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+>(
+ prop: Prop,
+ block: Block,
+ editor: BlockNoteEditor
+): block is BlockFromConfig<
+ {
+ type: string;
+ propSchema: {
+ [P in Prop]: (typeof defaultProps)[P];
+ };
+ content: "table" | "inline" | "none";
+ },
+ I,
+ S
+> {
+ return checkBlockTypeHasDefaultProp(prop, block.type, editor);
+}
diff --git a/packages/core/src/blocks/defaultBlocks.ts b/packages/core/src/blocks/defaultBlocks.ts
index 36ebc50f7d..a6fbb88316 100644
--- a/packages/core/src/blocks/defaultBlocks.ts
+++ b/packages/core/src/blocks/defaultBlocks.ts
@@ -6,8 +6,13 @@ import Underline from "@tiptap/extension-underline";
import { BackgroundColor } from "../extensions/BackgroundColor/BackgroundColorMark";
import { TextColor } from "../extensions/TextColor/TextColorMark";
import {
+ BlockNoDefaults,
+ BlockSchema,
BlockSpecs,
+ InlineContentSchema,
InlineContentSpecs,
+ PartialBlockNoDefaults,
+ StyleSchema,
StyleSpecs,
createStyleSpecFromTipTapMark,
getBlockSchemaFromSpecs,
@@ -32,7 +37,10 @@ export const defaultBlockSpecs = {
export const defaultBlockSchema = getBlockSchemaFromSpecs(defaultBlockSpecs);
-export type DefaultBlockSchema = typeof defaultBlockSchema;
+// underscore is used that in case a user overrides DefaultBlockSchema,
+// they can still access the original default block schema
+export type _DefaultBlockSchema = typeof defaultBlockSchema;
+export type DefaultBlockSchema = _DefaultBlockSchema;
export const defaultStyleSpecs = {
bold: createStyleSpecFromTipTapMark(Bold, "boolean"),
@@ -46,7 +54,10 @@ export const defaultStyleSpecs = {
export const defaultStyleSchema = getStyleSchemaFromSpecs(defaultStyleSpecs);
-export type DefaultStyleSchema = typeof defaultStyleSchema;
+// underscore is used that in case a user overrides DefaultStyleSchema,
+// they can still access the original default style schema
+export type _DefaultStyleSchema = typeof defaultStyleSchema;
+export type DefaultStyleSchema = _DefaultStyleSchema;
export const defaultInlineContentSpecs = {
text: { config: "text", implementation: {} as any },
@@ -57,4 +68,19 @@ export const defaultInlineContentSchema = getInlineContentSchemaFromSpecs(
defaultInlineContentSpecs
);
-export type DefaultInlineContentSchema = typeof defaultInlineContentSchema;
+// underscore is used that in case a user overrides DefaultInlineContentSchema,
+// they can still access the original default inline content schema
+export type _DefaultInlineContentSchema = typeof defaultInlineContentSchema;
+export type DefaultInlineContentSchema = _DefaultInlineContentSchema;
+
+export type PartialBlock<
+ BSchema extends BlockSchema = DefaultBlockSchema,
+ I extends InlineContentSchema = DefaultInlineContentSchema,
+ S extends StyleSchema = DefaultStyleSchema
+> = PartialBlockNoDefaults;
+
+export type Block<
+ BSchema extends BlockSchema = DefaultBlockSchema,
+ I extends InlineContentSchema = DefaultInlineContentSchema,
+ S extends StyleSchema = DefaultStyleSchema
+> = BlockNoDefaults;
diff --git a/packages/core/src/editor/Block.css b/packages/core/src/editor/Block.css
index 5c94b887aa..85d61fadd4 100644
--- a/packages/core/src/editor/Block.css
+++ b/packages/core/src/editor/Block.css
@@ -305,11 +305,8 @@ NESTED BLOCKS
}
/* PLACEHOLDERS*/
-
-.bn-is-empty .bn-inline-content:before,
-.bn-is-filter .bn-inline-content:before {
+.bn-inline-content:has(> .ProseMirror-trailingBreak):before {
/*float: left; */
- content: "";
pointer-events: none;
height: 0;
/* width: 0; */
@@ -317,33 +314,7 @@ NESTED BLOCKS
font-style: italic;
}
-/* TODO: would be nicer if defined from code */
-
-.bn-block-content.bn-is-empty.bn-has-anchor .bn-inline-content:before {
- content: "Enter text or type '/' for commands";
-}
-
-.bn-block-content.bn-is-filter.bn-has-anchor .bn-inline-content:before {
- content: "Type to filter";
-}
-
-.bn-block-content[data-content-type="heading"].bn-is-empty
- .bn-inline-content:before {
- content: "Heading";
-}
-
-.bn-block-content[data-content-type="bulletListItem"].bn-is-empty
- .bn-inline-content:before,
-.bn-block-content[data-content-type="numberedListItem"].bn-is-empty
- .bn-inline-content:before {
- content: "List";
-}
-
-.bn-is-empty
- .bn-block-content[data-content-type="captionedImage"]
- .bn-inline-content:before {
- content: "Caption";
-}
+/* TODO: should this be here? */
/* TEXT COLORS */
[data-text-color="gray"] {
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index ee64794761..65596426c7 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -1,10 +1,10 @@
-import { Editor, EditorOptions, Extension } from "@tiptap/core";
+import { EditorOptions, Extension } from "@tiptap/core";
import { Node } from "prosemirror-model";
// import "./blocknote.css";
-import { Editor as TiptapEditor } from "@tiptap/core/dist/packages/core/src/Editor";
import * as Y from "yjs";
import {
insertBlocks,
+ insertContentAt,
removeBlocks,
replaceBlocks,
updateBlock,
@@ -13,52 +13,40 @@ import { createExternalHTMLExporter } from "../api/exporters/html/externalHTMLEx
import { blocksToMarkdown } from "../api/exporters/markdown/markdownExporter";
import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos";
import {
- blockToNode,
+ inlineContentToNodes,
nodeToBlock,
} from "../api/nodeConversions/nodeConversions";
import { getNodeById } from "../api/nodeUtil";
import { HTMLToBlocks } from "../api/parsers/html/parseHTML";
import { markdownToBlocks } from "../api/parsers/markdown/parseMarkdown";
import {
+ Block,
DefaultBlockSchema,
DefaultInlineContentSchema,
DefaultStyleSchema,
- defaultBlockSchema,
- defaultBlockSpecs,
- defaultInlineContentSpecs,
- defaultStyleSpecs,
+ PartialBlock,
} from "../blocks/defaultBlocks";
import { FormattingToolbarProsemirrorPlugin } from "../extensions/FormattingToolbar/FormattingToolbarPlugin";
import { HyperlinkToolbarProsemirrorPlugin } from "../extensions/HyperlinkToolbar/HyperlinkToolbarPlugin";
import { ImageToolbarProsemirrorPlugin } from "../extensions/ImageToolbar/ImageToolbarPlugin";
import { SideMenuProsemirrorPlugin } from "../extensions/SideMenu/SideMenuPlugin";
-import { BaseSlashMenuItem } from "../extensions/SlashMenu/BaseSlashMenuItem";
-import { SlashMenuProsemirrorPlugin } from "../extensions/SlashMenu/SlashMenuPlugin";
-import { getDefaultSlashMenuItems } from "../extensions/SlashMenu/defaultSlashMenuItems";
+import { SuggestionMenuProseMirrorPlugin } from "../extensions/SuggestionMenu/SuggestionPlugin";
import { TableHandlesProsemirrorPlugin } from "../extensions/TableHandles/TableHandlesPlugin";
import { UniqueID } from "../extensions/UniqueID/UniqueID";
import {
- Block,
BlockIdentifier,
BlockNoteDOMAttributes,
BlockSchema,
- BlockSchemaFromSpecs,
- BlockSchemaWithBlock,
BlockSpecs,
InlineContentSchema,
- InlineContentSchemaFromSpecs,
InlineContentSpecs,
- PartialBlock,
+ PartialInlineContent,
StyleSchema,
- StyleSchemaFromSpecs,
StyleSpecs,
Styles,
- getBlockSchemaFromSpecs,
- getInlineContentSchemaFromSpecs,
- getStyleSchemaFromSpecs,
} from "../schema";
import { mergeCSSClasses } from "../util/browser";
-import { UnreachableCaseError } from "../util/typescript";
+import { NoInfer, UnreachableCaseError } from "../util/typescript";
import { getBlockNoteExtensions } from "./BlockNoteExtensions";
import { TextCursorPosition } from "./cursorPositionTypes";
@@ -67,77 +55,39 @@ import { Selection } from "./selectionTypes";
import { transformPasted } from "./transformPasted";
// CSS
+import { checkDefaultBlockTypeInSchema } from "../blocks/defaultBlockTypeGuards";
import "./Block.css";
+import { BlockNoteSchema } from "./BlockNoteSchema";
+import {
+ BlockNoteTipTapEditor,
+ BlockNoteTipTapEditorOptions,
+} from "./BlockNoteTipTapEditor";
import "./editor.css";
export type BlockNoteEditorOptions<
- BSpecs extends BlockSpecs,
- ISpecs extends InlineContentSpecs,
- SSpecs extends StyleSpecs
+ BSchema extends BlockSchema,
+ ISchema extends InlineContentSchema,
+ SSchema extends StyleSchema
> = {
// TODO: Figure out if enableBlockNoteExtensions/disableHistoryExtension are needed and document them.
enableBlockNoteExtensions: boolean;
- /**
- *
- * (couldn't fix any type, see https://github.com/TypeCellOS/BlockNote/pull/191#discussion_r1210708771)
- *
- * @default defaultSlashMenuItems from `./extensions/SlashMenu`
- */
- slashMenuItems: BaseSlashMenuItem[];
- /**
- * The HTML element that should be used as the parent element for the editor.
- *
- * @default: undefined, the editor is not attached to the DOM
- */
- parentElement: HTMLElement;
+ placeholders: Record;
+
/**
* An object containing attributes that should be added to HTML elements of the editor.
*
* @example { editor: { class: "my-editor-class" } }
*/
domAttributes: Partial;
- /**
- * A callback function that runs when the editor is ready to be used.
- */
- onEditorReady: (
- editor: BlockNoteEditor<
- BlockSchemaFromSpecs,
- InlineContentSchemaFromSpecs,
- StyleSchemaFromSpecs
- >
- ) => void;
- /**
- * A callback function that runs whenever the editor's contents change.
- */
- onEditorContentChange: (
- editor: BlockNoteEditor<
- BlockSchemaFromSpecs,
- InlineContentSchemaFromSpecs,
- StyleSchemaFromSpecs
- >
- ) => void;
- /**
- * A callback function that runs whenever the text cursor position changes.
- */
- onTextCursorPositionChange: (
- editor: BlockNoteEditor<
- BlockSchemaFromSpecs,
- InlineContentSchemaFromSpecs,
- StyleSchemaFromSpecs
- >
- ) => void;
- /**
- * Locks the editor from being editable by the user if set to `false`.
- */
- editable: boolean;
+
/**
* The content that should be in the editor when it's created, represented as an array of partial block objects.
*/
initialContent: PartialBlock<
- BlockSchemaFromSpecs,
- InlineContentSchemaFromSpecs,
- StyleSchemaFromSpecs
+ NoInfer,
+ NoInfer,
+ NoInfer
>[];
/**
* Use default BlockNote font and reset the styles of
elements etc., that are used in BlockNote.
@@ -146,14 +96,7 @@ export type BlockNoteEditorOptions<
*/
defaultStyles: boolean;
- /**
- * A list of block types that should be available in the editor.
- */
- blockSpecs: BSpecs;
-
- styleSpecs: SSpecs;
-
- inlineContentSpecs: ISpecs;
+ schema: BlockNoteSchema;
/**
* A custom function to handle file uploads.
@@ -202,110 +145,112 @@ export class BlockNoteEditor<
ISchema extends InlineContentSchema = DefaultInlineContentSchema,
SSchema extends StyleSchema = DefaultStyleSchema
> {
- public readonly _tiptapEditor: TiptapEditor & { contentComponent: any };
+ public readonly _tiptapEditor: BlockNoteTipTapEditor & {
+ contentComponent: any;
+ };
public blockCache = new WeakMap>();
- public readonly blockSchema: BSchema;
- public readonly inlineContentSchema: ISchema;
- public readonly styleSchema: SSchema;
+ public readonly schema: BlockNoteSchema;
public readonly blockImplementations: BlockSpecs;
public readonly inlineContentImplementations: InlineContentSpecs;
public readonly styleImplementations: StyleSpecs;
- public ready = false;
-
- public readonly sideMenu: SideMenuProsemirrorPlugin<
+ public readonly formattingToolbar: FormattingToolbarProsemirrorPlugin;
+ public readonly hyperlinkToolbar: HyperlinkToolbarProsemirrorPlugin<
BSchema,
ISchema,
SSchema
>;
- public readonly formattingToolbar: FormattingToolbarProsemirrorPlugin;
- public readonly slashMenu: SlashMenuProsemirrorPlugin<
+ public readonly sideMenu: SideMenuProsemirrorPlugin<
BSchema,
ISchema,
- SSchema,
- any
+ SSchema
>;
- public readonly hyperlinkToolbar: HyperlinkToolbarProsemirrorPlugin<
+ public readonly suggestionMenus: SuggestionMenuProseMirrorPlugin<
BSchema,
ISchema,
SSchema
>;
- public readonly imageToolbar: ImageToolbarProsemirrorPlugin<
- BSchema,
+ public readonly imageToolbar?: ImageToolbarProsemirrorPlugin<
+ ISchema,
+ SSchema
+ >;
+ public readonly tableHandles?: TableHandlesProsemirrorPlugin<
ISchema,
SSchema
>;
- public readonly tableHandles:
- | TableHandlesProsemirrorPlugin<
- BSchema extends BlockSchemaWithBlock<
- "table",
- DefaultBlockSchema["table"]
- >
- ? BSchema
- : any,
- ISchema,
- SSchema
- >
- | undefined;
public readonly uploadFile: ((file: File) => Promise) | undefined;
public static create<
- BSpecs extends BlockSpecs = typeof defaultBlockSpecs,
- ISpecs extends InlineContentSpecs = typeof defaultInlineContentSpecs,
- SSpecs extends StyleSpecs = typeof defaultStyleSpecs
- >(options: Partial> = {}) {
- return new BlockNoteEditor(options) as BlockNoteEditor<
- BlockSchemaFromSpecs,
- InlineContentSchemaFromSpecs,
- StyleSchemaFromSpecs
- >;
+ BSchema extends BlockSchema = DefaultBlockSchema,
+ ISchema extends InlineContentSchema = DefaultInlineContentSchema,
+ SSchema extends StyleSchema = DefaultStyleSchema
+ >(options: Partial> = {}) {
+ return new BlockNoteEditor(options);
}
private constructor(
private readonly options: Partial>
) {
+ const anyOpts = options as any;
+ if (anyOpts.onEditorContentChange) {
+ throw new Error(
+ "onEditorContentChange initialization option is deprecated, use , the useEditorChange(...) hook, or editor.onChange(...)"
+ );
+ }
+
+ if (anyOpts.onTextCursorPositionChange) {
+ throw new Error(
+ "onTextCursorPositionChange initialization option is deprecated, use , the useEditorSelectionChange(...) hook, or editor.onSelectionChange(...)"
+ );
+ }
+
+ if (anyOpts.onEditorReady) {
+ throw new Error(
+ "onEditorReady is deprecated. Editor is immediately ready for use after creation."
+ );
+ }
+
+ if (anyOpts.editable) {
+ throw new Error(
+ "editable initialization option is deprecated, use , or alternatively editor.isEditable = true/false"
+ );
+ }
+
// apply defaults
const newOptions = {
defaultStyles: true,
- blockSpecs: options.blockSpecs || defaultBlockSpecs,
- styleSpecs: options.styleSpecs || defaultStyleSpecs,
- inlineContentSpecs:
- options.inlineContentSpecs || defaultInlineContentSpecs,
+ schema: options.schema || BlockNoteSchema.create(),
...options,
};
- this.blockSchema = getBlockSchemaFromSpecs(newOptions.blockSpecs);
- this.inlineContentSchema = getInlineContentSchemaFromSpecs(
- newOptions.inlineContentSpecs
- );
- this.styleSchema = getStyleSchemaFromSpecs(newOptions.styleSpecs);
- this.blockImplementations = newOptions.blockSpecs;
- this.inlineContentImplementations = newOptions.inlineContentSpecs;
- this.styleImplementations = newOptions.styleSpecs;
+ // @ts-ignore
+ this.schema = newOptions.schema;
+ this.blockImplementations = newOptions.schema.blockSpecs;
+ this.inlineContentImplementations = newOptions.schema.inlineContentSpecs;
+ this.styleImplementations = newOptions.schema.styleSpecs;
- this.sideMenu = new SideMenuProsemirrorPlugin(this);
this.formattingToolbar = new FormattingToolbarProsemirrorPlugin(this);
- this.slashMenu = new SlashMenuProsemirrorPlugin(
- this,
- newOptions.slashMenuItems ||
- (getDefaultSlashMenuItems(this.blockSchema) as any)
- );
this.hyperlinkToolbar = new HyperlinkToolbarProsemirrorPlugin(this);
- this.imageToolbar = new ImageToolbarProsemirrorPlugin(this);
-
- if (this.blockSchema.table === defaultBlockSchema.table) {
+ this.sideMenu = new SideMenuProsemirrorPlugin(this);
+ this.suggestionMenus = new SuggestionMenuProseMirrorPlugin(this);
+ if (checkDefaultBlockTypeInSchema("image", this)) {
+ // Type guards only work on `const`s? Not working for `this`
+ this.imageToolbar = new ImageToolbarProsemirrorPlugin(this as any);
+ }
+ if (checkDefaultBlockTypeInSchema("table", this)) {
this.tableHandles = new TableHandlesProsemirrorPlugin(this as any);
}
const extensions = getBlockNoteExtensions({
editor: this,
+ placeholders: newOptions.placeholders,
domAttributes: newOptions.domAttributes || {},
- blockSchema: this.blockSchema,
- blockSpecs: newOptions.blockSpecs,
- styleSpecs: newOptions.styleSpecs,
- inlineContentSpecs: newOptions.inlineContentSpecs,
+ blockSchema: this.schema.blockSchema,
+ blockSpecs: this.schema.blockSpecs,
+ styleSpecs: this.schema.styleSpecs,
+ inlineContentSpecs: this.schema.inlineContentSpecs,
collaboration: newOptions.collaboration,
});
@@ -314,11 +259,11 @@ export class BlockNoteEditor<
addProseMirrorPlugins: () => {
return [
- this.sideMenu.plugin,
this.formattingToolbar.plugin,
- this.slashMenu.plugin,
this.hyperlinkToolbar.plugin,
- this.imageToolbar.plugin,
+ this.sideMenu.plugin,
+ this.suggestionMenus.plugin,
+ ...(this.imageToolbar ? [this.imageToolbar.plugin] : []),
...(this.tableHandles ? [this.tableHandles.plugin] : []),
];
},
@@ -336,95 +281,30 @@ export class BlockNoteEditor<
const initialContent =
newOptions.initialContent ||
(options.collaboration
- ? undefined
+ ? [
+ {
+ type: "paragraph",
+ id: "initialBlockId",
+ },
+ ]
: [
{
type: "paragraph",
id: UniqueID.options.generateID(),
},
]);
- const styleSchema = this.styleSchema;
- const tiptapOptions: Partial = {
+ if (!Array.isArray(initialContent) || initialContent.length === 0) {
+ throw new Error(
+ "initialContent must be a non-empty array of blocks, received: " +
+ initialContent
+ );
+ }
+
+ const tiptapOptions: BlockNoteTipTapEditorOptions = {
...blockNoteTipTapOptions,
...newOptions._tiptapOptions,
- onBeforeCreate(editor) {
- newOptions._tiptapOptions?.onBeforeCreate?.(editor);
- // We always set the initial content to a single paragraph block. This
- // allows us to easily replace it with the actual initial content once
- // the TipTap editor is initialized.
- const schema = editor.editor.schema;
-
- // This is a hack to make "initial content detection" by y-prosemirror (and also tiptap isEmpty)
- // properly detect whether or not the document has changed.
- // We change the doc.createAndFill function to make sure the initial block id is set, instead of null
- let cache: any;
- const oldCreateAndFill = schema.nodes.doc.createAndFill;
- (schema.nodes.doc as any).createAndFill = (...args: any) => {
- if (cache) {
- return cache;
- }
- const ret = oldCreateAndFill.apply(schema.nodes.doc, args);
-
- // create a copy that we can mutate (otherwise, assigning attrs is not safe and corrupts the pm state)
- const jsonNode = JSON.parse(JSON.stringify(ret!.toJSON()));
- jsonNode.content[0].content[0].attrs.id = "initialBlockId";
-
- cache = Node.fromJSON(schema, jsonNode);
- return cache;
- };
-
- const root = schema.node(
- "doc",
- undefined,
- schema.node("blockGroup", undefined, [
- blockToNode(
- { id: "initialBlockId", type: "paragraph" },
- schema,
- styleSchema
- ),
- ])
- );
- editor.editor.options.content = root.toJSON();
- },
- onCreate: (editor) => {
- newOptions._tiptapOptions?.onCreate?.(editor);
- // We need to wait for the TipTap editor to init before we can set the
- // initial content, as the schema may contain custom blocks which need
- // it to render.
- if (initialContent !== undefined) {
- this.replaceBlocks(this.topLevelBlocks, initialContent as any);
- }
-
- newOptions.onEditorReady?.(this);
- this.ready = true;
- },
- onUpdate: (editor) => {
- newOptions._tiptapOptions?.onUpdate?.(editor);
- // This seems to be necessary due to a bug in TipTap:
- // https://github.com/ueberdosis/tiptap/issues/2583
- if (!this.ready) {
- return;
- }
-
- newOptions.onEditorContentChange?.(this);
- },
- onSelectionUpdate: (editor) => {
- newOptions._tiptapOptions?.onSelectionUpdate?.(editor);
- // This seems to be necessary due to a bug in TipTap:
- // https://github.com/ueberdosis/tiptap/issues/2583
- if (!this.ready) {
- return;
- }
-
- newOptions.onTextCursorPositionChange?.(this);
- },
- editable:
- options.editable !== undefined
- ? options.editable
- : newOptions._tiptapOptions?.editable !== undefined
- ? newOptions._tiptapOptions?.editable
- : true,
+ content: initialContent,
extensions:
newOptions.enableBlockNoteExtensions === false
? newOptions._tiptapOptions?.extensions || []
@@ -435,7 +315,6 @@ export class BlockNoteEditor<
...newOptions._tiptapOptions?.editorProps?.attributes,
...newOptions.domAttributes?.editor,
class: mergeCSSClasses(
- "bn-root",
"bn-editor",
newOptions.defaultStyles ? "bn-default-styles" : "",
newOptions.domAttributes?.editor?.class || ""
@@ -445,15 +324,23 @@ export class BlockNoteEditor<
},
};
- if (newOptions.parentElement) {
- tiptapOptions.element = newOptions.parentElement;
- }
-
- this._tiptapEditor = new Editor(tiptapOptions) as Editor & {
+ this._tiptapEditor = new BlockNoteTipTapEditor(
+ tiptapOptions,
+ this.schema.styleSchema
+ ) as BlockNoteTipTapEditor & {
contentComponent: any;
};
}
+ /**
+ * Mount the editor to a parent DOM element. Call mount(undefined) to clean up
+ *
+ * @warning Not needed for React, use BlockNoteView to take care of this
+ */
+ public mount(parentElement?: HTMLElement | null) {
+ this._tiptapEditor.mount(parentElement);
+ }
+
public get prosemirrorView() {
return this._tiptapEditor.view;
}
@@ -470,20 +357,27 @@ export class BlockNoteEditor<
this._tiptapEditor.view.focus();
}
+ /**
+ * @deprecated, use `editor.document` instead
+ */
+ public get topLevelBlocks(): Block[] {
+ return this.topLevelBlocks;
+ }
+
/**
* Gets a snapshot of all top-level (non-nested) blocks in the editor.
* @returns A snapshot of all top-level (non-nested) blocks in the editor.
*/
- public get topLevelBlocks(): Block[] {
+ public get document(): Block[] {
const blocks: Block[] = [];
this._tiptapEditor.state.doc.firstChild!.descendants((node) => {
blocks.push(
nodeToBlock(
node,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this.blockCache
)
);
@@ -519,9 +413,9 @@ export class BlockNoteEditor<
newBlock = nodeToBlock(
node,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this.blockCache
);
@@ -540,7 +434,7 @@ export class BlockNoteEditor<
callback: (block: Block) => boolean,
reverse = false
): void {
- const blocks = this.topLevelBlocks.slice();
+ const blocks = this.document.slice();
if (reverse) {
blocks.reverse();
@@ -623,9 +517,9 @@ export class BlockNoteEditor<
return {
block: nodeToBlock(
node,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this.blockCache
),
prevBlock:
@@ -633,9 +527,9 @@ export class BlockNoteEditor<
? undefined
: nodeToBlock(
prevNode,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this.blockCache
),
nextBlock:
@@ -643,9 +537,9 @@ export class BlockNoteEditor<
? undefined
: nodeToBlock(
nextNode,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this.blockCache
),
};
@@ -670,7 +564,7 @@ export class BlockNoteEditor<
)!;
const contentType: "none" | "inline" | "table" =
- this.blockSchema[contentNode.type.name]!.content;
+ this.schema.blockSchema[contentNode.type.name]!.content;
if (contentType === "none") {
this._tiptapEditor.commands.setNodeSelection(startPos);
@@ -734,9 +628,9 @@ export class BlockNoteEditor<
blocks.push(
nodeToBlock(
this._tiptapEditor.state.doc.resolve(pos).node(),
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this.blockCache
)
);
@@ -815,6 +709,28 @@ export class BlockNoteEditor<
return replaceBlocks(blocksToRemove, blocksToInsert, this);
}
+ /**
+ * Insert a piece of content at the current cursor position.
+ *
+ * @param content can be a string, or array of partial inline content elements
+ */
+ public insertInlineContent(content: PartialInlineContent) {
+ const nodes = inlineContentToNodes(
+ content,
+ this._tiptapEditor.schema,
+ this.schema.styleSchema
+ );
+
+ insertContentAt(
+ {
+ from: this._tiptapEditor.state.selection.from,
+ to: this._tiptapEditor.state.selection.to,
+ },
+ nodes,
+ this
+ );
+ }
+
/**
* Gets the active text styles at the text cursor position or at the end of the current selection if it's active.
*/
@@ -823,7 +739,7 @@ export class BlockNoteEditor<
const marks = this._tiptapEditor.state.selection.$to.marks();
for (const mark of marks) {
- const config = this.styleSchema[mark.type.name];
+ const config = this.schema.styleSchema[mark.type.name];
if (!config) {
console.warn("mark not found in styleschema", mark.type.name);
continue;
@@ -846,7 +762,7 @@ export class BlockNoteEditor<
this._tiptapEditor.view.focus();
for (const [style, value] of Object.entries(styles)) {
- const config = this.styleSchema[style];
+ const config = this.schema.styleSchema[style];
if (!config) {
throw new Error(`style ${style} not found in styleSchema`);
}
@@ -880,7 +796,7 @@ export class BlockNoteEditor<
this._tiptapEditor.view.focus();
for (const [style, value] of Object.entries(styles)) {
- const config = this.styleSchema[style];
+ const config = this.schema.styleSchema[style];
if (!config) {
throw new Error(`style ${style} not found in styleSchema`);
}
@@ -982,7 +898,7 @@ export class BlockNoteEditor<
* @returns The blocks, serialized as an HTML string.
*/
public async blocksToHTMLLossy(
- blocks = this.topLevelBlocks
+ blocks: Block[] = this.document
): Promise {
const exporter = createExternalHTMLExporter(
this._tiptapEditor.schema,
@@ -1003,9 +919,9 @@ export class BlockNoteEditor<
): Promise[]> {
return HTMLToBlocks(
html,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this._tiptapEditor.schema
);
}
@@ -1017,7 +933,7 @@ export class BlockNoteEditor<
* @returns The blocks, serialized as a Markdown string.
*/
public async blocksToMarkdownLossy(
- blocks: Block[] = this.topLevelBlocks
+ blocks: Block[] = this.document
): Promise {
return blocksToMarkdown(blocks, this._tiptapEditor.schema, this);
}
@@ -1034,9 +950,9 @@ export class BlockNoteEditor<
): Promise[]> {
return markdownToBlocks(
markdown,
- this.blockSchema,
- this.inlineContentSchema,
- this.styleSchema,
+ this.schema.blockSchema,
+ this.schema.inlineContentSchema,
+ this.schema.styleSchema,
this._tiptapEditor.schema
);
}
@@ -1052,4 +968,44 @@ export class BlockNoteEditor<
}
this._tiptapEditor.commands.updateUser(user);
}
+
+ /**
+ * A callback function that runs whenever the editor's contents change.
+ *
+ * @param callback The callback to execute.
+ * @returns A function to remove the callback.
+ */
+ public onChange(
+ callback: (editor: BlockNoteEditor) => void
+ ) {
+ const cb = () => {
+ callback(this);
+ };
+
+ this._tiptapEditor.on("update", cb);
+
+ return () => {
+ this._tiptapEditor.off("update", cb);
+ };
+ }
+
+ /**
+ * A callback function that runs whenever the text cursor position or selection changes.
+ *
+ * @param callback The callback to execute.
+ * @returns A function to remove the callback.
+ */
+ public onSelectionChange(
+ callback: (editor: BlockNoteEditor) => void
+ ) {
+ const cb = () => {
+ callback(this);
+ };
+
+ this._tiptapEditor.on("selectionUpdate", cb);
+
+ return () => {
+ this._tiptapEditor.off("selectionUpdate", cb);
+ };
+ }
}
diff --git a/packages/core/src/editor/BlockNoteExtensions.ts b/packages/core/src/editor/BlockNoteExtensions.ts
index ec2277e5b9..2cf41f98f8 100644
--- a/packages/core/src/editor/BlockNoteExtensions.ts
+++ b/packages/core/src/editor/BlockNoteExtensions.ts
@@ -39,6 +39,7 @@ export const getBlockNoteExtensions = <
S extends StyleSchema
>(opts: {
editor: BlockNoteEditor;
+ placeholders?: Record;
domAttributes: Partial;
blockSchema: BSchema;
blockSpecs: BlockSpecs;
@@ -66,8 +67,10 @@ export const getBlockNoteExtensions = <
// DropCursor,
Placeholder.configure({
- includeChildren: true,
- showOnlyCurrent: false,
+ // TODO: This shorthand is kind of ugly
+ ...(opts.placeholders !== undefined
+ ? { placeholders: opts.placeholders }
+ : {}),
}),
UniqueID.configure({
types: ["blockContainer"],
diff --git a/packages/core/src/editor/BlockNoteSchema.ts b/packages/core/src/editor/BlockNoteSchema.ts
new file mode 100644
index 0000000000..90ebd3748d
--- /dev/null
+++ b/packages/core/src/editor/BlockNoteSchema.ts
@@ -0,0 +1,98 @@
+import {
+ defaultBlockSpecs,
+ defaultInlineContentSpecs,
+ defaultStyleSpecs,
+} from "../blocks/defaultBlocks";
+import {
+ BlockSchema,
+ BlockSchemaFromSpecs,
+ BlockSpecs,
+ InlineContentSchema,
+ InlineContentSchemaFromSpecs,
+ InlineContentSpecs,
+ StyleSchema,
+ StyleSchemaFromSpecs,
+ StyleSpecs,
+ getBlockSchemaFromSpecs,
+ getInlineContentSchemaFromSpecs,
+ getStyleSchemaFromSpecs,
+} from "../schema";
+import type {
+ BlockNoDefaults,
+ PartialBlockNoDefaults,
+} from "../schema/blocks/types";
+import type { BlockNoteEditor } from "./BlockNoteEditor";
+
+export class BlockNoteSchema<
+ BSchema extends BlockSchema,
+ ISchema extends InlineContentSchema,
+ SSchema extends StyleSchema
+> {
+ public readonly blockSpecs: BlockSpecs;
+ public readonly inlineContentSpecs: InlineContentSpecs;
+ public readonly styleSpecs: StyleSpecs;
+
+ public readonly blockSchema: BSchema;
+ public readonly inlineContentSchema: ISchema;
+ public readonly styleSchema: SSchema;
+
+ // Helper so that you can use typeof schema.BlockNoteEditor
+ public readonly BlockNoteEditor: BlockNoteEditor =
+ "only for types" as any;
+
+ public readonly Block: BlockNoDefaults =
+ "only for types" as any;
+
+ public readonly PartialBlock: PartialBlockNoDefaults<
+ BSchema,
+ ISchema,
+ SSchema
+ > = "only for types" as any;
+
+ public static create<
+ BSpecs extends BlockSpecs = typeof defaultBlockSpecs,
+ ISpecs extends InlineContentSpecs = typeof defaultInlineContentSpecs,
+ SSpecs extends StyleSpecs = typeof defaultStyleSpecs
+ >(options?: {
+ /**
+ * A list of custom block types that should be available in the editor.
+ */
+ blockSpecs?: BSpecs;
+ /**
+ * A list of custom InlineContent types that should be available in the editor.
+ */
+ inlineContentSpecs?: ISpecs;
+ /**
+ * A list of custom Styles that should be available in the editor.
+ */
+ styleSpecs?: SSpecs;
+ }) {
+ return new BlockNoteSchema<
+ BlockSchemaFromSpecs,
+ InlineContentSchemaFromSpecs,
+ StyleSchemaFromSpecs
+ >(options);
+ // as BlockNoteSchema<
+ // BlockSchemaFromSpecs,
+ // InlineContentSchemaFromSpecs,
+ // StyleSchemaFromSpecs
+ // >;
+ }
+
+ constructor(opts?: {
+ blockSpecs?: BlockSpecs;
+ inlineContentSpecs?: InlineContentSpecs;
+ styleSpecs?: StyleSpecs;
+ }) {
+ this.blockSpecs = opts?.blockSpecs || defaultBlockSpecs;
+ this.inlineContentSpecs =
+ opts?.inlineContentSpecs || defaultInlineContentSpecs;
+ this.styleSpecs = opts?.styleSpecs || defaultStyleSpecs;
+
+ this.blockSchema = getBlockSchemaFromSpecs(this.blockSpecs) as any;
+ this.inlineContentSchema = getInlineContentSchemaFromSpecs(
+ this.inlineContentSpecs
+ ) as any;
+ this.styleSchema = getStyleSchemaFromSpecs(this.styleSpecs) as any;
+ }
+}
diff --git a/packages/core/src/editor/BlockNoteTipTapEditor.ts b/packages/core/src/editor/BlockNoteTipTapEditor.ts
new file mode 100644
index 0000000000..8aee5c7f75
--- /dev/null
+++ b/packages/core/src/editor/BlockNoteTipTapEditor.ts
@@ -0,0 +1,162 @@
+import { EditorOptions, createDocument } from "@tiptap/core";
+// import "./blocknote.css";
+import { Editor as TiptapEditor } from "@tiptap/core";
+import { Node } from "@tiptap/pm/model";
+import { EditorView } from "@tiptap/pm/view";
+import { EditorState } from "prosemirror-state";
+
+import { blockToNode } from "../api/nodeConversions/nodeConversions";
+import { PartialBlock } from "../blocks/defaultBlocks";
+import { StyleSchema } from "../schema";
+
+export type BlockNoteTipTapEditorOptions = Partial<
+ Omit
+> & {
+ content: PartialBlock[];
+};
+
+/**
+ * Custom Editor class that extends TiptapEditor and separates
+ * the creation of the view from the constructor.
+ */
+// @ts-ignore
+export class BlockNoteTipTapEditor extends TiptapEditor {
+ private _state: EditorState;
+
+ constructor(options: BlockNoteTipTapEditorOptions, styleSchema: StyleSchema) {
+ // possible fix for next.js server side rendering
+ // const d = globalThis.document;
+ // const w = globalThis.window;
+ // if (!globalThis.document) {
+ // globalThis.document = {
+ // createElement: () => {},
+ // };
+ // }
+ // if (!globalThis.window) {
+ // globalThis.window = {
+ // setTimeout: () => {},
+ // };
+ // }
+ // options.injectCSS = false
+ super({ ...options, content: undefined });
+
+ // try {
+ // globalThis.window = w;
+ // } catch(e) {}
+ // try {
+ // globalThis.document = d;
+ // } catch(e) {}
+
+ // This is a hack to make "initial content detection" by y-prosemirror (and also tiptap isEmpty)
+ // properly detect whether or not the document has changed.
+ // We change the doc.createAndFill function to make sure the initial block id is set, instead of null
+ const schema = this.schema;
+ let cache: any;
+ const oldCreateAndFill = schema.nodes.doc.createAndFill;
+ (schema.nodes.doc as any).createAndFill = (...args: any) => {
+ if (cache) {
+ return cache;
+ }
+ const ret = oldCreateAndFill.apply(schema.nodes.doc, args);
+
+ // create a copy that we can mutate (otherwise, assigning attrs is not safe and corrupts the pm state)
+ const jsonNode = JSON.parse(JSON.stringify(ret!.toJSON()));
+ jsonNode.content[0].content[0].attrs.id = "initialBlockId";
+
+ cache = Node.fromJSON(schema, jsonNode);
+ return cache;
+ };
+
+ let doc: Node;
+
+ try {
+ const pmNodes = options?.content.map((b) =>
+ blockToNode(b, this.schema, styleSchema).toJSON()
+ );
+ doc = createDocument(
+ {
+ type: "doc",
+ content: [
+ {
+ type: "blockGroup",
+ content: pmNodes,
+ },
+ ],
+ },
+ this.schema,
+ this.options.parseOptions
+ );
+ } catch (e) {
+ console.error(
+ "Error creating document from blocks passed as `initialContent`. Caused by exception: ",
+ e
+ );
+ throw new Error(
+ "Error creating document from blocks passed as `initialContent`:\n" +
+ +JSON.stringify(options.content)
+ );
+ }
+
+ // Create state immediately, so that it's available independently from the View,
+ // the way Prosemirror "intends it to be". This also makes sure that we can access
+ // the state before the view is created / mounted.
+ this._state = EditorState.create({
+ doc,
+ schema: this.schema,
+ // selection: selection || undefined,
+ });
+ }
+
+ get state() {
+ if (this.view) {
+ this._state = this.view.state;
+ }
+ return this._state;
+ }
+
+ createView() {
+ // no-op
+ // Disable default call to `createView` in the Editor constructor.
+ // We should call `createView` manually only when a DOM element is available
+ }
+
+ /**
+ * Replace the default `createView` method with a custom one - which we call on mount
+ */
+ private createViewAlternative() {
+ // Without queueMicrotask, custom IC / styles will give a React FlushSync error
+ queueMicrotask(() => {
+ this.view = new EditorView(this.options.element, {
+ ...this.options.editorProps,
+ // @ts-ignore
+ dispatchTransaction: this.dispatchTransaction.bind(this),
+ state: this.state,
+ });
+
+ // `editor.view` is not yet available at this time.
+ // Therefore we will add all plugins and node views directly afterwards.
+ const newState = this.state.reconfigure({
+ plugins: this.extensionManager.plugins,
+ });
+
+ this.view.updateState(newState);
+
+ this.createNodeViews();
+ });
+ }
+
+ /**
+ * Mounts / unmounts the editor to a dom element
+ *
+ * @param element DOM element to mount to, ur null / undefined to destroy
+ */
+ public mount = (element?: HTMLElement | null) => {
+ if (!element) {
+ this.destroy();
+ } else {
+ this.options.element = element;
+ // @ts-ignore
+ this.createViewAlternative();
+ }
+ };
+}
diff --git a/packages/core/src/editor/cursorPositionTypes.ts b/packages/core/src/editor/cursorPositionTypes.ts
index b7fa932475..7f82cce855 100644
--- a/packages/core/src/editor/cursorPositionTypes.ts
+++ b/packages/core/src/editor/cursorPositionTypes.ts
@@ -1,9 +1,5 @@
-import {
- Block,
- BlockSchema,
- InlineContentSchema,
- StyleSchema,
-} from "../schema";
+import { Block } from "../blocks/defaultBlocks";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../schema";
export type TextCursorPosition<
BSchema extends BlockSchema,
diff --git a/packages/core/src/editor/editor.css b/packages/core/src/editor/editor.css
index 4b1d461b47..d4a092a8e1 100644
--- a/packages/core/src/editor/editor.css
+++ b/packages/core/src/editor/editor.css
@@ -1,4 +1,3 @@
-@import url("../assets/fonts-inter.css");
@import url("prosemirror-tables/style/tables.css");
.bn-editor {
diff --git a/packages/core/src/editor/selectionTypes.ts b/packages/core/src/editor/selectionTypes.ts
index aef65b5f08..a96b26945f 100644
--- a/packages/core/src/editor/selectionTypes.ts
+++ b/packages/core/src/editor/selectionTypes.ts
@@ -1,9 +1,5 @@
-import {
- Block,
- BlockSchema,
- InlineContentSchema,
- StyleSchema,
-} from "../schema";
+import { Block } from "../blocks/defaultBlocks";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../schema";
export type Selection<
BSchema extends BlockSchema,
diff --git a/packages/core/src/extensions-shared/BaseUiElementTypes.ts b/packages/core/src/extensions-shared/BaseUiElementTypes.ts
deleted file mode 100644
index 4ca4cc9f4c..0000000000
--- a/packages/core/src/extensions-shared/BaseUiElementTypes.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export type BaseUiElementCallbacks = {
- destroy: () => void;
-};
-
-export type BaseUiElementState = {
- show: boolean;
- referencePos: DOMRect;
-};
diff --git a/packages/core/src/extensions-shared/README.md b/packages/core/src/extensions-shared/README.md
deleted file mode 100644
index 89c300fd7d..0000000000
--- a/packages/core/src/extensions-shared/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-### @blocknote/core/src/extensions-shared
-
-Helper functions / base plugins for @blocknote/core/src/extensions
\ No newline at end of file
diff --git a/packages/core/src/extensions-shared/UiElementPosition.ts b/packages/core/src/extensions-shared/UiElementPosition.ts
new file mode 100644
index 0000000000..59b0a61463
--- /dev/null
+++ b/packages/core/src/extensions-shared/UiElementPosition.ts
@@ -0,0 +1,4 @@
+export type UiElementPosition = {
+ show: boolean;
+ referencePos: DOMRect;
+};
diff --git a/packages/core/src/extensions-shared/suggestion/SuggestionItem.ts b/packages/core/src/extensions-shared/suggestion/SuggestionItem.ts
deleted file mode 100644
index aebd7be2cd..0000000000
--- a/packages/core/src/extensions-shared/suggestion/SuggestionItem.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export type SuggestionItem = {
- name: string;
-};
diff --git a/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts b/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts
deleted file mode 100644
index 23ff2ad1b6..0000000000
--- a/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts
+++ /dev/null
@@ -1,448 +0,0 @@
-import { findParentNode } from "@tiptap/core";
-import { EditorState, Plugin, PluginKey } from "prosemirror-state";
-import { Decoration, DecorationSet, EditorView } from "prosemirror-view";
-import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
-import { BaseUiElementState } from "../BaseUiElementTypes";
-import { SuggestionItem } from "./SuggestionItem";
-
-const findBlock = findParentNode((node) => node.type.name === "blockContainer");
-
-export type SuggestionsMenuState =
- BaseUiElementState & {
- // The suggested items to display.
- filteredItems: T[];
- // The index of the suggested item that's currently hovered by the keyboard.
- keyboardHoveredItemIndex: number;
- };
-
-class SuggestionsMenuView<
- T extends SuggestionItem,
- BSchema extends BlockSchema,
- I extends InlineContentSchema,
- S extends StyleSchema
-> {
- private suggestionsMenuState?: SuggestionsMenuState;
- public updateSuggestionsMenu: () => void;
-
- pluginState: SuggestionPluginState;
-
- constructor(
- private readonly editor: BlockNoteEditor,
- private readonly pluginKey: PluginKey,
- updateSuggestionsMenu: (
- suggestionsMenuState: SuggestionsMenuState
- ) => void = () => {
- // noop
- }
- ) {
- this.pluginState = getDefaultPluginState();
-
- this.updateSuggestionsMenu = () => {
- if (!this.suggestionsMenuState) {
- throw new Error("Attempting to update uninitialized suggestions menu");
- }
-
- updateSuggestionsMenu(this.suggestionsMenuState);
- };
-
- document.addEventListener("scroll", this.handleScroll);
- }
-
- handleScroll = () => {
- if (this.suggestionsMenuState?.show) {
- const decorationNode = document.querySelector(
- `[data-decoration-id="${this.pluginState.decorationId}"]`
- );
- this.suggestionsMenuState.referencePos =
- decorationNode!.getBoundingClientRect();
- this.updateSuggestionsMenu();
- }
- };
-
- update(view: EditorView, prevState: EditorState) {
- const prev = this.pluginKey.getState(prevState);
- const next = this.pluginKey.getState(view.state);
-
- // See how the state changed
- const started = !prev.active && next.active;
- const stopped = prev.active && !next.active;
- // TODO: Currently also true for cases in which an update isn't needed so selected list item index updates still
- // cause the view to update. May need to be more strict.
- const changed = prev.active && next.active;
-
- // Cancel when suggestion isn't active
- if (!started && !changed && !stopped) {
- return;
- }
-
- this.pluginState = stopped ? prev : next;
-
- if (stopped || !this.editor.isEditable) {
- this.suggestionsMenuState!.show = false;
- this.updateSuggestionsMenu();
-
- return;
- }
-
- const decorationNode = document.querySelector(
- `[data-decoration-id="${this.pluginState.decorationId}"]`
- );
-
- if (this.editor.isEditable) {
- this.suggestionsMenuState = {
- show: true,
- referencePos: decorationNode!.getBoundingClientRect(),
- filteredItems: this.pluginState.items,
- keyboardHoveredItemIndex: this.pluginState.keyboardHoveredItemIndex!,
- };
-
- this.updateSuggestionsMenu();
- }
- }
-
- destroy() {
- document.removeEventListener("scroll", this.handleScroll);
- }
-}
-
-type SuggestionPluginState = {
- // True when the menu is shown, false when hidden.
- active: boolean;
- // The character that triggered the menu being shown. Allowing the trigger to be different to the default
- // trigger allows other extensions to open it programmatically.
- triggerCharacter: string | undefined;
- // The editor position just after the trigger character, i.e. where the user query begins. Used to figure out
- // which menu items to show and can also be used to delete the trigger character.
- queryStartPos: number | undefined;
- // The items that should be shown in the menu.
- items: T[];
- // The index of the item in the menu that's currently hovered using the keyboard.
- keyboardHoveredItemIndex: number | undefined;
- // The number of characters typed after the last query that matched with at least 1 item. Used to close the
- // menu if the user keeps entering queries that don't return any results.
- notFoundCount: number | undefined;
- decorationId: string | undefined;
-};
-
-function getDefaultPluginState<
- T extends SuggestionItem
->(): SuggestionPluginState {
- return {
- active: false,
- triggerCharacter: undefined,
- queryStartPos: undefined,
- items: [] as T[],
- keyboardHoveredItemIndex: undefined,
- notFoundCount: 0,
- decorationId: undefined,
- };
-}
-
-/**
- * A ProseMirror plugin for suggestions, designed to make '/'-commands possible as well as mentions.
- *
- * This is basically a simplified version of TipTap's [Suggestions](https://github.com/ueberdosis/tiptap/tree/db92a9b313c5993b723c85cd30256f1d4a0b65e1/packages/suggestion) plugin.
- *
- * This version is adapted from the aforementioned version in the following ways:
- * - This version supports generic items instead of only strings (to allow for more advanced filtering for example)
- * - This version hides some unnecessary complexity from the user of the plugin.
- * - This version handles key events differently
- */
-export const setupSuggestionsMenu = <
- T extends SuggestionItem,
- BSchema extends BlockSchema,
- I extends InlineContentSchema,
- S extends StyleSchema
->(
- editor: BlockNoteEditor,
- updateSuggestionsMenu: (
- suggestionsMenuState: SuggestionsMenuState
- ) => void,
-
- pluginKey: PluginKey,
- defaultTriggerCharacter: string,
- items: (query: string) => T[] = () => [],
- onSelectItem: (props: {
- item: T;
- editor: BlockNoteEditor;
- }) => void = () => {
- // noop
- }
-) => {
- // Assertions
- if (defaultTriggerCharacter.length !== 1) {
- throw new Error("'char' should be a single character");
- }
-
- let suggestionsPluginView: SuggestionsMenuView;
-
- const deactivate = (view: EditorView) => {
- view.dispatch(view.state.tr.setMeta(pluginKey, { deactivate: true }));
- };
-
- return {
- plugin: new Plugin({
- key: pluginKey,
-
- view: () => {
- suggestionsPluginView = new SuggestionsMenuView(
- editor,
- pluginKey,
-
- updateSuggestionsMenu
- );
- return suggestionsPluginView;
- },
-
- state: {
- // Initialize the plugin's internal state.
- init(): SuggestionPluginState {
- return getDefaultPluginState();
- },
-
- // Apply changes to the plugin state from an editor transaction.
- apply(transaction, prev, oldState, newState): SuggestionPluginState {
- // TODO: More clearly define which transactions should be ignored.
- if (transaction.getMeta("orderedListIndexing") !== undefined) {
- return prev;
- }
-
- // Checks if the menu should be shown.
- if (transaction.getMeta(pluginKey)?.activate) {
- return {
- active: true,
- triggerCharacter:
- transaction.getMeta(pluginKey)?.triggerCharacter || "",
- queryStartPos: newState.selection.from,
- items: items(""),
- keyboardHoveredItemIndex: 0,
- // TODO: Maybe should be 1 if the menu has no possible items? Probably redundant since a menu with no items
- // is useless in practice.
- notFoundCount: 0,
- decorationId: `id_${Math.floor(Math.random() * 0xffffffff)}`,
- };
- }
-
- // Checks if the menu is hidden, in which case it doesn't need to be hidden or updated.
- if (!prev.active) {
- return prev;
- }
-
- const next = { ...prev };
-
- // Updates which menu items to show by checking which items the current query (the text between the trigger
- // character and caret) matches with.
- next.items = items(
- newState.doc.textBetween(
- prev.queryStartPos!,
- newState.selection.from
- )
- );
-
- // Updates notFoundCount if the query doesn't match any items.
- next.notFoundCount = 0;
- if (next.items.length === 0) {
- // Checks how many characters were typed or deleted since the last transaction, and updates the notFoundCount
- // accordingly. Also ensures the notFoundCount does not become negative.
- next.notFoundCount = Math.max(
- 0,
- prev.notFoundCount! +
- (newState.selection.from - oldState.selection.from)
- );
- }
-
- // Hides the menu. This is done after items and notFoundCount are already updated as notFoundCount is needed to
- // check if the menu should be hidden.
- if (
- // Highlighting text should hide the menu.
- newState.selection.from !== newState.selection.to ||
- // Transactions with plugin metadata {deactivate: true} should hide the menu.
- transaction.getMeta(pluginKey)?.deactivate ||
- // Certain mouse events should hide the menu.
- // TODO: Change to global mousedown listener.
- transaction.getMeta("focus") ||
- transaction.getMeta("blur") ||
- transaction.getMeta("pointer") ||
- // Moving the caret before the character which triggered the menu should hide it.
- (prev.active && newState.selection.from < prev.queryStartPos!) ||
- // Entering more than 3 characters, after the last query that matched with at least 1 menu item, should hide
- // the menu.
- next.notFoundCount > 3
- ) {
- return getDefaultPluginState();
- }
-
- // Updates keyboardHoveredItemIndex if the up or down arrow key was
- // pressed, or resets it if the keyboard cursor moved.
- if (
- transaction.getMeta(pluginKey)?.selectedItemIndexChanged !==
- undefined
- ) {
- let newIndex =
- transaction.getMeta(pluginKey).selectedItemIndexChanged;
-
- // Allows selection to jump between first and last items.
- if (newIndex < 0) {
- newIndex = prev.items.length - 1;
- } else if (newIndex >= prev.items.length) {
- newIndex = 0;
- }
-
- next.keyboardHoveredItemIndex = newIndex;
- } else if (oldState.selection.from !== newState.selection.from) {
- next.keyboardHoveredItemIndex = 0;
- }
-
- return next;
- },
- },
-
- props: {
- handleKeyDown(view, event) {
- const menuIsActive = (this as Plugin).getState(view.state).active;
-
- // Shows the menu if the default trigger character was pressed and the menu isn't active.
- if (event.key === defaultTriggerCharacter && !menuIsActive) {
- view.dispatch(
- view.state.tr
- .insertText(defaultTriggerCharacter)
- .scrollIntoView()
- .setMeta(pluginKey, {
- activate: true,
- triggerCharacter: defaultTriggerCharacter,
- })
- );
-
- return true;
- }
-
- // Doesn't handle other keystrokes if the menu isn't active.
- if (!menuIsActive) {
- return false;
- }
-
- // Handles keystrokes for navigating the menu.
- const {
- triggerCharacter,
- queryStartPos,
- items,
- keyboardHoveredItemIndex,
- } = pluginKey.getState(view.state);
-
- // Moves the keyboard selection to the previous item.
- if (event.key === "ArrowUp") {
- view.dispatch(
- view.state.tr.setMeta(pluginKey, {
- selectedItemIndexChanged: keyboardHoveredItemIndex - 1,
- })
- );
- return true;
- }
-
- // Moves the keyboard selection to the next item.
- if (event.key === "ArrowDown") {
- view.dispatch(
- view.state.tr.setMeta(pluginKey, {
- selectedItemIndexChanged: keyboardHoveredItemIndex + 1,
- })
- );
- return true;
- }
-
- // Selects an item and closes the menu.
- if (event.key === "Enter") {
- if (items.length === 0) {
- return true;
- }
-
- deactivate(view);
- editor._tiptapEditor
- .chain()
- .focus()
- .deleteRange({
- from: queryStartPos! - triggerCharacter!.length,
- to: editor._tiptapEditor.state.selection.from,
- })
- .run();
-
- onSelectItem({
- item: items[keyboardHoveredItemIndex],
- editor: editor,
- });
-
- return true;
- }
-
- // Closes the menu.
- if (event.key === "Escape") {
- deactivate(view);
- return true;
- }
-
- return false;
- },
-
- // Setup decorator on the currently active suggestion.
- decorations(state) {
- const { active, decorationId, queryStartPos, triggerCharacter } = (
- this as Plugin
- ).getState(state);
-
- if (!active) {
- return null;
- }
-
- // If the menu was opened programmatically by another extension, it may not use a trigger character. In this
- // case, the decoration is set on the whole block instead, as the decoration range would otherwise be empty.
- if (triggerCharacter === "") {
- const blockNode = findBlock(state.selection);
- if (blockNode) {
- return DecorationSet.create(state.doc, [
- Decoration.node(
- blockNode.pos,
- blockNode.pos + blockNode.node.nodeSize,
- {
- nodeName: "span",
- class: "bn-suggestion-decorator",
- "data-decoration-id": decorationId,
- }
- ),
- ]);
- }
- }
- // Creates an inline decoration around the trigger character.
- return DecorationSet.create(state.doc, [
- Decoration.inline(
- queryStartPos - triggerCharacter.length,
- queryStartPos,
- {
- nodeName: "span",
- class: "bn-suggestion-decorator",
- "data-decoration-id": decorationId,
- }
- ),
- ]);
- },
- },
- }),
- itemCallback: (item: T) => {
- deactivate(editor._tiptapEditor.view);
- editor._tiptapEditor
- .chain()
- .focus()
- .deleteRange({
- from:
- suggestionsPluginView.pluginState.queryStartPos! -
- suggestionsPluginView.pluginState.triggerCharacter!.length,
- to: editor._tiptapEditor.state.selection.from,
- })
- .run();
-
- onSelectItem({
- item: item,
- editor: editor,
- });
- },
- };
-};
diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts
index dac58aae43..a60f1cb398 100644
--- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts
+++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts
@@ -3,20 +3,15 @@ import { EditorState, Plugin, PluginKey } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import {
- BaseUiElementCallbacks,
- BaseUiElementState,
-} from "../../extensions-shared/BaseUiElementTypes";
+import { UiElementPosition } from "../../extensions-shared/UiElementPosition";
import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
import { EventEmitter } from "../../util/EventEmitter";
-export type FormattingToolbarCallbacks = BaseUiElementCallbacks;
-
-export type FormattingToolbarState = BaseUiElementState;
+export type FormattingToolbarState = UiElementPosition;
export class FormattingToolbarView {
- private formattingToolbarState?: FormattingToolbarState;
- public updateFormattingToolbar: () => void;
+ public state?: FormattingToolbarState;
+ public emitUpdate: () => void;
public preventHide = false;
public preventShow = false;
@@ -36,18 +31,16 @@ export class FormattingToolbarView {
StyleSchema
>,
private readonly pmView: EditorView,
- updateFormattingToolbar: (
- formattingToolbarState: FormattingToolbarState
- ) => void
+ emitUpdate: (state: FormattingToolbarState) => void
) {
- this.updateFormattingToolbar = () => {
- if (!this.formattingToolbarState) {
+ this.emitUpdate = () => {
+ if (!this.state) {
throw new Error(
"Attempting to update uninitialized formatting toolbar"
);
}
- updateFormattingToolbar(this.formattingToolbarState);
+ emitUpdate(this.state);
};
pmView.dom.addEventListener("mousedown", this.viewMousedownHandler);
@@ -72,9 +65,9 @@ export class FormattingToolbarView {
// For dragging the whole editor.
dragHandler = () => {
- if (this.formattingToolbarState?.show) {
- this.formattingToolbarState.show = false;
- this.updateFormattingToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
};
@@ -105,16 +98,16 @@ export class FormattingToolbarView {
return;
}
- if (this.formattingToolbarState?.show) {
- this.formattingToolbarState.show = false;
- this.updateFormattingToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
};
scrollHandler = () => {
- if (this.formattingToolbarState?.show) {
- this.formattingToolbarState.referencePos = this.getSelectionBoundingBox();
- this.updateFormattingToolbar();
+ if (this.state?.show) {
+ this.state.referencePos = this.getSelectionBoundingBox();
+ this.emitUpdate();
}
};
@@ -152,24 +145,24 @@ export class FormattingToolbarView {
!this.preventShow &&
(shouldShow || this.preventHide)
) {
- this.formattingToolbarState = {
+ this.state = {
show: true,
referencePos: this.getSelectionBoundingBox(),
};
- this.updateFormattingToolbar();
+ this.emitUpdate();
return;
}
// Checks if menu should be hidden.
if (
- this.formattingToolbarState?.show &&
+ this.state?.show &&
!this.preventHide &&
(!shouldShow || this.preventShow || !this.editor.isEditable)
) {
- this.formattingToolbarState.show = false;
- this.updateFormattingToolbar();
+ this.state.show = false;
+ this.emitUpdate();
return;
}
diff --git a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts
index 30aa623af3..c0d524c0b4 100644
--- a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts
+++ b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts
@@ -2,12 +2,13 @@ import { getMarkRange, posToDOMRect, Range } from "@tiptap/core";
import { EditorView } from "@tiptap/pm/view";
import { Mark } from "prosemirror-model";
import { Plugin, PluginKey } from "prosemirror-state";
+
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes";
import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
+import { UiElementPosition } from "../../extensions-shared/UiElementPosition";
import { EventEmitter } from "../../util/EventEmitter";
-export type HyperlinkToolbarState = BaseUiElementState & {
+export type HyperlinkToolbarState = UiElementPosition & {
// The hovered hyperlink's URL, and the text it's displayed with in the
// editor.
url: string;
@@ -15,8 +16,8 @@ export type HyperlinkToolbarState = BaseUiElementState & {
};
class HyperlinkToolbarView {
- private hyperlinkToolbarState?: HyperlinkToolbarState;
- public updateHyperlinkToolbar: () => void;
+ public state?: HyperlinkToolbarState;
+ public emitUpdate: () => void;
menuUpdateTimer: ReturnType | undefined;
startMenuUpdateTimer: () => void;
@@ -34,16 +35,14 @@ class HyperlinkToolbarView {
constructor(
private readonly editor: BlockNoteEditor,
private readonly pmView: EditorView,
- updateHyperlinkToolbar: (
- hyperlinkToolbarState: HyperlinkToolbarState
- ) => void
+ emitUpdate: (state: HyperlinkToolbarState) => void
) {
- this.updateHyperlinkToolbar = () => {
- if (!this.hyperlinkToolbarState) {
+ this.emitUpdate = () => {
+ if (!this.state) {
throw new Error("Attempting to update uninitialized hyperlink toolbar");
}
- updateHyperlinkToolbar(this.hyperlinkToolbarState);
+ emitUpdate(this.state);
};
this.startMenuUpdateTimer = () => {
@@ -124,22 +123,22 @@ class HyperlinkToolbarView {
editorWrapper.contains(event.target as Node)
)
) {
- if (this.hyperlinkToolbarState?.show) {
- this.hyperlinkToolbarState.show = false;
- this.updateHyperlinkToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
}
};
scrollHandler = () => {
if (this.hyperlinkMark !== undefined) {
- if (this.hyperlinkToolbarState?.show) {
- this.hyperlinkToolbarState.referencePos = posToDOMRect(
+ if (this.state?.show) {
+ this.state.referencePos = posToDOMRect(
this.pmView,
this.hyperlinkMarkRange!.from,
this.hyperlinkMarkRange!.to
);
- this.updateHyperlinkToolbar();
+ this.emitUpdate();
}
}
};
@@ -158,9 +157,9 @@ class HyperlinkToolbarView {
this.pmView.dispatch(tr);
this.pmView.focus();
- if (this.hyperlinkToolbarState?.show) {
- this.hyperlinkToolbarState.show = false;
- this.updateHyperlinkToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
}
@@ -176,9 +175,9 @@ class HyperlinkToolbarView {
);
this.pmView.focus();
- if (this.hyperlinkToolbarState?.show) {
- this.hyperlinkToolbarState.show = false;
- this.updateHyperlinkToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
}
@@ -232,7 +231,7 @@ class HyperlinkToolbarView {
}
if (this.hyperlinkMark && this.editor.isEditable) {
- this.hyperlinkToolbarState = {
+ this.state = {
show: true,
referencePos: posToDOMRect(
this.pmView,
@@ -245,19 +244,19 @@ class HyperlinkToolbarView {
this.hyperlinkMarkRange!.to
),
};
- this.updateHyperlinkToolbar();
+ this.emitUpdate();
return;
}
// Hides menu.
if (
- this.hyperlinkToolbarState?.show &&
+ this.state?.show &&
prevHyperlinkMark &&
(!this.hyperlinkMark || !this.editor.isEditable)
) {
- this.hyperlinkToolbarState.show = false;
- this.updateHyperlinkToolbar();
+ this.state.show = false;
+ this.emitUpdate();
return;
}
diff --git a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts
index 98fe041755..26a28c13c2 100644
--- a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts
+++ b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts
@@ -1,51 +1,44 @@
import { EditorState, Plugin, PluginKey } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
-import { EventEmitter } from "../../util/EventEmitter";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import {
- BlockSchema,
+import type {
+ BlockFromConfig,
InlineContentSchema,
- SpecificBlock,
StyleSchema,
} from "../../schema";
-import {
- BaseUiElementCallbacks,
- BaseUiElementState,
-} from "../../extensions-shared/BaseUiElementTypes";
-export type ImageToolbarCallbacks = BaseUiElementCallbacks;
+import { UiElementPosition } from "../../extensions-shared/UiElementPosition";
+import { EventEmitter } from "../../util/EventEmitter";
+import { DefaultBlockSchema } from "../../blocks/defaultBlocks";
export type ImageToolbarState<
- B extends BlockSchema,
I extends InlineContentSchema,
- S extends StyleSchema = StyleSchema
-> = BaseUiElementState & {
- block: SpecificBlock;
+ S extends StyleSchema
+> = UiElementPosition & {
+ // TODO: This typing is not quite right (children should be from BSchema)
+ block: BlockFromConfig;
};
export class ImageToolbarView<
- BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
> {
- private imageToolbarState?: ImageToolbarState;
- public updateImageToolbar: () => void;
+ public state?: ImageToolbarState;
+ public emitUpdate: () => void;
public prevWasEditable: boolean | null = null;
constructor(
private readonly pluginKey: PluginKey,
private readonly pmView: EditorView,
- updateImageToolbar: (
- imageToolbarState: ImageToolbarState
- ) => void
+ emitUpdate: (state: ImageToolbarState) => void
) {
- this.updateImageToolbar = () => {
- if (!this.imageToolbarState) {
+ this.emitUpdate = () => {
+ if (!this.state) {
throw new Error("Attempting to update uninitialized image toolbar");
}
- updateImageToolbar(this.imageToolbarState);
+ emitUpdate(this.state);
};
pmView.dom.addEventListener("mousedown", this.mouseDownHandler);
@@ -58,17 +51,17 @@ export class ImageToolbarView<
}
mouseDownHandler = () => {
- if (this.imageToolbarState?.show) {
- this.imageToolbarState.show = false;
- this.updateImageToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
};
// For dragging the whole editor.
dragstartHandler = () => {
- if (this.imageToolbarState?.show) {
- this.imageToolbarState.show = false;
- this.updateImageToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
};
@@ -88,41 +81,40 @@ export class ImageToolbarView<
return;
}
- if (this.imageToolbarState?.show) {
- this.imageToolbarState.show = false;
- this.updateImageToolbar();
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate();
}
};
scrollHandler = () => {
- if (this.imageToolbarState?.show) {
+ if (this.state?.show) {
const blockElement = document.querySelector(
- `[data-node-type="blockContainer"][data-id="${this.imageToolbarState.block.id}"]`
+ `[data-node-type="blockContainer"][data-id="${this.state.block.id}"]`
)!;
- this.imageToolbarState.referencePos =
- blockElement.getBoundingClientRect();
- this.updateImageToolbar();
+ this.state.referencePos = blockElement.getBoundingClientRect();
+ this.emitUpdate();
}
};
update(view: EditorView, prevState: EditorState) {
const pluginState: {
- block: SpecificBlock;
+ block: BlockFromConfig;
} = this.pluginKey.getState(view.state);
- if (!this.imageToolbarState?.show && pluginState.block) {
+ if (!this.state?.show && pluginState.block) {
const blockElement = document.querySelector(
`[data-node-type="blockContainer"][data-id="${pluginState.block.id}"]`
)!;
- this.imageToolbarState = {
+ this.state = {
show: true,
referencePos: blockElement.getBoundingClientRect(),
block: pluginState.block,
};
- this.updateImageToolbar();
+ this.emitUpdate();
return;
}
@@ -131,10 +123,10 @@ export class ImageToolbarView<
!view.state.selection.eq(prevState.selection) ||
!view.state.doc.eq(prevState.doc)
) {
- if (this.imageToolbarState?.show) {
- this.imageToolbarState.show = false;
+ if (this.state?.show) {
+ this.state.show = false;
- this.updateImageToolbar();
+ this.emitUpdate();
}
}
}
@@ -150,20 +142,21 @@ export class ImageToolbarView<
}
}
-export const imageToolbarPluginKey = new PluginKey("ImageToolbarPlugin");
+const imageToolbarPluginKey = new PluginKey("ImageToolbarPlugin");
export class ImageToolbarProsemirrorPlugin<
- BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
> extends EventEmitter {
- private view: ImageToolbarView | undefined;
+ private view: ImageToolbarView | undefined;
public readonly plugin: Plugin;
- constructor(_editor: BlockNoteEditor) {
+ constructor(
+ _editor: BlockNoteEditor<{ image: DefaultBlockSchema["image"] }, I, S>
+ ) {
super();
this.plugin = new Plugin<{
- block: SpecificBlock | undefined;
+ block: BlockFromConfig | undefined;
}>({
key: imageToolbarPluginKey,
view: (editorView) => {
@@ -184,8 +177,9 @@ export class ImageToolbarProsemirrorPlugin<
};
},
apply: (transaction) => {
- const block: SpecificBlock | undefined =
- transaction.getMeta(imageToolbarPluginKey)?.block;
+ const block:
+ | BlockFromConfig
+ | undefined = transaction.getMeta(imageToolbarPluginKey)?.block;
return {
block,
@@ -195,7 +189,7 @@ export class ImageToolbarProsemirrorPlugin<
});
}
- public onUpdate(callback: (state: ImageToolbarState) => void) {
+ public onUpdate(callback: (state: ImageToolbarState) => void) {
return this.on("update", callback);
}
}
diff --git a/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts b/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts
index 4bfa6ec41f..b25e6d4c5a 100644
--- a/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts
+++ b/packages/core/src/extensions/Placeholder/PlaceholderExtension.ts
@@ -1,8 +1,6 @@
-import { Editor, Extension } from "@tiptap/core";
-import { Node as ProsemirrorNode } from "prosemirror-model";
+import { Extension } from "@tiptap/core";
import { Plugin, PluginKey } from "prosemirror-state";
import { Decoration, DecorationSet } from "prosemirror-view";
-import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin";
const PLUGIN_KEY = new PluginKey(`blocknote-placeholder`);
@@ -14,21 +12,7 @@ const PLUGIN_KEY = new PluginKey(`blocknote-placeholder`);
*
*/
export interface PlaceholderOptions {
- emptyEditorClass: string;
- emptyNodeClass: string;
- isFilterClass: string;
- hasAnchorClass: string;
- placeholder:
- | ((PlaceholderProps: {
- editor: Editor;
- node: ProsemirrorNode;
- pos: number;
- hasAnchor: boolean;
- }) => string)
- | string;
- showOnlyWhenEditable: boolean;
- showOnlyCurrent: boolean;
- includeChildren: boolean;
+ placeholders: Record;
}
export const Placeholder = Extension.create({
@@ -36,93 +20,102 @@ export const Placeholder = Extension.create({
addOptions() {
return {
- emptyEditorClass: "bn-is-editor-empty",
- emptyNodeClass: "bn-is-empty",
- isFilterClass: "bn-is-filter",
- hasAnchorClass: "bn-has-anchor",
- placeholder: "Write something …",
- showOnlyWhenEditable: true,
- showOnlyCurrent: true,
- includeChildren: false,
+ placeholders: {
+ default: "Enter text or type '/' for commands",
+ heading: "Heading",
+ bulletListItem: "List",
+ numberedListItem: "List",
+ },
};
},
addProseMirrorPlugins() {
+ const placeholders = this.options.placeholders;
return [
new Plugin({
key: PLUGIN_KEY,
+ view: () => {
+ const styleEl = document.createElement("style");
+ document.head.appendChild(styleEl);
+ const styleSheet = styleEl.sheet!;
+
+ const getBaseSelector = (additionalSelectors = "") =>
+ `.bn-block-content${additionalSelectors} .bn-inline-content:has(> .ProseMirror-trailingBreak):before`;
+
+ const getSelector = (
+ blockType: string | "default",
+ mustBeFocused = true
+ ) => {
+ const mustBeFocusedSelector = mustBeFocused
+ ? `[data-is-empty-and-focused]`
+ : ``;
+
+ if (blockType === "default") {
+ return getBaseSelector(mustBeFocusedSelector);
+ }
+
+ const blockTypeSelector = `[data-content-type="${blockType}"]`;
+ return getBaseSelector(mustBeFocusedSelector + blockTypeSelector);
+ };
+
+ for (const [blockType, placeholder] of Object.entries(placeholders)) {
+ const mustBeFocused = blockType === "default";
+
+ styleSheet.insertRule(
+ `${getSelector(
+ blockType,
+ mustBeFocused
+ )}{ content: ${JSON.stringify(placeholder)}; }`
+ );
+
+ // For some reason, the placeholders which show when the block is focused
+ // take priority over ones which show depending on block type, so we need
+ // to make sure the block specific ones are also used when the block is
+ // focused.
+ if (!mustBeFocused) {
+ styleSheet.insertRule(
+ `${getSelector(blockType, true)}{ content: ${JSON.stringify(
+ placeholder
+ )}; }`
+ );
+ }
+ }
+
+ return {
+ destroy: () => {
+ document.head.removeChild(styleEl);
+ },
+ };
+ },
props: {
+ // TODO: maybe also add placeholder for empty document ("e.g.: start writing..")
decorations: (state) => {
const { doc, selection } = state;
- // Get state of slash menu
- const menuState = slashMenuPluginKey.getState(state);
- const active =
- this.editor.isEditable || !this.options.showOnlyWhenEditable;
- const { anchor } = selection;
- const decorations: Decoration[] = [];
+
+ const active = this.editor.isEditable;
if (!active) {
return;
}
- doc.descendants((node, pos) => {
- const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;
- const isEmpty = !node.isLeaf && !node.childCount;
-
- if ((hasAnchor || !this.options.showOnlyCurrent) && isEmpty) {
- const classes = [this.options.emptyNodeClass];
-
- // TODO: Doesn't work?
- if (this.editor.isEmpty) {
- classes.push(this.options.emptyEditorClass);
- }
-
- if (hasAnchor) {
- classes.push(this.options.hasAnchorClass);
- }
-
- // If slash menu is of drag type and active, show the filter placeholder
- if (menuState?.triggerCharacter === "" && menuState?.active) {
- classes.push(this.options.isFilterClass);
- }
- // using widget, didn't work (caret position bug)
- // const decoration = Decoration.widget(
- // pos + 1,
- // () => {
- // const el = document.createElement("span");
- // el.innerText = "hello";
- // return el;
- // },
- // { side: 0 }
-
- // Code that sets variables / classes
- // const ph =
- // typeof this.options.placeholder === "function"
- // ? this.options.placeholder({
- // editor: this.editor,
- // node,
- // pos,
- // hasAnchor,
- // })
- // : this.options.placeholder;
- // const decoration = Decoration.node(pos, pos + node.nodeSize, {
- // class: classes.join(" "),
- // style: `--placeholder:'${ph.replaceAll("'", "\\'")}';`,
- // "data-placeholder": ph,
- // });
-
- // Latest version, only set isEmpty and hasAnchor, rest is done via CSS
-
- const decoration = Decoration.node(pos, pos + node.nodeSize, {
- class: classes.join(" "),
- });
- decorations.push(decoration);
- }
-
- return this.options.includeChildren;
+ if (!selection.empty) {
+ return;
+ }
+
+ const $pos = selection.$anchor;
+ const node = $pos.parent;
+
+ if (node.content.size > 0) {
+ return null;
+ }
+
+ const before = $pos.before();
+
+ const dec = Decoration.node(before, before + node.nodeSize, {
+ "data-is-empty-and-focused": "true",
});
- return DecorationSet.create(doc, decorations);
+ return DecorationSet.create(doc, [dec]);
},
},
}),
diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts
index 2eb687e7cb..2b55e8c273 100644
--- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts
+++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts
@@ -2,20 +2,17 @@ import { PluginView } from "@tiptap/pm/state";
import { Node } from "prosemirror-model";
import { NodeSelection, Plugin, PluginKey, Selection } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
+
import { createExternalHTMLExporter } from "../../api/exporters/html/externalHTMLExporter";
import { createInternalHTMLSerializer } from "../../api/exporters/html/internalHTMLSerializer";
import { cleanHTMLToMarkdown } from "../../api/exporters/markdown/markdownExporter";
import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos";
+import { Block } from "../../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes";
-import {
- Block,
- BlockSchema,
- InlineContentSchema,
- StyleSchema,
-} from "../../schema";
+import { UiElementPosition } from "../../extensions-shared/UiElementPosition";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
import { EventEmitter } from "../../util/EventEmitter";
-import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin";
+import { suggestionMenuPluginKey } from "../SuggestionMenu/SuggestionPlugin";
import { MultipleNodeSelection } from "./MultipleNodeSelection";
let dragImageElement: Element | undefined;
@@ -24,7 +21,7 @@ export type SideMenuState<
BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
-> = BaseUiElementState & {
+> = UiElementPosition & {
// The block that the side menu is attached to.
block: Block;
};
@@ -255,7 +252,8 @@ export class SideMenuView<
S extends StyleSchema
> implements PluginView
{
- private sideMenuState?: SideMenuState;
+ private state?: SideMenuState;
+ private readonly emitUpdate: (state: SideMenuState) => void;
// When true, the drag handle with be anchored at the same level as root elements
// When false, the drag handle with be just to the left of the element
@@ -273,10 +271,16 @@ export class SideMenuView<
constructor(
private readonly editor: BlockNoteEditor,
private readonly pmView: EditorView,
- private readonly updateSideMenu: (
- sideMenuState: SideMenuState
- ) => void
+ emitUpdate: (state: SideMenuState) => void
) {
+ this.emitUpdate = () => {
+ if (!this.state) {
+ throw new Error("Attempting to update uninitialized side menu");
+ }
+
+ emitUpdate(this.state);
+ };
+
this.horizontalPosAnchoredAtRoot = true;
this.horizontalPosAnchor = (
this.pmView.dom.firstChild! as HTMLElement
@@ -369,17 +373,17 @@ export class SideMenuView<
};
onKeyDown = (_event: KeyboardEvent) => {
- if (this.sideMenuState?.show) {
- this.sideMenuState.show = false;
- this.updateSideMenu(this.sideMenuState);
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate(this.state);
}
this.menuFrozen = false;
};
onMouseDown = (_event: MouseEvent) => {
- if (this.sideMenuState && !this.sideMenuState.show) {
- this.sideMenuState.show = true;
- this.updateSideMenu(this.sideMenuState);
+ if (this.state && !this.state.show) {
+ this.state.show = true;
+ this.emitUpdate(this.state);
}
this.menuFrozen = false;
};
@@ -421,9 +425,9 @@ export class SideMenuView<
editorWrapper.contains(event.target as HTMLElement)
)
) {
- if (this.sideMenuState?.show) {
- this.sideMenuState.show = false;
- this.updateSideMenu(this.sideMenuState);
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate(this.state);
}
return;
@@ -440,9 +444,9 @@ export class SideMenuView<
// Closes the menu if the mouse cursor is beyond the editor vertically.
if (!block || !this.editor.isEditable) {
- if (this.sideMenuState?.show) {
- this.sideMenuState.show = false;
- this.updateSideMenu(this.sideMenuState);
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate(this.state);
}
return;
@@ -450,7 +454,7 @@ export class SideMenuView<
// Doesn't update if the menu is already open and the mouse cursor is still hovering the same block.
if (
- this.sideMenuState?.show &&
+ this.state?.show &&
this.hoveredBlock?.hasAttribute("data-id") &&
this.hoveredBlock?.getAttribute("data-id") === block.id
) {
@@ -470,7 +474,7 @@ export class SideMenuView<
if (this.editor.isEditable) {
const blockContentBoundingBox = blockContent.getBoundingClientRect();
- this.sideMenuState = {
+ this.state = {
show: true,
referencePos: new DOMRect(
this.horizontalPosAnchoredAtRoot
@@ -485,16 +489,16 @@ export class SideMenuView<
)!,
};
- this.updateSideMenu(this.sideMenuState);
+ this.emitUpdate(this.state);
}
};
onScroll = () => {
- if (this.sideMenuState?.show) {
+ if (this.state?.show) {
const blockContent = this.hoveredBlock!.firstChild as HTMLElement;
const blockContentBoundingBox = blockContent.getBoundingClientRect();
- this.sideMenuState.referencePos = new DOMRect(
+ this.state.referencePos = new DOMRect(
this.horizontalPosAnchoredAtRoot
? this.horizontalPosAnchor
: blockContentBoundingBox.x,
@@ -502,14 +506,14 @@ export class SideMenuView<
blockContentBoundingBox.width,
blockContentBoundingBox.height
);
- this.updateSideMenu(this.sideMenuState);
+ this.emitUpdate(this.state);
}
};
destroy() {
- if (this.sideMenuState?.show) {
- this.sideMenuState.show = false;
- this.updateSideMenu(this.sideMenuState);
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate(this.state);
}
document.body.removeEventListener("mousemove", this.onMouseMove);
document.body.removeEventListener("dragover", this.onDragOver);
@@ -521,9 +525,9 @@ export class SideMenuView<
}
addBlock() {
- if (this.sideMenuState?.show) {
- this.sideMenuState.show = false;
- this.updateSideMenu(this.sideMenuState);
+ if (this.state?.show) {
+ this.state.show = false;
+ this.emitUpdate(this.state);
}
this.menuFrozen = true;
@@ -560,7 +564,7 @@ export class SideMenuView<
this.editor._tiptapEditor
.chain()
.BNCreateBlock(newBlockInsertionPos)
- .BNUpdateBlock(newBlockContentPos, { type: "paragraph", props: {} })
+ // .BNUpdateBlock(newBlockContentPos, { type: "paragraph", props: {} })
.setTextSelection(newBlockContentPos)
.run();
} else {
@@ -570,10 +574,9 @@ export class SideMenuView<
// Focuses and activates the suggestion menu.
this.pmView.focus();
this.pmView.dispatch(
- this.pmView.state.tr.scrollIntoView().setMeta(slashMenuPluginKey, {
- // TODO import suggestion plugin key
- activate: true,
- type: "drag",
+ this.pmView.state.tr.scrollIntoView().setMeta(suggestionMenuPluginKey, {
+ triggerCharacter: "/",
+ fromUserInput: false,
})
);
}
@@ -586,7 +589,7 @@ export class SideMenuProsemirrorPlugin<
I extends InlineContentSchema,
S extends StyleSchema
> extends EventEmitter {
- private sideMenuView: SideMenuView | undefined;
+ public view: SideMenuView | undefined;
public readonly plugin: Plugin;
constructor(private readonly editor: BlockNoteEditor) {
@@ -594,14 +597,10 @@ export class SideMenuProsemirrorPlugin<
this.plugin = new Plugin({
key: sideMenuPluginKey,
view: (editorView) => {
- this.sideMenuView = new SideMenuView(
- editor,
- editorView,
- (sideMenuState) => {
- this.emit("update", sideMenuState);
- }
- );
- return this.sideMenuView;
+ this.view = new SideMenuView(editor, editorView, (state) => {
+ this.emit("update", state);
+ });
+ return this.view;
},
});
}
@@ -614,7 +613,7 @@ export class SideMenuProsemirrorPlugin<
* If the block is empty, opens the slash menu. If the block has content,
* creates a new block below and opens the slash menu in it.
*/
- addBlock = () => this.sideMenuView!.addBlock();
+ addBlock = () => this.view!.addBlock();
/**
* Handles drag & drop events for blocks.
@@ -623,7 +622,7 @@ export class SideMenuProsemirrorPlugin<
dataTransfer: DataTransfer | null;
clientY: number;
}) => {
- this.sideMenuView!.isDragging = true;
+ this.view!.isDragging = true;
dragStart(event, this.editor);
};
@@ -636,11 +635,11 @@ export class SideMenuProsemirrorPlugin<
* attached to the same block regardless of which block is hovered by the
* mouse cursor.
*/
- freezeMenu = () => (this.sideMenuView!.menuFrozen = true);
+ freezeMenu = () => (this.view!.menuFrozen = true);
/**
* Unfreezes the side menu. When frozen, the side menu will stay
* attached to the same block regardless of which block is hovered by the
* mouse cursor.
*/
- unfreezeMenu = () => (this.sideMenuView!.menuFrozen = false);
+ unfreezeMenu = () => (this.view!.menuFrozen = false);
}
diff --git a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts
deleted file mode 100644
index 42d42bebbd..0000000000
--- a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import { SuggestionItem } from "../../extensions-shared/suggestion/SuggestionItem";
-import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
-
-export type BaseSlashMenuItem<
- BSchema extends BlockSchema,
- I extends InlineContentSchema,
- S extends StyleSchema
-> = SuggestionItem & {
- execute: (editor: BlockNoteEditor) => void;
- aliases?: string[];
-};
diff --git a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts
deleted file mode 100644
index c58a32cbce..0000000000
--- a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { Plugin, PluginKey } from "prosemirror-state";
-
-import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import {
- SuggestionsMenuState,
- setupSuggestionsMenu,
-} from "../../extensions-shared/suggestion/SuggestionPlugin";
-import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
-import { EventEmitter } from "../../util/EventEmitter";
-import { BaseSlashMenuItem } from "./BaseSlashMenuItem";
-
-export const slashMenuPluginKey = new PluginKey("SlashMenuPlugin");
-
-export class SlashMenuProsemirrorPlugin<
- BSchema extends BlockSchema,
- I extends InlineContentSchema,
- S extends StyleSchema,
- SlashMenuItem extends BaseSlashMenuItem
-> extends EventEmitter {
- public readonly plugin: Plugin;
- public readonly itemCallback: (item: SlashMenuItem) => void;
-
- constructor(editor: BlockNoteEditor, items: SlashMenuItem[]) {
- super();
- const suggestions = setupSuggestionsMenu(
- editor,
- (state) => {
- this.emit("update", state);
- },
- slashMenuPluginKey,
- "/",
- (query) =>
- items.filter(
- ({ name, aliases }: SlashMenuItem) =>
- name.toLowerCase().startsWith(query.toLowerCase()) ||
- (aliases &&
- aliases.filter((alias) =>
- alias.toLowerCase().startsWith(query.toLowerCase())
- ).length !== 0)
- ),
- ({ item, editor }) => item.execute(editor)
- );
-
- this.plugin = suggestions.plugin;
- this.itemCallback = suggestions.itemCallback;
- }
-
- public onUpdate(
- callback: (state: SuggestionsMenuState) => void
- ) {
- return this.on("update", callback);
- }
-}
diff --git a/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts b/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts
new file mode 100644
index 0000000000..4505a3aaa9
--- /dev/null
+++ b/packages/core/src/extensions/SuggestionMenu/DefaultSuggestionItem.ts
@@ -0,0 +1,8 @@
+export type DefaultSuggestionItem = {
+ title: string;
+ onItemClick: () => void;
+ subtext?: string;
+ badge?: string;
+ aliases?: string[];
+ group?: string;
+};
diff --git a/packages/core/src/extensions/SuggestionMenu/SuggestionPlugin.ts b/packages/core/src/extensions/SuggestionMenu/SuggestionPlugin.ts
new file mode 100644
index 0000000000..74f4e11572
--- /dev/null
+++ b/packages/core/src/extensions/SuggestionMenu/SuggestionPlugin.ts
@@ -0,0 +1,353 @@
+import { findParentNode } from "@tiptap/core";
+import { EditorState, Plugin, PluginKey } from "prosemirror-state";
+import { Decoration, DecorationSet, EditorView } from "prosemirror-view";
+
+import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
+import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
+import { UiElementPosition } from "../../extensions-shared/UiElementPosition";
+import { EventEmitter } from "../../util/EventEmitter";
+
+const findBlock = findParentNode((node) => node.type.name === "blockContainer");
+
+export type SuggestionMenuState = UiElementPosition & {
+ query: string;
+};
+
+class SuggestionMenuView<
+ BSchema extends BlockSchema,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+> {
+ private state?: SuggestionMenuState;
+ public emitUpdate: (triggerCharacter: string) => void;
+
+ pluginState: SuggestionPluginState;
+
+ constructor(
+ private readonly editor: BlockNoteEditor,
+ emitUpdate: (menuName: string, state: SuggestionMenuState) => void
+ ) {
+ this.pluginState = undefined;
+
+ this.emitUpdate = (menuName: string) => {
+ if (!this.state) {
+ throw new Error("Attempting to update uninitialized suggestions menu");
+ }
+
+ emitUpdate(menuName, this.state);
+ };
+
+ document.addEventListener("scroll", this.handleScroll);
+ }
+
+ handleScroll = () => {
+ if (this.state?.show) {
+ const decorationNode = document.querySelector(
+ `[data-decoration-id="${this.pluginState!.decorationId}"]`
+ );
+ this.state.referencePos = decorationNode!.getBoundingClientRect();
+ this.emitUpdate(this.pluginState!.triggerCharacter!);
+ }
+ };
+
+ update(view: EditorView, prevState: EditorState) {
+ const prev: SuggestionPluginState =
+ suggestionMenuPluginKey.getState(prevState);
+ const next: SuggestionPluginState = suggestionMenuPluginKey.getState(
+ view.state
+ );
+
+ // See how the state changed
+ const started = prev === undefined && next !== undefined;
+ const stopped = prev !== undefined && next === undefined;
+ const changed = prev !== undefined && next !== undefined;
+
+ // Cancel when suggestion isn't active
+ if (!started && !changed && !stopped) {
+ return;
+ }
+
+ this.pluginState = stopped ? prev : next;
+
+ if (stopped || !this.editor.isEditable) {
+ this.state!.show = false;
+ this.emitUpdate(this.pluginState!.triggerCharacter);
+
+ return;
+ }
+
+ const decorationNode = document.querySelector(
+ `[data-decoration-id="${this.pluginState!.decorationId}"]`
+ );
+
+ if (this.editor.isEditable) {
+ this.state = {
+ show: true,
+ referencePos: decorationNode!.getBoundingClientRect(),
+ query: this.pluginState!.query,
+ };
+
+ this.emitUpdate(this.pluginState!.triggerCharacter!);
+ }
+ }
+
+ destroy() {
+ document.removeEventListener("scroll", this.handleScroll);
+ }
+
+ closeMenu = () => {
+ this.editor._tiptapEditor.view.dispatch(
+ this.editor._tiptapEditor.view.state.tr.setMeta(
+ suggestionMenuPluginKey,
+ null
+ )
+ );
+ };
+
+ clearQuery = () => {
+ if (this.pluginState === undefined) {
+ return;
+ }
+
+ this.editor._tiptapEditor
+ .chain()
+ .focus()
+ .deleteRange({
+ from:
+ this.pluginState.queryStartPos! -
+ (this.pluginState.fromUserInput
+ ? this.pluginState.triggerCharacter!.length
+ : 0),
+ to: this.editor._tiptapEditor.state.selection.from,
+ })
+ .run();
+ };
+}
+
+type SuggestionPluginState =
+ | {
+ triggerCharacter: string;
+ fromUserInput: boolean;
+ queryStartPos: number;
+ query: string;
+ decorationId: string;
+ }
+ | undefined;
+
+export const suggestionMenuPluginKey = new PluginKey("SuggestionMenuPlugin");
+
+/**
+ * A ProseMirror plugin for suggestions, designed to make '/'-commands possible as well as mentions.
+ *
+ * This is basically a simplified version of TipTap's [Suggestions](https://github.com/ueberdosis/tiptap/tree/db92a9b313c5993b723c85cd30256f1d4a0b65e1/packages/suggestion) plugin.
+ *
+ * This version is adapted from the aforementioned version in the following ways:
+ * - This version supports generic items instead of only strings (to allow for more advanced filtering for example)
+ * - This version hides some unnecessary complexity from the user of the plugin.
+ * - This version handles key events differently
+ */
+export class SuggestionMenuProseMirrorPlugin<
+ BSchema extends BlockSchema,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+> extends EventEmitter {
+ private view: SuggestionMenuView | undefined;
+ public readonly plugin: Plugin;
+
+ private triggerCharacters: string[] = [];
+
+ constructor(editor: BlockNoteEditor) {
+ super();
+ const triggerCharacters = this.triggerCharacters;
+ this.plugin = new Plugin({
+ key: suggestionMenuPluginKey,
+
+ view: () => {
+ this.view = new SuggestionMenuView(
+ editor,
+ (triggerCharacter, state) => {
+ this.emit(`update ${triggerCharacter}`, state);
+ }
+ );
+ return this.view;
+ },
+
+ state: {
+ // Initialize the plugin's internal state.
+ init(): SuggestionPluginState {
+ return undefined;
+ },
+
+ // Apply changes to the plugin state from an editor transaction.
+ apply(transaction, prev, _oldState, newState): SuggestionPluginState {
+ // TODO: More clearly define which transactions should be ignored.
+ if (transaction.getMeta("orderedListIndexing") !== undefined) {
+ return prev;
+ }
+
+ // Either contains the trigger character if the menu should be shown,
+ // or null if it should be hidden.
+ const suggestionPluginTransactionMeta: {
+ triggerCharacter: string;
+ fromUserInput?: boolean;
+ } | null = transaction.getMeta(suggestionMenuPluginKey);
+
+ // Only opens a menu of no menu is already open
+ if (
+ typeof suggestionPluginTransactionMeta === "object" &&
+ suggestionPluginTransactionMeta !== null &&
+ prev === undefined
+ ) {
+ return {
+ triggerCharacter:
+ suggestionPluginTransactionMeta.triggerCharacter,
+ fromUserInput:
+ suggestionPluginTransactionMeta.fromUserInput !== false,
+ queryStartPos: newState.selection.from,
+ query: "",
+ decorationId: `id_${Math.floor(Math.random() * 0xffffffff)}`,
+ };
+ }
+
+ // Checks if the menu is hidden, in which case it doesn't need to be hidden or updated.
+ if (prev === undefined) {
+ return prev;
+ }
+
+ // Checks if the menu should be hidden.
+ if (
+ // Highlighting text should hide the menu.
+ newState.selection.from !== newState.selection.to ||
+ // Transactions with plugin metadata should hide the menu.
+ suggestionPluginTransactionMeta === null ||
+ // Certain mouse events should hide the menu.
+ // TODO: Change to global mousedown listener.
+ transaction.getMeta("focus") ||
+ transaction.getMeta("blur") ||
+ transaction.getMeta("pointer") ||
+ // Moving the caret before the character which triggered the menu should hide it.
+ (prev.triggerCharacter !== undefined &&
+ newState.selection.from < prev.queryStartPos!)
+ ) {
+ return undefined;
+ }
+
+ const next = { ...prev };
+
+ // Updates the current query.
+ next.query = newState.doc.textBetween(
+ prev.queryStartPos!,
+ newState.selection.from
+ );
+
+ return next;
+ },
+ },
+
+ props: {
+ handleKeyDown(view, event) {
+ const suggestionPluginState: SuggestionPluginState = (
+ this as Plugin
+ ).getState(view.state);
+
+ if (
+ triggerCharacters.includes(event.key) &&
+ suggestionPluginState === undefined
+ ) {
+ event.preventDefault();
+
+ view.dispatch(
+ view.state.tr
+ .insertText(event.key)
+ .scrollIntoView()
+ .setMeta(suggestionMenuPluginKey, {
+ triggerCharacter: event.key,
+ })
+ );
+
+ return true;
+ }
+
+ return false;
+ },
+
+ // Setup decorator on the currently active suggestion.
+ decorations(state) {
+ const suggestionPluginState: SuggestionPluginState = (
+ this as Plugin
+ ).getState(state);
+
+ if (suggestionPluginState === undefined) {
+ return null;
+ }
+
+ // If the menu was opened programmatically by another extension, it may not use a trigger character. In this
+ // case, the decoration is set on the whole block instead, as the decoration range would otherwise be empty.
+ if (!suggestionPluginState.fromUserInput) {
+ const blockNode = findBlock(state.selection);
+ if (blockNode) {
+ return DecorationSet.create(state.doc, [
+ Decoration.node(
+ blockNode.pos,
+ blockNode.pos + blockNode.node.nodeSize,
+ {
+ nodeName: "span",
+ class: "bn-suggestion-decorator",
+ "data-decoration-id": suggestionPluginState.decorationId,
+ }
+ ),
+ ]);
+ }
+ }
+ // Creates an inline decoration around the trigger character.
+ return DecorationSet.create(state.doc, [
+ Decoration.inline(
+ suggestionPluginState.queryStartPos! -
+ suggestionPluginState.triggerCharacter!.length,
+ suggestionPluginState.queryStartPos!,
+ {
+ nodeName: "span",
+ class: "bn-suggestion-decorator",
+ "data-decoration-id": suggestionPluginState.decorationId,
+ }
+ ),
+ ]);
+ },
+ },
+ });
+ }
+
+ public onUpdate(
+ triggerCharacter: string,
+ callback: (state: SuggestionMenuState) => void
+ ) {
+ if (!this.triggerCharacters.includes(triggerCharacter)) {
+ this.addTriggerCharacter(triggerCharacter);
+ }
+ // TODO: be able to remove the triggerCharacter
+ return this.on(`update ${triggerCharacter}`, callback);
+ }
+
+ addTriggerCharacter = (triggerCharacter: string) => {
+ this.triggerCharacters.push(triggerCharacter);
+ };
+
+ // TODO: Should this be called automatically when listeners are removed?
+ removeTriggerCharacter = (triggerCharacter: string) => {
+ this.triggerCharacters = this.triggerCharacters.filter(
+ (c) => c !== triggerCharacter
+ );
+ };
+
+ closeMenu = () => this.view!.closeMenu();
+
+ clearQuery = () => this.view!.clearQuery();
+}
+
+export function createSuggestionMenu<
+ BSchema extends BlockSchema,
+ I extends InlineContentSchema,
+ S extends StyleSchema
+>(editor: BlockNoteEditor, triggerCharacter: string) {
+ editor.suggestionMenus.addTriggerCharacter(triggerCharacter);
+}
diff --git a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts b/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts
similarity index 52%
rename from packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts
rename to packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts
index b6b3aa0115..d110436173 100644
--- a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts
+++ b/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts
@@ -1,15 +1,14 @@
-import { defaultBlockSchema } from "../../blocks/defaultBlocks";
-import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
+import { Block, PartialBlock } from "../../blocks/defaultBlocks";
+import { checkDefaultBlockTypeInSchema } from "../../blocks/defaultBlockTypeGuards";
+import { BlockNoteEditor } from "../../editor/BlockNoteEditor";
import {
- Block,
BlockSchema,
InlineContentSchema,
- PartialBlock,
- StyleSchema,
isStyledTextInlineContent,
+ StyleSchema,
} from "../../schema";
-import { imageToolbarPluginKey } from "../ImageToolbar/ImageToolbarPlugin";
-import { BaseSlashMenuItem } from "./BaseSlashMenuItem";
+import { formatKeyboardShortcut } from "../../util/browser";
+import { DefaultSuggestionItem } from "./DefaultSuggestionItem";
// Sets the editor's text cursor position to the next content editable block,
// so either a block with inline content or a table. The last block is always a
@@ -21,11 +20,11 @@ function setSelectionToNextContentEditableBlock<
S extends StyleSchema
>(editor: BlockNoteEditor) {
let block = editor.getTextCursorPosition().block;
- let contentType = editor.blockSchema[block.type].content;
+ let contentType = editor.schema.blockSchema[block.type].content;
while (contentType === "none") {
block = editor.getTextCursorPosition().nextBlock!;
- contentType = editor.blockSchema[block.type].content as
+ contentType = editor.schema.blockSchema[block.type].content as
| "inline"
| "table"
| "none";
@@ -37,7 +36,7 @@ function setSelectionToNextContentEditableBlock<
// updates the current block instead of inserting a new one below. If the new
// block doesn't contain editable content, the cursor is moved to the next block
// that does.
-function insertOrUpdateBlock<
+export function insertOrUpdateBlock<
BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
@@ -74,94 +73,106 @@ function insertOrUpdateBlock<
return insertedBlock;
}
-export const getDefaultSlashMenuItems = <
+export function getDefaultSlashMenuItems<
BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
->(
- schema: BSchema = defaultBlockSchema as unknown as BSchema
-) => {
- const slashMenuItems: BaseSlashMenuItem[] = [];
-
- if ("heading" in schema && "level" in schema.heading.propSchema) {
- // Command for creating a level 1 heading
- if (schema.heading.propSchema.level.values?.includes(1)) {
- slashMenuItems.push({
- name: "Heading",
- aliases: ["h", "heading1", "h1"],
- execute: (editor) =>
+>(editor: BlockNoteEditor) {
+ const items: DefaultSuggestionItem[] = [];
+
+ if (checkDefaultBlockTypeInSchema("heading", editor)) {
+ items.push(
+ {
+ title: "Heading 1",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "heading",
props: { level: 1 },
- } as PartialBlock),
- });
- }
-
- // Command for creating a level 2 heading
- if (schema.heading.propSchema.level.values?.includes(2)) {
- slashMenuItems.push({
- name: "Heading 2",
- aliases: ["h2", "heading2", "subheading"],
- execute: (editor) =>
+ });
+ },
+ subtext: "Used for a top-level heading",
+ badge: formatKeyboardShortcut("Mod-Alt-1"),
+ aliases: ["h", "heading1", "h1"],
+ group: "Headings",
+ },
+ {
+ title: "Heading 2",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "heading",
props: { level: 2 },
- } as PartialBlock),
- });
- }
-
- // Command for creating a level 3 heading
- if (schema.heading.propSchema.level.values?.includes(3)) {
- slashMenuItems.push({
- name: "Heading 3",
- aliases: ["h3", "heading3", "subheading"],
- execute: (editor) =>
+ });
+ },
+ subtext: "Used for key sections",
+ badge: formatKeyboardShortcut("Mod-Alt-2"),
+ aliases: ["h2", "heading2", "subheading"],
+ group: "Headings",
+ },
+ {
+ title: "Heading 3",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "heading",
props: { level: 3 },
- } as PartialBlock),
- });
- }
+ });
+ },
+ subtext: "Used for subsections and group headings",
+ badge: formatKeyboardShortcut("Mod-Alt-3"),
+ aliases: ["h3", "heading3", "subheading"],
+ group: "Headings",
+ }
+ );
}
- if ("bulletListItem" in schema) {
- slashMenuItems.push({
- name: "Bullet List",
- aliases: ["ul", "list", "bulletlist", "bullet list"],
- execute: (editor) =>
+ if (checkDefaultBlockTypeInSchema("numberedListItem", editor)) {
+ items.push({
+ title: "Numbered List",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
- type: "bulletListItem",
- }),
+ type: "numberedListItem",
+ });
+ },
+ subtext: "Used to display a numbered list",
+ badge: formatKeyboardShortcut("Mod-Shift-7"),
+ aliases: ["ol", "li", "list", "numberedlist", "numbered list"],
+ group: "Basic blocks",
});
}
- if ("numberedListItem" in schema) {
- slashMenuItems.push({
- name: "Numbered List",
- aliases: ["li", "list", "numberedlist", "numbered list"],
- execute: (editor) =>
+ if (checkDefaultBlockTypeInSchema("bulletListItem", editor)) {
+ items.push({
+ title: "Bullet List",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
- type: "numberedListItem",
- }),
+ type: "bulletListItem",
+ });
+ },
+ subtext: "Used to display an unordered list",
+ badge: formatKeyboardShortcut("Mod-Shift-8"),
+ aliases: ["ul", "li", "list", "bulletlist", "bullet list"],
+ group: "Basic blocks",
});
}
- if ("paragraph" in schema) {
- slashMenuItems.push({
- name: "Paragraph",
- aliases: ["p"],
- execute: (editor) =>
+ if (checkDefaultBlockTypeInSchema("paragraph", editor)) {
+ items.push({
+ title: "Paragraph",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "paragraph",
- }),
+ });
+ },
+ subtext: "Used for the body of your document",
+ badge: formatKeyboardShortcut("Mod-Alt-0"),
+ aliases: ["p", "paragraph"],
+ group: "Basic blocks",
});
}
- if ("table" in schema) {
- slashMenuItems.push({
- name: "Table",
- aliases: ["table"],
- execute: (editor) => {
+ if (checkDefaultBlockTypeInSchema("table", editor)) {
+ items.push({
+ title: "Table",
+ onItemClick: () => {
insertOrUpdateBlock(editor, {
type: "table",
content: {
@@ -175,14 +186,31 @@ export const getDefaultSlashMenuItems = <
},
],
},
- } as PartialBlock);
+ });
},
+ subtext: "Used for for tables",
+ aliases: ["table"],
+ group: "Advanced",
+ badge: undefined,
});
}
- if ("image" in schema) {
- slashMenuItems.push({
- name: "Image",
+ if (checkDefaultBlockTypeInSchema("image", editor)) {
+ items.push({
+ title: "Image",
+ onItemClick: () => {
+ const insertedBlock = insertOrUpdateBlock(editor, {
+ type: "image",
+ });
+
+ // Immediately open the image toolbar
+ editor.prosemirrorView.dispatch(
+ editor._tiptapEditor.state.tr.setMeta(editor.imageToolbar!.plugin, {
+ block: insertedBlock,
+ })
+ );
+ },
+ subtext: "Insert an image",
aliases: [
"image",
"imageUpload",
@@ -194,20 +222,22 @@ export const getDefaultSlashMenuItems = <
"drive",
"dropbox",
],
- execute: (editor) => {
- const insertedBlock = insertOrUpdateBlock(editor, {
- type: "image",
- });
-
- // Immediately open the image toolbar
- editor._tiptapEditor.view.dispatch(
- editor._tiptapEditor.state.tr.setMeta(imageToolbarPluginKey, {
- block: insertedBlock,
- })
- );
- },
+ group: "Media",
});
}
- return slashMenuItems;
-};
+ return items;
+}
+
+export function filterSuggestionItems<
+ T extends { title: string; aliases?: readonly string[] }
+>(items: T[], query: string) {
+ return items.filter(
+ ({ title, aliases }) =>
+ title.toLowerCase().startsWith(query.toLowerCase()) ||
+ (aliases &&
+ aliases.filter((alias) =>
+ alias.toLowerCase().startsWith(query.toLowerCase())
+ ).length !== 0)
+ );
+}
diff --git a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts
index 520ae5718e..8b1918d8e5 100644
--- a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts
+++ b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts
@@ -1,42 +1,20 @@
import { Plugin, PluginKey, PluginView } from "prosemirror-state";
import { Decoration, DecorationSet, EditorView } from "prosemirror-view";
-import { EventEmitter } from "../../util/EventEmitter";
import { nodeToBlock } from "../../api/nodeConversions/nodeConversions";
-import { DefaultBlockSchema } from "../../blocks/defaultBlocks";
+import { Block, DefaultBlockSchema } from "../../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
import {
- Block,
BlockFromConfigNoChildren,
BlockSchemaWithBlock,
InlineContentSchema,
- PartialBlock,
SpecificBlock,
StyleSchema,
} from "../../schema";
+import { EventEmitter } from "../../util/EventEmitter";
import { getDraggableBlockFromCoords } from "../SideMenu/SideMenuPlugin";
let dragImageElement: HTMLElement | undefined;
-function setHiddenDragImage() {
- if (dragImageElement) {
- return;
- }
-
- dragImageElement = document.createElement("div");
- dragImageElement.innerHTML = "_";
- dragImageElement.style.opacity = "0";
- dragImageElement.style.height = "1px";
- dragImageElement.style.width = "1px";
- document.body.appendChild(dragImageElement);
-}
-
-function unsetHiddenDragImage() {
- if (dragImageElement) {
- document.body.removeChild(dragImageElement);
- dragImageElement = undefined;
- }
-}
-
export type TableHandlesState<
I extends InlineContentSchema,
S extends StyleSchema
@@ -58,6 +36,26 @@ export type TableHandlesState<
| undefined;
};
+function setHiddenDragImage() {
+ if (dragImageElement) {
+ return;
+ }
+
+ dragImageElement = document.createElement("div");
+ dragImageElement.innerHTML = "_";
+ dragImageElement.style.opacity = "0";
+ dragImageElement.style.height = "1px";
+ dragImageElement.style.width = "1px";
+ document.body.appendChild(dragImageElement);
+}
+
+function unsetHiddenDragImage() {
+ if (dragImageElement) {
+ document.body.removeChild(dragImageElement);
+ dragImageElement = undefined;
+ }
+}
+
function getChildIndex(node: Element) {
return Array.prototype.indexOf.call(node.parentElement!.childNodes, node);
}
@@ -91,7 +89,7 @@ export class TableHandlesView<
> implements PluginView
{
public state?: TableHandlesState;
- public updateState: () => void;
+ public emitUpdate: () => void;
public tableId: string | undefined;
public tablePos: number | undefined;
@@ -101,16 +99,20 @@ export class TableHandlesView<
public prevWasEditable: boolean | null = null;
constructor(
- private readonly editor: BlockNoteEditor,
+ private readonly editor: BlockNoteEditor<
+ BlockSchemaWithBlock<"table", DefaultBlockSchema["table"]>,
+ I,
+ S
+ >,
private readonly pmView: EditorView,
- updateState: (state: TableHandlesState) => void
+ emitUpdate: (state: TableHandlesState) => void
) {
- this.updateState = () => {
+ this.emitUpdate = () => {
if (!this.state) {
throw new Error("Attempting to update uninitialized image toolbar");
}
- updateState(this.state);
+ emitUpdate(this.state);
};
pmView.dom.addEventListener("mousemove", this.mouseMoveHandler);
@@ -131,7 +133,7 @@ export class TableHandlesView<
if (!target || !this.editor.isEditable) {
if (this.state?.show) {
this.state.show = false;
- this.updateState();
+ this.emitUpdate();
}
return;
}
@@ -175,9 +177,9 @@ export class TableHandlesView<
block = nodeToBlock(
node,
- this.editor.blockSchema,
- this.editor.inlineContentSchema,
- this.editor.styleSchema,
+ this.editor.schema.blockSchema,
+ this.editor.schema.inlineContentSchema,
+ this.editor.schema.styleSchema,
this.editor.blockCache
);
this.tablePos = pos + 1;
@@ -196,7 +198,7 @@ export class TableHandlesView<
draggingState: undefined,
};
- this.updateState();
+ this.emitUpdate();
return false;
};
@@ -286,7 +288,7 @@ export class TableHandlesView<
// Emits a state update if any of the fields have changed.
if (emitStateUpdate) {
- this.updateState();
+ this.emitUpdate();
}
// Dispatches a dummy transaction to force a decorations update if
@@ -327,7 +329,7 @@ export class TableHandlesView<
type: "tableContent",
rows: rows,
},
- } as PartialBlock);
+ });
};
scrollHandler = () => {
@@ -343,7 +345,7 @@ export class TableHandlesView<
this.state.referencePosTable = tableElement.getBoundingClientRect();
this.state.referencePosCell = cellElement.getBoundingClientRect();
- this.updateState();
+ this.emitUpdate();
}
};
@@ -360,14 +362,25 @@ export class TableHandlesView<
export const tableHandlesPluginKey = new PluginKey("TableHandlesPlugin");
export class TableHandlesProsemirrorPlugin<
- BSchema extends BlockSchemaWithBlock<"table", DefaultBlockSchema["table"]>,
I extends InlineContentSchema,
S extends StyleSchema
> extends EventEmitter {
- private view: TableHandlesView | undefined;
+ private view:
+ | TableHandlesView<
+ BlockSchemaWithBlock<"table", DefaultBlockSchema["table"]>,
+ I,
+ S
+ >
+ | undefined;
public readonly plugin: Plugin;
- constructor(private readonly editor: BlockNoteEditor) {
+ constructor(
+ private readonly editor: BlockNoteEditor<
+ BlockSchemaWithBlock<"table", DefaultBlockSchema["table"]>,
+ I,
+ S
+ >
+ ) {
super();
this.plugin = new Plugin({
key: tableHandlesPluginKey,
@@ -531,7 +544,7 @@ export class TableHandlesProsemirrorPlugin<
originalIndex: this.view!.state.colIndex,
mousePos: event.clientX,
};
- this.view!.updateState();
+ this.view!.emitUpdate();
this.editor._tiptapEditor.view.dispatch(
this.editor._tiptapEditor.state.tr.setMeta(tableHandlesPluginKey, {
@@ -567,7 +580,7 @@ export class TableHandlesProsemirrorPlugin<
originalIndex: this.view!.state.rowIndex,
mousePos: event.clientY,
};
- this.view!.updateState();
+ this.view!.emitUpdate();
this.editor._tiptapEditor.view.dispatch(
this.editor._tiptapEditor.state.tr.setMeta(tableHandlesPluginKey, {
@@ -596,7 +609,7 @@ export class TableHandlesProsemirrorPlugin<
}
this.view!.state.draggingState = undefined;
- this.view!.updateState();
+ this.view!.emitUpdate();
this.editor._tiptapEditor.view.dispatch(
this.editor._tiptapEditor.state.tr.setMeta(tableHandlesPluginKey, null)
@@ -609,11 +622,15 @@ export class TableHandlesProsemirrorPlugin<
* Freezes the drag handles. When frozen, they will stay attached to the same
* cell regardless of which cell is hovered by the mouse cursor.
*/
- freezeHandles = () => (this.view!.menuFrozen = true);
+ freezeHandles = () => {
+ this.view!.menuFrozen = true;
+ };
/**
* Unfreezes the drag handles. When frozen, they will stay attached to the
* same cell regardless of which cell is hovered by the mouse cursor.
*/
- unfreezeHandles = () => (this.view!.menuFrozen = false);
+ unfreezeHandles = () => {
+ this.view!.menuFrozen = false;
+ };
}
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-100.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-100.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-100.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-100.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-100.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-100.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-100.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-100.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-200.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-200.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-200.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-200.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-200.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-200.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-200.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-200.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-300.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-300.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-300.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-300.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-300.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-300.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-300.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-300.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-500.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-500.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-500.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-500.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-500.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-500.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-500.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-500.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-600.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-600.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-600.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-600.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-600.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-600.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-600.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-600.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-700.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-700.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-700.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-700.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-700.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-700.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-700.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-700.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-800.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-800.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-800.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-800.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-800.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-800.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-800.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-800.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-900.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-900.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-900.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-900.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-900.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-900.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-900.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-900.woff2
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-regular.woff b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-regular.woff
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-regular.woff
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-regular.woff
diff --git a/packages/core/src/assets/inter-v12-latin/inter-v12-latin-regular.woff2 b/packages/core/src/fonts/inter-v12-latin/inter-v12-latin-regular.woff2
similarity index 100%
rename from packages/core/src/assets/inter-v12-latin/inter-v12-latin-regular.woff2
rename to packages/core/src/fonts/inter-v12-latin/inter-v12-latin-regular.woff2
diff --git a/packages/core/src/assets/fonts-inter.css b/packages/core/src/fonts/inter.css
similarity index 100%
rename from packages/core/src/assets/fonts-inter.css
rename to packages/core/src/fonts/inter.css
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 9678ae5a55..0a809fae0d 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -2,21 +2,21 @@ export * from "./api/exporters/html/externalHTMLExporter";
export * from "./api/exporters/html/internalHTMLSerializer";
export * from "./api/testUtil";
export * from "./blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
+export * from "./blocks/defaultBlockTypeGuards";
export * from "./blocks/defaultBlocks";
export * from "./blocks/defaultProps";
export * from "./editor/BlockNoteEditor";
export * from "./editor/BlockNoteExtensions";
+export * from "./editor/BlockNoteSchema";
export * from "./editor/selectionTypes";
-export * from "./extensions-shared/BaseUiElementTypes";
-export type { SuggestionItem } from "./extensions-shared/suggestion/SuggestionItem";
-export * from "./extensions-shared/suggestion/SuggestionPlugin";
+export * from "./extensions-shared/UiElementPosition";
export * from "./extensions/FormattingToolbar/FormattingToolbarPlugin";
export * from "./extensions/HyperlinkToolbar/HyperlinkToolbarPlugin";
export * from "./extensions/ImageToolbar/ImageToolbarPlugin";
export * from "./extensions/SideMenu/SideMenuPlugin";
-export * from "./extensions/SlashMenu/BaseSlashMenuItem";
-export * from "./extensions/SlashMenu/SlashMenuPlugin";
-export { getDefaultSlashMenuItems } from "./extensions/SlashMenu/defaultSlashMenuItems";
+export * from "./extensions/SuggestionMenu/DefaultSuggestionItem";
+export * from "./extensions/SuggestionMenu/SuggestionPlugin";
+export * from "./extensions/SuggestionMenu/getDefaultSlashMenuItems";
export * from "./extensions/TableHandles/TableHandlesPlugin";
export * from "./schema";
export * from "./util/browser";
diff --git a/packages/core/src/pm-nodes/BlockContainer.ts b/packages/core/src/pm-nodes/BlockContainer.ts
index 77e3e3dab8..73015220b8 100644
--- a/packages/core/src/pm-nodes/BlockContainer.ts
+++ b/packages/core/src/pm-nodes/BlockContainer.ts
@@ -8,6 +8,7 @@ import {
inlineContentToNodes,
tableContentToNodes,
} from "../api/nodeConversions/nodeConversions";
+import { PartialBlock } from "../blocks/defaultBlocks";
import type { BlockNoteEditor } from "../editor/BlockNoteEditor";
import { NonEditableBlockPlugin } from "../extensions/NonEditableBlocks/NonEditableBlockPlugin";
import { PreviousBlockTypePlugin } from "../extensions/PreviousBlockType/PreviousBlockTypePlugin";
@@ -15,7 +16,6 @@ import {
BlockNoteDOMAttributes,
BlockSchema,
InlineContentSchema,
- PartialBlock,
StyleSchema,
} from "../schema";
import { mergeCSSClasses } from "../util/browser";
@@ -109,7 +109,7 @@ export const BlockContainer = Node.create<{
}
const blockHTMLAttributes = {
- ...(this.options.domAttributes?.blockContainer || {}),
+ ...(this.options.domAttributes?.block || {}),
...HTMLAttributes,
};
const block = document.createElement("div");
@@ -183,7 +183,7 @@ export const BlockContainer = Node.create<{
blockToNode(
child,
state.schema,
- this.options.editor.styleSchema
+ this.options.editor.schema.styleSchema
)
);
}
@@ -223,13 +223,13 @@ export const BlockContainer = Node.create<{
content = inlineContentToNodes(
block.content,
state.schema,
- this.options.editor.styleSchema
+ this.options.editor.schema.styleSchema
);
} else if (block.content.type === "tableContent") {
content = tableContentToNodes(
block.content,
state.schema,
- this.options.editor.styleSchema
+ this.options.editor.schema.styleSchema
);
} else {
throw new UnreachableCaseError(block.content.type);
diff --git a/packages/core/src/schema/blocks/types.ts b/packages/core/src/schema/blocks/types.ts
index 65b231c3a9..66d073655d 100644
--- a/packages/core/src/schema/blocks/types.ts
+++ b/packages/core/src/schema/blocks/types.ts
@@ -1,18 +1,18 @@
/** Define the main block types **/
-import { Extension, Node } from "@tiptap/core";
+import type { Extension, Node } from "@tiptap/core";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
-import {
+import type {
InlineContent,
InlineContentSchema,
PartialInlineContent,
} from "../inlineContent/types";
-import { PropSchema, Props } from "../propTypes";
-import { StyleSchema } from "../styles/types";
+import type { PropSchema, Props } from "../propTypes";
+import type { StyleSchema } from "../styles/types";
export type BlockNoteDOMElement =
| "editor"
- | "blockContainer"
+ | "block"
| "blockGroup"
| "blockContent"
| "inlineContent";
@@ -41,7 +41,7 @@ export type TiptapBlockImplementation<
node: Node;
toInternalHTML: (
block: BlockFromConfigNoChildren & {
- children: Block[];
+ children: BlockNoDefaults[];
},
editor: BlockNoteEditor
) => {
@@ -50,7 +50,7 @@ export type TiptapBlockImplementation<
};
toExternalHTML: (
block: BlockFromConfigNoChildren & {
- children: Block[];
+ children: BlockNoDefaults[];
},
editor: BlockNoteEditor
) => {
@@ -142,7 +142,7 @@ export type BlockFromConfig<
I extends InlineContentSchema,
S extends StyleSchema
> = BlockFromConfigNoChildren & {
- children: Block[];
+ children: BlockNoDefaults[];
};
// Converts each block spec into a Block object without children. We later merge
@@ -158,12 +158,12 @@ type BlocksWithoutChildren<
// Converts each block spec into a Block object without children, merges them
// into a union type, and adds a children property
-export type Block<
+export type BlockNoDefaults<
BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
> = BlocksWithoutChildren[keyof BSchema] & {
- children: Block[];
+ children: BlockNoDefaults[];
};
export type SpecificBlock<
@@ -172,7 +172,7 @@ export type SpecificBlock<
I extends InlineContentSchema,
S extends StyleSchema
> = BlocksWithoutChildren[BType] & {
- children: Block[];
+ children: BlockNoDefaults[];
};
/** CODE FOR PARTIAL BLOCKS, analogous to above
@@ -219,7 +219,7 @@ type PartialBlocksWithoutChildren<
>;
};
-export type PartialBlock<
+export type PartialBlockNoDefaults<
BSchema extends BlockSchema,
I extends InlineContentSchema,
S extends StyleSchema
@@ -229,7 +229,7 @@ export type PartialBlock<
S
>[keyof PartialBlocksWithoutChildren] &
Partial<{
- children: PartialBlock[];
+ children: PartialBlockNoDefaults[];
}>;
export type SpecificPartialBlock<
@@ -238,7 +238,7 @@ export type SpecificPartialBlock<
BType extends keyof BSchema,
S extends StyleSchema
> = PartialBlocksWithoutChildren[BType] & {
- children?: Block[];
+ children?: BlockNoDefaults[];
};
export type PartialBlockFromConfig<
@@ -246,7 +246,7 @@ export type PartialBlockFromConfig<
I extends InlineContentSchema,
S extends StyleSchema
> = PartialBlockFromConfigNoChildren & {
- children?: Block[];
+ children?: BlockNoDefaults[];
};
export type BlockIdentifier = { id: string } | string;
diff --git a/packages/core/src/schema/inlineContent/createSpec.ts b/packages/core/src/schema/inlineContent/createSpec.ts
index 693fdc7b9e..2c49475a45 100644
--- a/packages/core/src/schema/inlineContent/createSpec.ts
+++ b/packages/core/src/schema/inlineContent/createSpec.ts
@@ -98,8 +98,8 @@ export function createInlineContentSpec<
const output = inlineContentImplementation.render(
nodeToCustomInlineContent(
node,
- editor.inlineContentSchema,
- editor.styleSchema
+ editor.schema.inlineContentSchema,
+ editor.schema.styleSchema
) as any as InlineContentFromConfig // TODO: fix cast
);
diff --git a/packages/core/src/schema/inlineContent/types.ts b/packages/core/src/schema/inlineContent/types.ts
index eb4c852ab3..5ef62f593e 100644
--- a/packages/core/src/schema/inlineContent/types.ts
+++ b/packages/core/src/schema/inlineContent/types.ts
@@ -74,7 +74,7 @@ export type PartialCustomInlineContentFromConfig<
> = {
type: I["type"];
props?: Props;
- content: I["content"] extends "styled"
+ content?: I["content"] extends "styled"
? StyledText[] | string
: I["content"] extends "plain"
? string
diff --git a/packages/core/src/util/browser.ts b/packages/core/src/util/browser.ts
index d32090c334..e5fcf8ac71 100644
--- a/packages/core/src/util/browser.ts
+++ b/packages/core/src/util/browser.ts
@@ -1,8 +1,8 @@
export const isAppleOS = () =>
- typeof navigator !== "undefined" &&
- (/Mac/.test(navigator.platform) ||
- (/AppleWebKit/.test(navigator.userAgent) &&
- /Mobile\/\w+/.test(navigator.userAgent)));
+ typeof navigator !== "undefined" &&
+ (/Mac/.test(navigator.platform) ||
+ (/AppleWebKit/.test(navigator.userAgent) &&
+ /Mobile\/\w+/.test(navigator.userAgent)));
export function formatKeyboardShortcut(shortcut: string) {
if (isAppleOS()) {
@@ -16,3 +16,5 @@ export function mergeCSSClasses(...classes: string[]) {
return classes.filter((c) => c).join(" ");
}
+export const isSafari = () =>
+ /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
diff --git a/packages/core/src/util/typescript.ts b/packages/core/src/util/typescript.ts
index 93b94f8b51..edda7588e9 100644
--- a/packages/core/src/util/typescript.ts
+++ b/packages/core/src/util/typescript.ts
@@ -1,5 +1,8 @@
export class UnreachableCaseError extends Error {
- constructor(val: never) {
- super(`Unreachable case: ${val}`);
- }
-}
\ No newline at end of file
+ constructor(val: never) {
+ super(`Unreachable case: ${val}`);
+ }
+}
+
+// TODO: change for built-in version of typescript 5.4 after upgrade
+export type NoInfer = [T][T extends any ? 0 : never];
diff --git a/packages/dev-scripts/examples/gen.ts b/packages/dev-scripts/examples/gen.ts
new file mode 100644
index 0000000000..da789ca102
--- /dev/null
+++ b/packages/dev-scripts/examples/gen.ts
@@ -0,0 +1,88 @@
+import * as glob from "glob";
+import * as fs from "node:fs";
+import * as path from "node:path";
+import prettier from "prettier";
+import React from "react";
+import ReactDOM from "react-dom/server";
+import { Project, getExampleProjects, groupProjects } from "./util";
+
+/**
+ * This script reads the examples in the /examples folder. These folders initially only need an App.tsx, .bnexample.json and README.md file.
+ *
+ * This script then generates a full project, for each example (e.g.: vite.config / tsconfig / package.json files, see the `template-react` dir).
+ * It also generates playground/src/examples.gen.tsx that has the metadata for all examples combined and is used in the playground.
+ *
+ * All of these files are checked in to source control.
+ *
+ * (The downside of this is that we have some almost duplicate, generated files in the repo,
+ * but the upside is anyone can run npm start in any of the examples (and that we can point a codesandbox / repl to the examples directory))
+ */
+const dir = path.parse(import.meta.url.replace("file://", "")).dir;
+
+async function writeTemplate(project: Project, templateFile: string) {
+ const template = await import(templateFile);
+ const ret = await template.default(project);
+
+ const targetFilePath = path.join(
+ "../../",
+ project.pathFromRoot,
+ path.basename(templateFile).replace(".template.tsx", "")
+ );
+
+ let stringOutput: string | undefined = undefined;
+ if (React.isValidElement(ret)) {
+ stringOutput = ReactDOM.renderToString(ret);
+
+ const prettierConfig = await prettier.resolveConfig(targetFilePath);
+ stringOutput = prettier.format(stringOutput, {
+ ...prettierConfig,
+ parser: "html",
+ }) as string;
+ } else if (typeof ret === "string") {
+ stringOutput = ret;
+ } else if (typeof ret === "object") {
+ stringOutput = JSON.stringify(ret, undefined, 2);
+ } else {
+ throw new Error("unsupported template");
+ }
+
+ fs.writeFileSync(targetFilePath, stringOutput);
+
+ // try {
+ // // fs.unlinkSync(targetFilePath);
+ // } catch (e) {}
+ console.log("written", targetFilePath);
+}
+
+async function generateCodeForExample(project: Project) {
+ const templates = glob.sync(
+ path.resolve(dir, "./template-react/*.template.tsx")
+ );
+
+ for (const template of templates) {
+ await writeTemplate(project, template);
+ }
+}
+
+async function generateExamplesData(projects: Project[]) {
+ // TODO: fix playground?
+ const target = path.resolve(dir, "../../../playground/src/examples.gen.tsx");
+
+ const examples = groupProjects(projects);
+
+ const code = `// generated by dev-scripts/examples/gen.ts
+ export const examples = ${JSON.stringify(examples, undefined, 2)};`;
+
+ fs.writeFileSync(target, code);
+}
+
+const projects = getExampleProjects();
+
+for (const project of projects) {
+ console.log("generating code for example", project);
+ await generateCodeForExample(project);
+}
+
+await generateExamplesData(
+ projects.filter((p) => p.config?.playground === true)
+);
diff --git a/packages/dev-scripts/examples/genDocs.ts b/packages/dev-scripts/examples/genDocs.ts
new file mode 100644
index 0000000000..3c372e483a
--- /dev/null
+++ b/packages/dev-scripts/examples/genDocs.ts
@@ -0,0 +1,212 @@
+import * as fs from "node:fs";
+import * as path from "node:path";
+import {
+ addTitleToGroups,
+ Files,
+ getExampleProjects,
+ getProjectFiles,
+ groupProjects,
+ Project,
+} from "./util";
+
+/*
+ `genDocs` generates the nextjs example blocks for the website docs.
+ Note that these files are not checked in to the repo, so this command should always be run before running / building the site
+ */
+
+const dir = path.parse(import.meta.url.replace("file://", "")).dir;
+
+const getLanguageFromFileName = (fileName: string) => fileName.split(".").pop();
+
+/******* templates + generate functions *******/
+const templateExampleBlock = (
+ project: Project,
+ files: Files
+) => `import { ExampleBlock } from "@/components/example/ExampleBlock";
+import { Tabs } from "nextra/components";
+
+
+ fileName.slice(1))
+ )}}>
+ ${Object.entries(files)
+ .map(
+ ([filename, file]) =>
+ `
+
+\`\`\`${getLanguageFromFileName(filename)}
+${file.code}
+\`\`\`
+
+ `
+ )
+ .join("")}
+
+ `;
+
+const COMPONENT_DIR = path.resolve(
+ dir,
+ "../../../docs/components/example/generated/"
+);
+
+const EXAMPLES_PAGES_DIR = path.resolve(dir, "../../../docs/pages/examples/");
+
+/**
+ * Generates the component that has all the source code of the example
+ * This block can be used both in the /docs and in the /example page
+ */
+async function generateCodeForExample(project: Project) {
+ const target = path.join(COMPONENT_DIR, "mdx", project.fullSlug + ".mdx");
+
+ const files = getProjectFiles(project);
+ const filtered = Object.fromEntries(
+ Object.entries(files).filter(([filename, file]) => !file.hidden)
+ );
+
+ const code = templateExampleBlock(project, filtered);
+
+ fs.mkdirSync(path.dirname(target), { recursive: true });
+
+ fs.writeFileSync(target, code);
+}
+
+const templatePageForExample = (
+ project: Project,
+ readme: string
+) => `import { Example } from "@/components/example";
+
+${readme}
+
+ `;
+
+/**
+ * Generate the page for the example in /examples overview
+ *
+ * Consists of the contents of the readme + the interactive example
+ */
+async function generatePageForExample(project: Project) {
+ const target = path.join(EXAMPLES_PAGES_DIR, project.fullSlug + ".mdx");
+
+ const files = getProjectFiles(project);
+
+ const code = templatePageForExample(project, files["/README.md"]!.code);
+
+ fs.writeFileSync(target, code);
+}
+
+/**
+ * generates _meta.json file for each example group, so that order is preserved
+ */
+async function generateMetaForExampleGroup(group: {
+ title: string;
+ slug: string;
+ projects: Project[];
+}) {
+ if (!fs.existsSync(path.join(EXAMPLES_PAGES_DIR, group.slug))) {
+ fs.mkdirSync(path.join(EXAMPLES_PAGES_DIR, group.slug));
+ }
+
+ const target = path.join(EXAMPLES_PAGES_DIR, group.slug, "_meta.json");
+
+ const meta = Object.fromEntries(
+ group.projects.map((project) => [
+ project.projectSlug,
+ {
+ title: project.config.shortTitle || project.title,
+ },
+ ])
+ );
+
+ const code = JSON.stringify(meta, undefined, 2);
+
+ fs.writeFileSync(target, code);
+}
+
+const templateExampleComponents = (
+ projects: Project[]
+) => `// generated by dev-scripts/examples/genDocs.ts
+import dynamic from "next/dynamic";
+
+export const examples = {
+${projects
+ .map((p) => {
+ const importPath = `../../../../${p.pathFromRoot}/App`;
+
+ return ` "${p.fullSlug}": {
+ // App: () => hello
,
+ App: dynamic(() => import(${JSON.stringify(importPath)}), {
+ ssr: false,
+ }),
+ ExampleWithCode: dynamic(() => import("./mdx/${p.fullSlug}.mdx"), {
+ //ssr: false,
+ }),
+ },`;
+ })
+ .join("\n")}
+};`;
+
+/**
+ * Generate the file with all the dynamic imports for examples (exampleComponents.gen.tsx)
+ */
+async function generateExampleComponents(projects: Project[]) {
+ const target = path.join(COMPONENT_DIR, "exampleComponents.gen.tsx");
+
+ const code = templateExampleComponents(projects);
+
+ fs.writeFileSync(target, code);
+}
+
+/**
+ * generates exampleList.gen.ts file with data about all the examples
+ */
+async function generateExampleList(projects: Project[]) {
+ const target = path.join(COMPONENT_DIR, "exampleList.gen.ts");
+
+ const groups = addTitleToGroups(groupProjects(projects));
+
+ const items = Object.entries(groups).map(([key, group]) => {
+ return {
+ text: group.title,
+ items: group.projects.map((project) => {
+ return {
+ text: project.title,
+ link: `/examples/${project.fullSlug}`,
+ author: project.config.author,
+ };
+ }),
+ };
+ });
+
+ const code = `// generated by dev-scripts/examples/genDocs.ts
+ export const EXAMPLES_LIST = ${JSON.stringify(items, undefined, 2)};`;
+
+ fs.writeFileSync(target, code);
+}
+
+// clean old files / dirs
+fs.rmSync(COMPONENT_DIR, { recursive: true, force: true });
+
+fs.readdirSync(EXAMPLES_PAGES_DIR, { withFileTypes: true }).forEach((file) => {
+ if (file.isDirectory()) {
+ fs.rmSync(path.join(EXAMPLES_PAGES_DIR, file.name), {
+ recursive: true,
+ force: true,
+ });
+ }
+});
+
+// generate new files
+const projects = getExampleProjects().filter((p) => p.config?.docs === true);
+const groups = addTitleToGroups(groupProjects(projects));
+
+for (const group of Object.values(groups)) {
+ await generateMetaForExampleGroup(group);
+
+ for (const project of group.projects) {
+ await generateCodeForExample(project);
+ await generatePageForExample(project);
+ }
+}
+
+await generateExampleComponents(projects);
+await generateExampleList(projects);
diff --git a/packages/dev-scripts/examples/template-react/index.html.template.tsx b/packages/dev-scripts/examples/template-react/index.html.template.tsx
new file mode 100644
index 0000000000..63992318ee
--- /dev/null
+++ b/packages/dev-scripts/examples/template-react/index.html.template.tsx
@@ -0,0 +1,22 @@
+import React from "react";
+import type { Project } from "../util";
+
+const template = (project: Project) => (
+
+
+
+
+
+ {project.title}
+
+
+
+
+
+
+);
+
+export default template;
diff --git a/packages/dev-scripts/examples/template-react/main.tsx.template.tsx b/packages/dev-scripts/examples/template-react/main.tsx.template.tsx
new file mode 100644
index 0000000000..ea71db9e53
--- /dev/null
+++ b/packages/dev-scripts/examples/template-react/main.tsx.template.tsx
@@ -0,0 +1,18 @@
+import type { Project } from "../util";
+
+const template = (
+ project: Project
+) => `// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+const root = createRoot(document.getElementById("root")!);
+root.render(
+
+
+
+);
+`;
+
+export default template;
diff --git a/packages/dev-scripts/examples/template-react/package.json.template.tsx b/packages/dev-scripts/examples/template-react/package.json.template.tsx
new file mode 100644
index 0000000000..b8bb31ddd0
--- /dev/null
+++ b/packages/dev-scripts/examples/template-react/package.json.template.tsx
@@ -0,0 +1,36 @@
+import type { Project } from "../util";
+
+const template = (project: Project) => ({
+ name: "@blocknote/example-" + project.projectSlug,
+ description: "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ private: true,
+ version: "0.11.1",
+ scripts: {
+ start: "vite",
+ dev: "vite",
+ build: "tsc && vite build",
+ preview: "vite preview",
+ lint: "eslint . --max-warnings 0",
+ },
+ dependencies: {
+ "@blocknote/core": "^0.11.1",
+ "@blocknote/react": "^0.11.1",
+ react: "^18.2.0",
+ "react-dom": "^18.2.0",
+ ...(project.config?.dependencies || {}),
+ },
+ devDependencies: {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "@vitejs/plugin-react": "^4.0.4",
+ eslint: "^8.10.0",
+ vite: "^4.4.8",
+ ...(project.config?.devDependencies || {}),
+ },
+ eslintConfig: {
+ extends: ["../../../.eslintrc.js"],
+ },
+ eslintIgnore: ["dist"],
+});
+
+export default template;
diff --git a/packages/dev-scripts/examples/template-react/tsconfig.json.template.tsx b/packages/dev-scripts/examples/template-react/tsconfig.json.template.tsx
new file mode 100644
index 0000000000..8f877e875d
--- /dev/null
+++ b/packages/dev-scripts/examples/template-react/tsconfig.json.template.tsx
@@ -0,0 +1,34 @@
+import type { Project } from "../util";
+
+const template = (project: Project) => ({
+ __comment: "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ compilerOptions: {
+ target: "ESNext",
+ useDefineForClassFields: true,
+ lib: ["DOM", "DOM.Iterable", "ESNext"],
+ allowJs: false,
+ skipLibCheck: true,
+ esModuleInterop: false,
+ allowSyntheticDefaultImports: true,
+ strict: true,
+ forceConsistentCasingInFileNames: true,
+ module: "ESNext",
+ moduleResolution: "Node",
+ resolveJsonModule: true,
+ isolatedModules: true,
+ noEmit: true,
+ jsx: "react-jsx",
+ composite: true,
+ },
+ include: ["."],
+ references: [
+ {
+ path: "../../../packages/core/",
+ },
+ {
+ path: "../../../packages/react/",
+ },
+ ],
+});
+
+export default template;
diff --git a/packages/dev-scripts/examples/template-react/tsconfig.json.template.tsx.bak b/packages/dev-scripts/examples/template-react/tsconfig.json.template.tsx.bak
new file mode 100644
index 0000000000..8135220dfd
--- /dev/null
+++ b/packages/dev-scripts/examples/template-react/tsconfig.json.template.tsx.bak
@@ -0,0 +1,38 @@
+import type { Project } from "../util";
+
+const template = (project: Project) => ({
+ __comment: "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY",
+ compilerOptions: {
+ target: "ESNext",
+ useDefineForClassFields: true,
+ lib: ["DOM", "DOM.Iterable", "ESNext"],
+ allowJs: false,
+ skipLibCheck: true,
+ esModuleInterop: false,
+ allowSyntheticDefaultImports: true,
+ strict: true,
+ forceConsistentCasingInFileNames: true,
+ module: "ESNext",
+ moduleResolution: "Node",
+ resolveJsonModule: true,
+ isolatedModules: true,
+ noEmit: false,
+ jsx: "react-jsx",
+ composite: true,
+ outDir: "dist",
+ declarationDir: "types",
+ declaration: true,
+ declarationMap: true,
+ },
+ include: ["."],
+ references: [
+ {
+ path: "../../../packages/core/",
+ },
+ {
+ path: "../../../packages/react/",
+ },
+ ],
+});
+
+export default template;
diff --git a/packages/dev-scripts/examples/template-react/vite.config.ts.template.tsx b/packages/dev-scripts/examples/template-react/vite.config.ts.template.tsx
new file mode 100644
index 0000000000..ee1bae32e9
--- /dev/null
+++ b/packages/dev-scripts/examples/template-react/vite.config.ts.template.tsx
@@ -0,0 +1,39 @@
+import type { Project } from "../util";
+
+const template = (
+ project: Project
+) => `// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY
+import react from "@vitejs/plugin-react";
+import * as fs from "fs";
+import * as path from "path";
+import { defineConfig } from "vite";
+// import eslintPlugin from "vite-plugin-eslint";
+// https://vitejs.dev/config/
+export default defineConfig((conf) => ({
+ plugins: [react()],
+ optimizeDeps: {},
+ build: {
+ sourcemap: true,
+ },
+ resolve: {
+ alias:
+ conf.command === "build" ||
+ !fs.existsSync(path.resolve(__dirname, "../../packages/core/src"))
+ ? {}
+ : ({
+ // Comment out the lines below to load a built version of blocknote
+ // or, keep as is to load live from sources with live reload working
+ "@blocknote/core": path.resolve(
+ __dirname,
+ "../../packages/core/src/"
+ ),
+ "@blocknote/react": path.resolve(
+ __dirname,
+ "../../packages/react/src/"
+ ),
+ } as any),
+ },
+}));
+`;
+
+export default template;
diff --git a/packages/dev-scripts/examples/util.ts b/packages/dev-scripts/examples/util.ts
new file mode 100644
index 0000000000..e799bc37b6
--- /dev/null
+++ b/packages/dev-scripts/examples/util.ts
@@ -0,0 +1,197 @@
+import glob from "fast-glob";
+import * as fs from "node:fs";
+import * as path from "node:path";
+
+const dir = path.parse(import.meta.url.replace("file://", "")).dir;
+
+export type Project = {
+ /**
+ * The title of the example, from README.md
+ */
+ title: string;
+ /**
+ * e.g.: examples/01-basic/01-minimal
+ */
+ pathFromRoot: string;
+ /**
+ * e.g.: minimal
+ */
+ projectSlug: string;
+ /**
+ * e.g.: basic/minimal
+ */
+ fullSlug: string;
+ group: {
+ /**
+ * e.g.: examples/01-basic
+ */
+ pathFromRoot: string;
+ /**
+ * e.g.: basic
+ */
+ slug: string;
+ };
+ /**
+ * contents from .bnexample.json
+ */
+ config: {
+ playground: boolean;
+ docs: boolean;
+ dependencies?: any;
+ devDependencies?: any;
+ shortTitle?: string;
+ author: string;
+ };
+};
+
+export function groupBy(arr: T[], key: (el: T) => string) {
+ const groups: Record = {};
+ arr.forEach((val) => {
+ const k = key(val);
+ if (!groups[k]) {
+ groups[k] = [];
+ }
+ groups[k].push(val);
+ });
+ return groups;
+}
+
+export function groupProjects(projects: Project[]) {
+ const grouped = groupBy(projects, (p) => p.group.slug);
+
+ return Object.fromEntries(
+ Object.entries(grouped).map(([key, projects]) => {
+ const group = projects[0].group;
+ return [
+ key,
+ {
+ ...group,
+ projects,
+ },
+ ];
+ })
+ );
+}
+
+export function addTitleToGroups(grouped: ReturnType) {
+ // read group titles from /pages/examples/_meta.json
+ const meta = JSON.parse(
+ fs.readFileSync(
+ path.resolve(dir, "../../../docs/pages/examples/_meta.json"),
+ "utf-8"
+ )
+ );
+
+ const groupsWithTitles = Object.fromEntries(
+ Object.entries(grouped).map(([key, group]) => {
+ const title = meta[key];
+ if (!title) {
+ throw new Error(
+ `Missing group title for ${key}, add to examples/_meta.json?`
+ );
+ }
+ return [
+ key,
+ {
+ ...group,
+ title,
+ },
+ ];
+ })
+ );
+ return groupsWithTitles;
+}
+
+export type Files = Record<
+ string,
+ {
+ filename: string;
+ code: string;
+ hidden: boolean;
+ }
+>;
+
+export function getProjectFiles(project: Project): Files {
+ const dir = path.resolve("../../", project.pathFromRoot);
+ const files = glob.globSync(dir + "/**/*", {
+ ignore: ["**/node_modules/**/*", "**/dist/**/*"],
+ });
+ const passedFiles = Object.fromEntries(
+ files.map((fullPath) => {
+ const filename = fullPath.substring(dir.length);
+ return [
+ filename,
+ {
+ filename,
+ code: fs.readFileSync(fullPath, "utf-8"),
+ hidden:
+ !(filename.endsWith(".tsx") || filename.endsWith(".css")) ||
+ filename.endsWith("main.tsx"),
+ },
+ ];
+ })
+ );
+ return passedFiles;
+}
+
+/**
+ * Get the list of example Projects based on the /examples folder
+ */
+export function getExampleProjects(): Project[] {
+ const examples: Project[] = glob
+ .globSync(path.join(dir, "../../../examples/**/*/.bnexample.json"))
+ .map((configPath) => {
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
+ const directory = path.dirname(configPath);
+
+ const readmePath = path.join(directory, "README.md");
+ if (!fs.existsSync(readmePath)) {
+ throw new Error(`Missing README.md for ${directory}`);
+ }
+
+ const md = fs.readFileSync(readmePath, "utf-8");
+ const title = md.match(/# (.*)/)?.[1];
+
+ if (!title?.length) {
+ throw new Error(`Missing title in README.md for ${directory}`);
+ }
+
+ const [groupDir, exampleDir] = path
+ .relative(path.resolve("../../examples"), directory)
+ .split(path.sep);
+
+ const group = {
+ pathFromRoot: path.relative(
+ path.resolve("../../"),
+ path.join(directory, "..")
+ ),
+ // remove optional 01- prefix
+ slug: groupDir.replace(/^\d{2}-/, ""),
+ };
+ const projectSlug = exampleDir.replace(/^\d{2}-/, "");
+
+ const project = {
+ projectSlug,
+ fullSlug: `${group.slug}/${projectSlug}`,
+ pathFromRoot: path.relative(path.resolve("../../"), directory),
+ config,
+ title,
+ group,
+ };
+ return project;
+ });
+
+ // examples.sort((a, b) => {
+ // if (a.config?.order && b.config?.order) {
+ // return a.config.order - b.config.order;
+ // }
+ // if (a.config?.order) {
+ // return -1;
+ // }
+ // if (b.config?.order) {
+ // return 1;
+ // }
+ // return 0;
+ // });
+ return examples;
+}
diff --git a/packages/dev-scripts/package.json b/packages/dev-scripts/package.json
new file mode 100644
index 0000000000..107ae8e7f4
--- /dev/null
+++ b/packages/dev-scripts/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@blocknote/dev-scripts",
+ "homepage": "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/TypeCellOS/BlockNote",
+ "private": true,
+ "license": "MPL-2.0",
+ "version": "0.10.0",
+ "description": "",
+ "type": "module",
+ "scripts": {
+ "gen": "npm run gen:examples && npm run gen:docs",
+ "gen:examples": "tsx examples/gen.ts",
+ "gen:docs": "tsx examples/genDocs.ts",
+ "build": "tsc",
+ "lint": "eslint examples --max-warnings 0"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "@types/react": "^18.0.25",
+ "@types/react-dom": "^18.0.9",
+ "eslint": "^8.10.0",
+ "prettier": "^2.7.1",
+ "typescript": "^5.3.3",
+ "tsx": "^4.6.2",
+ "glob": "^10.3.10",
+ "fast-glob": "^3.3.2",
+ "react": "^18",
+ "react-dom": "^18"
+ },
+ "peerDependencies": {},
+ "eslintConfig": {
+ "extends": [
+ "../../.eslintrc.js"
+ ]
+ }
+}
diff --git a/packages/dev-scripts/tsconfig.json b/packages/dev-scripts/tsconfig.json
new file mode 100644
index 0000000000..96e3112014
--- /dev/null
+++ b/packages/dev-scripts/tsconfig.json
@@ -0,0 +1,29 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ESNext", "DOM"],
+ "moduleResolution": "Node",
+ "jsx": "react-jsx",
+ "strict": true,
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "noEmit": false,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noImplicitReturns": true,
+ "outDir": "dist",
+ "declaration": true,
+ "declarationDir": "types",
+ "composite": true,
+ "skipLibCheck": true
+ },
+ "include": ["src"],
+ "references": [
+ {
+ "path": "../core"
+ }
+ ]
+}
diff --git a/packages/react/package.json b/packages/react/package.json
index cfc57b07e5..a62adb8000 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -57,8 +57,6 @@
"@mantine/utils": "^6.0.21",
"@tiptap/core": "^2.0.3",
"@tiptap/react": "^2.0.3",
- "lodash.foreach": "^4.5.0",
- "lodash.groupby": "^4.6.0",
"lodash.merge": "^4.6.2",
"react": "^18",
"react-dom": "^18.2.0",
@@ -76,7 +74,7 @@
"prettier": "^2.7.1",
"rimraf": "^5.0.5",
"rollup-plugin-webpack-stats": "^0.2.2",
- "typescript": "^5.0.4",
+ "typescript": "^5.3.3",
"vite": "^4.4.8",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-externalize-deps": "^0.7.0",
diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx
deleted file mode 100644
index 3b2b3fba80..0000000000
--- a/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import { BlockNoteEditor, BlockSchema } from "@blocknote/core";
-import { Menu } from "@mantine/core";
-import { useCallback, useMemo, useState } from "react";
-
-import { ColorIcon } from "../../../components-shared/ColorPicker/ColorIcon";
-import { ColorPicker } from "../../../components-shared/ColorPicker/ColorPicker";
-import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton";
-import { useEditorChange } from "../../../hooks/useEditorChange";
-import { usePreventMenuOverflow } from "../../../hooks/usePreventMenuOverflow";
-import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks";
-
-export const ColorStyleButton = (props: {
- editor: BlockNoteEditor;
-}) => {
- const selectedBlocks = useSelectedBlocks(props.editor);
-
- const [currentTextColor, setCurrentTextColor] = useState(
- props.editor.getActiveStyles().textColor || "default"
- );
- const [currentBackgroundColor, setCurrentBackgroundColor] = useState(
- props.editor.getActiveStyles().backgroundColor || "default"
- );
-
- useEditorChange(props.editor, () => {
- setCurrentTextColor(props.editor.getActiveStyles().textColor || "default");
- setCurrentBackgroundColor(
- props.editor.getActiveStyles().backgroundColor || "default"
- );
- });
-
- const { ref, updateMaxHeight } = usePreventMenuOverflow();
-
- const setTextColor = useCallback(
- (color: string) => {
- props.editor.focus();
- color === "default"
- ? props.editor.removeStyles({ textColor: color })
- : props.editor.addStyles({ textColor: color });
- },
- [props.editor]
- );
-
- const setBackgroundColor = useCallback(
- (color: string) => {
- props.editor.focus();
- color === "default"
- ? props.editor.removeStyles({ backgroundColor: color })
- : props.editor.addStyles({ backgroundColor: color });
- },
- [props.editor]
- );
-
- const show = useMemo(() => {
- for (const block of selectedBlocks) {
- if (block.content !== undefined) {
- return true;
- }
- }
-
- return false;
- }, [selectedBlocks]);
-
- if (!show) {
- return null;
- }
-
- return (
-
-
- (
-
- )}
- />
-
-
-
-
-
-
-
- );
-};
diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx
deleted file mode 100644
index 1276c8ff06..0000000000
--- a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import { useCallback, useMemo, useState } from "react";
-import { BlockNoteEditor, BlockSchema } from "@blocknote/core";
-import { RiLink } from "react-icons/ri";
-
-import { ToolbarInputDropdownButton } from "../../../components-shared/Toolbar/ToolbarInputDropdownButton";
-import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton";
-import { EditHyperlinkMenu } from "../../HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu";
-import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks";
-import { useEditorChange } from "../../../hooks/useEditorChange";
-import { formatKeyboardShortcut } from "@blocknote/core";
-
-export const CreateLinkButton = (props: {
- editor: BlockNoteEditor;
-}) => {
- const selectedBlocks = useSelectedBlocks(props.editor);
-
- const [url, setUrl] = useState(
- props.editor.getSelectedLinkUrl() || ""
- );
- const [text, setText] = useState(props.editor.getSelectedText());
-
- useEditorChange(props.editor, () => {
- setText(props.editor.getSelectedText() || "");
- setUrl(props.editor.getSelectedLinkUrl() || "");
- });
-
- const update = useCallback(
- (url: string, text: string) => {
- props.editor.createLink(url, text);
- props.editor.focus();
- },
- [props.editor]
- );
-
- const show = useMemo(() => {
- for (const block of selectedBlocks) {
- if (block.content === undefined) {
- return false;
- }
- }
-
- return true;
- }, [selectedBlocks]);
-
- if (!show) {
- return null;
- }
-
- return (
-
- }
- dropdown={ }
- />
- );
-};
diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx
deleted file mode 100644
index bb114abcc1..0000000000
--- a/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import { BlockNoteEditor, BlockSchema, PartialBlock } from "@blocknote/core";
-import {
- ChangeEvent,
- KeyboardEvent,
- useCallback,
- useEffect,
- useMemo,
- useState,
-} from "react";
-import { RiText } from "react-icons/ri";
-
-import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton";
-import { ToolbarInputDropdown } from "../../../components-shared/Toolbar/ToolbarInputDropdown";
-import { ToolbarInputDropdownButton } from "../../../components-shared/Toolbar/ToolbarInputDropdownButton";
-import { ToolbarInputDropdownItem } from "../../../components-shared/Toolbar/ToolbarInputDropdownItem";
-import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks";
-
-export const ImageCaptionButton = (props: {
- editor: BlockNoteEditor;
-}) => {
- const selectedBlocks = useSelectedBlocks(props.editor);
-
- const show = useMemo(
- () =>
- // Checks if only one block is selected.
- selectedBlocks.length === 1 &&
- // Checks if the selected block is an image.
- selectedBlocks[0].type === "image" &&
- // Checks if the block has a `caption` prop which can take any string
- // value.
- "caption" in props.editor.blockSchema["image"].propSchema &&
- typeof props.editor.blockSchema["image"].propSchema.caption.default ===
- "string" &&
- props.editor.blockSchema["image"].propSchema.caption.values ===
- undefined &&
- // Checks if the block has a `url` prop which can take any string value.
- "url" in props.editor.blockSchema["image"].propSchema &&
- typeof props.editor.blockSchema["image"].propSchema.url.default ===
- "string" &&
- props.editor.blockSchema["image"].propSchema.url.values === undefined &&
- // Checks if the `url` prop is not set to an empty string.
- selectedBlocks[0].props.url !== "",
- [props.editor.blockSchema, selectedBlocks]
- );
-
- const [currentCaption, setCurrentCaption] = useState