diff --git a/.env b/.env
new file mode 100644
index 0000000..caf61de
--- /dev/null
+++ b/.env
@@ -0,0 +1,3 @@
+OST_GITHUB_ID=Ov23li1QEGhmHL1zZy9s
+OST_GITHUB_SECRET=3735cccb709cf25c9f3a18363e9a14ceec3e77e3
+OST_REPO_SLUG=owenstack.github.io
\ No newline at end of file
diff --git a/.github/workflows/astro.yml b/.github/workflows/astro.yml
deleted file mode 100644
index 2ee0e27..0000000
--- a/.github/workflows/astro.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-name: Deploy Astro site to Pages
-
-on:
- push:
- branches: ["master"] # adjust if needed
- workflow_dispatch:
-
-permissions:
- contents: read
- pages: write
- id-token: write
-
-jobs:
- build:
- name: Build
- runs-on: ubuntu-latest
- steps:
- - name: Checkout your repository using git
- uses: actions/checkout@v4
-
- - name: Install, build, and upload
- uses: withastro/action@v3
- with:
- package-manager: bun@latest
-
- deploy:
- name: Deploy to GitHub Pages
- needs: build
- runs-on: ubuntu-latest
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
- steps:
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v4
diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml
new file mode 100644
index 0000000..ed74736
--- /dev/null
+++ b/.github/workflows/nextjs.yml
@@ -0,0 +1,93 @@
+# Sample workflow for building and deploying a Next.js site to GitHub Pages
+#
+# To get started with Next.js see: https://nextjs.org/docs/getting-started
+#
+name: Deploy Next.js site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["main"]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Detect package manager
+ id: detect-package-manager
+ run: |
+ if [ -f "${{ github.workspace }}/yarn.lock" ]; then
+ echo "manager=yarn" >> $GITHUB_OUTPUT
+ echo "command=install" >> $GITHUB_OUTPUT
+ echo "runner=yarn" >> $GITHUB_OUTPUT
+ exit 0
+ elif [ -f "${{ github.workspace }}/package.json" ]; then
+ echo "manager=npm" >> $GITHUB_OUTPUT
+ echo "command=ci" >> $GITHUB_OUTPUT
+ echo "runner=npx --no-install" >> $GITHUB_OUTPUT
+ exit 0
+ else
+ echo "Unable to determine package manager"
+ exit 1
+ fi
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: "20"
+ cache: ${{ steps.detect-package-manager.outputs.manager }}
+ - name: Setup Pages
+ uses: actions/configure-pages@v5
+ with:
+ # Automatically inject basePath in your Next.js configuration file and disable
+ # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
+ #
+ # You may remove this line if you want to manage the configuration yourself.
+ static_site_generator: next
+ - name: Restore cache
+ uses: actions/cache@v4
+ with:
+ path: |
+ .next/cache
+ # Generate a new cache whenever packages or source files change.
+ key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
+ # If source files changed but packages didn't, rebuild from a prior cache.
+ restore-keys: |
+ ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
+ - name: Install dependencies
+ run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
+ - name: Build with Next.js
+ run: ${{ steps.detect-package-manager.outputs.runner }} next build
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./out
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.gitignore b/.gitignore
index 16d54bb..b46ec10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,24 +1,37 @@
-# build output
-dist/
-# generated types
-.astro/
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
-node_modules/
+/node_modules
+/.pnp
+.pnp.js
+.yarn/
-# logs
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
-pnpm-debug.log*
-
-# environment variables
+# local env files
+.env*.local
.env
-.env.production
-# macOS-specific files
-.DS_Store
+# vercel
+.vercel
-# jetbrains setting folder
-.idea/
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index 26d70b4..0000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "recommendations": ["astro-build.astro-vscode", "unifiedjs.vscode-mdx"],
- "unwantedRecommendations": []
-}
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100644
index 230708d..0000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "command": "./node_modules/.bin/astro dev",
- "name": "Development server",
- "request": "launch",
- "type": "node-terminal"
- }
- ]
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 4d360cb..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "typescript.tsdk": "node_modules/typescript/lib"
-}
diff --git a/.yarnrc.yml b/.yarnrc.yml
new file mode 100644
index 0000000..3186f3f
--- /dev/null
+++ b/.yarnrc.yml
@@ -0,0 +1 @@
+nodeLinker: node-modules
diff --git a/README.md b/README.md
index 758716e..c403366 100644
--- a/README.md
+++ b/README.md
@@ -1,68 +1,36 @@
-# Astro Starter Kit: Blog
+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).
-```sh
-npm create astro@latest -- --template blog
-```
-
-[](https://stackblitz.com/github/withastro/astro/tree/latest/examples/blog)
-[](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/blog)
-[](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/blog/devcontainer.json)
-
-> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
-
-
+## Getting Started
-Features:
+First, run the development server:
-- ✅ Minimal styling (make it your own!)
-- ✅ 100/100 Lighthouse performance
-- ✅ SEO-friendly with canonical URLs and OpenGraph data
-- ✅ Sitemap support
-- ✅ RSS Feed support
-- ✅ Markdown & MDX support
-
-## 🚀 Project Structure
-
-Inside of your Astro project, you'll see the following folders and files:
-
-```text
-├── public/
-├── src/
-│ ├── components/
-│ ├── content/
-│ ├── layouts/
-│ └── pages/
-├── astro.config.mjs
-├── README.md
-├── package.json
-└── tsconfig.json
+```bash
+npm run dev
+# or
+yarn dev
+# or
+pnpm dev
+# or
+bun dev
```
-Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
-
-There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-The `src/content/` directory contains "collections" of related Markdown and MDX documents. Use `getCollection()` to retrieve posts from `src/content/blog/`, and type-check your frontmatter using an optional schema. See [Astro's Content Collections docs](https://docs.astro.build/en/guides/content-collections/) to learn more.
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-Any static assets, like images, can be placed in the `public/` directory.
+This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
-## 🧞 Commands
+## Learn More
-All commands are run from the root of the project, from a terminal:
+To learn more about Next.js, take a look at the following resources:
-| Command | Action |
-| :------------------------ | :----------------------------------------------- |
-| `npm install` | Installs dependencies |
-| `npm run dev` | Starts local dev server at `localhost:4321` |
-| `npm run build` | Build your production site to `./dist/` |
-| `npm run preview` | Preview your build locally, before deploying |
-| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
-| `npm run astro -- --help` | Get help using the Astro CLI |
+- [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.
-## 👀 Want to learn more?
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
-Check out [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
+## Deploy on Vercel
-## Credit
+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.
-This theme is based off of the lovely [Bear Blog](https://github.com/HermanMartinus/bearblog/).
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/app/(cms)/layout.tsx b/app/(cms)/layout.tsx
new file mode 100644
index 0000000..30403d8
--- /dev/null
+++ b/app/(cms)/layout.tsx
@@ -0,0 +1,7 @@
+export default function CMSLayout({ children }: { children: React.ReactNode }) {
+ return (
+
+
{children}
+
+ );
+}
diff --git a/app/(cms)/outstatic/[[...ost]]/page.tsx b/app/(cms)/outstatic/[[...ost]]/page.tsx
new file mode 100644
index 0000000..d61ae7d
--- /dev/null
+++ b/app/(cms)/outstatic/[[...ost]]/page.tsx
@@ -0,0 +1,8 @@
+import "outstatic/outstatic.css";
+import { Outstatic } from "outstatic";
+import { OstClient } from "outstatic/client";
+
+export default async function Page({ params }: { params: { ost: string[] } }) {
+ const ostData = await Outstatic();
+ return ;
+}
diff --git a/app/api/contact/route.ts b/app/api/contact/route.ts
new file mode 100644
index 0000000..f43d6d7
--- /dev/null
+++ b/app/api/contact/route.ts
@@ -0,0 +1,47 @@
+import nodemailer from 'nodemailer';
+
+export async function POST(req: Request) {
+ const body = await req.formData()
+
+ const name = body.get('name');
+ const email = body.get('email');
+ const message = body.get('message');
+
+ if (!name || !email || !message) {
+ return new Response('Missing required form data', { status: 400 });
+ }
+
+ let transporter = nodemailer.createTransport({
+ host: process.env.SMTP_HOST,
+ port: 587,
+ secure: false,
+ auth: {
+ user: process.env.SMTP_USER,
+ pass: process.env.SMTP_PASS
+ }
+ })
+
+ let mailOptions = {
+ from: 'owen@owenstack.github.io',
+ to: 'jenukohaefobi@gmail.com',
+ subject: 'Contact Form',
+ text: `New Form Submission: \n\nOne ${name} with email ${email} dropped a message whose contents are: \n\n${message}`
+ }
+
+ try {
+ const info = await new Promise((resolve, reject) => {
+ transporter.sendMail(mailOptions, (error, info) => {
+ if (error) {
+ reject(error)
+ } else {
+ resolve(info)
+ }
+ })
+ })
+ console.log('Email sent: ', info.response)
+ return new Response('Email Sent Succesfully', {status: 200})
+ } catch (error) {
+ console.error(error)
+ return new Response(`Error: ${error}`, {status: 500})
+ }
+}
\ No newline at end of file
diff --git a/app/api/outstatic/[[...ost]]/route.ts b/app/api/outstatic/[[...ost]]/route.ts
new file mode 100644
index 0000000..21ae04b
--- /dev/null
+++ b/app/api/outstatic/[[...ost]]/route.ts
@@ -0,0 +1,5 @@
+import { OutstaticApi } from "outstatic";
+
+export const GET = OutstaticApi.GET;
+
+export const POST = OutstaticApi.POST;
diff --git a/app/favicon.ico b/app/favicon.ico
new file mode 100644
index 0000000..fb67702
Binary files /dev/null and b/app/favicon.ico differ
diff --git a/app/globals.css b/app/globals.css
new file mode 100644
index 0000000..c4b183a
--- /dev/null
+++ b/app/globals.css
@@ -0,0 +1,61 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+ :root {
+ --background: 232 39% 99%;
+ --foreground: 232 54% 3%;
+ --muted: 52 6% 94%;
+ --muted-foreground: 52 10% 38%;
+ --popover: 232 39% 99%;
+ --popover-foreground: 232 54% 3%;
+ --card: 232 39% 99%;
+ --card-foreground: 232 54% 3%;
+ --border: 232 3% 93%;
+ --input: 232 3% 93%;
+ --primary: 232 79% 37%;
+ --primary-foreground: 232 79% 97%;
+ --secondary: 52 79% 37%;
+ --secondary-foreground: 0 0% 0%;
+ --accent: 52 79% 37%;
+ --accent-foreground: 0 0% 0%;
+ --destructive: 0 90% 36%;
+ --destructive-foreground: 0 90% 96%;
+ --ring: 232 79% 37%;
+ --radius: 0.5rem;
+ }
+
+ .dark {
+ --background: 232 58% 1%;
+ --foreground: 232 26% 100%;
+ --muted: 52 6% 6%;
+ --muted-foreground: 52 10% 62%;
+ --popover: 232 58% 1%;
+ --popover-foreground: 232 26% 100%;
+ --card: 232 58% 1%;
+ --card-foreground: 232 26% 100%;
+ --border: 232 3% 14%;
+ --input: 232 3% 14%;
+ --primary: 232 79% 37%;
+ --primary-foreground: 232 79% 97%;
+ --secondary: 52 79% 37%;
+ --secondary-foreground: 0 0% 0%;
+ --accent: 52 79% 37%;
+ --accent-foreground: 0 0% 0%;
+ --destructive: 0 90% 51%;
+ --destructive-foreground: 0 0% 100%;
+ --ring: 232 79% 37%;
+ }
+}
+
+
+
+@layer base {
+ * {
+ @apply border-border;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
diff --git a/app/layout.tsx b/app/layout.tsx
new file mode 100644
index 0000000..84e1240
--- /dev/null
+++ b/app/layout.tsx
@@ -0,0 +1,54 @@
+import type {Metadata} from "next";
+import {Analytics} from "@vercel/analytics/react";
+import {LanguageContextProvider, ThemeProvider} from "@/lib/providers";
+import {Toaster} from "@/components/ui/sonner";
+import Header from "@/components/Header";
+import {cn} from "@/lib/utils";
+import "./globals.css";
+import localFont from 'next/font/local'
+
+const body = localFont({src: '../assets/fonts/body.ttf'})
+
+export const metadata: Metadata = {
+ title: {
+ template: "%s | Owenstack",
+ default: "Owenstack",
+ },
+ description:
+ "Full-stack web developer that builds beautiful and functional websites",
+ metadataBase: new URL("https://owenstack.github.io"),
+ openGraph: {
+ images: "/og-image.jpg",
+ },
+};
+
+export default function RootLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+
+
+
+
+
+
+ {children}
+
+
+
+
+
+ );
+}
diff --git a/app/page.tsx b/app/page.tsx
new file mode 100644
index 0000000..5fe35e3
--- /dev/null
+++ b/app/page.tsx
@@ -0,0 +1,17 @@
+import AboutSection from "@/components/AboutSection";
+import ContactSection from "@/components/ContactSection";
+import HeroSection from "@/components/HeroSection";
+import StackSection from "@/components/StackSection";
+import BlogSectionWrapper from "@/components/BlogSectionWrapper";
+
+export default function Page() {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/posts/[slug]/page.tsx b/app/posts/[slug]/page.tsx
new file mode 100644
index 0000000..a0f41e7
--- /dev/null
+++ b/app/posts/[slug]/page.tsx
@@ -0,0 +1,152 @@
+import { getDocumentBySlug } from "outstatic/server";
+import ReactMarkdown from "react-markdown";
+import Image from "next/image";
+import { Calendar, LoaderCircle } from "lucide-react";
+import { Suspense } from "react";
+import remarkGFM from "remark-gfm";
+import remarkEmoji from "remark-emoji";
+import { Prism as SyntaxHighlighter } from "react-syntax-highlighter";
+import { tomorrow } from "react-syntax-highlighter/dist/esm/styles/prism";
+
+export default async function Page({ params }: { params: { slug: string } }) {
+ const post = await getData(params);
+
+ return (
+
+
+
+ }
+ >
+ {post && (
+
+ {post.coverImage && (
+
+ )}
+
+ {post.title}
+
+
+
+ {post.author?.picture && (
+
+ )}
+
+ {post.author?.name}
+
+
+
+
+
+ {new Date(post.publishedAt).toLocaleString()}
+
+
+
+
+
(
+
+ ),
+ h1: ({ node, ...props }) => (
+
+ ),
+ h2: ({ node, ...props }) => (
+
+ ),
+ h3: ({ node, ...props }) => (
+
+ ),
+ ul: ({ node, ...props }) => (
+
+ ),
+ ol: ({ node, ...props }) => (
+
+ ),
+ li: ({ node, ...props }) => (
+
+ ),
+ blockquote: ({ node, ...props }) => (
+
+ ),
+ code: ({ node, className, children, ...props }) => {
+ const match = /language-(\w+)/.exec(className || "");
+ return match ? (
+
+ style={tomorrow as any}
+ language={match[1]}
+ PreTag="div"
+ >
+ {String(children).replace(/\n$/, "")}
+
+ ) : (
+
+ {children}
+
+ );
+ },
+ }}
+ >
+ {post.content}
+
+
+
+ )}
+
+ );
+}
+
+async function getData(params: { slug: string }) {
+ const post = getDocumentBySlug("posts", params.slug, [
+ "title",
+ "publishedAt",
+ "slug",
+ "author",
+ "content",
+ "coverImage",
+ ]);
+
+ return post;
+}
diff --git a/app/posts/page.tsx b/app/posts/page.tsx
new file mode 100644
index 0000000..9c25eca
--- /dev/null
+++ b/app/posts/page.tsx
@@ -0,0 +1,63 @@
+import Link from "next/link";
+import { CalendarIcon, UserIcon } from "lucide-react";
+import { getDocuments } from "outstatic/server";
+
+export default async function Page() {
+ const posts = await getData();
+ return (
+
+
Latest Articles
+
+ {posts.map((article) => (
+
+
+
+
+
+
+ Read More
+
+
+
+
+
{article.title}
+
{article.description}
+
+
+
+ {article.author?.name}
+
+
+
+ {new Date(article.publishedAt).toLocaleDateString()}
+
+
+
+
+
+ ))}
+
+
+ );
+}
+
+async function getData() {
+ const posts = getDocuments("posts", [
+ "title",
+ "slug",
+ "coverImage",
+ "author",
+ "publishedAt",
+ "description",
+ ]);
+ return posts;
+}
diff --git a/assets/fonts/body.ttf b/assets/fonts/body.ttf
new file mode 100644
index 0000000..797c4a5
Binary files /dev/null and b/assets/fonts/body.ttf differ
diff --git a/assets/fonts/head.ttf b/assets/fonts/head.ttf
new file mode 100644
index 0000000..19bb671
Binary files /dev/null and b/assets/fonts/head.ttf differ
diff --git a/assets/fonts/logo.ttf b/assets/fonts/logo.ttf
new file mode 100644
index 0000000..221f64c
Binary files /dev/null and b/assets/fonts/logo.ttf differ
diff --git a/assets/icons/bun.tsx b/assets/icons/bun.tsx
new file mode 100644
index 0000000..d350553
--- /dev/null
+++ b/assets/icons/bun.tsx
@@ -0,0 +1,102 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Bun = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Bun;
diff --git a/assets/icons/code.tsx b/assets/icons/code.tsx
new file mode 100644
index 0000000..2141474
--- /dev/null
+++ b/assets/icons/code.tsx
@@ -0,0 +1,46 @@
+"use client";
+
+import type {SVGProps} from "react";
+const VisualStudioCode = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default VisualStudioCode;
diff --git a/assets/icons/css.tsx b/assets/icons/css.tsx
new file mode 100644
index 0000000..742f4c2
--- /dev/null
+++ b/assets/icons/css.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import type {SVGProps} from "react";
+const CSS = (props: SVGProps) => (
+
+
+
+
+
+
+);
+export default CSS;
diff --git a/assets/icons/discord.tsx b/assets/icons/discord.tsx
new file mode 100644
index 0000000..a352b43
--- /dev/null
+++ b/assets/icons/discord.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Discord = (props: SVGProps) => (
+
+
+
+);
+export default Discord;
diff --git a/assets/icons/docker.tsx b/assets/icons/docker.tsx
new file mode 100644
index 0000000..446ba13
--- /dev/null
+++ b/assets/icons/docker.tsx
@@ -0,0 +1,16 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Docker = (props: SVGProps) => (
+
+
+
+);
+export default Docker;
diff --git a/assets/icons/electron.tsx b/assets/icons/electron.tsx
new file mode 100644
index 0000000..7213413
--- /dev/null
+++ b/assets/icons/electron.tsx
@@ -0,0 +1,51 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Electron = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+);
+export default Electron;
diff --git a/assets/icons/express.tsx b/assets/icons/express.tsx
new file mode 100644
index 0000000..5d0d99d
--- /dev/null
+++ b/assets/icons/express.tsx
@@ -0,0 +1,18 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Express = (props: SVGProps) => (
+
+
+
+);
+export default Express;
diff --git a/assets/icons/figma.tsx b/assets/icons/figma.tsx
new file mode 100644
index 0000000..e043a8c
--- /dev/null
+++ b/assets/icons/figma.tsx
@@ -0,0 +1,42 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Figma = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Figma;
diff --git a/assets/icons/git.tsx b/assets/icons/git.tsx
new file mode 100644
index 0000000..011929d
--- /dev/null
+++ b/assets/icons/git.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Git = (props: SVGProps) => (
+
+
+
+);
+export default Git;
diff --git a/assets/icons/github.tsx b/assets/icons/github.tsx
new file mode 100644
index 0000000..d2ea631
--- /dev/null
+++ b/assets/icons/github.tsx
@@ -0,0 +1,17 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Github = (props: SVGProps) => (
+
+
+
+);
+export default Github;
diff --git a/assets/icons/googledev.tsx b/assets/icons/googledev.tsx
new file mode 100644
index 0000000..93ba49f
--- /dev/null
+++ b/assets/icons/googledev.tsx
@@ -0,0 +1,36 @@
+"use client";
+
+import type {SVGProps} from "react";
+const DeveloperStudentClub = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+);
+export default DeveloperStudentClub;
diff --git a/assets/icons/html.tsx b/assets/icons/html.tsx
new file mode 100644
index 0000000..3aa43af
--- /dev/null
+++ b/assets/icons/html.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import type {SVGProps} from "react";
+const HTML5 = (props: SVGProps) => (
+
+
+
+
+
+
+);
+export default HTML5;
diff --git a/assets/icons/instagram.tsx b/assets/icons/instagram.tsx
new file mode 100644
index 0000000..ab310d1
--- /dev/null
+++ b/assets/icons/instagram.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Instagram = (props: SVGProps) => (
+
+
+
+);
+export default Instagram;
diff --git a/assets/icons/javascript.tsx b/assets/icons/javascript.tsx
new file mode 100644
index 0000000..eac993f
--- /dev/null
+++ b/assets/icons/javascript.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const JavaScript = (props: SVGProps) => (
+
+
+
+
+);
+export default JavaScript;
diff --git a/assets/icons/linkedin.tsx b/assets/icons/linkedin.tsx
new file mode 100644
index 0000000..b11e99e
--- /dev/null
+++ b/assets/icons/linkedin.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const LinkedIn = (props: SVGProps) => (
+
+
+
+);
+export default LinkedIn;
diff --git a/assets/icons/linux.tsx b/assets/icons/linux.tsx
new file mode 100644
index 0000000..e844408
--- /dev/null
+++ b/assets/icons/linux.tsx
@@ -0,0 +1,375 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Linux = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Linux;
diff --git a/assets/icons/mail.tsx b/assets/icons/mail.tsx
new file mode 100644
index 0000000..ce0ce41
--- /dev/null
+++ b/assets/icons/mail.tsx
@@ -0,0 +1,39 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Gmail = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Gmail;
diff --git a/assets/icons/medusa.tsx b/assets/icons/medusa.tsx
new file mode 100644
index 0000000..37b4700
--- /dev/null
+++ b/assets/icons/medusa.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Medusa = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+);
+export default Medusa;
diff --git a/assets/icons/neon.tsx b/assets/icons/neon.tsx
new file mode 100644
index 0000000..9d687f6
--- /dev/null
+++ b/assets/icons/neon.tsx
@@ -0,0 +1,42 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Neon = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Neon;
diff --git a/assets/icons/next.tsx b/assets/icons/next.tsx
new file mode 100644
index 0000000..c9093bd
--- /dev/null
+++ b/assets/icons/next.tsx
@@ -0,0 +1,73 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Next = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Next;
diff --git a/assets/icons/node.tsx b/assets/icons/node.tsx
new file mode 100644
index 0000000..212caed
--- /dev/null
+++ b/assets/icons/node.tsx
@@ -0,0 +1,82 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Node = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Node;
diff --git a/assets/icons/payload.tsx b/assets/icons/payload.tsx
new file mode 100644
index 0000000..d14f029
--- /dev/null
+++ b/assets/icons/payload.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const PayloadCMS = (props: SVGProps) => (
+
+
+
+);
+export default PayloadCMS;
diff --git a/assets/icons/postgresql.tsx b/assets/icons/postgresql.tsx
new file mode 100644
index 0000000..ffaa795
--- /dev/null
+++ b/assets/icons/postgresql.tsx
@@ -0,0 +1,28 @@
+"use client";
+
+import type {SVGProps} from "react";
+const PostgreSQL = (props: SVGProps) => (
+
+
+
+
+
+
+);
+export default PostgreSQL;
diff --git a/assets/icons/prisma.tsx b/assets/icons/prisma.tsx
new file mode 100644
index 0000000..e4c9c00
--- /dev/null
+++ b/assets/icons/prisma.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Prisma = (props: SVGProps) => (
+
+
+
+);
+export default Prisma;
diff --git a/assets/icons/react.tsx b/assets/icons/react.tsx
new file mode 100644
index 0000000..6453bc3
--- /dev/null
+++ b/assets/icons/react.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const React = (props: SVGProps) => (
+
+
+
+);
+export default React;
diff --git a/assets/icons/redis.tsx b/assets/icons/redis.tsx
new file mode 100644
index 0000000..91e5b3f
--- /dev/null
+++ b/assets/icons/redis.tsx
@@ -0,0 +1,45 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Redis = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Redis;
diff --git a/assets/icons/sanity.tsx b/assets/icons/sanity.tsx
new file mode 100644
index 0000000..15129bf
--- /dev/null
+++ b/assets/icons/sanity.tsx
@@ -0,0 +1,42 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Sanity = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+);
+export default Sanity;
diff --git a/assets/icons/sketch.tsx b/assets/icons/sketch.tsx
new file mode 100644
index 0000000..145fd5e
--- /dev/null
+++ b/assets/icons/sketch.tsx
@@ -0,0 +1,20 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Sketch = (props: SVGProps) => (
+
+
+
+);
+export default Sketch;
diff --git a/assets/icons/spotify.tsx b/assets/icons/spotify.tsx
new file mode 100644
index 0000000..ad35f94
--- /dev/null
+++ b/assets/icons/spotify.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Spotify = (props: SVGProps) => (
+
+
+
+);
+export default Spotify;
diff --git a/assets/icons/sql.tsx b/assets/icons/sql.tsx
new file mode 100644
index 0000000..1380bb8
--- /dev/null
+++ b/assets/icons/sql.tsx
@@ -0,0 +1,20 @@
+"use client";
+
+import type {SVGProps} from "react";
+const MySQL = (props: SVGProps) => (
+
+
+
+
+);
+export default MySQL;
diff --git a/assets/icons/studio.tsx b/assets/icons/studio.tsx
new file mode 100644
index 0000000..daefa4f
--- /dev/null
+++ b/assets/icons/studio.tsx
@@ -0,0 +1,42 @@
+"use client";
+
+import type {SVGProps} from "react";
+const VisualStudio = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+export default VisualStudio;
diff --git a/assets/icons/tailwind.tsx b/assets/icons/tailwind.tsx
new file mode 100644
index 0000000..f13c7f1
--- /dev/null
+++ b/assets/icons/tailwind.tsx
@@ -0,0 +1,31 @@
+'use client'
+
+import type {SVGProps} from "react";
+const TailwindCSS = (props: SVGProps) => (
+
+
+
+
+
+
+
+
+
+);
+export default TailwindCSS;
diff --git a/assets/icons/typescript.tsx b/assets/icons/typescript.tsx
new file mode 100644
index 0000000..4bb1e4c
--- /dev/null
+++ b/assets/icons/typescript.tsx
@@ -0,0 +1,23 @@
+'use client'
+
+import type {SVGProps} from "react";
+const TypeScript = (props: SVGProps) => (
+
+
+
+
+);
+export default TypeScript;
diff --git a/assets/icons/whatsapp.tsx b/assets/icons/whatsapp.tsx
new file mode 100644
index 0000000..1024ed6
--- /dev/null
+++ b/assets/icons/whatsapp.tsx
@@ -0,0 +1,23 @@
+"use client";
+
+import type {SVGProps} from "react";
+const WhatsApp = (props: SVGProps) => (
+
+
+
+
+);
+export default WhatsApp;
diff --git a/assets/icons/windows.tsx b/assets/icons/windows.tsx
new file mode 100644
index 0000000..31b453c
--- /dev/null
+++ b/assets/icons/windows.tsx
@@ -0,0 +1,18 @@
+"use client";
+
+import type {SVGProps} from "react";
+const Windows = (props: SVGProps) => (
+
+
+
+);
+export default Windows;
diff --git a/assets/icons/x.tsx b/assets/icons/x.tsx
new file mode 100644
index 0000000..5212cda
--- /dev/null
+++ b/assets/icons/x.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import type {SVGProps} from "react";
+const X = (props: SVGProps) => (
+
+
+
+);
+export default X;
diff --git a/astro.config.mjs b/astro.config.mjs
deleted file mode 100644
index 2c1987d..0000000
--- a/astro.config.mjs
+++ /dev/null
@@ -1,22 +0,0 @@
-import mdx from "@astrojs/mdx";
-// @ts-check
-import { defineConfig } from "astro/config";
-
-import sitemap from "@astrojs/sitemap";
-
-import tailwind from "@astrojs/tailwind";
-
-import react from "@astrojs/react";
-
-// https://astro.build/config
-export default defineConfig({
- site: "https://owenstack.github.io",
- integrations: [
- mdx(),
- sitemap(),
- tailwind({
- applyBaseStyles: false,
- }),
- react(),
- ],
-});
diff --git a/biome.json b/biome.json
index beb54d0..3867749 100644
--- a/biome.json
+++ b/biome.json
@@ -1,18 +1,5 @@
{
- "$schema": "https://biomejs.dev/schemas/1.9.3/schema.json",
- "vcs": {
- "enabled": false,
- "clientKind": "git",
- "useIgnoreFile": false
- },
- "files": {
- "ignoreUnknown": false,
- "ignore": []
- },
- "formatter": {
- "enabled": true,
- "indentStyle": "tab"
- },
+ "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json",
"organizeImports": {
"enabled": true
},
@@ -21,10 +8,5 @@
"rules": {
"recommended": true
}
- },
- "javascript": {
- "formatter": {
- "quoteStyle": "double"
- }
}
}
diff --git a/bun.lockb b/bun.lockb
index 087585e..ea70fa6 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/components.json b/components.json
index 7f5a3eb..13e9fd7 100644
--- a/components.json
+++ b/components.json
@@ -1,20 +1,17 @@
{
- "$schema": "https://ui.shadcn.com/schema.json",
- "style": "new-york",
- "rsc": false,
- "tsx": true,
- "tailwind": {
- "config": "tailwind.config.mjs",
- "css": "src/styles/global.css",
- "baseColor": "neutral",
- "cssVariables": true,
- "prefix": ""
- },
- "aliases": {
- "components": "@/components",
- "utils": "@/lib/utils",
- "ui": "@/components/ui",
- "lib": "@/lib",
- "hooks": "@/hooks"
- }
-}
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "new-york",
+ "rsc": true,
+ "tsx": true,
+ "tailwind": {
+ "config": "tailwind.config.ts",
+ "css": "app/globals.css",
+ "baseColor": "gray",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils"
+ }
+}
\ No newline at end of file
diff --git a/components/AboutSection.tsx b/components/AboutSection.tsx
new file mode 100644
index 0000000..30e9891
--- /dev/null
+++ b/components/AboutSection.tsx
@@ -0,0 +1,93 @@
+"use client";
+
+import { useLanguage } from "@/lib/providers";
+import { aboutSection, carouselItems } from "@/lib/data";
+import {
+ Carousel,
+ CarouselItem,
+ CarouselContent,
+ CarouselNext,
+ CarouselPrevious,
+} from "./ui/carousel";
+import Image from "next/image";
+import { header } from "@/lib/constants";
+
+export default function AboutSection() {
+ const { language } = useLanguage();
+
+ return (
+
+
+
+
+
+ {language === "EN"
+ ? aboutSection.title.en
+ : aboutSection.title.fr}
+
+
+ {language === "EN"
+ ? aboutSection.description.en
+ : aboutSection.description.fr}
+
+
+
+
+ {language === "EN"
+ ? carouselItems.items.map((item, index) => (
+
+
+
+
+
+ {item.title.en}
+
+
+ {item.description.en}
+
+
+
+
+ ))
+ : carouselItems.items.map((item, index) => (
+
+
+
+
+
+ {item.title.fr}
+
+
+ {item.description.fr}
+
+
+
+
+ ))}
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/BlogSection.tsx b/components/BlogSection.tsx
new file mode 100644
index 0000000..892f7ac
--- /dev/null
+++ b/components/BlogSection.tsx
@@ -0,0 +1,38 @@
+"use client";
+
+import { useLanguage } from "@/lib/providers";
+import { blogSection } from "@/lib/data";
+import { header } from "@/lib/constants";
+import TopPosts from "./TopPosts";
+import type { OstDocument } from "outstatic";
+
+export default function BlogSection({ posts }: { posts: OstDocument[] }) {
+ const { language } = useLanguage();
+
+ return (
+
+
+
+
+
+ {language === "EN"
+ ? blogSection.subtitle.en
+ : blogSection.subtitle.fr}
+
+
+ {language === "EN" ? blogSection.title.en : blogSection.title.fr}
+
+
+ {language === "EN"
+ ? blogSection.description.en
+ : blogSection.description.fr}
+
+
+
+
+
+
+ );
+}
diff --git a/components/BlogSectionWrapper.tsx b/components/BlogSectionWrapper.tsx
new file mode 100644
index 0000000..41233c5
--- /dev/null
+++ b/components/BlogSectionWrapper.tsx
@@ -0,0 +1,7 @@
+import { FetchTopPosts } from "./FetchTopPosts";
+import BlogSection from "./BlogSection";
+
+export default async function BlogSectionWrapper() {
+ const posts = await FetchTopPosts();
+ return ;
+}
diff --git a/components/ContactSection.tsx b/components/ContactSection.tsx
new file mode 100644
index 0000000..772df7c
--- /dev/null
+++ b/components/ContactSection.tsx
@@ -0,0 +1,175 @@
+"use client";
+
+import { Button } from "./ui/button";
+import { toast } from "sonner";
+import { useTransition } from "react";
+import { useLanguage } from "@/lib/providers";
+import { contactSection, formDetails, buttonLabels } from "@/lib/data";
+import { Label } from "./ui/label";
+import { Input } from "./ui/input";
+import { Textarea } from "./ui/textarea";
+import Link from "next/link";
+import Github from "@/assets/icons/github";
+import Instagram from "@/assets/icons/instagram";
+import LinkedIn from "@/assets/icons/linkedin";
+import Gmail from "@/assets/icons/mail";
+import WhatsApp from "@/assets/icons/whatsapp";
+import X from "@/assets/icons/x";
+import { header } from "@/lib/constants";
+
+export default function ContactSection() {
+ const { language } = useLanguage();
+ const [pending, startTransition] = useTransition();
+
+ async function handleSubmit(event: React.FormEvent) {
+ event.preventDefault();
+
+ const form = event.currentTarget;
+ const formData = new FormData(form);
+
+ startTransition(async () => {
+ await fetch("/api/contact", {
+ method: "POST",
+ body: formData,
+ }).then((response) => {
+ if (!response.ok) {
+ if (!response.ok) {
+ toast(
+ `${
+ language === "EN"
+ ? formDetails.error.title.en
+ : formDetails.error.title.fr
+ }`,
+ {
+ description: `${
+ language === "EN"
+ ? formDetails.error.description.en
+ : formDetails.error.description.fr
+ }`,
+ },
+ );
+ } else {
+ toast(
+ `${
+ language === "EN"
+ ? formDetails.success.title.en
+ : formDetails.success.title.fr
+ }`,
+ {
+ description: `${
+ language === "EN"
+ ? formDetails.success.description.en
+ : formDetails.success.description.fr
+ }`,
+ },
+ );
+ form.reset();
+ }
+ }
+ });
+ });
+ }
+
+ return (
+
+
+
+
+
+ {language === "EN"
+ ? contactSection.subtitle.en
+ : contactSection.subtitle.fr}
+
+
+ {language === "EN"
+ ? contactSection.title.en
+ : contactSection.title.fr}
+
+
+ {language === "EN"
+ ? contactSection.description.en
+ : contactSection.description.fr}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/FetchTopPosts.tsx b/components/FetchTopPosts.tsx
new file mode 100644
index 0000000..b95d30b
--- /dev/null
+++ b/components/FetchTopPosts.tsx
@@ -0,0 +1,11 @@
+import { getDocuments } from "outstatic/server";
+
+export async function FetchTopPosts() {
+ const posts = getDocuments("posts", ["title", "slug"])
+ .sort(
+ (a, b) =>
+ new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime(),
+ )
+ .slice(0, 4);
+ return posts;
+}
diff --git a/components/Header.tsx b/components/Header.tsx
new file mode 100644
index 0000000..574c446
--- /dev/null
+++ b/components/Header.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import LanguageToggle from "./LanguageToggle";
+import ThemeToggle from "./ThemeToggle";
+import { Button } from "./ui/button";
+import { Logo } from "./Logo";
+
+export default function Header() {
+ return (
+
+ );
+}
diff --git a/components/HeroSection.tsx b/components/HeroSection.tsx
new file mode 100644
index 0000000..25bb62d
--- /dev/null
+++ b/components/HeroSection.tsx
@@ -0,0 +1,52 @@
+"use client";
+
+import Link from "next/link";
+import Image from "next/image";
+import { Button } from "./ui/button";
+import { heroSection, buttonLabels } from "@/lib/data";
+import { useLanguage } from "@/lib/providers";
+import { header } from "@/lib/constants";
+
+export default function HeroSection() {
+ const { language } = useLanguage();
+
+ return (
+
+
+
+
+
+
+
+
+ {language === "EN" ? heroSection.title.en : heroSection.title.fr}
+
+
+ {language === "EN"
+ ? heroSection.description.en
+ : heroSection.description.fr}
+
+
+
+
+
+ {language === "EN"
+ ? buttonLabels.hire.en
+ : buttonLabels.hire.fr}
+
+
+
+
+
+
+ );
+}
diff --git a/components/LanguageToggle.tsx b/components/LanguageToggle.tsx
new file mode 100644
index 0000000..a32132e
--- /dev/null
+++ b/components/LanguageToggle.tsx
@@ -0,0 +1,26 @@
+"use client";
+
+import { useLanguage } from "@/lib/providers";
+import { buttonLabels } from "@/lib/data";
+import { Button } from "./ui/button";
+import { header } from "@/lib/constants";
+
+const LanguageSwitch: React.FC = () => {
+ const { language, toggleLanguage } = useLanguage();
+
+ return (
+ <>
+
+ {language === "EN"
+ ? buttonLabels.language.en
+ : buttonLabels.language.fr}
+
+ >
+ );
+};
+
+export default LanguageSwitch;
diff --git a/components/Logo.tsx b/components/Logo.tsx
new file mode 100644
index 0000000..4ebc9d7
--- /dev/null
+++ b/components/Logo.tsx
@@ -0,0 +1,12 @@
+import localFont from "next/font/local";
+import Link from "next/link";
+
+const logo = localFont({ src: "../assets/fonts/logo.ttf" });
+
+export function Logo({ className }: { className?: string }) {
+ return (
+
+ Owenstack
+
+ );
+}
diff --git a/components/ProjectSection.tsx b/components/ProjectSection.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/components/StackSection.tsx b/components/StackSection.tsx
new file mode 100644
index 0000000..e862b99
--- /dev/null
+++ b/components/StackSection.tsx
@@ -0,0 +1,252 @@
+"use client";
+
+import { useLanguage } from "@/lib/providers";
+import { stackSection, categoryHeaders } from "@/lib/data";
+import Html from "@/assets/icons/html";
+import CSS from "@/assets/icons/css";
+import JavaScript from "@/assets/icons/javascript";
+import React from "@/assets/icons/react";
+import Next from "@/assets/icons/next";
+import TailwindCSS from "@/assets/icons/tailwind";
+import TypeScript from "@/assets/icons/typescript";
+import Sketch from "@/assets/icons/sketch";
+import Figma from "@/assets/icons/figma";
+import PayloadCMS from "@/assets/icons/payload";
+import Sanity from "@/assets/icons/sanity";
+import Node from "@/assets/icons/node";
+import Bun from "@/assets/icons/bun";
+import Docker from "@/assets/icons/docker";
+import Express from "@/assets/icons/express";
+import MySQL from "@/assets/icons/sql";
+import PostgreSQL from "@/assets/icons/postgresql";
+import Redis from "@/assets/icons/redis";
+import Neon from "@/assets/icons/neon";
+import VisualStudio from "@/assets/icons/studio";
+import VisualStudioCode from "@/assets/icons/code";
+import Windows from "@/assets/icons/windows";
+import Linux from "@/assets/icons/linux";
+import Electron from "@/assets/icons/electron";
+import Git from "@/assets/icons/git";
+import Medusa from "@/assets/icons/medusa";
+import Spotify from "@/assets/icons/spotify";
+import { header } from "@/lib/constants";
+
+export default function StackSection() {
+ const { language } = useLanguage();
+
+ return (
+
+
+
+
+
+ {language === "EN"
+ ? stackSection.title.en
+ : stackSection.title.fr}
+
+
+ {language === "EN"
+ ? stackSection.description.en
+ : stackSection.description.fr}
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.basic.en
+ : categoryHeaders.basic.fr}
+
+
+
+
+ CSS
+
+
+
+ JavaScript
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.intermediate.en
+ : categoryHeaders.intermediate.fr}
+
+
+
+
+ React
+
+
+
+ TypeScript
+
+
+
+ TailwindCSS
+
+
+
+ NextJS
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.design.en
+ : categoryHeaders.design.fr}
+
+
+
+
+ Sketch
+
+
+
+ Figma
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.cms.en
+ : categoryHeaders.cms.fr}
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.backend.en
+ : categoryHeaders.backend.fr}
+
+
+
+
+ NodeJS
+
+
+
+ Bun
+
+
+
+ Docker
+
+
+
+ Express
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.db.en
+ : categoryHeaders.db.fr}
+
+
+
+
+ MySQL
+
+
+
+
+ Redis
+
+
+
+ Neon
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.editors.en
+ : categoryHeaders.editors.fr}
+
+
+
+
+ Visual Studio
+
+
+
+
+ Visual Studio Code
+
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.os.en
+ : categoryHeaders.os.fr}
+
+
+
+
+ Windows
+
+
+
+ Linux
+
+
+
+
+
+ {language === "EN"
+ ? categoryHeaders.others.en
+ : categoryHeaders.others.fr}
+
+
+
+
+ Electron
+
+
+
+ Git
+
+
+
+ Medusa
+
+
+
+ Spotify
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/ThemeToggle.tsx b/components/ThemeToggle.tsx
new file mode 100644
index 0000000..2a2fae4
--- /dev/null
+++ b/components/ThemeToggle.tsx
@@ -0,0 +1,39 @@
+"use client";
+
+import {Moon, Sun} from "lucide-react";
+import {useTheme} from "next-themes";
+
+import {Button} from "@/components/ui/button";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger
+} from "@/components/ui/dropdown-menu";
+
+export default function ThemeToggle() {
+ const {setTheme} = useTheme();
+
+ return (
+
+
+
+
+
+ Toggle theme
+
+
+
+ setTheme("light")}>
+ Light
+
+ setTheme("dark")}>
+ Dark
+
+ setTheme("system")}>
+ System
+
+
+
+ );
+}
diff --git a/components/TopPosts.tsx b/components/TopPosts.tsx
new file mode 100644
index 0000000..cdfd137
--- /dev/null
+++ b/components/TopPosts.tsx
@@ -0,0 +1,23 @@
+import { Card, CardHeader, CardTitle, CardFooter } from "./ui/card";
+import Link from "next/link";
+import { Button } from "./ui/button";
+import type { OstDocument } from "outstatic";
+
+export default function TopPosts({ posts }: { posts: OstDocument[] }) {
+ return (
+
+ {posts.map((post) => (
+
+
+ {post.title}
+
+
+
+ Read More
+
+
+
+ ))}
+
+ );
+}
diff --git a/components/ui/button.tsx b/components/ui/button.tsx
new file mode 100644
index 0000000..0270f64
--- /dev/null
+++ b/components/ui/button.tsx
@@ -0,0 +1,57 @@
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
+ {
+ variants: {
+ variant: {
+ default:
+ "bg-primary text-primary-foreground shadow hover:bg-primary/90",
+ destructive:
+ "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
+ outline:
+ "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
+ secondary:
+ "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-9 px-4 py-2",
+ sm: "h-8 rounded-md px-3 text-xs",
+ lg: "h-10 rounded-md px-8",
+ icon: "h-9 w-9",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ }
+)
+
+export interface ButtonProps
+ extends React.ButtonHTMLAttributes,
+ VariantProps {
+ asChild?: boolean
+}
+
+const Button = React.forwardRef(
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
+ const Comp = asChild ? Slot : "button"
+ return (
+
+ )
+ }
+)
+Button.displayName = "Button"
+
+export { Button, buttonVariants }
diff --git a/src/components/ui/card.tsx b/components/ui/card.tsx
similarity index 100%
rename from src/components/ui/card.tsx
rename to components/ui/card.tsx
diff --git a/components/ui/carousel.tsx b/components/ui/carousel.tsx
new file mode 100644
index 0000000..f9b6840
--- /dev/null
+++ b/components/ui/carousel.tsx
@@ -0,0 +1,262 @@
+"use client"
+
+import * as React from "react"
+import { ArrowLeftIcon, ArrowRightIcon } from "@radix-ui/react-icons"
+import useEmblaCarousel, {
+ type UseEmblaCarouselType,
+} from "embla-carousel-react"
+
+import { cn } from "@/lib/utils"
+import { Button } from "@/components/ui/button"
+
+type CarouselApi = UseEmblaCarouselType[1]
+type UseCarouselParameters = Parameters
+type CarouselOptions = UseCarouselParameters[0]
+type CarouselPlugin = UseCarouselParameters[1]
+
+type CarouselProps = {
+ opts?: CarouselOptions
+ plugins?: CarouselPlugin
+ orientation?: "horizontal" | "vertical"
+ setApi?: (api: CarouselApi) => void
+}
+
+type CarouselContextProps = {
+ carouselRef: ReturnType[0]
+ api: ReturnType[1]
+ scrollPrev: () => void
+ scrollNext: () => void
+ canScrollPrev: boolean
+ canScrollNext: boolean
+} & CarouselProps
+
+const CarouselContext = React.createContext(null)
+
+function useCarousel() {
+ const context = React.useContext(CarouselContext)
+
+ if (!context) {
+ throw new Error("useCarousel must be used within a ")
+ }
+
+ return context
+}
+
+const Carousel = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes & CarouselProps
+>(
+ (
+ {
+ orientation = "horizontal",
+ opts,
+ setApi,
+ plugins,
+ className,
+ children,
+ ...props
+ },
+ ref
+ ) => {
+ const [carouselRef, api] = useEmblaCarousel(
+ {
+ ...opts,
+ axis: orientation === "horizontal" ? "x" : "y",
+ },
+ plugins
+ )
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false)
+ const [canScrollNext, setCanScrollNext] = React.useState(false)
+
+ const onSelect = React.useCallback((api: CarouselApi) => {
+ if (!api) {
+ return
+ }
+
+ setCanScrollPrev(api.canScrollPrev())
+ setCanScrollNext(api.canScrollNext())
+ }, [])
+
+ const scrollPrev = React.useCallback(() => {
+ api?.scrollPrev()
+ }, [api])
+
+ const scrollNext = React.useCallback(() => {
+ api?.scrollNext()
+ }, [api])
+
+ const handleKeyDown = React.useCallback(
+ (event: React.KeyboardEvent) => {
+ if (event.key === "ArrowLeft") {
+ event.preventDefault()
+ scrollPrev()
+ } else if (event.key === "ArrowRight") {
+ event.preventDefault()
+ scrollNext()
+ }
+ },
+ [scrollPrev, scrollNext]
+ )
+
+ React.useEffect(() => {
+ if (!api || !setApi) {
+ return
+ }
+
+ setApi(api)
+ }, [api, setApi])
+
+ React.useEffect(() => {
+ if (!api) {
+ return
+ }
+
+ onSelect(api)
+ api.on("reInit", onSelect)
+ api.on("select", onSelect)
+
+ return () => {
+ api?.off("select", onSelect)
+ }
+ }, [api, onSelect])
+
+ return (
+
+
+ {children}
+
+
+ )
+ }
+)
+Carousel.displayName = "Carousel"
+
+const CarouselContent = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => {
+ const { carouselRef, orientation } = useCarousel()
+
+ return (
+
+ )
+})
+CarouselContent.displayName = "CarouselContent"
+
+const CarouselItem = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => {
+ const { orientation } = useCarousel()
+
+ return (
+
+ )
+})
+CarouselItem.displayName = "CarouselItem"
+
+const CarouselPrevious = React.forwardRef<
+ HTMLButtonElement,
+ React.ComponentProps
+>(({ className, variant = "outline", size = "icon", ...props }, ref) => {
+ const { orientation, scrollPrev, canScrollPrev } = useCarousel()
+
+ return (
+
+
+ Previous slide
+
+ )
+})
+CarouselPrevious.displayName = "CarouselPrevious"
+
+const CarouselNext = React.forwardRef<
+ HTMLButtonElement,
+ React.ComponentProps
+>(({ className, variant = "outline", size = "icon", ...props }, ref) => {
+ const { orientation, scrollNext, canScrollNext } = useCarousel()
+
+ return (
+
+
+ Next slide
+
+ )
+})
+CarouselNext.displayName = "CarouselNext"
+
+export {
+ type CarouselApi,
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselPrevious,
+ CarouselNext,
+}
diff --git a/components/ui/dropdown-menu.tsx b/components/ui/dropdown-menu.tsx
new file mode 100644
index 0000000..242b07a
--- /dev/null
+++ b/components/ui/dropdown-menu.tsx
@@ -0,0 +1,205 @@
+"use client"
+
+import * as React from "react"
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
+import {
+ CheckIcon,
+ ChevronRightIcon,
+ DotFilledIcon,
+} from "@radix-ui/react-icons"
+
+import { cn } from "@/lib/utils"
+
+const DropdownMenu = DropdownMenuPrimitive.Root
+
+const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
+
+const DropdownMenuGroup = DropdownMenuPrimitive.Group
+
+const DropdownMenuPortal = DropdownMenuPrimitive.Portal
+
+const DropdownMenuSub = DropdownMenuPrimitive.Sub
+
+const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
+
+const DropdownMenuSubTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean
+ }
+>(({ className, inset, children, ...props }, ref) => (
+
+ {children}
+
+
+))
+DropdownMenuSubTrigger.displayName =
+ DropdownMenuPrimitive.SubTrigger.displayName
+
+const DropdownMenuSubContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DropdownMenuSubContent.displayName =
+ DropdownMenuPrimitive.SubContent.displayName
+
+const DropdownMenuContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, sideOffset = 4, ...props }, ref) => (
+
+
+
+))
+DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
+
+const DropdownMenuItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean
+ }
+>(({ className, inset, ...props }, ref) => (
+
+))
+DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
+
+const DropdownMenuCheckboxItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, checked, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+))
+DropdownMenuCheckboxItem.displayName =
+ DropdownMenuPrimitive.CheckboxItem.displayName
+
+const DropdownMenuRadioItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+))
+DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
+
+const DropdownMenuLabel = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean
+ }
+>(({ className, inset, ...props }, ref) => (
+
+))
+DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
+
+const DropdownMenuSeparator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
+
+const DropdownMenuShortcut = ({
+ className,
+ ...props
+}: React.HTMLAttributes) => {
+ return (
+
+ )
+}
+DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
+
+export {
+ DropdownMenu,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuCheckboxItem,
+ DropdownMenuRadioItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuShortcut,
+ DropdownMenuGroup,
+ DropdownMenuPortal,
+ DropdownMenuSub,
+ DropdownMenuSubContent,
+ DropdownMenuSubTrigger,
+ DropdownMenuRadioGroup,
+}
diff --git a/components/ui/input.tsx b/components/ui/input.tsx
new file mode 100644
index 0000000..a92b8e0
--- /dev/null
+++ b/components/ui/input.tsx
@@ -0,0 +1,25 @@
+import * as React from "react"
+
+import { cn } from "@/lib/utils"
+
+export interface InputProps
+ extends React.InputHTMLAttributes {}
+
+const Input = React.forwardRef(
+ ({ className, type, ...props }, ref) => {
+ return (
+
+ )
+ }
+)
+Input.displayName = "Input"
+
+export { Input }
diff --git a/components/ui/label.tsx b/components/ui/label.tsx
new file mode 100644
index 0000000..5341821
--- /dev/null
+++ b/components/ui/label.tsx
@@ -0,0 +1,26 @@
+"use client"
+
+import * as React from "react"
+import * as LabelPrimitive from "@radix-ui/react-label"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const labelVariants = cva(
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
+)
+
+const Label = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef &
+ VariantProps
+>(({ className, ...props }, ref) => (
+
+))
+Label.displayName = LabelPrimitive.Root.displayName
+
+export { Label }
diff --git a/components/ui/progress.tsx b/components/ui/progress.tsx
new file mode 100644
index 0000000..4fc3b47
--- /dev/null
+++ b/components/ui/progress.tsx
@@ -0,0 +1,28 @@
+"use client"
+
+import * as React from "react"
+import * as ProgressPrimitive from "@radix-ui/react-progress"
+
+import { cn } from "@/lib/utils"
+
+const Progress = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, value, ...props }, ref) => (
+
+
+
+))
+Progress.displayName = ProgressPrimitive.Root.displayName
+
+export { Progress }
diff --git a/components/ui/sonner.tsx b/components/ui/sonner.tsx
new file mode 100644
index 0000000..452f4d9
--- /dev/null
+++ b/components/ui/sonner.tsx
@@ -0,0 +1,31 @@
+"use client"
+
+import { useTheme } from "next-themes"
+import { Toaster as Sonner } from "sonner"
+
+type ToasterProps = React.ComponentProps
+
+const Toaster = ({ ...props }: ToasterProps) => {
+ const { theme = "system" } = useTheme()
+
+ return (
+
+ )
+}
+
+export { Toaster }
diff --git a/components/ui/textarea.tsx b/components/ui/textarea.tsx
new file mode 100644
index 0000000..d1258e4
--- /dev/null
+++ b/components/ui/textarea.tsx
@@ -0,0 +1,24 @@
+import * as React from "react"
+
+import { cn } from "@/lib/utils"
+
+export interface TextareaProps
+ extends React.TextareaHTMLAttributes {}
+
+const Textarea = React.forwardRef(
+ ({ className, ...props }, ref) => {
+ return (
+
+ )
+ }
+)
+Textarea.displayName = "Textarea"
+
+export { Textarea }
diff --git a/lib/constants.ts b/lib/constants.ts
new file mode 100644
index 0000000..e3dc35a
--- /dev/null
+++ b/lib/constants.ts
@@ -0,0 +1,4 @@
+// for more constants, for now just my heading font
+import localFont from "next/font/local";
+
+export const header = localFont({src: '../assets/fonts/head.ttf'})
\ No newline at end of file
diff --git a/lib/data.tsx b/lib/data.tsx
new file mode 100644
index 0000000..3e0e224
--- /dev/null
+++ b/lib/data.tsx
@@ -0,0 +1,212 @@
+export const heroSection = {
+ title: {
+ en: `Hi, I'm Jideofor Owen Enukoha-Efobi`,
+ fr: "Salut, je suis Jideofor Owen Enukoha-Efobi",
+ },
+ description: {
+ en: "Full-stack web developer that builds beautiful and functional websites",
+ fr: "Développeur Web full-stack qui crée des sites Web beaux et fonctionnels",
+ },
+};
+
+export const aboutSection = {
+ title: {
+ en: "About Me",
+ fr: "Sur moi",
+ },
+ description: {
+ en: "Get to know more about my background and experience as a web developer",
+ fr: "Apprenez-en davantage sur mon parcours et mon expérience en tant que développeur Web",
+ },
+};
+
+export const carouselItems = {
+ items: [
+ {
+ title: {
+ en: "Minimalism",
+ fr: "Minimalisme",
+ },
+ description: {
+ en: "Embracing a minimalist approach, I prioritize simplicity and functionality over excess, creating a clean and uncluttered experience.",
+ fr: `En embrassant une approche minimaliste, nous accordons la priorité à la simplicité et à la fonctionnalité plutôt qu'à l'excès, créant une expérience épurée et dégagée.`,
+ },
+ image: "https://images.unsplash.com/photo-1449247709967-d4461a6a6103",
+ },
+ {
+ title: {
+ en: "Multilingual",
+ fr: "Multilingue",
+ },
+ description: {
+ en: "Celebrating diversity, I am fluent in multiple languages, including English, French, Yoruba, and Igbo.",
+ fr: `Célébrant la diversité, je parle couramment plusieurs langues, dont l'anglais, le français, le yoruba et l'igbo.`,
+ },
+ image: "https://images.unsplash.com/photo-1571498664957-fde285d79857",
+ },
+ {
+ title: {
+ en: "Hobbies",
+ fr: "Passe-temps",
+ },
+ description: {
+ en: "When not writing code, I am indulging myself in monochrome photography and the intellectually stimulating game of chess, fostering creativity and strategic thinking",
+ fr: `Lorsque je n'écris pas de code, je m'adonne à la photographie monochrome et au jeu d'échecs intellectuellement stimulant, favorisant la créativité et la réflexion stratégique.`,
+ },
+ image: "https://images.unsplash.com/photo-1528819622765-d6bcf132f793",
+ },
+ ],
+};
+
+export const stackSection = {
+ title: {
+ en: "Tech Stack",
+ fr: "Pile technologique",
+ },
+ description: {
+ en: "Here are the tools and technologies I use to build modern web applications",
+ fr: `Voici les outils et technologies que j'utilise pour créer des applications Web modernes`,
+ },
+};
+
+export const blogSection = {
+ subtitle: {
+ en: "Blog",
+ fr: "Blog",
+ },
+ title: {
+ en: "Latest Articles",
+ fr: "Derniers articles",
+ },
+ description: {
+ en: "Check out my rants on development and happenings in the tech world",
+ fr: "Découvrez mes diatribes sur le développement et les événements dans le monde de la technologie",
+ },
+};
+
+export const projectSection = {
+ subtitle: {
+ en: "Portfolio",
+ fr: "Portefeuille",
+ },
+ title: {
+ en: "My Latest Projects",
+ fr: "Mes derniers projets",
+ },
+ description: {
+ en: "Signed a few NDAs but here are a few projects I can attribute alongside my personal projects",
+ fr: "J'ai signé quelques NDA mais voici quelques projets que je peux attribuer aux côtés de mes projets personnels",
+ },
+};
+
+export const contactSection = {
+ subtitle: {
+ en: "Contact",
+ fr: "Contact",
+ },
+ title: {
+ en: "Get In Touch",
+ fr: "Get In Touch",
+ },
+ description: {
+ en: `Have a project in mind or just want to say hello? Fill out the form below and I'll get back to you as soon as I can`,
+ fr: "Vous avez un projet en tête ou souhaitez simplement vous dire bonjour ? Remplissez le formulaire ci-dessous et je vous répondrai dès que possible",
+ },
+};
+
+export const categoryHeaders = {
+ basic: {
+ en: "The Pioneers",
+ fr: "Les pionniers",
+ },
+ intermediate: {
+ en: "The Successors",
+ fr: "Les successeurs",
+ },
+ design: {
+ en: "Design Tools",
+ fr: "Outils de conception",
+ },
+ cms: {
+ en: "Content Management System",
+ fr: "Système de gestion de contenu",
+ },
+ backend: {
+ en: "Backend Tools",
+ fr: "Outils back-end",
+ },
+ db: {
+ en: "Databases",
+ fr: "Bases de données",
+ },
+ editors: {
+ en: "Code Editors",
+ fr: "Éditeurs de code",
+ },
+ os: {
+ en: "Operating Systems",
+ fr: "Systèmes d'exploitation",
+ },
+ others: {
+ en: "Others",
+ fr: "Autres",
+ },
+};
+
+export const formDetails = {
+ name: {
+ en: "Name",
+ fr: "Nom",
+ },
+ email: {
+ en: "Email",
+ fr: "Email",
+ },
+ message: {
+ en: "Message",
+ fr: "Message",
+ },
+ error: {
+ title: {
+ en: "Something went wrong",
+ fr: `Quelque chose s'est mal passé`,
+ },
+ description: {
+ en: "Your message was not delivered, please try again",
+ fr: `Votre message n'a pas été livré, veuillez réessayer`,
+ },
+ },
+ success: {
+ title: {
+ en: "Message Sent",
+ fr: "Message envoyé",
+ },
+ description: {
+ en: "Your message has been received. I will get back to you soon",
+ fr: "Votre message a été reçu. Je serai de retour avec vous dans un instant",
+ },
+ },
+};
+
+export const buttonLabels = {
+ language: {
+ en: "EN",
+ fr: "FR",
+ },
+ hire: {
+ en: "Hire Me",
+ fr: "Engagez moi",
+ },
+ message: {
+ en: "Send Message",
+ fr: "Envoyer le message",
+ },
+ blog: {
+ en: "Read more",
+ fr: "En savoir plus",
+ },
+ resume: {
+ en: "View Resume",
+ fr: "Voir le CV",
+ },
+};
diff --git a/lib/providers.tsx b/lib/providers.tsx
new file mode 100644
index 0000000..e391811
--- /dev/null
+++ b/lib/providers.tsx
@@ -0,0 +1,80 @@
+'use client'
+
+import { useEffect, useState, createContext, useContext } from "react";
+import { ThemeProvider as NextThemesProvider } from "next-themes";
+import { type ThemeProviderProps } from "next-themes/dist/types";
+
+type language = "EN" | "FR";
+
+type LanguageContextProviderProps = {
+ children: React.ReactNode;
+};
+
+type LanguageContextType = {
+ language: language;
+ toggleLanguage: () => void;
+};
+
+const LanguageContext = createContext(null);
+
+export function LanguageContextProvider({
+ children,
+}: LanguageContextProviderProps) {
+ const [language, setLanguage] = useState("EN");
+
+ const toggleLanguage = () => {
+ if (language === "EN") {
+ setLanguage("FR");
+ window.localStorage.setItem("language", "FR");
+ document.documentElement.classList.add("FR");
+ } else {
+ setLanguage("EN");
+ window.localStorage.setItem("language", "EN");
+ document.documentElement.classList.remove("FR");
+ }
+ };
+
+ useEffect(() => {
+ const localLanguage = window.localStorage.getItem(
+ "language"
+ ) as language | null;
+
+ if (localLanguage) {
+ setLanguage(localLanguage);
+
+ if (localLanguage === "FR") {
+ document.documentElement.classList.add("FR");
+ }
+ } else if (window.matchMedia("(prefers-color-scheme: FR)").matches) {
+ setLanguage("FR");
+ document.documentElement.classList.add("FR");
+ }
+ }, []);
+
+ return (
+
+ {children}
+
+ );
+}
+
+export function useLanguage() {
+ const context = useContext(LanguageContext);
+
+ if (context === null) {
+ throw new Error(
+ "useLanguage must be used within a LanguageContextProvider"
+ );
+ }
+
+ return context;
+}
+
+export function ThemeProvider({children, ...props}: ThemeProviderProps) {
+ return {children}
+}
\ No newline at end of file
diff --git a/lib/utils.ts b/lib/utils.ts
new file mode 100644
index 0000000..d084cca
--- /dev/null
+++ b/lib/utils.ts
@@ -0,0 +1,6 @@
+import { type ClassValue, clsx } from "clsx"
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
diff --git a/next.config.mjs b/next.config.mjs
new file mode 100644
index 0000000..22edd82
--- /dev/null
+++ b/next.config.mjs
@@ -0,0 +1,11 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ images: {
+ remotePatterns: [
+ { hostname: "*.unsplash.com" },
+ { hostname: "avatars.githubusercontent.com" },
+ ],
+ },
+};
+
+export default nextConfig;
diff --git a/outstatic/content/posts/.gitkeep b/outstatic/content/posts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/outstatic/content/posts/building-a-restful-api-with-node-js-a-comprehensive-guide.md b/outstatic/content/posts/building-a-restful-api-with-node-js-a-comprehensive-guide.md
new file mode 100644
index 0000000..7a34a7d
--- /dev/null
+++ b/outstatic/content/posts/building-a-restful-api-with-node-js-a-comprehensive-guide.md
@@ -0,0 +1,760 @@
+---
+author:
+ name: 'owenEEfobi'
+ picture: 'https://avatars.githubusercontent.com/u/89314101?v=4'
+coverImage: '/images/image2-A1ND.jpeg'
+title: 'Building a RESTful API with Node.js: A Comprehensive Guide'
+status: 'published'
+slug: 'building-a-restful-api-with-node-js-a-comprehensive-guide'
+description: ''
+publishedAt: '2024-08-30T23:46:35.699Z'
+---
+
+### Introduction
+
+Hello, developers! In today's digital world, creating robust and efficient RESTful APIs is a fundamental skill for any backend developer. If you're ready to dive into the world of Node.js and learn how to build RESTful APIs, you're in the right place. In this comprehensive guide, we'll take you through every step of the process, from understanding REST principles to deploying your API in a production environment.
+
+## **Chapter 1: What is a RESTful API?**
+
+Before we start coding, let's get a solid understanding of REST (Representational State Transfer) principles.
+
+### **Understanding REST**
+
+**REST** is an architectural style for designing networked applications. At its core, REST defines a set of constraints that promote simplicity, scalability, and statelessness in the communication between clients (such as web browsers or mobile apps) and servers.
+
+Key REST Principles:
+
+1. **Resources:** In REST, everything is considered a resource, which can be an object, data, or service. These resources are uniquely identified by URLs, such as `https://api.example.com/users`.
+
+2. **HTTP Methods:** REST uses standard HTTP methods to perform operations on resources:
+
+ - `GET`: Retrieve data (e.g., reading a user's profile).
+
+ - `POST`: Create new resources (e.g., adding a new user).
+
+ - `PUT`: Update existing resources (e.g., modifying user information).
+
+ - `DELETE`: Remove resources (e.g., deleting a user's account).
+
+3. **Stateless:** RESTful interactions are stateless, meaning each request from a client to a server must contain all the information needed to understand and process the request. The server doesn't store any client state between requests.
+
+4. **Uniform Interface:** REST encourages a uniform and consistent interface for interacting with resources. This simplifies both client and server implementations.
+
+### **Example:**
+
+Let's say you're building a RESTful API for a blog platform. In this context:
+
+- **Resources:** Resources could include blog posts, comments, and user profiles. Each of these is represented by a unique URL, such as `/posts/123` for a specific blog post.
+
+- **HTTP Methods:** You'd use HTTP methods to interact with these resources. For instance:
+
+ - `GET /posts/123`: Retrieve the content of a specific blog post.
+
+ - `POST /posts`: Create a new blog post.
+
+ - `PUT /posts/123`: Update the content of a specific blog post.
+
+ - `DELETE /posts/123`: Delete a specific blog post.
+
+- **Stateless:** Each request to your API should contain all the necessary information. For instance, if a client wants to update a blog post, they should send the entire updated content within the request; the server won't remember previous interactions.
+
+- **Uniform Interface:** You'd consistently design your API endpoints. For example, using clear and predictable URL structures for all resources, such as `/posts`, `/comments`, and `/users`. This consistency makes it easier for clients to understand and interact with your API.
+
+Understanding these fundamental principles of REST is crucial as we proceed with building a RESTful API using Node.js. It will guide our design and development decisions to create an efficient and maintainable API.
+
+## **Chapter 2: Setting Up Your Node.js Environment**
+
+To build a RESTful API with Node.js, you need to set up your development environment. This foundational step is crucial for a smooth development journey.
+
+**Installation of Node.js and npm**
+
+1. **Node.js Installation:** Begin by downloading and installing Node.js from the official website ([**https://nodejs.org/**](https://nodejs.org/)). Node.js includes both the Node runtime and npm, the Node Package Manager.
+
+2. **Verify Installation:** To ensure a successful installation, open your command line (or terminal) and run the following commands:
+
+ `node -v npm -v`
+
+ *You should see the versions of Node.js and npm displayed, confirming the installation.*
+
+ ### **Project Structure**
+
+ Organizing your project structure is crucial for maintainability. Here's an example of a basic project structure:
+
+ ```javascript
+ my-api/
+ │
+ ├── node_modules/
+ │
+ ├── src/
+ │ ├── controllers/
+ │ ├── models/
+ │ ├── routes/
+ │ ├── app.js
+ │
+ ├── package.json
+ ├── package-lock.json
+ ├── .gitignore
+ ├── README.md
+ ```
+
+ In this structure:
+
+ - `node_modules/` stores your project's dependencies.
+
+ - `src/` is where you'll place your API code, including controllers, models, and routes.
+
+ - `app.js` is the entry point of your application.
+
+ - `package.json` and `package-lock.json` list project dependencies and metadata.
+
+ - `.gitignore` excludes certain files and directories from version control.
+
+ - `README.md` contains documentation for your project.
+
+ Let's say you want to create a basic Node.js project and set up Visual Studio Code. You can follow these steps:
+
+ 1. Install Node.js by downloading the installer from the official website and following the installation instructions.
+
+ 2. After installing Node.js, open your command line (or terminal) and run the following commands to verify the installation:
+
+ ```javascript
+ node -v
+ npm -v
+ ```
+
+ *You should see the versions of Node.js and npm displayed.*
+
+ 3. Download and install Visual Studio Code from the VSCode website.
+
+ 4. Open VSCode and create a new workspace or open an existing project folder.
+
+ 5. Install essential extensions by searching for "Node.js", "npm", and "ESLint" in the Extensions sidebar.
+
+ 6. Customize your workspace settings, including code formatting and linting, based on your preferences.
+
+ By completing these steps, you'll have a well-configured development environment ready for building your RESTful API with Node.js. You'll be set to move on to the next chapters, where you'll dive into the practical aspects of API development.
+
+## **Chapter 3: Creating Your First API Endpoint**
+
+Now that we've laid the groundwork for building a RESTful API, it's time to roll up our sleeves and start coding. We'll create a basic API endpoint using Node.js and the Express.js framework. This will be your first step towards building a fully functional RESTful API.
+
+### **Setting Up Express.js**
+
+First, make sure you have Node.js and npm installed on your system. Then, create a new directory for your project and initialize it with npm:
+
+```bash
+mkdir my-api
+cd my-api
+npm init -y
+```
+
+Next, install Express.js as a dependency:
+
+`npm install express`
+
+### **Creating Your First API Endpoint**
+
+Now, let's create a simple Express.js server and define our first API endpoint. Create a file called `app.js` (or any name you prefer) and add the following code:
+
+```javascript
+const express = require('express');
+const app = express();
+const port = 3000; // You can choose any port you like
+
+// Define a basic route
+app.get('/', (req, res) => {
+ res.send('Welcome to my API!');
+});
+
+// Start the server
+app.listen(port, () => {
+ console.log(`Server is running on port ${port}`);
+});
+```
+
+*In this example, we've:*
+
+1. *Imported the Express.js library and created an Express application.*
+
+2. *Defined a route using* `app.get('/')`*. This route responds to HTTP GET requests at the root URL ('/'). When someone accesses your API's root, they'll receive the "Welcome to my API!" message.*
+
+3. *Started the server on the specified port (in this case, 3000) and logged a message to the console.*
+
+ ### **Testing Your First Endpoint**
+
+ To test your API, open your terminal, navigate to your project directory, and run:
+
+ `node app.js`
+
+ Your server should start, and you'll see the "Server is running on port 3000" message in your console.
+
+ Now, open a web browser or use a tool like Postman to send a GET request to `http://localhost:3000`. You should receive the "Welcome to my API!" response.
+
+ Congratulations! You've created your first API endpoint using Node.js and Express.js.
+
+## **Chapter 4: Handling Data with CRUD Operations**
+
+A RESTful API isn't complete without data storage. We'll delve into the essential aspects of data handling in your RESTful API built with Node.js. To illustrate these concepts, we'll use a simple example of a "To-Do List" API. We'll cover how to perform CRUD operations (Create, Read, Update, Delete) on this list.
+
+### **Choosing a Database**
+
+Before diving into CRUD operations, you need a database to store your data. In our example, we'll use MongoDB, a popular NoSQL database, and Mongoose, an ODM (Object Data Modeling) library for MongoDB in Node.js.
+
+```javascript
+// Example: Setting up MongoDB with Mongoose
+const mongoose = require('mongoose');
+
+mongoose.connect('mongodb://localhost/todo-app', {
+ useNewUrlParser: true,
+ useUnifiedTopology: true,
+});
+
+const todoSchema = new mongoose.Schema({
+ task: String,
+ completed: Boolean,
+});
+
+const Todo = mongoose.model('Todo', todoSchema);
+```
+
+### **Create (POST) Operation**
+
+To add new tasks to our To-Do List, we'll implement the Create operation. Clients can send a POST request with a JSON payload containing the task details.
+
+```javascript
+// Example: Creating a new To-Do task
+app.post('/todos', async (req, res) => {
+ const { task, completed } = req.body;
+ const newTodo = new Todo({ task, completed });
+
+ try {
+ const savedTodo = await newTodo.save();
+ res.status(201).json(savedTodo);
+ } catch (err) {
+ res.status(400).json({ error: err.message });
+ }
+});
+```
+
+### **Read (GET) Operation**
+
+To retrieve tasks from the To-Do List, we'll implement the Read operation. Clients can send GET requests to fetch all tasks or a specific task by its ID.
+
+```javascript
+// Example: Retrieving all To-Do tasks
+app.get('/todos', async (req, res) => {
+ try {
+ const todos = await Todo.find();
+ res.status(200).json(todos);
+ } catch (err) {
+ res.status(500).json({ error: err.message });
+ }
+});
+
+// Example: Retrieving a specific To-Do task by ID
+app.get('/todos/:id', async (req, res) => {
+ const { id } = req.params;
+
+ try {
+ const todo = await Todo.findById(id);
+ if (!todo) {
+ return res.status(404).json({ error: 'Task not found' });
+ }
+ res.status(200).json(todo);
+ } catch (err) {
+ res.status(500).json({ error: err.message });
+ }
+});
+```
+
+### **Update (PUT) Operation**
+
+To modify existing tasks in our To-Do List, we'll implement the Update operation. Clients can send a PUT request with updated task details.
+
+```javascript
+// Example: Updating a To-Do task by ID
+app.put('/todos/:id', async (req, res) => {
+ const { id } = req.params;
+ const { task, completed } = req.body;
+
+ try {
+ const updatedTodo = await Todo.findByIdAndUpdate(id, { task, completed }, { new: true });
+ if (!updatedTodo) {
+ return res.status(404).json({ error: 'Task not found' });
+ }
+ res.status(200).json(updatedTodo);
+ } catch (err) {
+ res.status(500).json({ error: err.message });
+ }
+});
+```
+
+### **Delete (DELETE) Operation**
+
+To remove tasks from our To-Do List, we'll implement the Delete operation. Clients can send a DELETE request with the task's ID to delete it.
+
+```javascript
+// Example: Deleting a To-Do task by ID
+app.delete('/todos/:id', async (req, res) => {
+ const { id } = req.params;
+
+ try {
+ const deletedTodo = await Todo.findByIdAndDelete(id);
+ if (!deletedTodo) {
+ return res.status(404).json({ error: 'Task not found' });
+ }
+ res.status(204).send();
+ } catch (err) {
+ res.status(500).json({ error: err.message });
+ }
+});
+```
+
+We've seen how to create, read, update, and delete data in your RESTful API using Node.js and MongoDB. These operations form the backbone of many APIs, and mastering them is essential for building robust and functional applications.
+
+## **Chapter 5: Structuring Your API**
+
+As your API grows, maintaining code structure becomes crucial. We'll introduce you to the concept of routing in Express.js, showing you how to organize your API endpoints efficiently. Proper structuring ensures that your API remains scalable and easy to manage as it grows.
+
+**Route Organization**
+
+To begin, let's consider a simple example. Imagine you're building a blog API that handles posts and comments. Instead of having all your routes and logic in a single file, you'll create a directory structure like this:
+
+```markdown
+- src
+ - routes
+ - posts.js
+ - comments.js
+ - controllers
+ - postsController.js
+ - commentsController.js
+```
+
+Here's how this structure works:
+
+1. **Routes**: Each resource (posts and comments) has its route file. These route files define the API endpoints related to that resource.
+
+ **Example - posts.js**:
+
+ ```javascript
+ const express = require('express');
+ const router = express.Router();
+ const postsController = require('../controllers/postsController');
+
+ router.get('/', postsController.getAllPosts);
+ router.get('/:id', postsController.getPostById);
+ router.post('/', postsController.createPost);
+ router.put('/:id', postsController.updatePost);
+ router.delete('/:id', postsController.deletePost);
+
+ module.exports = router;
+ ```
+
+2. **Controllers**: The controllers handle the logic for each endpoint. Separating this logic from the route definitions keeps your code organized and makes it easier to test.
+
+ **Example - postsController.js**:
+
+ ```javascript
+ const { Post } = require('../models'); // Assuming you have a Post model
+
+ module.exports = {
+ getAllPosts: async (req, res) => {
+ try {
+ const posts = await Post.find();
+ res.json(posts);
+ } catch (error) {
+ res.status(500).json({ error: 'Internal Server Error' });
+ }
+ },
+ // Other controller methods for handling specific endpoints
+ };
+ ```
+
+3. **Middleware**: You can also use middleware functions to handle tasks like authentication or validation before reaching the controller. Middleware can be applied globally or to specific routes as needed.
+
+ ```javascript
+ // Middleware function for authentication
+ function authenticate(req, res, next) {
+ // Check authentication logic here
+ if (authenticated) {
+ next(); // Continue to the next middleware or controller
+ } else {
+ res.status(401).json({ error: 'Unauthorized' });
+ }
+ }
+
+ // Applying middleware to a specific route
+ router.post('/', authenticate, postsController.createPost);
+ ```
+
+### **Benefits**
+
+This structured approach offers several benefits:
+
+- **Maintainability**: With separate route and controller files, your codebase becomes easier to navigate and update.
+
+- **Scalability**: As your API grows, you can continue adding more routes and controllers without cluttering a single file.
+
+- **Testing**: Isolating controller logic allows for efficient unit testing, ensuring each function works as expected.
+
+- **Collaboration**: When working on a team, this structure simplifies collaboration as team members can focus on specific routes or controllers.
+
+By structuring your API in this way, you'll have a solid foundation to build upon as you continue to develop and expand your Node.js RESTful API.
+
+## **Chapter 6: Middleware and Authentication**
+
+Security is paramount in API development. Middleware and authentication are essential for ensuring your API is secure and operates smoothly. We'll explore techniques like JWT (JSON Web Tokens) for secure user authentication.
+
+### **Middleware in Express.js**
+
+Middleware functions in Express.js are intermediary functions that process requests before they reach the final route handler. They provide a way to perform tasks such as logging, authentication, and data validation. Here's an example of middleware in action:
+
+```javascript
+const express = require('express');
+const app = express();
+
+// Custom middleware function
+const logger = (req, res, next) => {
+ console.log(`Request received at ${new Date()}`);
+ next(); // Move to the next middleware or route handler
+};
+
+app.use(logger); // Register the middleware globally
+
+app.get('/', (req, res) => {
+ res.send('Hello, World!');
+});
+
+app.listen(3000, () => {
+ console.log('Server is running on port 3000');
+});
+```
+
+In this example, the `logger` middleware logs the timestamp of each incoming request before passing it to the route handler. Middleware like this can be used to authenticate users, handle CORS (Cross-Origin Resource Sharing), and perform various other tasks.
+
+### **User Authentication with JWT**
+
+User authentication is crucial for securing your API. One common method is using JSON Web Tokens (JWT). Here's a simplified example of JWT authentication:
+
+```javascript
+const express = require('express');
+const app = express();
+const jwt = require('jsonwebtoken');
+
+// Secret key for JWT
+const secretKey = 'your-secret-key';
+
+// Middleware for verifying JWT
+const verifyToken = (req, res, next) => {
+ const token = req.headers.authorization;
+
+ if (!token) {
+ return res.status(401).json({ message: 'Unauthorized' });
+ }
+
+ jwt.verify(token, secretKey, (err, decoded) => {
+ if (err) {
+ return res.status(401).json({ message: 'Invalid token' });
+ }
+ req.user = decoded; // Store user information in the request object
+ next();
+ });
+};
+
+app.use(express.json());
+
+app.post('/login', (req, res) => {
+ // Authenticate the user (e.g., check username and password)
+ const user = { id: 1, username: 'exampleuser' };
+
+ // Create and sign a JWT
+ jwt.sign(user, secretKey, (err, token) => {
+ if (err) {
+ return res.status(500).json({ message: 'Error generating token' });
+ }
+ res.json({ token });
+ });
+});
+
+app.get('/protected', verifyToken, (req, res) => {
+ res.json({ message: 'This is a protected route', user: req.user });
+});
+
+app.listen(3000, () => {
+ console.log('Server is running on port 3000');
+});
+```
+
+In this example, when a user logs in, they receive a JWT token. To access protected routes like `/protected`, the client must include the token in the request's `Authorization` header. The `verifyToken` middleware checks the token's validity, allowing access only to authenticated users.
+
+By mastering middleware and authentication, you can enhance the security and functionality of your Node.js RESTful API, ensuring that it's well-prepared to handle user interactions and protect sensitive data.
+
+## **Chapter 7: Error Handling and Validation**
+
+No API is error-free, but you can handle errors gracefully. You'll ensure your API responds with meaningful error messages and maintains data integrity. Let's explore this topic with an example:
+
+### **Error Handling:**
+
+#### 1. Centralized Error Handling Middleware
+
+To handle errors consistently across your API, you can create centralized error-handling middleware. This middleware catches errors thrown by other parts of your application and sends appropriate responses to clients. Here's a simplified example using Express.js:
+
+```javascript
+// Error handling middleware
+app.use((err, req, res, next) => {
+ // Handle different types of errors
+ if (err instanceof CustomError) {
+ // Handle specific custom error
+ res.status(err.statusCode).json({ error: err.message });
+ } else {
+ // Handle generic server errors
+ res.status(500).json({ error: "Internal Server Error" });
+ }
+});
+```
+
+#### 2. Custom Error Classes
+
+Creating custom error classes can make error handling more structured. For instance, you can define a custom `BadRequestError` class for client input validation errors:
+
+```javascript
+class BadRequestError extends Error {
+ constructor(message) {
+ super(message);
+ this.name = "BadRequestError";
+ this.statusCode = 400;
+ }
+}
+
+// Usage
+if (!isValidInput) {
+ throw new BadRequestError("Invalid input data");
+}
+```
+
+### **Data Validation:**
+
+#### 1. Input Validation with Express Validator
+
+Express Validator is a popular middleware for validating input data. You can use it to check request parameters, body, and query strings. Here's a basic example:
+
+```javascript
+const { body, validationResult } = require("express-validator");
+
+// Validation middleware
+app.post(
+ "/api/users",
+ [
+ body("email").isEmail().normalizeEmail(),
+ body("password").isLength({ min: 6 }),
+ ],
+ (req, res) => {
+ const errors = validationResult(req);
+ if (!errors.isEmpty()) {
+ return res.status(400).json({ errors: errors.array() });
+ }
+
+ // Proceed with data processing
+ }
+);
+```
+
+#### 2. Database Integrity Checks
+
+When working with databases, ensure data integrity through database constraints and transactions. For example, you can use a unique constraint to prevent duplicate entries in a users table:
+
+```sql
+CREATE TABLE users (
+ id serial PRIMARY KEY,
+ username VARCHAR (255) UNIQUE NOT NULL,
+ -- other columns
+);
+```
+
+With these techniques, you can handle errors gracefully and validate data effectively in your Node.js API, ensuring a smooth and secure user experience.
+
+## **Chapter 8: Testing Your API**
+
+Quality assurance is crucial before deploying your API. We'll introduce you to testing frameworks like Mocha and Chai, teaching you how to write unit and integration tests. You'll gain confidence in your API's reliability.
+
+**The Importance of Testing**
+
+Testing serves several essential purposes in API development:
+
+1. **Bug Detection:** Testing helps identify and fix bugs and issues in your API before they reach production, reducing the risk of unexpected problems.
+
+2. **Ensuring Functionality:** It verifies that your API endpoints work as expected, handling different HTTP methods and scenarios correctly.
+
+3. **Improving Code Quality:** Testing encourages good coding practices by promoting modularity and testable code.
+
+### **Types of API Testing**
+
+There are various types of testing you can perform on your API:
+
+1. **Unit Testing:** Focuses on testing individual functions or modules in isolation. For example, you might write unit tests for specific API routes or middleware functions.
+
+2. **Integration Testing:** Tests how different parts of your API work together. For instance, you can test how your API interacts with a database or external services.
+
+3. **End-to-End (E2E) Testing:** This involves testing the entire flow of a request from the client to the server and back. It ensures that all components work together harmoniously.
+
+### **Testing Tools and Libraries**
+
+Here are some popular testing tools and libraries for Node.js API testing:
+
+1. **Mocha:** A flexible and widely used testing framework for Node.js. It provides a clean structure for writing tests and supports various assertion libraries.
+
+2. **Chai:** A popular assertion library that works well with Mocha. It provides expressive and readable assertions for your test cases.
+
+3. **Supertest:** A library for making HTTP requests to your API during testing. It simplifies the process of sending requests and validating responses.
+
+### **Example: Writing a Unit Test**
+
+Let's consider an example of writing a unit test for a simple API endpoint using Mocha and Chai. Assume you have an API endpoint that retrieves a list of users from a database.
+
+```javascript
+// Import necessary modules and dependencies
+const chai = require('chai');
+const chaiHttp = require('chai-http');
+const app = require('../app'); // Replace with your app file
+
+chai.use(chaiHttp);
+const expect = chai.expect;
+
+describe('GET /users', () => {
+ it('should return a list of users', (done) => {
+ chai
+ .request(app)
+ .get('/users')
+ .end((err, res) => {
+ expect(res).to.have.status(200);
+ expect(res.body).to.be.an('array');
+ expect(res.body).to.have.length.above(0);
+ done();
+ });
+ });
+});
+```
+
+In this example, we're testing the `/users` endpoint by making a GET request to it using `chai-http`. We then use Chai's assertions to check if the response has a 200 status code, contains an array, and has at least one user in the response body.
+
+By writing and running tests like this, you can ensure that your API endpoints behave as expected and catch any regressions as you make changes to your codebase.
+
+## **Chapter 9: Documentation**
+
+In the world of API development, documentation is like the user manual for your API. It provides essential information to other developers on how to use your API effectively. We'll explore the importance of documentation and how to create clear, comprehensive documentation for your RESTful API.
+
+### **Why Documentation Matters**
+
+Documentation serves several critical purposes:
+
+1. **Accessibility:** It makes your API accessible to other developers by explaining its endpoints, request parameters, response formats, and authentication methods.
+
+2. **Reduced Support Burden:** Good documentation reduces the need for support inquiries, as developers can find answers to their questions in the documentation.
+
+3. **Onboarding:** It helps new developers understand your API quickly, reducing the learning curve.
+
+4. **API Consumption:** Documentation aids developers in integrating your API into their applications, leading to increased adoption.
+
+### **Example: Swagger for API Documentation**
+
+One popular tool for creating API documentation is Swagger. Here's a brief example of how to use Swagger to document your API in a Node.js application:
+
+1. **Install Swagger:** Start by installing the `swagger-jsdoc` and `swagger-ui-express` packages via npm.
+
+ ```bash
+ npm install swagger-jsdoc swagger-ui-express
+ ```
+
+2. **Create Swagger Definition:** Define your API's documentation in a separate JavaScript file, often named `swagger.js`. Here's a minimal example:
+
+ ```javascript
+ const swaggerJsdoc = require('swagger-jsdoc');
+
+ const options = {
+ swaggerDefinition: {
+ openapi: '3.0.0',
+ info: {
+ title: 'Sample API Documentation',
+ version: '1.0.0',
+ description: 'Documentation for a sample RESTful API',
+ },
+ },
+ apis: ['routes/*.js'], // Path to your route files
+ };
+
+ const specs = swaggerJsdoc(options);
+
+ module.exports = specs;
+ ```
+
+3. **Integrate Swagger UI:** In your Express.js application, use `swagger-ui-express` to set up a route for accessing the Swagger documentation.
+
+ ```javascript
+ const express = require('express');
+ const swaggerUi = require('swagger-ui-express');
+ const swaggerSpec = require('./swagger');
+
+ const app = express();
+
+ app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
+
+ // ...your other routes and middleware
+
+ app.listen(3000, () => {
+ console.log('Server is running on port 3000');
+ });
+ ```
+
+4. **View Documentation:** Start your Node.js server and access the API documentation at `http://localhost:3000/api-docs`. You'll find interactive documentation where users can explore your API's endpoints, make test requests, and see example responses.
+
+By following this example, you can quickly create documentation for your RESTful API using Swagger. Remember to document each endpoint, including descriptions, request parameters, response formats, and any authentication requirements. Well-documented APIs are more likely to be adopted and appreciated by other developers.
+
+## **Chapter 10: Deployment and Scaling**
+
+In this final chapter, we'll explore the crucial steps of deploying your Node.js RESTful API and scaling it to meet the demands of real-world applications. Let's delve into these topics with an example:
+
+### **Deployment**
+
+#### Example: Deploying to Heroku
+
+Heroku is a popular platform-as-a-service (PaaS) that simplifies the deployment process. Here's a simplified guide to deploying your Node.js API to Heroku:
+
+1. **Create a Heroku Account:** If you don't have one, sign up for a Heroku account.
+
+2. **Install Heroku CLI:** Download and install the Heroku Command Line Interface (CLI) to interact with Heroku from your terminal.
+
+3. **Prepare Your API:** Ensure your API code is well-organized and includes a `package.json` file with dependencies listed.
+
+4. **Initialize a Git Repository:** If your project isn't already in a Git repository, run `git init` in your project directory.
+
+5. **Login to Heroku:** Use the `heroku login` command to log in to your Heroku account.
+
+6. **Create a Heroku App:** Run `heroku create` to create a new Heroku app. Heroku will provide you with a unique app URL.
+
+7. **Configure Environment Variables:** If your API relies on environment variables (e.g., database connection strings or API keys), set them in your Heroku app using `heroku config:set`.
+
+8. **Deploy Your App:** Push your code to Heroku's remote repository with `git push heroku master`. Heroku will automatically build and deploy your app.
+
+9. **Open Your App:** After a successful deployment, open your app in your web browser using `heroku open`.
+
+### **Scaling**
+
+#### Example: Scaling with Load Balancers
+
+As your API gains popularity, you may need to scale it to handle increased traffic. One way to achieve this is by using load balancers to distribute incoming requests across multiple server instances. Let's consider an example with NGINX:
+
+1. **Install and Configure NGINX:** Set up NGINX on one or more server instances. Configure NGINX to act as a reverse proxy, forwarding incoming requests to your Node.js API servers.
+
+2. **Launch Multiple API Server Instances:** Run multiple instances of your Node.js API on different ports or servers. Ensure they can handle requests independently.
+
+3. **Configure NGINX Load Balancer:** Update your NGINX configuration to include load balancing directives, specifying the backend servers and load balancing algorithm (e.g., round-robin).
+
+4. **Traffic Distribution:** NGINX will now distribute incoming requests evenly across your API server instances, ensuring high availability and improved performance.
+
+By deploying to Heroku and scaling with a load balancer like NGINX, you can handle increasing traffic while maintaining the reliability of your Node.js RESTful API. Remember that scaling strategies may vary depending on your specific application requirements and infrastructure.
+
+In conclusion, mastering the deployment and scaling of your Node.js RESTful API is essential for making it accessible to users and ensuring its performance under heavy loads. These skills will help you take your API from development to production, serving users reliably and efficiently.
+
+### **Conclusion**
+
+Congratulations! You've completed this comprehensive guide on building a RESTful API with Node.js. You've gained a deep understanding of REST principles, created API endpoints, handled data, implemented security, and learned how to deploy and scale your API. Now, armed with this knowledge, you're ready to build powerful and scalable web services that can serve a multitude of applications. Keep coding, keep learning, and continue to explore the endless possibilities of Node.js API development. Happy coding!
\ No newline at end of file
diff --git a/outstatic/content/posts/mastering-node-js-a-beginner-s-guide.md b/outstatic/content/posts/mastering-node-js-a-beginner-s-guide.md
new file mode 100644
index 0000000..ce60f4f
--- /dev/null
+++ b/outstatic/content/posts/mastering-node-js-a-beginner-s-guide.md
@@ -0,0 +1,475 @@
+---
+title: 'Mastering Node.js: A Beginner''s Guide'
+status: 'published'
+author:
+ name: 'owenEEfobi'
+ picture: 'https://avatars.githubusercontent.com/u/89314101?v=4'
+slug: 'mastering-node-js-a-beginner-s-guide'
+description: ''
+coverImage: '/images/image1-E3Mj.jpeg'
+publishedAt: '2024-08-30T23:30:49.841Z'
+---
+
+## Introduction
+
+Hello, fellow developers! Today, we embark on an exciting journey into the world of Node.js. Whether you're just starting your coding adventure or you're a seasoned developer looking to expand your skillset, Node.js has a lot to offer. In this beginner's guide, we'll dive deep into Node.js, exploring its core concepts and practical applications, all while keeping it engaging and informative.
+
+## Chapter 1: What is Node.js?
+
+To kick things off, let's get a solid understanding of Node.js. Node.js is an open-source, server-side runtime environment that allows you to run JavaScript code outside of a web browser. It's built on Chrome's V8 JavaScript engine, making it incredibly fast and efficient. Node.js empowers developers to build scalable, high-performance applications, making it a popular choice in the world of back-end development.
+
+## Chapter 2: Setting Up Your Environment
+
+Before we can master Node.js, we need to set up our development environment. Whether you're using Windows, macOS, or Linux, we'll walk you through the installation process step by step. Windows is a popular operating system among developers, and with the right tools and configurations, you can enjoy a seamless Node.js development experience.
+
+### **Installation**
+
+1. **Node.js**: The first step is to install Node.js itself. Visit the official Node.js website ([**https://nodejs.org/**](https://nodejs.org/)) and download the Windows Installer (.msi) for the LTS (Long-Term Support) version. Run the installer and follow the on-screen instructions. Node.js comes bundled with npm, the Node Package Manager.
+
+ [Node.js](https://drive.google.com/file/d/1ZJSLafyTwigES-4jplcQ9_jbxUhp-5zW/view?usp=drive_link)
+
+2. **Visual Studio Code**: For a fantastic code editing experience, we recommend installing Visual Studio Code (VS Code), a lightweight yet powerful code editor developed by Microsoft. Download it from the VS Code website ([**https://code.visualstudio.com/**](https://code.visualstudio.com/)) and follow the installation instructions.
+
+### *Configuring Visual Studio Code*
+
+1. **Extensions**: VS Code offers a wide range of extensions to enhance your Node.js development. Install extensions like "Node.js" and "npm Intellisense" to make your coding process more efficient.
+
+2. **Integrated Terminal**: VS Code comes with an integrated terminal, which is incredibly handy for running Node.js commands and scripts. You can open it by pressing `` Ctrl + ` ``(backtick). It will automatically detect your Node.js installation.
+
+3. **Debugging**: VS Code offers excellent debugging capabilities for Node.js. You can set breakpoints, inspect variables, and step through your code with ease.
+
+### *Working with the Windows Command Line*
+
+When working with Node.js on Windows, you'll often find yourself using the command line. Here are some essential Windows-specific tips:
+
+1. **File Paths**: In Windows, file paths use backslashes (e.g., `C:\Users\Jack\Documents`) instead of forward slashes. Be mindful of this when specifying file paths in your Node.js code.
+
+2. **Environment Variables**: To set environment variables for your Node.js projects, you can use the Windows Environment Variables dialog. This is useful for storing sensitive information like API keys or database connection strings securely.
+
+### *WSL (Windows Subsystem for Linux)*
+
+For some advanced scenarios or when working on projects that require Linux-specific tools, you might consider using the Windows Subsystem for Linux (WSL). WSL allows you to run a Linux distribution alongside your Windows installation, providing a more Linux-like development environment.
+
+## Chapter 3: Understanding Asynchronous JavaScript
+
+Imagine you're in a bustling coffee shop, waiting for your favorite brew. Instead of standing in line, staring at the barista, you're free to chat with friends, read a book, or even work on your laptop. That's the essence of asynchronous programming – you don't have to wait for one task to complete before moving on to the next.
+
+In this chapter, we're going to break down the concept of asynchronous JavaScript into bite-sized, action-packed segments:
+
+**1. Callbacks**\
+Callbacks are like the action heroes of asynchronous programming. They allow you to define what happens once a particular task is completed. Picture yourself sending an army of functions into battle, each waiting for its turn to execute. Callbacks are your trusty commanders, ensuring everything gets done without a hitch.
+
+**2. Promises**\
+Promises bring a touch of elegance to your code. They're like written contracts – a commitment to do something when a task is complete, regardless of success or failure. It's like having a crystal ball that lets you peer into the future of your code execution.
+
+**3. Async/Await**\
+Enter the superheroes of asynchronous code. With async/await, your code becomes a gripping narrative where you await the results of your asynchronous tasks with bated breath. It's like writing a thriller novel where you can pause and resume the action whenever you like.
+
+## Chapter 4: Modules and npm
+
+Node.js has a powerful module system that encourages code modularity and reusability. Modules are at the core of structuring Node.js applications, promoting code modularity and reusability. npm, on the other hand, is a powerful tool for managing and sharing packages and libraries with the Node.js community.
+
+### **Modules in Node.js**
+
+Node.js uses a CommonJS module system, allowing you to break your code into smaller, manageable pieces. These pieces, known as modules, can be imported and reused across your application. Here's a basic example of creating and using modules:
+
+```typescript
+// Create a module named "myModule.js"
+// myModule.js
+const greeting = "Hello, ";
+
+function sayHello(name) {
+ console.log(greeting + name);
+}
+
+module.exports = { sayHello };
+
+// In another file, you can import and use the module
+const myModule = require("./myModule");
+myModule.sayHello("Owen"); // Outputs: Hello, Owen
+```
+
+*In this example, we create a module named "myModule.js" that exports a function* `sayHello`*. We then import and use this module in another file.*
+
+### **Using npm to Manage Packages**
+
+npm is the default package manager for Node.js, and it simplifies the process of installing and managing third-party packages. Here's how you can use npm:
+
+1. **Initializing a New Project**: To start a new Node.js project, navigate to your project directory in the terminal and run `npm init`. This command will guide you through setting up your project and creating a `package.json` file to manage dependencies.
+
+2. **Installing Packages**: You can use `npm install` to install packages. For example, to install the popular `express` web framework, you'd run `npm install express`.
+
+3. **Managing Dependencies**: Your project's dependencies are listed in the `package.json` file. You can manually edit this file to add, remove, or update packages. When you make changes, run `npm install` again to update your project's dependencies.
+
+4. **Using Installed Packages**: Once a package is installed, you can require it in your code just like your own modules. For instance, with `express`:
+
+ `const express = require("express"); const app = express();`
+
+By embracing modules and npm, you can leverage a vast ecosystem of libraries and packages to enhance your Node.js applications. This modular approach simplifies code management, encourages code reuse, and streamlines the development process. Let's explore the key concepts with a simple example.
+
+## Chapter 5: Building Your First Web Server
+
+It's time to put theory into practice! In this chapter, we'll guide you through building a basic web server using Node.js. You'll learn how to handle HTTP requests and responses, laying the foundation for more complex applications.
+
+**Setting Up Your Server**
+
+First, you'll need to create a JavaScript file for your server. Let's call it `server.js`. In this file, we'll require the `http` module, which is a built-in Node.js module for handling HTTP requests and responses.
+
+`const http = require('http');`
+
+Next, we'll define a callback function that will be executed every time a request is made to our server. This function receives two arguments: `req` (the request object) and `res` (the response object).
+
+```typescript
+const server = http.createServer((req, res) => {
+ // Your code for handling requests goes here
+});
+```
+
+### **Handling Requests**
+
+nside the callback function, you can determine how your server responds to different types of requests. Let's create a basic example that responds with "Hello, World!" for all incoming requests.
+
+```typescript
+const server = http.createServer((req, res) => {
+ // Set the response status and headers
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+
+ // Write the response body
+ res.end('Hello, World!\n');
+});
+```
+
+### **Starting the Server**
+
+Now that we've defined our server, it's time to start it and make it listen for incoming requests. We'll specify the port on which the server should listen, typically port 3000 for development.
+
+```typescript
+const PORT = 3000;
+
+server.listen(PORT, () => {
+ console.log(`Server is running on port ${PORT}`);
+});
+```
+
+### **Testing Your Server**
+
+To test your server, open your terminal, and navigate to the directory containing `server.js`, and run the following command:
+
+`node server.js`
+
+You should see the "Server is running on port 3000" message in your console, indicating that your server is up and running. Now, open your web browser and visit `http://localhost:3000`. You should see "Hello, World!" displayed in your browser.
+
+Congratulations! You've successfully built your first web server using Node.js. This is just the beginning of what you can achieve with Node.js in backend development. You can expand on this example by handling different routes, serving HTML pages, or even integrating with databases to create dynamic web applications. The possibilities are endless, and Node.js makes it all possible.
+
+## Chapter 6: Working with Databases
+
+No back-end development journey is complete without databases. Databases are where you store, manage, and retrieve structured data. Node.js provides various modules and libraries to work with different types of databases, such as SQL databases like MySQL and PostgreSQL or NoSQL databases like MongoDB.
+
+### **Introduction to Databases**
+
+Databases are where you store, manage, and retrieve structured data. Node.js provides various modules and libraries to work with different types of databases, such as SQL databases like MySQL and PostgreSQL or NoSQL databases like MongoDB.
+
+### **Connecting to a Database**
+
+Connecting to a database is the first step. Here's an example using the popular MongoDB database with the `mongoose` library:
+
+```typescript
+const mongoose = require('mongoose');
+
+mongoose.connect('mongodb://localhost/mydatabase', {
+ useNewUrlParser: true,
+ useUnifiedTopology: true
+})
+ .then(() => console.log('Connected to MongoDB'))
+ .catch(err => console.error('Error connecting to MongoDB', err));
+```
+
+### **Performing CRUD Operations**
+
+Once connected, you can perform CRUD (Create, Read, Update, Delete) operations. Let's look at an example of creating and retrieving data with MongoDB:
+
+```typescript
+// Define a schema and model
+const mongoose = require('mongoose');
+
+const userSchema = new mongoose.Schema({
+ name: String,
+ email: String
+});
+
+const User = mongoose.model('User', userSchema);
+
+// Create a new user
+const newUser = new User({
+ name: 'John Doe',
+ email: 'john@example.com'
+});
+
+newUser.save()
+ .then(() => console.log('User saved:', newUser))
+ .catch(err => console.error('Error saving user:', err));
+
+// Retrieve users
+User.find()
+ .then(users => console.log('Users:', users))
+ .catch(err => console.error('Error fetching users:', err));
+```
+
+### **Querying and Updating Data**
+
+You can also query and update data based on specific criteria:
+
+```typescript
+// Find a user by email
+User.findOne({ email: 'john@example.com' })
+ .then(user => {
+ if (user) {
+ console.log('Found user:', user);
+
+ // Update user's name
+ user.name = 'Jane Doe';
+ return user.save();
+ } else {
+ console.log('User not found');
+ }
+ })
+ .then(updatedUser => console.log('Updated user:', updatedUser))
+ .catch(err => console.error('Error:', err));
+```
+
+### **Conclusion**
+
+Whether you choose SQL or NoSQL databases, understanding how to connect, perform CRUD operations, and manipulate data is fundamental for building robust and data-driven applications. In your journey as a Node.js developer, mastering database interactions is a valuable skill.
+
+## Chapter 7: Creating APIs
+
+APIs (Application Programming Interfaces) are the backbone of modern web applications. In the context of Node.js, creating APIs enables you to expose your application's functionalities to other services, applications, or even third-party developers. We'll delve into creating RESTful APIs using Node.js, and I'll provide you with some examples to illustrate the concepts.
+
+**Getting Started:**
+
+To create APIs with Node.js, you'll need to use a framework like Express.js. Express is a minimal and flexible Node.js web application framework that simplifies the process of building robust APIs. First, ensure you have Express.js installed in your project by running:
+
+`npm install express`
+
+**Example: Creating a Simple API**
+
+Let's start with a basic example. Suppose you want to create an API that retrieves a list of books. Here's a simple Express.js application to achieve this:
+
+```typescript
+const express = require('express');
+const app = express();
+const port = 3000;
+
+// Sample data (usually you'd fetch this from a database)
+const books = [
+ { id: 1, title: 'The Great Gatsby' },
+ { id: 2, title: 'To Kill a Mockingbird' },
+ { id: 3, title: '1984' },
+];
+
+// Define a route to get all books
+app.get('/api/books', (req, res) => {
+ res.json(books);
+});
+
+app.listen(port, () => {
+ console.log(`Server is running on port ${port}`);
+});
+```
+
+*In this example, we've created a simple Express server that listens on port 3000. When you make a GET request to '/api/books', it responds with a JSON array containing a list of books.*
+
+**Testing Your API:**
+
+You can test this API using tools like Postman or by making HTTP requests in your browser. Simply navigate to '[**http://localhost:3000/api/books**](http://localhost:3000/api/books)', and you should see the list of books returned as JSON.
+
+**Creating More Advanced APIs:**
+
+As you progress in your Node.js journey, you can extend your APIs to handle CRUD operations (Create, Read, Update, Delete), implement authentication and authorization, and connect to databases to store and retrieve data. Express.js provides a robust framework to support these advanced features.
+
+Remember, APIs are the backbone of modern web applications, enabling them to interact with various clients, including web browsers, mobile apps, and IoT devices.
+
+## Chapter 8: Authentication and Security
+
+Security is paramount in any application. We'll cover essential security practices, including user authentication, authorization, and data validation, ensuring your Node.js applications are robust and protected.
+
+### **User Authentication**
+
+User authentication is the process of verifying the identity of users before granting them access to certain parts of your application. A common way to implement user authentication in Node.js is by using popular packages like Passport.js.
+
+**Example:**
+
+```typescript
+const passport = require('passport');
+const LocalStrategy = require('passport-local').Strategy;
+
+// Define a strategy for authenticating users
+passport.use(new LocalStrategy(
+ function(username, password, done) {
+ // Check the username and password against your database
+ if (username === 'user' && password === 'password') {
+ return done(null, { id: 1, username: 'user' });
+ } else {
+ return done(null, false, { message: 'Incorrect username or password' });
+ }
+ }
+));
+```
+
+### **Authorization**
+
+Authorization goes hand in hand with authentication. It determines what actions users are allowed to perform within your application based on their roles and permissions.
+
+**Example:**
+
+```typescript
+// Middleware to check if a user is authenticated
+function isAuthenticated(req, res, next) {
+ if (req.isAuthenticated()) {
+ return next();
+ }
+ res.redirect('/login');
+}
+
+// Protect a route with authentication
+app.get('/dashboard', isAuthenticated, (req, res) => {
+ // Only authenticated users can access this route
+ res.render('dashboard');
+});
+```
+
+### **Data Validation**
+
+Input validation is crucial to prevent security vulnerabilities like SQL injection and cross-site scripting (XSS) attacks. Use packages like `express-validator` to validate user input.
+
+**Example:**
+
+```typescript
+const { body, validationResult } = require('express-validator');
+
+app.post('/create-post',
+ body('title').trim().isLength({ min: 1 }).withMessage('Title cannot be empty'),
+ body('content').trim().isLength({ min: 1 }).withMessage('Content cannot be empty'),
+ (req, res) => {
+ const errors = validationResult(req);
+ if (!errors.isEmpty()) {
+ return res.status(400).json({ errors: errors.array() });
+ }
+ // Process the valid input and create a post
+ }
+);
+```
+
+### **Protecting Against Cross-Site Request Forgery (CSRF)**
+
+Use middleware like `csurf` to protect your application against CSRF attacks, which can trick authenticated users into performing unwanted actions.
+
+**Example:**
+
+```typescript
+const csrf = require('csurf');
+const csrfProtection = csrf({ cookie: true });
+
+// Apply CSRF protection to specific routes
+app.get('/payment', csrfProtection, (req, res) => {
+ // Render a form with CSRF token
+ res.render('payment', { csrfToken: req.csrfToken() });
+});
+
+app.post('/process-payment', csrfProtection, (req, res) => {
+ // Verify the CSRF token before processing the payment
+ // ...
+});
+```
+
+By implementing these security practices in your Node.js application, you'll enhance its resilience against common security threats, providing a safer and more reliable user experience. Always keep security at the forefront of your development efforts.
+
+## Chapter 9: Deployment and Scaling
+
+Once your application is ready, you'll want to deploy it to a production environment. We'll explore deployment options and strategies, as well as techniques for scaling your Node.js application to handle increased traffic and demand.
+
+### **Deployment**
+
+Deployment involves making your application accessible to users on the internet. Here are some common deployment options for Node.js applications:
+
+1. **Traditional Hosting**: You can deploy Node.js applications on traditional web hosting platforms like AWS, DigitalOcean, or Heroku. These platforms provide infrastructure and services to host your application.
+
+2. **Serverless**: Serverless computing, using platforms like AWS Lambda or Azure Functions, allows you to deploy your Node.js code in a serverless environment. It's a cost-effective way to run small, event-driven functions.
+
+3. **Containerization**: Docker allows you to containerize your Node.js application, making it portable and easy to deploy across various environments using container orchestration tools like Kubernetes.
+
+**Example**: Let's say you want to deploy a simple Node.js web application using AWS Elastic Beanstalk. After setting up your AWS environment, you can use the AWS CLI or the Elastic Beanstalk console to deploy your code. Here's a simplified command to deploy a Node.js app:
+
+```bash
+eb init -p node.js my-app
+eb create my-app-environment
+eb deploy
+```
+
+*This will package and deploy your Node.js application to AWS.*
+
+### **Scaling**
+
+As your application gains popularity, you'll need to ensure it can handle increased traffic. Here are some scaling strategies:
+
+1. **Vertical Scaling**: This involves increasing the resources (CPU, RAM) of your server to handle more traffic. For example, upgrading your virtual machine on AWS.
+
+2. **Horizontal Scaling**: Instead of upgrading a single server, you add more servers to distribute the load. Load balancers like AWS Elastic Load Balancing can distribute incoming requests across multiple instances of your Node.js application.
+
+3. **Microservices**: Break your application into smaller, independently scalable microservices. Each microservice can be a Node.js application that handles a specific part of your system.
+
+**Example**: Let's say you have an e-commerce website built with Node.js. As the holiday season approaches, you expect a surge in traffic. To scale horizontally, you can use AWS Elastic Load Balancing to distribute incoming requests across multiple EC2 instances running your Node.js application. Here's a simplified configuration:
+
+1. Set up multiple EC2 instances with your Node.js app.
+
+2. Create an Elastic Load Balancer and attach your instances to it.
+
+3. Configure the load balancer to evenly distribute incoming requests.
+
+With this setup, your application can handle a higher number of concurrent users during peak times.
+
+Remember that the choice of deployment and scaling strategy depends on your application's specific requirements and budget. It's essential to monitor your application's performance and adjust your scaling strategy accordingly to ensure optimal performance and availability.
+
+## Chapter 10: Keeping Up with Node.js
+
+The world of technology is ever-evolving. In this final chapter, we'll provide you with resources and tips to stay up-to-date with Node.js trends and best practices. Continuous learning is the key to mastering Node.js.
+
+### **Node.js Community**
+
+Node.js has a vibrant and active community of developers worldwide. Engaging with this community is an excellent way to stay informed about the latest developments. You can do this by:
+
+1. **Participating in Online Forums:** Platforms like Stack Overflow and the Node.js community forums are great places to ask questions, share your knowledge, and learn from others.
+
+2. **Joining Social Media:** Follow Node.js-related accounts on Twitter, Reddit, and LinkedIn. These platforms often feature discussions, news, and announcements about Node.js.
+
+### **Blogs and Newsletters**
+
+Several blogs and newsletters are dedicated to Node.js updates and tutorials. Subscribing to these resources will keep you informed and inspired. Some popular options include:
+
+1. **Node.js Official Blog:** The official Node.js blog provides insights into the latest releases, project updates, and best practices.
+
+2. **The Node.js Collection on Medium:** Medium hosts a collection of articles on Node.js-related topics, written by experts and enthusiasts.
+
+3. **Node Weekly:** A weekly newsletter that curates the most important news, articles, and tutorials related to Node.js.
+
+### **Conferences and Meetups**
+
+Attending Node.js conferences and local meetups can be an enriching experience. Here, you can:
+
+1. **Network:** Connect with fellow Node.js developers, share experiences, and even collaborate on projects.
+
+2. **Learn from Experts:** Conferences often feature talks and workshops by experts in the field. You can gain valuable insights and even discover emerging trends.
+
+### **Continuous Learning**
+
+Node.js, like any technology, evolves. To stay at the forefront, consider taking online courses or tutorials on platforms like Udemy, Coursera, or Pluralsight. These resources offer courses on advanced Node.js topics, such as microservices, serverless computing, and real-time applications.
+
+Let's say you want to keep up with the latest developments in Node.js by following the Node.js Twitter community. You can start by creating a Twitter account if you don't already have one. Then, search for relevant hashtags like #Nodejs or #JavaScript. Follow influential Node.js developers, organizations, and official accounts.
+
+As you scroll through your Twitter feed, you'll come across tweets about Node.js updates, new libraries, and interesting articles. Engage in conversations, ask questions, and share your thoughts. This active participation will not only help you stay informed but also expand your network within the Node.js community.
+
+Remember, staying current in the world of Node.js is an ongoing process. By actively participating in the community, consuming relevant content, and continuously learning, you'll be well-equipped to master Node.js and build wonderful and useful applications in this dynamic ecosystem.
+
+### **Conclusion**
+
+Congratulations! You've now completed our beginner's guide to mastering Node.js. You've gained a solid foundation in Node.js development, and you're well on your way to building wonderful and useful tools and applications. Remember, the journey of a developer is never-ending, so keep coding, keep learning, and keep pushing the boundaries of what you can achieve with Node.js. Happy coding!
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..b062656
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,11001 @@
+{
+ "name": "nextjs",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "nextjs",
+ "version": "0.1.0",
+ "dependencies": {
+ "@biomejs/biome": "^1.8.3",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-label": "^2.0.2",
+ "@radix-ui/react-progress": "^1.0.3",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@tailwindcss/typography": "^0.5.15",
+ "@vercel/analytics": "^1.2.2",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "embla-carousel-react": "^8.0.4",
+ "lucide-react": "^0.377.0",
+ "next": "14.1.4",
+ "next-themes": "^0.3.0",
+ "nodemailer": "^6.9.13",
+ "outstatic": "^1.4.9",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-markdown": "^9.0.1",
+ "react-syntax-highlighter": "^15.5.0",
+ "remark-emoji": "^5.0.1",
+ "remark-gfm": "^4.0.0",
+ "sharp": "^0.33.3",
+ "sonner": "^1.4.41",
+ "tailwind-merge": "^2.3.0",
+ "tailwindcss-animate": "^1.0.7"
+ },
+ "devDependencies": {
+ "@types/node": "^20",
+ "@types/nodemailer": "^6",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "@types/react-syntax-highlighter": "^15.5.13",
+ "autoprefixer": "^10.0.1",
+ "eslint": "^8",
+ "eslint-config-next": "14.1.4",
+ "postcss": "^8",
+ "tailwindcss": "^3.3.0",
+ "typescript": "^5"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@apollo/client": {
+ "version": "3.11.5",
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-typed-document-node/core": "^3.1.1",
+ "@wry/caches": "^1.0.0",
+ "@wry/equality": "^0.5.6",
+ "@wry/trie": "^0.5.0",
+ "graphql-tag": "^2.12.6",
+ "hoist-non-react-statics": "^3.3.2",
+ "optimism": "^0.18.0",
+ "prop-types": "^15.7.2",
+ "rehackt": "^0.1.0",
+ "response-iterator": "^0.2.6",
+ "symbol-observable": "^4.0.0",
+ "ts-invariant": "^0.10.3",
+ "tslib": "^2.3.0",
+ "zen-observable-ts": "^1.2.5"
+ },
+ "peerDependencies": {
+ "graphql": "^15.0.0 || ^16.0.0",
+ "graphql-ws": "^5.5.5",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0",
+ "subscriptions-transport-ws": "^0.9.0 || ^0.11.0"
+ },
+ "peerDependenciesMeta": {
+ "graphql-ws": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "subscriptions-transport-ws": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.24.7",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.25.4",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.25.2",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.0",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-module-transforms": "^7.25.2",
+ "@babel/helpers": "^7.25.0",
+ "@babel/parser": "^7.25.0",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.2",
+ "@babel/types": "^7.25.2",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/json5": {
+ "version": "2.2.3",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.25.6",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.6",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.2",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.2",
+ "@babel/helper-validator-option": "^7.24.8",
+ "browserslist": "^4.23.1",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": {
+ "version": "4.23.3",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001646",
+ "electron-to-chromium": "^1.5.4",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/caniuse-lite": {
+ "version": "1.0.30001655",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/electron-to-chromium": {
+ "version": "1.5.13",
+ "license": "ISC"
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/node-releases": {
+ "version": "2.0.18",
+ "license": "MIT"
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/update-browserslist-db": {
+ "version": "1.1.0",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/browserslist/node_modules/update-browserslist-db/node_modules/picocolors": {
+ "version": "1.0.1",
+ "license": "ISC"
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache/node_modules/yallist": {
+ "version": "3.1.1",
+ "license": "ISC"
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.24.7",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.25.2",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.24.7",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.8",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.24.7",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.24.8",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.25.6",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.24.7",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": {
+ "version": "1.9.3",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": {
+ "version": "1.1.3",
+ "license": "MIT"
+ },
+ "node_modules/@babel/highlight/node_modules/chalk/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color": {
+ "version": "5.5.0",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.25.6",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.6"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.24.1",
+ "license": "MIT",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.25.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.25.6",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.6",
+ "@babel/parser": "^7.25.6",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.6",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.25.6",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@biomejs/biome": {
+ "version": "1.8.3",
+ "hasInstallScript": true,
+ "license": "MIT OR Apache-2.0",
+ "bin": {
+ "biome": "bin/biome"
+ },
+ "engines": {
+ "node": ">=14.21.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/biome"
+ },
+ "optionalDependencies": {
+ "@biomejs/cli-darwin-arm64": "1.8.3",
+ "@biomejs/cli-darwin-x64": "1.8.3",
+ "@biomejs/cli-linux-arm64": "1.8.3",
+ "@biomejs/cli-linux-arm64-musl": "1.8.3",
+ "@biomejs/cli-linux-x64": "1.8.3",
+ "@biomejs/cli-linux-x64-musl": "1.8.3",
+ "@biomejs/cli-win32-arm64": "1.8.3",
+ "@biomejs/cli-win32-x64": "1.8.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-x64": {
+ "version": "1.8.3",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@biomejs/cli-linux-x64-musl": {
+ "version": "1.8.3",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT OR Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.21.3"
+ }
+ },
+ "node_modules/@dnd-kit/accessibility": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@dnd-kit/core": {
+ "version": "6.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@dnd-kit/accessibility": "^3.1.0",
+ "@dnd-kit/utilities": "^3.2.2",
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@dnd-kit/modifiers": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@dnd-kit/utilities": "^3.2.2",
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@dnd-kit/core": "^6.1.0",
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@dnd-kit/sortable": {
+ "version": "8.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@dnd-kit/utilities": "^3.2.2",
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@dnd-kit/core": "^6.1.0",
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@dnd-kit/utilities": {
+ "version": "3.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.12.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.2.0",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.13.1",
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.13.3",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/cache": "^11.13.0",
+ "@emotion/serialize": "^1.3.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.3.1",
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.0",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.4.0",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.4.0",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "license": "MIT"
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "dev": true,
+ "license": "MIT",
+ "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",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "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"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/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",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@eslint/eslintrc/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/@eslint/js": {
+ "version": "8.57.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.7",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.7"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.10",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.7"
+ }
+ },
+ "node_modules/@floating-ui/react": {
+ "version": "0.26.23",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.1",
+ "@floating-ui/utils": "^0.2.7",
+ "tabbable": "^6.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/dom": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.7",
+ "license": "MIT"
+ },
+ "node_modules/@graphql-typed-document-node/core": {
+ "version": "3.2.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@hapi/b64": {
+ "version": "6.0.1",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^11.0.2"
+ }
+ },
+ "node_modules/@hapi/boom": {
+ "version": "10.0.1",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/hoek": "^11.0.2"
+ }
+ },
+ "node_modules/@hapi/bourne": {
+ "version": "3.0.0",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/cryptiles": {
+ "version": "6.0.1",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/boom": "^10.0.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "11.0.4",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@hapi/iron": {
+ "version": "7.0.1",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@hapi/b64": "^6.0.1",
+ "@hapi/boom": "^10.0.1",
+ "@hapi/bourne": "^3.0.0",
+ "@hapi/cryptiles": "^6.0.1",
+ "@hapi/hoek": "^11.0.2"
+ }
+ },
+ "node_modules/@hookform/resolvers": {
+ "version": "2.9.11",
+ "license": "MIT",
+ "peerDependencies": {
+ "react-hook-form": "^7.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "dev": true,
+ "license": "Apache-2.0",
+ "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",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+ }
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "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/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.1.4",
+ "license": "MIT"
+ },
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "14.1.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "glob": "10.3.10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.1.4",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.1.4",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "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",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.1.0",
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/react-arrow": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-checkbox": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-use-previous": "1.1.0",
+ "@radix-ui/react-use-size": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-escape-keydown": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-dropdown-menu": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-menu": "2.1.1",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-icons": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.x || ^17.x || ^18.x"
+ }
+ },
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-label": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-menu": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.0",
+ "@radix-ui/react-focus-guards": "1.1.0",
+ "@radix-ui/react-focus-scope": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-popper": "1.2.0",
+ "@radix-ui/react-portal": "1.1.1",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-roving-focus": "1.1.0",
+ "@radix-ui/react-slot": "1.1.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.7"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.0.0",
+ "@radix-ui/react-arrow": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0",
+ "@radix-ui/react-use-rect": "1.1.0",
+ "@radix-ui/react-use-size": "1.1.0",
+ "@radix-ui/rect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-progress": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-popper": "1.2.0",
+ "@radix-ui/react-portal": "1.1.1",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-visually-hidden": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-previous": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/rect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/rect": {
+ "version": "1.1.0",
+ "license": "MIT"
+ },
+ "node_modules/@remirror/core-constants": {
+ "version": "2.0.2",
+ "license": "MIT"
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.8.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.2",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@tailwindcss/typography": {
+ "version": "0.5.15",
+ "license": "MIT",
+ "dependencies": {
+ "lodash.castarray": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.merge": "^4.6.2",
+ "postcss-selector-parser": "6.0.10"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20"
+ }
+ },
+ "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@tiptap/core": {
+ "version": "2.6.6",
+ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.6.6.tgz",
+ "integrity": "sha512-VO5qTsjt6rwworkuo0s5AqYMfDA0ZwiTiH6FHKFSu2G/6sS7HKcc/LjPq+5Legzps4QYdBDl3W28wGsGuS1GdQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/pm": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-blockquote": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-bold": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-bubble-menu": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "dependencies": {
+ "tippy.js": "^6.3.7"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-bullet-list": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-code": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-code-block": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-code-block-lowlight": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/extension-code-block": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-document": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-dropcursor": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6",
+ "@tiptap/pm": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-floating-menu": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "dependencies": {
+ "tippy.js": "^6.3.7"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6",
+ "@tiptap/pm": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-gapcursor": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-hard-break": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-heading": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-highlight": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-history": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6",
+ "@tiptap/pm": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-horizontal-rule": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-image": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-italic": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-link": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "dependencies": {
+ "linkifyjs": "^4.1.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-list-item": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-ordered-list": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-paragraph": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-placeholder": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-strike": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-table": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-table-cell": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-table-header": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-table-row": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/extension-text": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/extension-underline": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
+ "node_modules/@tiptap/pm": {
+ "version": "2.6.6",
+ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.6.6.tgz",
+ "integrity": "sha512-56FGLPn3fwwUlIbLs+BO21bYfyqP9fKyZQbQyY0zWwA/AG2kOwoXaRn7FOVbjP6CylyWpFJnpRRmgn694QKHEg==",
+ "license": "MIT",
+ "peer": true,
+ "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.4.1",
+ "prosemirror-inputrules": "^1.4.0",
+ "prosemirror-keymap": "^1.2.2",
+ "prosemirror-markdown": "^1.13.0",
+ "prosemirror-menu": "^1.2.4",
+ "prosemirror-model": "^1.22.2",
+ "prosemirror-schema-basic": "^1.2.3",
+ "prosemirror-schema-list": "^1.4.1",
+ "prosemirror-state": "^1.4.3",
+ "prosemirror-tables": "^1.4.0",
+ "prosemirror-trailing-node": "^2.0.9",
+ "prosemirror-transform": "^1.9.0",
+ "prosemirror-view": "^1.33.9"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ }
+ },
+ "node_modules/@tiptap/react": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "dependencies": {
+ "@tiptap/extension-bubble-menu": "^2.1.10",
+ "@tiptap/extension-floating-menu": "^2.1.10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0",
+ "react": "^17.0.0 || ^18.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@tiptap/starter-kit": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "dependencies": {
+ "@tiptap/core": "^2.1.10",
+ "@tiptap/extension-blockquote": "^2.1.10",
+ "@tiptap/extension-bold": "^2.1.10",
+ "@tiptap/extension-bullet-list": "^2.1.10",
+ "@tiptap/extension-code": "^2.1.10",
+ "@tiptap/extension-code-block": "^2.1.10",
+ "@tiptap/extension-document": "^2.1.10",
+ "@tiptap/extension-dropcursor": "^2.1.10",
+ "@tiptap/extension-gapcursor": "^2.1.10",
+ "@tiptap/extension-hard-break": "^2.1.10",
+ "@tiptap/extension-heading": "^2.1.10",
+ "@tiptap/extension-history": "^2.1.10",
+ "@tiptap/extension-horizontal-rule": "^2.1.10",
+ "@tiptap/extension-italic": "^2.1.10",
+ "@tiptap/extension-list-item": "^2.1.10",
+ "@tiptap/extension-ordered-list": "^2.1.10",
+ "@tiptap/extension-paragraph": "^2.1.10",
+ "@tiptap/extension-strike": "^2.1.10",
+ "@tiptap/extension-text": "^2.1.10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ }
+ },
+ "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-gapcursor": {
+ "version": "2.6.6",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.6.6",
+ "@tiptap/pm": "^2.6.6"
+ }
+ },
+ "node_modules/@tiptap/suggestion": {
+ "version": "2.1.10",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "license": "MIT"
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "license": "MIT"
+ },
+ "node_modules/@types/estree-jsx": {
+ "version": "1.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "license": "MIT"
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "5.0.0",
+ "license": "MIT"
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.17.7",
+ "license": "MIT"
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "12.2.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "2.0.0",
+ "license": "MIT"
+ },
+ "node_modules/@types/ms": {
+ "version": "0.7.34",
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.30",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.11",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/@types/nodemailer": {
+ "version": "6.4.15",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "license": "MIT"
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.11",
+ "license": "MIT"
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.15",
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.67",
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.2.22",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-syntax-highlighter": {
+ "version": "15.5.13",
+ "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz",
+ "integrity": "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-transition-group": {
+ "version": "4.4.11",
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "license": "MIT"
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.21.0",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.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.21.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.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.21.0",
+ "dev": true,
+ "license": "MIT",
+ "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.21.0",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.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/minimatch": {
+ "version": "9.0.3",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.21.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.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",
+ "license": "ISC"
+ },
+ "node_modules/@vercel/analytics": {
+ "version": "1.3.1",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "server-only": "^0.0.1"
+ },
+ "peerDependencies": {
+ "next": ">= 13",
+ "react": "^18 || ^19"
+ },
+ "peerDependenciesMeta": {
+ "next": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.24.7",
+ "@vue/shared": "3.4.38",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-core/node_modules/entities": {
+ "version": "4.5.0",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/@vue/compiler-core/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.4.38",
+ "@vue/shared": "3.4.38"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.24.7",
+ "@vue/compiler-core": "3.4.38",
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.40",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/postcss": {
+ "version": "8.4.41",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.1",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/postcss/node_modules/picocolors": {
+ "version": "1.0.1",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/shared": "3.4.38"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.4.38"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.4.38",
+ "@vue/shared": "3.4.38"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.4.38",
+ "@vue/runtime-core": "3.4.38",
+ "@vue/shared": "3.4.38",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38"
+ },
+ "peerDependencies": {
+ "vue": "3.4.38"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@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/@webassemblyjs/wast-printer": {
+ "version": "1.12.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@wry/caches": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@wry/context": {
+ "version": "0.7.4",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@wry/equality": {
+ "version": "0.5.7",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@wry/trie": {
+ "version": "0.5.0",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/abort-controller": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agentkeepalive": {
+ "version": "4.5.0",
+ "license": "MIT",
+ "dependencies": {
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/ai": {
+ "version": "2.2.37",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "eventsource-parser": "1.0.0",
+ "nanoid": "3.3.6",
+ "solid-swr-store": "0.10.7",
+ "sswr": "2.0.0",
+ "swr": "2.2.0",
+ "swr-store": "0.10.6",
+ "swrv": "1.0.4"
+ },
+ "engines": {
+ "node": ">=14.6"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0",
+ "solid-js": "^1.7.7",
+ "svelte": "^3.0.0 || ^4.0.0",
+ "vue": "^3.3.4"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "solid-js": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ai/node_modules/nanoid": {
+ "version": "3.3.6",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/ai/node_modules/swr": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "use-sync-external-store": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": "^16.11.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-hidden": {
+ "version": "1.2.4",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.7",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlast": {
+ "version": "1.2.5",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.5",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.toreversed": {
+ "version": "1.1.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.1.0",
+ "es-shim-unscopables": "^1.0.2"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ast-types-flow": {
+ "version": "0.0.8",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "license": "MIT"
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.18",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.23.0",
+ "caniuse-lite": "^1.0.30001591",
+ "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.7",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.7.0",
+ "dev": true,
+ "license": "MPL-2.0",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "3.2.1",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/babel-loader": {
+ "version": "9.1.3",
+ "license": "MIT",
+ "dependencies": {
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0",
+ "webpack": ">=5"
+ }
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-transform-remove-imports": {
+ "version": "1.8.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.23.0",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "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/buffer-from": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001599",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "5.4.4",
+ "license": "MIT"
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "1.2.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "1.1.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "1.1.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "license": "MIT",
+ "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"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/class-variance-authority": {
+ "version": "0.7.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "clsx": "2.0.0"
+ },
+ "funding": {
+ "url": "https://joebell.co.uk"
+ }
+ },
+ "node_modules/class-variance-authority/node_modules/clsx": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "license": "MIT"
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/code-red": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@types/estree": "^1.0.1",
+ "acorn": "^8.10.0",
+ "estree-walker": "^3.0.3",
+ "periscopic": "^3.1.0"
+ }
+ },
+ "node_modules/code-red/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "license": "MIT"
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "license": "ISC"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/yaml": {
+ "version": "1.10.2",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/crelt": {
+ "version": "1.0.6",
+ "license": "MIT"
+ },
+ "node_modules/cross-fetch": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "license": "MIT"
+ },
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/date-fns": {
+ "version": "3.6.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
+ "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/decode-named-character-reference": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/decode-named-character-reference/node_modules/character-entities": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.3",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "license": "Apache-2.0"
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "license": "MIT"
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/dompurify": {
+ "version": "2.5.6",
+ "license": "(MPL-2.0 OR Apache-2.0)"
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.711",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/embla-carousel": {
+ "version": "8.2.0",
+ "license": "MIT"
+ },
+ "node_modules/embla-carousel-react": {
+ "version": "8.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "embla-carousel": "8.2.0",
+ "embla-carousel-reactive-utils": "8.2.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.1 || ^18.0.0"
+ }
+ },
+ "node_modules/embla-carousel-reactive-utils": {
+ "version": "8.2.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "embla-carousel": "8.2.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "license": "MIT"
+ },
+ "node_modules/emojilib": {
+ "version": "2.4.0",
+ "license": "MIT"
+ },
+ "node_modules/emoticon": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.16.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "3.0.1",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/error-ex/node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "license": "MIT"
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.5",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.18",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.3",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
+ "@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.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@next/eslint-plugin-next": "14.1.4",
+ "@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",
+ "dev": true,
+ "license": "MIT",
+ "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",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-import-resolver-typescript": {
+ "version": "3.6.1",
+ "dev": true,
+ "license": "ISC",
+ "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.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.1",
+ "dev": true,
+ "license": "MIT",
+ "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",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.8.0",
+ "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"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.34.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlast": "^1.2.4",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.toreversed": "^1.1.2",
+ "array.prototype.tosorted": "^1.1.3",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.17",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.7",
+ "object.fromentries": "^2.0.7",
+ "object.hasown": "^1.1.3",
+ "object.values": "^1.1.7",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.10"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
+ "dev": true,
+ "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/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "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",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/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",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/eslint/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/espree": {
+ "version": "9.6.1",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "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",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-util-is-identifier-name": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/eventsource-parser": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "license": "MIT"
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "license": "MIT",
+ "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",
+ "license": "ISC",
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.1",
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fault": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "format": "^0.2.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "license": "MIT"
+ },
+ "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"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "dev": true,
+ "license": "MIT",
+ "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.3.1",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/form-data-encoder": {
+ "version": "1.7.2",
+ "license": "MIT"
+ },
+ "node_modules/format": {
+ "version": "0.2.2",
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/formdata-node": {
+ "version": "4.4.1",
+ "license": "MIT",
+ "dependencies": {
+ "node-domexception": "1.0.0",
+ "web-streams-polyfill": "4.0.0-beta.3"
+ },
+ "engines": {
+ "node": ">= 12.20"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.7.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.3.10",
+ "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": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "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",
+ "peer": true
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.3",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/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": "https://github.com/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": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/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/graphql": {
+ "version": "16.9.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
+ "node_modules/graphql-tag": {
+ "version": "2.12.6",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "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/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/gray-matter/node_modules/js-yaml/node_modules/argparse": {
+ "version": "1.0.10",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "2.2.5",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-jsx-runtime": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^1.0.0",
+ "unist-util-position": "^5.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "comma-separated-tokens": "^1.0.0",
+ "hast-util-parse-selector": "^2.0.0",
+ "property-information": "^5.0.0",
+ "space-separated-tokens": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript/node_modules/@types/hast": {
+ "version": "2.3.10",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^2"
+ }
+ },
+ "node_modules/hastscript/node_modules/@types/hast/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "license": "MIT"
+ },
+ "node_modules/hastscript/node_modules/comma-separated-tokens": {
+ "version": "1.0.8",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/hastscript/node_modules/property-information": {
+ "version": "5.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "xtend": "^4.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/hastscript/node_modules/space-separated-tokens": {
+ "version": "1.1.5",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "11.10.0",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/html-url-attributes": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/inline-style-parser": {
+ "version": "0.2.3",
+ "license": "MIT"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "license": "MIT"
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-reference": {
+ "version": "3.0.2",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "license": "ISC"
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "dev": true,
+ "license": "MIT",
+ "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",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "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": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-base64": {
+ "version": "3.7.7",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/js-cookie": {
+ "version": "3.0.5",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "isarray": "^2.0.5",
+ "jsonify": "^0.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsonify": {
+ "version": "0.0.1",
+ "license": "Public Domain",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "dev": true,
+ "license": "MIT",
+ "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/keyv": {
+ "version": "4.5.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.22",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "license": "MIT"
+ },
+ "node_modules/linkify-it": {
+ "version": "4.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "node_modules/linkifyjs": {
+ "version": "4.1.3",
+ "license": "MIT"
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/locate-character": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "license": "MIT"
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "license": "MIT"
+ },
+ "node_modules/lodash.castarray": {
+ "version": "4.4.0",
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lowlight": {
+ "version": "1.20.0",
+ "license": "MIT",
+ "dependencies": {
+ "fault": "^1.0.0",
+ "highlight.js": "~10.7.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/lowlight/node_modules/highlight.js": {
+ "version": "10.7.3",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.2.0",
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/lucide-react": {
+ "version": "0.377.0",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.11",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/markdown-it": {
+ "version": "13.0.2",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~3.0.1",
+ "linkify-it": "^4.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it-task-lists": {
+ "version": "2.1.1",
+ "license": "ISC"
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "3.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-gfm-autolink-literal": "^2.0.0",
+ "mdast-util-gfm-footnote": "^2.0.0",
+ "mdast-util-gfm-strikethrough": "^2.0.0",
+ "mdast-util-gfm-table": "^2.0.0",
+ "mdast-util-gfm-task-list-item": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-find-and-replace": "^3.0.0",
+ "micromark-util-character": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-footnote": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table/node_modules/markdown-table": {
+ "version": "3.0.3",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-expression": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx": {
+ "version": "3.1.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "parse-entities": "^4.0.0",
+ "stringify-entities": "^4.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-mdx-jsx/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": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/@types/unist": {
+ "version": "2.0.11",
+ "license": "MIT"
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/character-entities": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/character-reference-invalid": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/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": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/is-alphanumerical/node_modules/is-alphabetical": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/is-decimal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/is-hexadecimal": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-mdxjs-esm": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "license": "MIT",
+ "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-markdown": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown/node_modules/longest-streak": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "license": "CC0-1.0",
+ "peer": true
+ },
+ "node_modules/mdurl": {
+ "version": "1.0.1",
+ "license": "MIT"
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "license": "MIT"
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.1",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/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/micromark-util-chunked": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.1",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.0.1",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.0.4",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "license": "MIT"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoclone": {
+ "version": "0.2.1",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/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/neo-async": {
+ "version": "2.6.2",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/next": {
+ "version": "14.1.4",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "14.1.4",
+ "@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.4",
+ "@next/swc-darwin-x64": "14.1.4",
+ "@next/swc-linux-arm64-gnu": "14.1.4",
+ "@next/swc-linux-arm64-musl": "14.1.4",
+ "@next/swc-linux-x64-gnu": "14.1.4",
+ "@next/swc-linux-x64-musl": "14.1.4",
+ "@next/swc-win32-arm64-msvc": "14.1.4",
+ "@next/swc-win32-ia32-msvc": "14.1.4",
+ "@next/swc-win32-x64-msvc": "14.1.4"
+ },
+ "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-connect": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@tsconfig/node16": "^1.0.3",
+ "regexparam": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/next-remove-imports": {
+ "version": "1.0.12",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.22.9",
+ "babel-loader": "^9.1.3",
+ "babel-plugin-transform-remove-imports": "^1.7.0"
+ }
+ },
+ "node_modules/next-session": {
+ "version": "4.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "cookie": "^0.4.1",
+ "nanoid": "^3.1.25"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/next-session/node_modules/cookie": {
+ "version": "0.4.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/next-themes": {
+ "version": "0.3.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8 || ^17 || ^18",
+ "react-dom": "^16.8 || ^17 || ^18"
+ }
+ },
+ "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": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-emoji": {
+ "version": "2.1.3",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/is": "^4.6.0",
+ "char-regex": "^1.0.2",
+ "emojilib": "^2.4.0",
+ "skin-tone": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": {
+ "version": "0.0.3",
+ "license": "MIT"
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nodemailer": {
+ "version": "6.9.14",
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "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/object-assign": {
+ "version": "4.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.8",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.2.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/openai": {
+ "version": "4.57.0",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "^18.11.18",
+ "@types/node-fetch": "^2.6.4",
+ "@types/qs": "^6.9.7",
+ "abort-controller": "^3.0.0",
+ "agentkeepalive": "^4.2.1",
+ "form-data-encoder": "1.7.2",
+ "formdata-node": "^4.3.2",
+ "node-fetch": "^2.6.7",
+ "qs": "^6.10.3"
+ },
+ "bin": {
+ "openai": "bin/cli"
+ },
+ "peerDependencies": {
+ "zod": "^3.23.8"
+ },
+ "peerDependenciesMeta": {
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/openai-edge": {
+ "version": "1.2.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/openai/node_modules/@types/node": {
+ "version": "18.19.47",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/optimism": {
+ "version": "0.18.0",
+ "license": "MIT",
+ "dependencies": {
+ "@wry/caches": "^1.0.0",
+ "@wry/context": "^0.7.0",
+ "@wry/trie": "^0.4.3",
+ "tslib": "^2.3.0"
+ }
+ },
+ "node_modules/optimism/node_modules/@wry/trie": {
+ "version": "0.4.3",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "dev": true,
+ "license": "MIT",
+ "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/orderedmap": {
+ "version": "2.1.1",
+ "license": "MIT"
+ },
+ "node_modules/outstatic": {
+ "version": "1.4.9",
+ "license": "MIT",
+ "dependencies": {
+ "@apollo/client": "^3.6.6",
+ "@dnd-kit/core": "^6.1.0",
+ "@dnd-kit/modifiers": "^7.0.0",
+ "@dnd-kit/sortable": "^8.0.0",
+ "@dnd-kit/utilities": "^3.2.2",
+ "@hapi/iron": "^7.0.0",
+ "@hookform/resolvers": "^2.9.7",
+ "@radix-ui/react-checkbox": "^1.1.0",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-tooltip": "^1.0.7",
+ "@tiptap/core": "2.1.10",
+ "@tiptap/extension-bubble-menu": "2.1.10",
+ "@tiptap/extension-code-block": "2.1.10",
+ "@tiptap/extension-code-block-lowlight": "2.1.10",
+ "@tiptap/extension-gapcursor": "2.1.0",
+ "@tiptap/extension-highlight": "2.1.10",
+ "@tiptap/extension-horizontal-rule": "2.1.10",
+ "@tiptap/extension-image": "2.1.10",
+ "@tiptap/extension-link": "2.1.10",
+ "@tiptap/extension-placeholder": "2.1.10",
+ "@tiptap/extension-table": "2.1.0",
+ "@tiptap/extension-table-cell": "2.1.0",
+ "@tiptap/extension-table-header": "2.1.0",
+ "@tiptap/extension-table-row": "2.1.0",
+ "@tiptap/extension-underline": "2.1.10",
+ "@tiptap/pm": "2.1.10",
+ "@tiptap/react": "2.1.10",
+ "@tiptap/starter-kit": "2.1.10",
+ "@tiptap/suggestion": "2.1.10",
+ "ai": "^2.2.16",
+ "camelcase": "^6.3.0",
+ "change-case": "^5.4.2",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^1.2.1",
+ "cookie": "^0.5.0",
+ "cross-fetch": "^4.0.0",
+ "dompurify": "^2.3.9",
+ "encoding": "^0.1.13",
+ "graphql": "^16.5.0",
+ "gray-matter": "^4.0.3",
+ "highlight.js": "^11.6.0",
+ "imurmurhash": "^0.1.4",
+ "js-base64": "^3.7.2",
+ "js-cookie": "^3.0.5",
+ "json-stable-stringify": "^1.0.2",
+ "lowlight": "^1.0",
+ "lucide-react": "^0.260.0",
+ "next-connect": "^1.0.0-next.2",
+ "next-remove-imports": "^1.0.6",
+ "next-session": "^4.0.5",
+ "openai": "^4.13.0",
+ "openai-edge": "^1.2.2",
+ "pluralize": "^8.0.0",
+ "postcss": "^8.4.26",
+ "react-datepicker": "^6",
+ "react-hook-form": "^7.31.3",
+ "react-select": "^5.7.3",
+ "react-textarea-autosize": "^8.3.4",
+ "sift": "^16.0.1",
+ "sonner": "^0.6.2",
+ "swr": "^1.3.0",
+ "tailwind-merge": "^1.13.2",
+ "thenby": "^1.3.4",
+ "tippy.js": "^6.3.7",
+ "tiptap-markdown": "0.8.1",
+ "transliteration": "^2.3.5",
+ "url-slug": "^3.0.4",
+ "use-debounce": "^9.0.4",
+ "yup": "^0.32.11",
+ "zustand": "^4.4.3"
+ },
+ "peerDependencies": {
+ "next": "^13 || ^14",
+ "react": "^17.0.2 || ^18",
+ "react-dom": "^17.0.2 || ^18"
+ }
+ },
+ "node_modules/outstatic/node_modules/@tiptap/core": {
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.1.10.tgz",
+ "integrity": "sha512-yhUKsac6nlqbPQfwQnp+4Jb110EqmzocXKoZacLwzHpM7JVsr2+LXMDu9kahtrvHNJErJljhnQvDHRsrrYeJkQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
+ "node_modules/outstatic/node_modules/@tiptap/pm": {
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.1.10.tgz",
+ "integrity": "sha512-Y+AqizKnjQpx4pSaA6m/cCD5QHQRPtALhO4ZO4YFZV1idYmsJA3/S5lgJI3ZL5eAHKHcGk6Vv3/8Y+eej5YIPw==",
+ "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",
+ "url": "https://github.com/sponsors/ueberdosis"
+ }
+ },
+ "node_modules/outstatic/node_modules/clsx": {
+ "version": "1.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/outstatic/node_modules/lucide-react": {
+ "version": "0.260.0",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/outstatic/node_modules/sonner": {
+ "version": "0.6.2",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/outstatic/node_modules/tailwind-merge": {
+ "version": "1.14.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "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": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "license": "BlueOak-1.0.0",
+ "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": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/periscopic": {
+ "version": "3.1.0",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "is-reference": "^3.0.0"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "6.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": {
+ "version": "7.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit/node_modules/yocto-queue": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up/node_modules/path-exists": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.37",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "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",
+ "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",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/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.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "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.16",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/property-expr": {
+ "version": "2.0.6",
+ "license": "MIT"
+ },
+ "node_modules/property-information": {
+ "version": "6.5.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/prosemirror-changeset": {
+ "version": "2.2.1",
+ "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.6.0",
+ "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.4.1",
+ "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.4.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.13.0",
+ "license": "MIT",
+ "dependencies": {
+ "markdown-it": "^14.0.0",
+ "prosemirror-model": "^1.20.0"
+ }
+ },
+ "node_modules/prosemirror-markdown/node_modules/markdown-it": {
+ "version": "14.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.0",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/prosemirror-markdown/node_modules/markdown-it/node_modules/entities": {
+ "version": "4.5.0",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/prosemirror-markdown/node_modules/markdown-it/node_modules/linkify-it": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "node_modules/prosemirror-markdown/node_modules/markdown-it/node_modules/mdurl": {
+ "version": "2.0.0",
+ "license": "MIT"
+ },
+ "node_modules/prosemirror-markdown/node_modules/markdown-it/node_modules/uc.micro": {
+ "version": "2.1.0",
+ "license": "MIT"
+ },
+ "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.22.3",
+ "license": "MIT",
+ "dependencies": {
+ "orderedmap": "^2.0.0"
+ }
+ },
+ "node_modules/prosemirror-schema-basic": {
+ "version": "1.2.3",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.19.0"
+ }
+ },
+ "node_modules/prosemirror-schema-list": {
+ "version": "1.4.1",
+ "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.5.0",
+ "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.9",
+ "license": "MIT",
+ "dependencies": {
+ "@remirror/core-constants": "^2.0.2",
+ "escape-string-regexp": "^4.0.0"
+ },
+ "peerDependencies": {
+ "prosemirror-model": "^1.22.1",
+ "prosemirror-state": "^1.4.2",
+ "prosemirror-view": "^1.33.8"
+ }
+ },
+ "node_modules/prosemirror-transform": {
+ "version": "1.10.0",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.21.0"
+ }
+ },
+ "node_modules/prosemirror-view": {
+ "version": "1.34.1",
+ "license": "MIT",
+ "dependencies": {
+ "prosemirror-model": "^1.20.0",
+ "prosemirror-state": "^1.0.0",
+ "prosemirror-transform": "^1.1.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.13.0",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-datepicker": {
+ "version": "6.9.0",
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/react": "^0.26.2",
+ "clsx": "^2.1.0",
+ "date-fns": "^3.3.1",
+ "prop-types": "^15.7.2",
+ "react-onclickoutside": "^6.13.0"
+ },
+ "peerDependencies": {
+ "react": "^16.9.0 || ^17 || ^18",
+ "react-dom": "^16.9.0 || ^17 || ^18"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-hook-form": {
+ "version": "7.53.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18 || ^19"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "license": "MIT"
+ },
+ "node_modules/react-markdown": {
+ "version": "9.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hast-util-to-jsx-runtime": "^2.0.0",
+ "html-url-attributes": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.0.0",
+ "unified": "^11.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=18",
+ "react": ">=18"
+ }
+ },
+ "node_modules/react-onclickoutside": {
+ "version": "6.13.1",
+ "license": "MIT",
+ "funding": {
+ "type": "individual",
+ "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md"
+ },
+ "peerDependencies": {
+ "react": "^15.5.x || ^16.x || ^17.x || ^18.x",
+ "react-dom": "^15.5.x || ^16.x || ^17.x || ^18.x"
+ }
+ },
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.7",
+ "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"
+ },
+ "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/react-remove-scroll-bar": {
+ "version": "2.3.6",
+ "license": "MIT",
+ "dependencies": {
+ "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/react-select": {
+ "version": "5.8.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.12.0",
+ "@emotion/cache": "^11.4.0",
+ "@emotion/react": "^11.8.1",
+ "@floating-ui/dom": "^1.0.1",
+ "@types/react-transition-group": "^4.4.0",
+ "memoize-one": "^6.0.0",
+ "prop-types": "^15.6.0",
+ "react-transition-group": "^4.3.0",
+ "use-isomorphic-layout-effect": "^1.1.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "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/react-syntax-highlighter": {
+ "version": "15.5.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "highlight.js": "^10.4.1",
+ "lowlight": "^1.17.0",
+ "prismjs": "^1.27.0",
+ "refractor": "^3.6.0"
+ },
+ "peerDependencies": {
+ "react": ">= 0.14.0"
+ }
+ },
+ "node_modules/react-syntax-highlighter/node_modules/highlight.js": {
+ "version": "10.7.3",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/react-textarea-autosize": {
+ "version": "8.5.3",
+ "license": "MIT",
+ "dependencies": {
+ "@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/react-transition-group": {
+ "version": "4.4.5",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.6",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.1",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/refractor": {
+ "version": "3.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "hastscript": "^6.0.0",
+ "parse-entities": "^2.0.0",
+ "prismjs": "~1.27.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/refractor/node_modules/prismjs": {
+ "version": "1.27.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "license": "MIT"
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexparam": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/rehackt": {
+ "version": "0.1.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/remark-emoji": {
+ "version": "5.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.4",
+ "emoticon": "^4.0.1",
+ "mdast-util-find-and-replace": "^3.0.1",
+ "node-emoji": "^2.1.3",
+ "unified": "^11.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "11.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "11.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify": {
+ "version": "11.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/response-iterator": {
+ "version": "0.2.6",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "dev": true,
+ "license": "ISC",
+ "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": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rope-sequence": {
+ "version": "1.3.4",
+ "license": "MIT"
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "license": "MIT"
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "4.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "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.6.3",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/seroval": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/seroval-plugins": {
+ "version": "1.1.1",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "seroval": "^1.0"
+ }
+ },
+ "node_modules/server-only": {
+ "version": "0.0.1",
+ "license": "MIT"
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.33.5",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sift": {
+ "version": "16.0.1",
+ "license": "MIT"
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/skin-tone": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "unicode-emoji-modifier-base": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/solid-js": {
+ "version": "1.8.22",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "csstype": "^3.1.0",
+ "seroval": "^1.1.0",
+ "seroval-plugins": "^1.1.0"
+ }
+ },
+ "node_modules/solid-swr-store": {
+ "version": "0.10.7",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "solid-js": "^1.2",
+ "swr-store": "^0.10"
+ }
+ },
+ "node_modules/sonner": {
+ "version": "1.5.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.5.7",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.0",
+ "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/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/sswr": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "swrev": "^4.0.0"
+ },
+ "peerDependencies": {
+ "svelte": "^4.0.0"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "license": "MIT",
+ "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": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "license": "MIT",
+ "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",
+ "license": "MIT"
+ },
+ "node_modules/string-width/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "license": "MIT"
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.10",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.7",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/stringify-entities/node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-to-object": {
+ "version": "1.0.7",
+ "license": "MIT",
+ "dependencies": {
+ "inline-style-parser": "0.2.3"
+ }
+ },
+ "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.2.0",
+ "license": "MIT"
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "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/supports-color": {
+ "version": "7.2.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svelte": {
+ "version": "4.2.19",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "@types/estree": "^1.0.1",
+ "acorn": "^8.9.0",
+ "aria-query": "^5.3.0",
+ "axobject-query": "^4.0.0",
+ "code-red": "^1.0.3",
+ "css-tree": "^2.3.1",
+ "estree-walker": "^3.0.3",
+ "is-reference": "^3.0.1",
+ "locate-character": "^3.0.0",
+ "magic-string": "^0.30.4",
+ "periscopic": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/svelte/node_modules/axobject-query": {
+ "version": "4.1.0",
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/swr": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.11.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/swr-store": {
+ "version": "0.10.6",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/swrev": {
+ "version": "4.0.0",
+ "license": "MIT"
+ },
+ "node_modules/swrv": {
+ "version": "1.0.4",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "vue": ">=3.2.26 < 4"
+ }
+ },
+ "node_modules/symbol-observable": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "license": "MIT"
+ },
+ "node_modules/tailwind-merge": {
+ "version": "2.3.0",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.24.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.1",
+ "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/tailwindcss-animate": {
+ "version": "1.0.7",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || insiders"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.31.6",
+ "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-webpack-plugin/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "peer": 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": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/terser-webpack-plugin/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==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "license": "MIT",
+ "peer": true,
+ "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/terser-webpack-plugin/node_modules/schema-utils/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/thenby": {
+ "version": "1.3.4",
+ "license": "Apache-2.0"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/tippy.js": {
+ "version": "6.3.7",
+ "license": "MIT",
+ "dependencies": {
+ "@popperjs/core": "^2.9.0"
+ }
+ },
+ "node_modules/tiptap-markdown": {
+ "version": "0.8.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/markdown-it": "^12.2.3",
+ "markdown-it": "^13.0.1",
+ "markdown-it-task-lists": "^2.1.1",
+ "prosemirror-markdown": "^1.11.0"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.3"
+ }
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toposort": {
+ "version": "2.0.2",
+ "license": "MIT"
+ },
+ "node_modules/transliteration": {
+ "version": "2.3.5",
+ "license": "MIT",
+ "dependencies": {
+ "yargs": "^17.5.1"
+ },
+ "bin": {
+ "slugify": "dist/bin/slugify",
+ "transliterate": "dist/bin/transliterate"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "2.2.0",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.3.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "license": "Apache-2.0"
+ },
+ "node_modules/ts-invariant": {
+ "version": "0.10.3",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "dev": true,
+ "license": "MIT",
+ "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",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.5",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.4.2",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "license": "MIT"
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "license": "MIT"
+ },
+ "node_modules/unicode-emoji-modifier-base": {
+ "version": "1.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unified": {
+ "version": "11.0.5",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "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/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-visit-parents": {
+ "version": "6.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "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==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url-slug": {
+ "version": "3.0.6",
+ "license": "MIT"
+ },
+ "node_modules/use-callback-ref": {
+ "version": "1.3.2",
+ "license": "MIT",
+ "dependencies": {
+ "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/use-composed-ref": {
+ "version": "1.3.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/use-debounce": {
+ "version": "9.0.4",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-latest": {
+ "version": "1.2.1",
+ "license": "MIT",
+ "dependencies": {
+ "use-isomorphic-layout-effect": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sidecar": {
+ "version": "1.1.2",
+ "license": "MIT",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.2",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "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/vue": {
+ "version": "3.4.38",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-sfc": "3.4.38",
+ "@vue/runtime-dom": "3.4.38",
+ "@vue/server-renderer": "3.4.38",
+ "@vue/shared": "3.4.38"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/w3c-keyname": {
+ "version": "2.2.8",
+ "license": "MIT"
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.2",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/web-streams-polyfill": {
+ "version": "4.0.0-beta.3",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.94.0",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.7.1",
+ "acorn-import-attributes": "^1.9.5",
+ "browserslist": "^4.21.10",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.1",
+ "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.11",
+ "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.1",
+ "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-sources": {
+ "version": "3.2.3",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "peer": 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": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/webpack/node_modules/browserslist": {
+ "version": "4.23.3",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001646",
+ "electron-to-chromium": "^1.5.4",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/webpack/node_modules/browserslist/node_modules/caniuse-lite": {
+ "version": "1.0.30001655",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0",
+ "peer": true
+ },
+ "node_modules/webpack/node_modules/browserslist/node_modules/electron-to-chromium": {
+ "version": "1.5.13",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/webpack/node_modules/browserslist/node_modules/node-releases": {
+ "version": "2.0.18",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/webpack/node_modules/browserslist/node_modules/update-browserslist-db": {
+ "version": "1.1.0",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/webpack/node_modules/browserslist/node_modules/update-browserslist-db/node_modules/picocolors": {
+ "version": "1.0.1",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/webpack/node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope/node_modules/estraverse": {
+ "version": "4.3.0",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/webpack/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==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/webpack/node_modules/schema-utils": {
+ "version": "3.3.0",
+ "license": "MIT",
+ "peer": true,
+ "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/webpack/node_modules/schema-utils/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.1.3",
+ "dev": true,
+ "license": "MIT",
+ "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": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "license": "MIT",
+ "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-cjs/node_modules/string-width/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "license": "MIT"
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.4.1",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yup": {
+ "version": "0.32.11",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.15.4",
+ "@types/lodash": "^4.14.175",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "nanoclone": "^0.2.1",
+ "property-expr": "^2.0.4",
+ "toposort": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/zen-observable": {
+ "version": "0.8.15",
+ "license": "MIT"
+ },
+ "node_modules/zen-observable-ts": {
+ "version": "1.2.5",
+ "license": "MIT",
+ "dependencies": {
+ "zen-observable": "0.8.15"
+ }
+ },
+ "node_modules/zustand": {
+ "version": "4.5.5",
+ "license": "MIT",
+ "dependencies": {
+ "use-sync-external-store": "1.2.2"
+ },
+ "engines": {
+ "node": ">=12.7.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16.8",
+ "immer": ">=9.0.6",
+ "react": ">=16.8"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 6f9e820..e3d799f 100644
--- a/package.json
+++ b/package.json
@@ -1,38 +1,53 @@
{
- "name": "portfolio-astro",
- "type": "module",
- "version": "0.0.1",
+ "name": "nextjs",
+ "version": "0.1.0",
+ "private": true,
"scripts": {
- "dev": "astro dev",
- "start": "astro dev",
- "build": "astro check && astro build",
- "preview": "astro preview",
- "astro": "astro"
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
},
"dependencies": {
- "@astrojs/check": "^0.9.4",
- "@astrojs/mdx": "^3.1.8",
- "@astrojs/react": "^3.6.2",
- "@astrojs/rss": "^4.0.9",
- "@astrojs/sitemap": "^3.2.1",
- "@astrojs/tailwind": "^5.1.2",
+ "@biomejs/biome": "^1.8.3",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
"@radix-ui/react-icons": "^1.3.0",
- "@radix-ui/react-slot": "^1.1.0",
+ "@radix-ui/react-label": "^2.0.2",
+ "@radix-ui/react-progress": "^1.0.3",
+ "@radix-ui/react-slot": "^1.0.2",
"@tailwindcss/typography": "^0.5.15",
- "@types/react": "^18.3.11",
- "@types/react-dom": "^18.3.1",
- "astro": "^4.16.5",
+ "@vercel/analytics": "^1.2.2",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
- "lucide-react": "^0.453.0",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "tailwind-merge": "^2.5.4",
- "tailwindcss": "^3.4.14",
- "tailwindcss-animate": "^1.0.7",
- "typescript": "^5.6.3"
+ "embla-carousel-react": "^8.0.4",
+ "lucide-react": "^0.377.0",
+ "next": "14.1.4",
+ "next-themes": "^0.3.0",
+ "nodemailer": "^6.9.13",
+ "outstatic": "^1.4.9",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-markdown": "^9.0.1",
+ "react-syntax-highlighter": "^15.5.0",
+ "remark-emoji": "^5.0.1",
+ "remark-gfm": "^4.0.0",
+ "sharp": "^0.33.3",
+ "sonner": "^1.4.41",
+ "tailwind-merge": "^2.3.0",
+ "tailwindcss-animate": "^1.0.7"
},
"devDependencies": {
- "@biomejs/biome": "1.9.3"
- }
+ "@types/node": "^20",
+ "@types/nodemailer": "^6",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "@types/react-syntax-highlighter": "^15.5.13",
+ "autoprefixer": "^10.0.1",
+ "eslint": "^8",
+ "eslint-config-next": "14.1.4",
+ "postcss": "^8",
+ "tailwindcss": "^3.3.0",
+ "typescript": "^5"
+ },
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..12a703d
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/public/avatar.png b/public/avatar.png
new file mode 100644
index 0000000..6b5dfaa
Binary files /dev/null and b/public/avatar.png differ
diff --git a/public/favicon.svg b/public/favicon.svg
deleted file mode 100644
index f157bd1..0000000
--- a/public/favicon.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
diff --git a/public/fonts/AnonymousPro.ttf b/public/fonts/AnonymousPro.ttf
deleted file mode 100644
index a98da85..0000000
Binary files a/public/fonts/AnonymousPro.ttf and /dev/null differ
diff --git a/public/fonts/Chocolate.ttf b/public/fonts/Chocolate.ttf
deleted file mode 100644
index 65d532b..0000000
Binary files a/public/fonts/Chocolate.ttf and /dev/null differ
diff --git a/public/icon.ico b/public/icon.ico
deleted file mode 100644
index f03bd8f..0000000
Binary files a/public/icon.ico and /dev/null differ
diff --git a/public/images/Screenshot-circle.png b/public/images/Screenshot-circle.png
deleted file mode 100644
index 7a16cef..0000000
Binary files a/public/images/Screenshot-circle.png and /dev/null differ
diff --git a/public/images/Screenshot-html.png b/public/images/Screenshot-html.png
deleted file mode 100644
index 5efb84b..0000000
Binary files a/public/images/Screenshot-html.png and /dev/null differ
diff --git a/public/images/blog-placeholder-about.jpg b/public/images/blog-placeholder-about.jpg
deleted file mode 100644
index cf5f685..0000000
Binary files a/public/images/blog-placeholder-about.jpg and /dev/null differ
diff --git a/public/images/gradient-1.webp b/public/images/gradient-1.webp
deleted file mode 100644
index 7a88513..0000000
Binary files a/public/images/gradient-1.webp and /dev/null differ
diff --git a/public/images/grumpy-cat-small.png b/public/images/grumpy-cat-small.png
deleted file mode 100644
index cdb49d2..0000000
Binary files a/public/images/grumpy-cat-small.png and /dev/null differ
diff --git a/public/images/image.webp b/public/images/image.webp
deleted file mode 100644
index b5afecf..0000000
Binary files a/public/images/image.webp and /dev/null differ
diff --git a/public/images/image1-E3Mj.jpeg b/public/images/image1-E3Mj.jpeg
new file mode 100644
index 0000000..ef84b80
Binary files /dev/null and b/public/images/image1-E3Mj.jpeg differ
diff --git a/public/images/image2-A1ND.jpeg b/public/images/image2-A1ND.jpeg
new file mode 100644
index 0000000..e9d15a1
Binary files /dev/null and b/public/images/image2-A1ND.jpeg differ
diff --git a/public/next.svg b/public/next.svg
new file mode 100644
index 0000000..5174b28
--- /dev/null
+++ b/public/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/og-image.jpg b/public/og-image.jpg
new file mode 100644
index 0000000..29c33e6
Binary files /dev/null and b/public/og-image.jpg differ
diff --git a/public/vercel.svg b/public/vercel.svg
new file mode 100644
index 0000000..d2f8422
--- /dev/null
+++ b/public/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro
deleted file mode 100644
index d26b8c6..0000000
--- a/src/components/BaseHead.astro
+++ /dev/null
@@ -1,44 +0,0 @@
----
-// Import the global.css file here so that it is included on
-// all pages through the use of the component.
-import "@/styles/global.css";
-
-interface Props {
- title: string;
- description: string;
- image?: string;
-}
-
-const canonicalURL = new URL(Astro.url.pathname, Astro.site);
-
-const { title, description, image = "/blog-placeholder-1.jpg" } = Astro.props;
----
-
-
-
-
-
-
-
-
-
-
-
-{title}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
deleted file mode 100644
index 3be3c4a..0000000
--- a/src/components/Footer.astro
+++ /dev/null
@@ -1,21 +0,0 @@
----
-import { ThemeToggle } from "./theme-toggle";
-const today = new Date();
-import Gmail from "@/components/icons/google";
-import X from "@/components/icons/twitter";
----
-
-
diff --git a/src/components/FormattedDate.astro b/src/components/FormattedDate.astro
deleted file mode 100644
index 1bcce73..0000000
--- a/src/components/FormattedDate.astro
+++ /dev/null
@@ -1,17 +0,0 @@
----
-interface Props {
- date: Date;
-}
-
-const { date } = Astro.props;
----
-
-
- {
- date.toLocaleDateString('en-us', {
- year: 'numeric',
- month: 'short',
- day: 'numeric',
- })
- }
-
diff --git a/src/components/Header.astro b/src/components/Header.astro
deleted file mode 100644
index 5058c66..0000000
--- a/src/components/Header.astro
+++ /dev/null
@@ -1,42 +0,0 @@
----
-import { SITE_TITLE } from "@/consts";
-import HeaderLink from "./HeaderLink.astro";
----
-
-
-
-
-
-
-
- Projects
- Blog
-
-
-
diff --git a/src/components/HeaderLink.astro b/src/components/HeaderLink.astro
deleted file mode 100644
index aea33b7..0000000
--- a/src/components/HeaderLink.astro
+++ /dev/null
@@ -1,17 +0,0 @@
----
-import { Button } from "@/components/ui/button";
-import type { HTMLAttributes } from "astro/types";
-type Props = HTMLAttributes<"a">;
-
-const { href, class: className, ...props } = Astro.props;
-
-const { pathname } = Astro.url;
-const subpath = pathname.match(/[^\/]+/g);
-const isActive = href === pathname || href === `/${subpath?.[0]}`;
----
-
-
-
-
-
-
diff --git a/src/components/icons/O-wen.svg b/src/components/icons/O-wen.svg
deleted file mode 100644
index 5bc012b..0000000
--- a/src/components/icons/O-wen.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/Vector 2.svg b/src/components/icons/Vector 2.svg
deleted file mode 100644
index 174211b..0000000
--- a/src/components/icons/Vector 2.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/Vector 3.svg b/src/components/icons/Vector 3.svg
deleted file mode 100644
index 7f13f72..0000000
--- a/src/components/icons/Vector 3.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/Vector 4.svg b/src/components/icons/Vector 4.svg
deleted file mode 100644
index fc48ea4..0000000
--- a/src/components/icons/Vector 4.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/google.tsx b/src/components/icons/google.tsx
deleted file mode 100644
index 07e8df6..0000000
--- a/src/components/icons/google.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import * as React from "react";
-import type { SVGProps } from "react";
-const Gmail = (props: SVGProps) => (
-
-
-
-
-
-
-
-
-
-
-
-);
-export default Gmail;
diff --git a/src/components/icons/o-Wen.svg b/src/components/icons/o-Wen.svg
deleted file mode 100644
index fcf151b..0000000
--- a/src/components/icons/o-Wen.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/ow-En.svg b/src/components/icons/ow-En.svg
deleted file mode 100644
index 867712d..0000000
--- a/src/components/icons/ow-En.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/owe-N.svg b/src/components/icons/owe-N.svg
deleted file mode 100644
index d1993d2..0000000
--- a/src/components/icons/owe-N.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/icons/twitter.tsx b/src/components/icons/twitter.tsx
deleted file mode 100644
index 2246db0..0000000
--- a/src/components/icons/twitter.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from "react";
-import type { SVGProps } from "react";
-const XformerlyTwitter = (props: SVGProps) => (
-
-
-
-);
-export default XformerlyTwitter;
diff --git a/src/components/theme-toggle.tsx b/src/components/theme-toggle.tsx
deleted file mode 100644
index 3202af4..0000000
--- a/src/components/theme-toggle.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { Monitor, Moon, Sun } from "lucide-react";
-import { useEffect, useState } from "react";
-import { Button } from "./ui/button";
-
-export function ThemeToggle() {
- const [theme, setTheme] = useState<"light" | "dark" | "system">(() => {
- if (typeof window !== "undefined" && window.localStorage) {
- const storedTheme = window.localStorage.getItem("theme") as
- | "light"
- | "dark"
- | "system"
- | null;
- if (storedTheme) {
- return storedTheme;
- }
- }
- return "system";
- });
-
- useEffect(() => {
- const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
- const handleChange = () => {
- if (theme === "system") {
- updateTheme(theme);
- }
- };
-
- mediaQuery.addEventListener("change", handleChange);
- return () => mediaQuery.removeEventListener("change", handleChange);
- }, [theme]);
-
- useEffect(() => {
- updateTheme(theme);
- }, [theme]);
-
- const updateTheme = (newTheme: "light" | "dark" | "system") => {
- const isDark =
- newTheme === "dark" ||
- (newTheme === "system" &&
- window.matchMedia("(prefers-color-scheme: dark)").matches);
-
- document.documentElement.classList.toggle("dark", isDark);
- if (typeof window !== "undefined" && window.localStorage) {
- window.localStorage.setItem("theme", newTheme);
- }
- };
-
- return (
-
-
- Toggle theme
- setTheme("light")}
- >
-
-
- setTheme("dark")}
- >
-
-
- setTheme("system")}
- >
-
-
-
-
- );
-}
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
deleted file mode 100644
index 2fba20e..0000000
--- a/src/components/ui/button.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Slot } from "@radix-ui/react-slot";
-import { type VariantProps, cva } from "class-variance-authority";
-import * as React from "react";
-
-import { cn } from "@/lib/utils";
-
-const buttonVariants = cva(
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
- {
- variants: {
- variant: {
- default:
- "bg-primary text-primary-foreground shadow hover:bg-primary/90",
- destructive:
- "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
- outline:
- "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
- secondary:
- "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
- ghost: "hover:bg-accent hover:text-accent-foreground",
- link: "text-primary underline-offset-4 hover:underline",
- },
- size: {
- default: "h-9 px-4 py-2",
- sm: "h-8 rounded-md px-3 text-xs",
- lg: "h-10 rounded-md px-8",
- icon: "h-9 w-9",
- },
- },
- defaultVariants: {
- variant: "default",
- size: "default",
- },
- },
-);
-
-export interface ButtonProps
- extends React.ButtonHTMLAttributes,
- VariantProps {
- asChild?: boolean;
-}
-
-const Button = React.forwardRef(
- ({ className, variant, size, asChild = false, ...props }, ref) => {
- const Comp = asChild ? Slot : "button";
- return (
-
- );
- },
-);
-Button.displayName = "Button";
-
-export { Button, buttonVariants };
diff --git a/src/consts.ts b/src/consts.ts
deleted file mode 100644
index 5248643..0000000
--- a/src/consts.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// Place any global data in this file.
-// You can import this data from anywhere in your site by using the `import` keyword.
-
-export const SITE_TITLE = "Owenstack";
-export const SITE_DESCRIPTION = "Full Stack web developer portfolio and blog";
diff --git a/src/content/blog/introduction-data-science.md b/src/content/blog/introduction-data-science.md
deleted file mode 100644
index 7e44c0d..0000000
--- a/src/content/blog/introduction-data-science.md
+++ /dev/null
@@ -1,124 +0,0 @@
----
-title: 'Introduction to Data in Data Analysis'
-description: 'A comprehensive introduction to data for data analysis'
-pubDate: 'Nov 18 2024'
-heroImage: '/images/gradient-1.webp'
----
-
-### **Lesson Plan: Introduction to Data for Data Analysis**
-
-#### **Lesson Objective**
-By the end of the session, learners will:
-- Understand what data is and its importance.
-- Learn the types and sources of data.
-- Grasp the basics of data collection, cleaning, and analysis.
-- Be introduced to the role of data in business insights and decision-making.
-
----
-
-### **Lesson Outline**
-
-#### **Understanding Data**
-1. **What is Data?**
- - Definition of data: Data refers to raw facts and figures that can be processed to extract meaningful information. It can be structured (organized in tables) or unstructured (like text or images).
- - Data vs. Information: The transformation of data into meaningful insights. [Data vs Information](https://bloomfire.com/blog/data-vs-information/)
- - Examples of data in everyday life (e.g., weather reports, social media metrics).
-
-2. **Types of Data**
- - Qualitative vs. Quantitative Data.
- - Structured vs. Unstructured Data.
- - Examples:
- - Qualitative: Customer reviews, survey responses.
- - Quantitative: Sales figures, test scores.
-
- Reference(s): [Types of Data](https://www.coursera.org/articles/types-of-data), [Types of Data](https://www.coursera.org/in/articles/types-of-data), [Unstructured data and structured data](https://www.questionpro.com/blog/structured-data/)
-
-3. **Sources of Data**
- - Internal vs. External Sources:
- - Internal: Company databases, employee records.
- - External: Market research, social media analytics.
- - Primary vs. Secondary Data:
- - Primary: Surveys, interviews, experiments.
- - Secondary: Articles, government reports, public datasets.
-
- Reference(s): [Sources of Data](https://www.questionpro.com/blog/sources-of-data/), [What are data sources](https://www.akooda.co/blog/what-are-data-sources)
-
- **Activity**: Brainstorm sources of data learners might encounter in daily life.
-
----
-
-#### **Why Data Matters**
-1. **The Role of Data in Modern Business**
- - How data drives decision-making (examples: pricing strategies, market trends).
- - Real-world examples of data-driven companies (e.g., Amazon, Google).
-
- Reference(s): [Advantages of data driven decision making by Harvard Business School](https://online.hbs.edu/blog/post/data-driven-decision-making)
-
-2. **Applications of Data Analysis**
- - Understanding customer behavior.
- - Improving operational efficiency.
- - Forecasting and risk management.
-
-3. **Benefits of Data-Driven Decision-Making**
- - Accuracy and precision in insights.
- - Competitive advantage in the market.
- - Cost reduction and profitability.
-
- Reference(s): [Data driven decision making by Asana](https://asana.com/resources/data-driven-decision-making), [A guide to data driven decision making by Tableau](https://www.tableau.com/learn/articles/data-driven-decision-making),
-
- **Discussion**: Learners share examples of how businesses around them use data.
-
----
-
-#### **Basics of Data Collection and Cleaning**
-1. **Data Collection Techniques**
- - Surveys and Questionnaires.
- - Observations and Experiments.
- - Web scraping and API integration (brief mention).
-
- Reference(s): [PiggyVest Savings Report 2023](https://www.piggyvest.com/reports/2023), [PiggyVest Savings Report 2024](https://www.piggyvest.com/reports/2024), [Data Collection by Simplilearn](https://www.simplilearn.com/what-is-data-collection-article), [Data Collection Techniques](https://safetyculture.com/topics/data-collection/data-collection-techniques/)
-
-2. **Introduction to Data Cleaning**
- - Definition: Removing errors, duplicates, and inconsistencies.
- - Importance of clean data for accurate analysis.
- - Examples of errors: Typos, missing values, outliers.
-
- Reference(s): [Data Cleansing by Wikipedia](https://en.wikipedia.org/wiki/Data_cleansing), [What is data cleansing by Career Foundry](https://careerfoundry.com/en/blog/data-analytics/what-is-data-cleaning/), [Data Cleaning by Career Foundry](https://careerfoundry.com/en/blog/data-analytics/what-is-data-cleaning/)
-
- **Activity**: Display a messy dataset and ask learners to identify issues.
-
----
-
-#### **Data in Action**
-1. **Exploratory Data Analysis (EDA)**
- - What is EDA? Gaining insights from raw data.
- - Overview of basic techniques:
- - Descriptive statistics: Mean, median, mode.
- - Visualizations: Bar charts, line graphs, scatter plots.
- - Walkthrough of a simple dataset in Excel or Google Sheets.
-
- Reference(s): [Exploratory data analysis by IBM](https://www.ibm.com/topics/exploratory-data-analysis), [Exploratory data analysis by Career Foundry](https://careerfoundry.com/en/blog/data-analytics/exploratory-data-analysis/)
-
-2. **Case Study: Data-Driven Insights**
- - Present a real-life business scenario:
- - Example: Open Discussion on ways DDI can be applied in students' current workplace, UNN ICT
- - **Activity**: Learners practice drawing insights from a simplified dataset.
-
-3. **Future Steps in Data Analysis**
- - Overview of advanced concepts:
- - Predictive analytics.
- - Machine learning.
- - Importance of continuous learning and practice.
-
- Reference(s): [Predictive analysis by Harvard Business School](https://online.hbs.edu/blog/post/predictive-analytics), [Predictive analysis by Investopedia](https://www.investopedia.com/terms/p/predictive-analytics.asp), [Predictive analysis by IBM](https://www.ibm.com/topics/predictive-analytics), 5
-
----
-
-### **Assessment**
-- Questions throughout the session to gauge understanding.
-- Small group activity where learners summarize the session's key points.
-- Optional: Provide a simple dataset for learners to analyze after class.
-
-### **Homework**
-- Research and note down 3 examples of how data is used in businesses or industries learners are interested in.
-- Explore and clean a small dataset using Excel or Google Sheets.
diff --git a/src/content/blog/introduction.md b/src/content/blog/introduction.md
deleted file mode 100644
index 570577a..0000000
--- a/src/content/blog/introduction.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-title: 'Introduction to Web Development'
-description: 'A brief overview on HTML'
-pubDate: 'Jun 19 2024'
-heroImage: '/images/Screenshot-html.png'
----
-
-Hey everyone! Welcome to the start of what’s going to be an epic web development journey. We don’t have the entire map drawn out yet, but that’s the exciting part. Let’s take this first step together and explore the world of web development. Who knows where we’ll end up? Ready? Let’s go!
-
-## Course Material(s)
-- [MDN Web Docs](https://developer.mozilla.org/en-US/)
-
-## Web Development Basics: What’s the Big Deal?
-Let’s keep things simple: HTML, CSS, and JavaScript are the core trio that brings the web to life. Together, they form the foundation of what we see and interact with online. Today, we’ll scratch the surface of where they came from and why they matter.
-
-### The Web: Your Personal Info Delivery Service
-The web’s like the ultimate middleman—making sure info gets from one place to another. Here’s the flow:
-
-1. You (the user) start the process by making a request in your browser.
-2. Your browser sends a "GET" request for the page you want to visit.
-3. This goes to the DNS (Domain Name System), which translates the URL into the IP address of the server.
-4. The server, if it’s got what you need, sends back a response.
-5. The browser grabs that response and boom—you see the content on your screen.
-
-### HTML: The Skeleton of the Web
-HTML, short for **Hypertext Markup Language**, is your web’s backbone. Let’s break it down:
-
-- **Hypertext**: Linking between pages (basically, you click and jump to another page).
-- **Markup**: A way to describe content (think of it as a label system).
-- **Language**: A set of rules that everyone (i.e., browsers) understands.
-
-If we think of a webpage as a house, HTML is the structure that holds everything up. But a house with just a frame? Not super fun to live in. You’ll need some style—that’s where CSS comes in.
-
-HTML elements are the building blocks, like ``, ``, ` `, and others. They tell the browser how to structure the content.
-
-Here's a basic HTML element example:
-
-
-
-Elements can also have attributes, giving them extra capabilities. Some important ones include:
-
-- `src`: Where your content (like an image) is coming from.
-- `class`: A way to group elements for styling.
-- `id`: A unique identifier for elements.
-
-Now, here’s a basic HTML document structure:
-
-```html
-
-
-
-
-
- My First Web Page
-
-
- Hello World
-
-
-```
-
-A quick rundown of the parts:
-- ``: Tells the browser we’re working with HTML5.
-- ``: The root of the document.
-- ``: Contains meta info (like encoding and title).
-- ``: The content that’s visible on the webpage.
-
-### CSS: The Stylist of the Web
-If HTML is the skeleton, CSS is the stylish wardrobe that makes everything look good. CSS stands for **Cascading Style Sheets** and is only limited by your imagination. We’ll dive deeper into CSS in the next session.
-
-## Putting It Into Practice
-So, with what we’ve learned so far, here's what the students came up with:
-
-```html
-
-
-
-
-
- Learning HTML
-
-
-
-
-
- About the Web Dev Class
- Attendees:
-
- Mmesoma
- Abraham
- Mercy
- Philip
-
- Otherwise known as:
-
- Esther
- AB
- Chijioke's best friend
- Big smoke
-
-
-
-
-```
-
-## Wrapping Up
-By the end of today’s session, we had something that looked like this:
-
-
-
-Before we meet again, your homework is to sign up for [Free Code Camp](https://www.freecodecamp.org/) and finish the first chapter. It’s an awesome way to practice what you’re learning.
-
-Remember, web development is an art form. Your tools—HTML, CSS, and JavaScript—are the brushes, and the web is your canvas. With enough practice, you can create just about anything you dream up.
-
-Stay curious, keep building, and I’ll see you in the next lesson where we’ll explore the magic of CSS!
-
-*Image credit: Anatomy of an HTML element courtesy of [MDN](https://developer.mozilla.org)*
diff --git a/src/content/blog/transition.md b/src/content/blog/transition.md
deleted file mode 100644
index eb81c2e..0000000
--- a/src/content/blog/transition.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: 'From NextJs to Remix and Cloudflare Workers'
-description: 'We moved a project from NextJs to Remix basically for cost savings'
-pubDate: 'Mar 12 2025'
-heroImage: '/images/image.webp'
----
-
-#### Introduction
-In a bid to optimize performance, reduce costs, and simplify development workflows, we have successfully transitioned from Next.js to Remix, deploying on Cloudflare Workers. Initially, our project leveraged Next.js on Vercel, complemented by AWS backend services. While this setup provided a solid foundation, our evolving needs necessitated a more efficient and cost-effective solution.
-
-Remix's server-side rendering (SSR) model, seamless integration with Cloudflare's edge network, and robust resource bindings have proven to be significant advantages over our previous architecture. This document outlines the key motivations behind our transition and details the improvements in performance, operational efficiencies, and cost savings that Remix and Cloudflare Workers have delivered.
-
-#### 1. Remix’s Server-Side Rendering (SSR): A Performance and Simplicity Boost
-Next.js offered multiple rendering strategies—Static Site Generation (SSG), Incremental Static Regeneration (ISR), Server-Side Rendering (SSR), and Client-Side Rendering (CSR). While this flexibility was useful, it introduced complexity in choosing the right approach for each page. Remix, on the other hand, is designed around SSR by default, simplifying data fetching and ensuring a more consistent performance profile.
-
-- **Why Remix SSR Excels**: Remix utilizes the Web Fetch API to execute server-side logic efficiently, delivering pre-rendered pages to the client with minimal JavaScript overhead. This approach results in faster initial page loads and better SEO. In contrast, Next.js required explicit SSR configuration (e.g., `getServerSideProps`) and often involved client-side fetching trade-offs.
-- **Performance Gains**: Deploying Remix on Cloudflare Workers has allowed for true edge rendering, eliminating the latency associated with Node.js-based SSR solutions like Vercel. By rendering content at the edge, closer to users, we have achieved lower Time to First Byte (TTFB) and improved global performance.
-- **Developer Experience**: Remix’s approach to data fetching and mutations via loaders and actions has streamlined our development process. Unlike Next.js, where multiple rendering strategies and client-side data-fetching tools (e.g., SWR, React Query) were often required, Remix centralizes data handling on the server, making development more intuitive and maintainable.
-
-**Impact**: Remix’s SSR model has simplified our architecture, improved performance by reducing client-side overhead, and ensured consistently fast content delivery when paired with Cloudflare Workers.
-
-#### 2. Ease of Use of Cloudflare Bindings for Resource Access
-Cloudflare Workers provides a powerful ecosystem of bindings—such as KV storage, Durable Objects, and Queues—that integrate seamlessly with Remix, reducing the need for traditional backend infrastructure.
-
-- **Simplified Resource Management**: In our previous Next.js setup, accessing external resources (databases, caches, etc.) required API routes and additional middleware, increasing complexity. With Remix on Cloudflare Workers, we now have direct and efficient access to these resources via Cloudflare bindings.
-- **Type Safety and Configuration**: Remix’s integration with Cloudflare Workers allows for automatic TypeScript type generation for bindings, reducing errors and improving development speed.
-- **Scalability**: Cloudflare’s edge infrastructure automatically scales without the operational overhead of managing server instances, making it an ideal fit for applications expecting unpredictable traffic spikes.
-
-**Impact**: Cloudflare bindings have simplified our backend logic, improved scalability, and enhanced developer productivity with type-safe, serverless resource management.
-
-#### 3. General Cost Reduction
-One of the most compelling outcomes of our transition to Remix and Cloudflare Workers is the significant cost savings compared to our previous Next.js + Vercel + AWS setup.
-
-- **Previous Costs with Next.js on Vercel**: Hosting with Vercel incurred costs based on bandwidth, build times, and serverless function invocations. As our application scaled, these costs became substantial, with static asset hosting alone often exceeding $40/month, plus additional charges for serverless functions and database queries.
-- **Cloudflare Workers Pricing**: Cloudflare Workers offers a generous free tier (100,000 requests/day) and a low pay-as-you-go pricing model ($0.30 per million requests). Features such as DDoS protection, CDN, and caching are included at no extra cost, making it a highly cost-effective solution compared to AWS and Vercel.
-- **Build and Deployment Savings**: Remix’s streamlined build process has reduced CI/CD overhead compared to Next.js, which required managing SSG/ISR builds and could become resource-intensive.
-
-**Impact**: Moving to Remix and Cloudflare Workers has significantly reduced our hosting and infrastructure costs while providing enterprise-grade capabilities at a fraction of the price.
-
-#### 4. Additional Benefits
-Beyond performance, scalability, and cost savings, this transition has provided additional strategic advantages:
-
-- **Edge-Native Deployment**: Cloudflare Workers deploy code across over 250 global edge locations, ensuring low-latency content delivery.
-- **Progressive Enhancement**: Remix’s emphasis on web standards (e.g., native form handling, robust error handling) makes applications more resilient and accessible, even when JavaScript is disabled.
-- **Improved UX**: Built-in error boundaries and scroll restoration have improved user experience without requiring additional configuration, unlike Next.js.
-- **Reduced Complexity**: While Remix’s ecosystem is smaller than Next.js’s, its adherence to web standards and simpler architecture have minimized our reliance on third-party libraries, reducing long-term maintenance costs.
-
-**Impact**: The shift to Remix and Cloudflare Workers has aligned with best practices for performance, accessibility, and maintainability, making it a future-proof choice.
-
-#### Conclusion
-The transition from Next.js to Remix, coupled with deployment on Cloudflare Workers, has provided clear advantages in performance, cost efficiency, and developer experience. Remix’s server-side rendering model has simplified our architecture while delivering faster page loads, Cloudflare bindings have provided a seamless and scalable backend solution, and Cloudflare Workers have dramatically reduced infrastructure costs.
-
-Having completed this transition, we are now able to take full advantage of edge computing, improved developer experience, and reduced complexity, ensuring that our application remains highly performant and cost-efficient for the long term.
-
diff --git a/src/content/config.ts b/src/content/config.ts
deleted file mode 100644
index 8917b31..0000000
--- a/src/content/config.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { defineCollection, z } from "astro:content";
-
-const blog = defineCollection({
- type: "content",
- // Type-check frontmatter using a schema
- schema: z.object({
- title: z.string(),
- description: z.string(),
- // Transform string to Date object
- pubDate: z.coerce.date(),
- updatedDate: z.coerce.date().optional(),
- heroImage: z.string().optional(),
- }),
-});
-
-const project = defineCollection({
- type: "content",
- // Type-check frontmatter using a schema
- schema: z.object({
- title: z.string(),
- description: z.string(),
- pubDate: z.coerce.date(),
- updatedDate: z.coerce.date().optional(),
- heroImage: z.string().optional(),
- }),
-});
-
-export const collections = { blog, project };
diff --git a/src/content/drafts/data-analytics.md b/src/content/drafts/data-analytics.md
deleted file mode 100644
index 659d1d9..0000000
--- a/src/content/drafts/data-analytics.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: 'Introduction to Data in Data Analysis'
-description: 'A comprehensive introduction to data for data analysis'
-pubDate: 'Nov 18 2024'
-heroImage: '/images/gradient-1.webp'
----
-
-Understand the problem
-Data collection
-Data cleaning - incomplete, duplicate
-Data analysis
-Draw your conclusion - validation check
-
-Python - oop, visualization, manipulation, {numpy {numerical computation of data}, scipy {technical and scientific computations}, pandas {manipulate data,time series}}
-R - data analysis and data visualization {ggplot, plotlb, deployr}
-Tableau - reports and dashboards
-Power BI - same as Tableau
-Apache Spark - process data in real time, and sql query, spark stream and spark sql
-Sas - Statistical analysis software that analyze and visualize data
-QlikView - interactive analytics with in memory storage
-
-Retail -what they need, when they need, supply chain opimization
-Healthcare -insurance, new drugs development, disease discovery
-Manufacturing - new cost saving and revenue upstream
-Banking -
-Logistics - optimize routes, performance management
-
-Amazon
-Accenture
-Cigna
-Cerner
-Target
-McAfee
-Rapido
-FlipKart
-Walmart
-
-linear regression in r
-
diff --git a/src/env.d.ts b/src/env.d.ts
deleted file mode 100644
index e16c13c..0000000
--- a/src/env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/src/layouts/BlogPost.astro b/src/layouts/BlogPost.astro
deleted file mode 100644
index c4194f8..0000000
--- a/src/layouts/BlogPost.astro
+++ /dev/null
@@ -1,46 +0,0 @@
----
-import type { CollectionEntry } from "astro:content";
-import BaseHead from "@/components/BaseHead.astro";
-import Footer from "@/components/Footer.astro";
-import FormattedDate from "@/components/FormattedDate.astro";
-import Header from "@/components/Header.astro";
-
-type Props = CollectionEntry<"blog">["data"];
-
-const { title, description, pubDate, updatedDate, heroImage } = Astro.props;
----
-
-
-
-
-
-
-
-
-
-
- {heroImage && (
-
-
-
- )}
-
-
-
- {updatedDate && (
-
- (Updated: )
-
- )}
-
-
{title}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
deleted file mode 100644
index ac680b3..0000000
--- a/src/lib/utils.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { type ClassValue, clsx } from "clsx";
-import { twMerge } from "tailwind-merge";
-
-export function cn(...inputs: ClassValue[]) {
- return twMerge(clsx(inputs));
-}
diff --git a/src/pages/about.astro b/src/pages/about.astro
deleted file mode 100644
index 98b3a11..0000000
--- a/src/pages/about.astro
+++ /dev/null
@@ -1,62 +0,0 @@
----
-import Layout from "@/layouts/BlogPost.astro";
----
-
-
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
- labore et dolore magna aliqua. Vitae ultricies leo integer malesuada nunc vel risus commodo
- viverra. Adipiscing enim eu turpis egestas pretium. Euismod elementum nisi quis eleifend quam
- adipiscing. In hac habitasse platea dictumst vestibulum. Sagittis purus sit amet volutpat. Netus
- et malesuada fames ac turpis egestas. Eget magna fermentum iaculis eu non diam phasellus
- vestibulum lorem. Varius sit amet mattis vulputate enim. Habitasse platea dictumst quisque
- sagittis. Integer quis auctor elit sed vulputate mi. Dictumst quisque sagittis purus sit amet.
-
-
-
- Morbi tristique senectus et netus. Id semper risus in hendrerit gravida rutrum quisque non
- tellus. Habitasse platea dictumst quisque sagittis purus sit amet. Tellus molestie nunc non
- blandit massa. Cursus vitae congue mauris rhoncus. Accumsan tortor posuere ac ut. Fringilla urna
- porttitor rhoncus dolor. Elit ullamcorper dignissim cras tincidunt lobortis. In cursus turpis
- massa tincidunt dui ut ornare lectus. Integer feugiat scelerisque varius morbi enim nunc.
- Bibendum neque egestas congue quisque egestas diam. Cras ornare arcu dui vivamus arcu felis
- bibendum. Dignissim suspendisse in est ante in nibh mauris. Sed tempus urna et pharetra pharetra
- massa massa ultricies mi.
-
-
-
- Mollis nunc sed id semper risus in. Convallis a cras semper auctor neque. Diam sit amet nisl
- suscipit. Lacus viverra vitae congue eu consequat ac felis donec. Egestas integer eget aliquet
- nibh praesent tristique magna sit amet. Eget magna fermentum iaculis eu non diam. In vitae
- turpis massa sed elementum. Tristique et egestas quis ipsum suspendisse ultrices. Eget lorem
- dolor sed viverra ipsum. Vel turpis nunc eget lorem dolor sed viverra. Posuere ac ut consequat
- semper viverra nam. Laoreet suspendisse interdum consectetur libero id faucibus. Diam phasellus
- vestibulum lorem sed risus ultricies tristique. Rhoncus dolor purus non enim praesent elementum
- facilisis. Ultrices tincidunt arcu non sodales neque. Tempus egestas sed sed risus pretium quam
- vulputate. Viverra suspendisse potenti nullam ac tortor vitae purus faucibus ornare. Fringilla
- urna porttitor rhoncus dolor purus non. Amet dictum sit amet justo donec enim.
-
-
-
- Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Tortor posuere ac ut consequat semper
- viverra. Tellus mauris a diam maecenas sed enim ut sem viverra. Venenatis urna cursus eget nunc
- scelerisque viverra mauris in. Arcu ac tortor dignissim convallis aenean et tortor at. Curabitur
- gravida arcu ac tortor dignissim convallis aenean et tortor. Egestas tellus rutrum tellus
- pellentesque eu. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Ut enim
- blandit volutpat maecenas volutpat blandit aliquam etiam. Id donec ultrices tincidunt arcu. Id
- cursus metus aliquam eleifend mi.
-
-
-
- Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta
- nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam
- tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci
- ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar
- proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
-
-
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro
deleted file mode 100644
index 469cbfb..0000000
--- a/src/pages/blog/[...slug].astro
+++ /dev/null
@@ -1,20 +0,0 @@
----
-import { type CollectionEntry, getCollection } from "astro:content";
-import BlogPost from "@/layouts/BlogPost.astro";
-
-export async function getStaticPaths() {
- const posts = await getCollection("blog");
- return posts.map((post) => ({
- params: { slug: post.slug },
- props: post,
- }));
-}
-type Props = CollectionEntry<"blog">;
-
-const post = Astro.props;
-const { Content } = await post.render();
----
-
-
-
-
diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro
deleted file mode 100644
index 9a57be2..0000000
--- a/src/pages/blog/index.astro
+++ /dev/null
@@ -1,54 +0,0 @@
----
-import { getCollection } from "astro:content";
-import BaseHead from "@/components/BaseHead.astro";
-import Footer from "@/components/Footer.astro";
-import FormattedDate from "@/components/FormattedDate.astro";
-import Header from "@/components/Header.astro";
-import { SITE_DESCRIPTION, SITE_TITLE } from "@/consts";
-import {
- Card,
- CardContent,
- CardHeader,
- CardTitle,
- CardDescription,
-} from "@/components/ui/card";
-
-const posts = (await getCollection("blog")).sort(
- (a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
-);
----
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/index.astro b/src/pages/index.astro
deleted file mode 100644
index a0500c9..0000000
--- a/src/pages/index.astro
+++ /dev/null
@@ -1,70 +0,0 @@
----
-import BaseHead from "@/components/BaseHead.astro";
-import Footer from "@/components/Footer.astro";
-import Header from "@/components/Header.astro";
-import O from "@/components/icons/O-wen.svg";
-import Flower from "@/components/icons/Vector 3.svg";
-import Other from "@/components/icons/Vector 4.svg";
-import W from "@/components/icons/o-Wen.svg";
-import E from "@/components/icons/ow-En.svg";
-import N from "@/components/icons/owe-N.svg";
-import { SITE_DESCRIPTION, SITE_TITLE } from "@/consts";
----
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/projects.astro b/src/pages/projects.astro
deleted file mode 100644
index b9547ce..0000000
--- a/src/pages/projects.astro
+++ /dev/null
@@ -1,52 +0,0 @@
----
-import { getCollection } from "astro:content";
-import BaseHead from "@/components/BaseHead.astro";
-import Footer from "@/components/Footer.astro";
-import FormattedDate from "@/components/FormattedDate.astro";
-import Header from "@/components/Header.astro";
-import { SITE_DESCRIPTION, SITE_TITLE } from "@/consts";
-
-const posts = (await getCollection("project")).sort(
- (a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
-);
----
-
-
-
-
-
-
-
-
-
-
- {posts.length > 0 ? (
-
- ) : (
-
-
Work in Progress
-
We're currently working on adding exciting projects to this page. Check back soon for updates!
-
In the meantime, feel free to explore other sections of our site.
-
- )}
-
-
-
-
-
diff --git a/src/pages/rss.xml.js b/src/pages/rss.xml.js
deleted file mode 100644
index d16a291..0000000
--- a/src/pages/rss.xml.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import { getCollection } from "astro:content";
-import { SITE_DESCRIPTION, SITE_TITLE } from "@/consts";
-import rss from "@astrojs/rss";
-
-export async function GET(context) {
- const posts = await getCollection("blog");
- return rss({
- title: SITE_TITLE,
- description: SITE_DESCRIPTION,
- site: context.site,
- items: posts.map((post) => ({
- ...post.data,
- link: `/blog/${post.slug}/`,
- })),
- });
-}
diff --git a/src/styles/global.css b/src/styles/global.css
deleted file mode 100644
index 457d773..0000000
--- a/src/styles/global.css
+++ /dev/null
@@ -1,77 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-@font-face {
- font-family: "anonymous";
- src: url("../public/fonts/AnonymousPro.ttf") format("ttf"),;
-}
-
-@font-face {
- font-family: "chocolate";
- src: url("../public/fonts/Chocolate.ttf") format("ttf"),;
-}
-
-body {
- font-family: "anonymous", monospace;
-}
-
-#logo {
- font-family: "chocolate", cursive;
-}
-
-@layer base {
- :root {
- --background: 232 42% 99%;
- --foreground: 232 72% 3%;
- --muted: 202 8% 90%;
- --muted-foreground: 202 11% 30%;
- --popover: 232 42% 99%;
- --popover-foreground: 232 72% 3%;
- --card: 232 42% 98%;
- --card-foreground: 232 72% 2%;
- --border: 232 2% 93%;
- --input: 232 2% 93%;
- --primary: 232 45% 84%;
- --primary-foreground: 232 45% 24%;
- --secondary: 202 45% 84%;
- --secondary-foreground: 202 45% 24%;
- --accent: 262 45% 84%;
- --accent-foreground: 262 45% 24%;
- --destructive: 16 84% 43%;
- --destructive-foreground: 0 0% 100%;
- --ring: 232 45% 84%;
- --radius: 0.5rem;
- }
-
- .dark {
- --background: 232 58% 4%;
- --foreground: 232 29% 99%;
- --muted: 202 8% 10%;
- --muted-foreground: 202 11% 70%;
- --popover: 232 58% 4%;
- --popover-foreground: 232 29% 99%;
- --card: 232 58% 5%;
- --card-foreground: 0 0% 100%;
- --border: 232 2% 11%;
- --input: 232 2% 11%;
- --primary: 232 45% 84%;
- --primary-foreground: 232 45% 24%;
- --secondary: 202 45% 84%;
- --secondary-foreground: 202 45% 24%;
- --accent: 262 45% 84%;
- --accent-foreground: 262 45% 24%;
- --destructive: 16 84% 50%;
- --destructive-foreground: 0 0% 100%;
- --ring: 232 45% 84%;
- }
- }
-
-@layer base {
- * {
- @apply border-border;
- }
- body {
- @apply bg-background text-foreground;
- }
-}
diff --git a/src/templates/index.md b/src/templates/index.md
deleted file mode 100644
index 3d31369..0000000
--- a/src/templates/index.md
+++ /dev/null
@@ -1,159 +0,0 @@
-Welcome to Week 3 of our Full Stack Web Development journey! In this week’s lesson, we’ll be tackling a fundamental concept in web development: **RESTful APIs**. APIs, or Application Programming Interfaces, are the backbone of modern web services, allowing different applications to communicate with each other. REST, which stands for Representational State Transfer, is one of the most widely-used architectural styles for building scalable and maintainable APIs.
-
-By the end of this lesson, you'll not only understand what a RESTful API is, but you'll also be able to design, build, and test your own API using Node.js and Express. So, let’s get started on building some powerful backend services!
-
-## Learning Objectives
-By the end of this lesson, you will:
-- **Understand** the principles behind REST and how it differs from other API styles.
-- **Create** a RESTful API from scratch using Node.js and Express.
-- **Learn** best practices for API versioning, routing, and resource representation.
-- **Implement** CRUD operations (Create, Read, Update, Delete) using RESTful patterns.
-
-## Concepts Overview
-APIs allow different software systems to interact with each other, and RESTful APIs are based on HTTP protocols to perform operations on resources. In REST, everything is treated as a resource, which can be created, retrieved, updated, or deleted using HTTP methods such as `GET`, `POST`, `PUT`, and `DELETE`.
-
-We will explore these methods today and how to structure routes in a meaningful, scalable way.
-
-### Key Concept 1: REST Principles
-REST is based on a set of architectural constraints:
-1. **Client-Server**: Separation of concerns between the client and the server. The client handles the user interface, and the server handles the data.
-2. **Stateless**: Each request from the client to the server must contain all the information needed to understand and process the request.
-3. **Cacheable**: Responses should define whether or not they are cacheable, allowing clients to store and reuse them.
-4. **Uniform Interface**: A consistent and well-defined interface between components.
-5. **Layered System**: The system can be layered to improve scalability.
-6. **Code on Demand (optional)**: Servers can provide executable code to the client when requested.
-
-### Key Concept 2: HTTP Methods and RESTful Actions
-In RESTful APIs, HTTP methods are mapped to CRUD actions:
-- **GET**: Retrieve resources.
-- **POST**: Create new resources.
-- **PUT/PATCH**: Update existing resources.
-- **DELETE**: Remove resources.
-
-Each API endpoint or route typically represents a resource (like a user, product, or post), and the HTTP method determines the action on that resource.
-
-```http
-GET /users # Fetches a list of users
-POST /users # Creates a new user
-GET /users/1 # Fetches details of a user with ID 1
-PUT /users/1 # Updates a user with ID 1
-DELETE /users/1 # Deletes a user with ID 1
-```
-
-### Key Concept 3: Building a Simple REST API with Node.js and Express
-Let’s build a simple RESTful API that handles user data using Node.js and Express.
-
-#### Step 1: Set Up Express
-First, ensure you have Node.js installed and initialize a new project.
-
-```bash
-# Initialize the project and install Express
-npm init -y
-npm install express
-```
-
-Next, create a basic Express server in `server.js`:
-
-```javascript
-const express = require('express');
-const app = express();
-app.use(express.json()); // Middleware to parse JSON
-
-const users = [
- { id: 1, name: 'John Doe' },
- { id: 2, name: 'Jane Smith' }
-];
-
-// GET: Retrieve all users
-app.get('/users', (req, res) => {
- res.json(users);
-});
-
-// POST: Create a new user
-app.post('/users', (req, res) => {
- const newUser = { id: users.length + 1, name: req.body.name };
- users.push(newUser);
- res.status(201).json(newUser);
-});
-
-// Listen on port 3000
-app.listen(3000, () => console.log('Server running on port 3000'));
-```
-
-In this code:
-- We’ve set up two routes: one for **getting all users** and another for **creating a new user**.
-- We’re using Express’s `json()` middleware to parse incoming JSON requests.
-
-#### Step 2: Test the API
-You can test the API using a tool like **Postman** or **curl**.
-
-- To get all users:
- ```bash
- curl http://localhost:3000/users
- ```
-
-- To create a new user:
- ```bash
- curl -X POST http://localhost:3000/users -H "Content-Type: application/json" -d '{"name":"Alice"}'
- ```
-
-#### Step 3: Expand the API with More Routes
-Add additional routes to **update** and **delete** users, completing the CRUD functionality.
-
-```javascript
-// PUT: Update a user's name
-app.put('/users/:id', (req, res) => {
- const user = users.find(u => u.id === parseInt(req.params.id));
- if (!user) return res.status(404).send('User not found');
- user.name = req.body.name;
- res.json(user);
-});
-
-// DELETE: Remove a user by ID
-app.delete('/users/:id', (req, res) => {
- const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
- if (userIndex === -1) return res.status(404).send('User not found');
- const deletedUser = users.splice(userIndex, 1);
- res.json(deletedUser);
-});
-```
-
-> **Note**: Remember to handle errors gracefully. Always check if resources exist before performing operations, and return appropriate HTTP status codes.
-
-## Diagrams
-Here’s a visual representation of the request/response cycle in a RESTful API:
-
-
-
-This diagram shows how clients interact with the server via HTTP methods, and the server responds with resources or status messages.
-
-- **Explanation**: The client sends an HTTP request to an API endpoint (e.g., `/users`), and the server processes this request, sending back the appropriate response (data or confirmation).
-
-## Practical Application
-Now that you understand the basics, let’s apply them by creating a small project that includes user management with full CRUD operations.
-
-```markdown
-**Step 1:** Create the initial Express project (as shown earlier).
-**Step 2:** Add middleware for error handling.
-**Step 3:** Extend your API with routes to handle user login or authentication.
-```
-
-### Project Example: User Management API
-Create an API that allows users to register, login, and manage their profiles. Integrate authentication middleware for security and explore using tools like **JWT** (JSON Web Token) to authenticate API requests.
-
-## Key Takeaways
-- **RESTful APIs** allow seamless communication between the client and server, forming the backbone of most web services.
-- **HTTP Methods** such as GET, POST, PUT, and DELETE map to CRUD operations.
-- **Express** simplifies the creation of APIs, providing tools for routing and middleware.
-
-## Homework or Further Reading
-- **Assignment 1**: Build a simple RESTful API that manages products in an online store.
-- **Reading 1**: [RESTful Web Services: A Tutorial](https://example.com)
-- **Additional Resources**:
- - [MDN Web Docs: HTTP Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)
- - [Postman Documentation](https://www.postman.com)
-
-## Conclusion
-Fantastic work! Understanding RESTful APIs is an essential skill for any full stack developer. With this knowledge, you can build scalable backend services that communicate efficiently with front-end clients. Keep experimenting with different API designs, and next week, we’ll explore **API security and authentication**, an equally critical topic!
-
-Looking forward to our next lesson!
\ No newline at end of file
diff --git a/src/templates/markdown-style-guide.md b/src/templates/markdown-style-guide.md
deleted file mode 100644
index 164183c..0000000
--- a/src/templates/markdown-style-guide.md
+++ /dev/null
@@ -1,214 +0,0 @@
----
-title: 'Markdown Style Guide'
-description: 'Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro.'
-pubDate: 'Jun 19 2024'
-heroImage: '/images/blog-placeholder-1.jpg'
----
-
-Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro.
-
-## Headings
-
-The following HTML ``—`` elements represent six levels of section headings. `` is the highest section level while `` is the lowest.
-
-# H1
-
-## H2
-
-### H3
-
-#### H4
-
-##### H5
-
-###### H6
-
-## Paragraph
-
-Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
-
-Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
-
-## Images
-
-### Syntax
-
-```markdown
-
-```
-
-### Output
-
-
-
-## Blockquotes
-
-The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
-
-### Blockquote without attribution
-
-#### Syntax
-
-```markdown
-> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
-> **Note** that you can use _Markdown syntax_ within a blockquote.
-```
-
-#### Output
-
-> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
-> **Note** that you can use _Markdown syntax_ within a blockquote.
-
-### Blockquote with attribution
-
-#### Syntax
-
-```markdown
-> Don't communicate by sharing memory, share memory by communicating.
-> — Rob Pike[^1]
-```
-
-#### Output
-
-> Don't communicate by sharing memory, share memory by communicating.
-> — Rob Pike[^1]
-
-[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
-
-## Tables
-
-### Syntax
-
-```markdown
-| Italics | Bold | Code |
-| --------- | -------- | ------ |
-| _italics_ | **bold** | `code` |
-```
-
-### Output
-
-| Italics | Bold | Code |
-| --------- | -------- | ------ |
-| _italics_ | **bold** | `code` |
-
-## Code Blocks
-
-### Syntax
-
-we can use 3 backticks ``` in new line and write snippet and close with 3 backticks on new line and to highlight language specific syntax, write one word of language name after first 3 backticks, for eg. html, javascript, css, markdown, typescript, txt, bash
-
-````markdown
-```html
-
-
-
-
- Example HTML5 Document
-
-
- Test
-
-
-```
-````
-
-### Output
-
-```html
-
-
-
-
- Example HTML5 Document
-
-
- Test
-
-
-```
-
-## List Types
-
-### Ordered List
-
-#### Syntax
-
-```markdown
-1. First item
-2. Second item
-3. Third item
-```
-
-#### Output
-
-1. First item
-2. Second item
-3. Third item
-
-### Unordered List
-
-#### Syntax
-
-```markdown
-- List item
-- Another item
-- And another item
-```
-
-#### Output
-
-- List item
-- Another item
-- And another item
-
-### Nested list
-
-#### Syntax
-
-```markdown
-- Fruit
- - Apple
- - Orange
- - Banana
-- Dairy
- - Milk
- - Cheese
-```
-
-#### Output
-
-- Fruit
- - Apple
- - Orange
- - Banana
-- Dairy
- - Milk
- - Cheese
-
-## Other Elements — abbr, sub, sup, kbd, mark
-
-### Syntax
-
-```markdown
-GIF is a bitmap image format.
-
-H2 O
-
-Xn + Yn = Zn
-
-Press CTRL + ALT + Delete to end the session.
-
-Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures.
-```
-
-### Output
-
-GIF is a bitmap image format.
-
-H2 O
-
-Xn + Yn = Zn
-
-Press CTRL + ALT + Delete to end the session.
-
-Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures.
diff --git a/src/templates/using-mdx.mdx b/src/templates/using-mdx.mdx
deleted file mode 100644
index c9e9973..0000000
--- a/src/templates/using-mdx.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: 'Using MDX'
-description: 'Lorem ipsum dolor sit amet'
-pubDate: 'Jun 01 2024'
-heroImage: '/images/blog-placeholder-5.jpg'
----
-
-This theme comes with the [@astrojs/mdx](https://docs.astro.build/en/guides/integrations-guide/mdx/) integration installed and configured in your `astro.config.mjs` config file. If you prefer not to use MDX, you can disable support by removing the integration from your config file.
-
-## Why MDX?
-
-MDX is a special flavor of Markdown that supports embedded JavaScript & JSX syntax. This unlocks the ability to [mix JavaScript and UI Components into your Markdown content](https://docs.astro.build/en/guides/markdown-content/#mdx-features) for things like interactive charts or alerts.
-
-If you have existing content authored in MDX, this integration will hopefully make migrating to Astro a breeze.
-
-## Example
-
-Here is how you import and use a UI component inside of MDX.
-When you open this page in the browser, you should see the clickable button below.
-
-import HeaderLink from '@/components/HeaderLink.astro';
-
-
- Embedded component in MDX
-
-
-## More Links
-
-- [MDX Syntax Documentation](https://mdxjs.com/docs/what-is-mdx)
-- [Astro Usage Documentation](https://docs.astro.build/en/guides/markdown-content/#markdown-and-mdx-pages)
-- **Note:** [Client Directives](https://docs.astro.build/en/reference/directives-reference/#client-directives) are still required to create interactive components. Otherwise, all components in your MDX will render as static HTML (no JavaScript) by default.
diff --git a/tailwind.config.mjs b/tailwind.config.ts
similarity index 63%
rename from tailwind.config.mjs
rename to tailwind.config.ts
index 83380a1..0cf8471 100644
--- a/tailwind.config.mjs
+++ b/tailwind.config.ts
@@ -1,26 +1,29 @@
-/** @type {import('tailwindcss').Config} */
+import type { Config } from "tailwindcss";
-export default {
+const config = {
darkMode: ["class"],
- content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
+ content: [
+ "./pages/**/*.{ts,tsx}",
+ "./components/**/*.{ts,tsx}",
+ "./app/**/*.{ts,tsx}",
+ "./src/**/*.{ts,tsx}",
+ ],
+ prefix: "",
theme: {
- extend: {
- borderRadius: {
- lg: "var(--radius)",
- md: "calc(var(--radius) - 2px)",
- sm: "calc(var(--radius) - 4px)",
+ container: {
+ center: true,
+ padding: "2rem",
+ screens: {
+ "2xl": "1400px",
},
+ },
+ extend: {
colors: {
+ border: "hsl(var(--border))",
+ input: "hsl(var(--input))",
+ ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
- card: {
- DEFAULT: "hsl(var(--card))",
- foreground: "hsl(var(--card-foreground))",
- },
- popover: {
- DEFAULT: "hsl(var(--popover))",
- foreground: "hsl(var(--popover-foreground))",
- },
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
@@ -29,6 +32,10 @@ export default {
DEFAULT: "hsl(var(--secondary))",
foreground: "hsl(var(--secondary-foreground))",
},
+ destructive: {
+ DEFAULT: "hsl(var(--destructive))",
+ foreground: "hsl(var(--destructive-foreground))",
+ },
muted: {
DEFAULT: "hsl(var(--muted))",
foreground: "hsl(var(--muted-foreground))",
@@ -37,22 +44,37 @@ export default {
DEFAULT: "hsl(var(--accent))",
foreground: "hsl(var(--accent-foreground))",
},
- destructive: {
- DEFAULT: "hsl(var(--destructive))",
- foreground: "hsl(var(--destructive-foreground))",
+ popover: {
+ DEFAULT: "hsl(var(--popover))",
+ foreground: "hsl(var(--popover-foreground))",
},
- border: "hsl(var(--border))",
- input: "hsl(var(--input))",
- ring: "hsl(var(--ring))",
- chart: {
- 1: "hsl(var(--chart-1))",
- 2: "hsl(var(--chart-2))",
- 3: "hsl(var(--chart-3))",
- 4: "hsl(var(--chart-4))",
- 5: "hsl(var(--chart-5))",
+ card: {
+ DEFAULT: "hsl(var(--card))",
+ foreground: "hsl(var(--card-foreground))",
},
},
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ keyframes: {
+ "accordion-down": {
+ from: { height: "0" },
+ to: { height: "var(--radix-accordion-content-height)" },
+ },
+ "accordion-up": {
+ from: { height: "var(--radix-accordion-content-height)" },
+ to: { height: "0" },
+ },
+ },
+ animation: {
+ "accordion-down": "accordion-down 0.2s ease-out",
+ "accordion-up": "accordion-up 0.2s ease-out",
+ },
},
},
plugins: [require("tailwindcss-animate"), require("@tailwindcss/typography")],
-};
+} satisfies Config;
+
+export default config;
diff --git a/tsconfig.json b/tsconfig.json
index e5f8047..e7ff90f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,12 +1,26 @@
{
- "extends": "astro/tsconfigs/strict",
- "compilerOptions": {
- "strictNullChecks": true,
- "jsx": "react-jsx",
- "jsxImportSource": "react",
- "baseUrl": ".",
- "paths": {
- "@/*": ["./src/*"]
- }
- }
+ "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/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..2ea6794
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,5177 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@aashutoshrathi/word-wrap@^1.2.3":
+ version "1.2.6"
+
+"@alloc/quick-lru@^5.2.0":
+ version "5.2.0"
+
+"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1":
+ version "2.3.0"
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@apollo/client@^3.6.6":
+ version "3.11.5"
+ dependencies:
+ "@graphql-typed-document-node/core" "^3.1.1"
+ "@wry/caches" "^1.0.0"
+ "@wry/equality" "^0.5.6"
+ "@wry/trie" "^0.5.0"
+ graphql-tag "^2.12.6"
+ hoist-non-react-statics "^3.3.2"
+ optimism "^0.18.0"
+ prop-types "^15.7.2"
+ rehackt "^0.1.0"
+ response-iterator "^0.2.6"
+ symbol-observable "^4.0.0"
+ ts-invariant "^0.10.3"
+ tslib "^2.3.0"
+ zen-observable-ts "^1.2.5"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7":
+ version "7.24.7"
+ dependencies:
+ "@babel/highlight" "^7.24.7"
+ picocolors "^1.0.0"
+
+"@babel/compat-data@^7.25.2":
+ version "7.25.4"
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.22.9":
+ version "7.25.2"
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.24.7"
+ "@babel/generator" "^7.25.0"
+ "@babel/helper-compilation-targets" "^7.25.2"
+ "@babel/helper-module-transforms" "^7.25.2"
+ "@babel/helpers" "^7.25.0"
+ "@babel/parser" "^7.25.0"
+ "@babel/template" "^7.25.0"
+ "@babel/traverse" "^7.25.2"
+ "@babel/types" "^7.25.2"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.25.0", "@babel/generator@^7.25.6":
+ version "7.25.6"
+ dependencies:
+ "@babel/types" "^7.25.6"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^2.5.1"
+
+"@babel/helper-compilation-targets@^7.25.2":
+ version "7.25.2"
+ dependencies:
+ "@babel/compat-data" "^7.25.2"
+ "@babel/helper-validator-option" "^7.24.8"
+ browserslist "^4.23.1"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.7":
+ version "7.24.7"
+ dependencies:
+ "@babel/traverse" "^7.24.7"
+ "@babel/types" "^7.24.7"
+
+"@babel/helper-module-transforms@^7.25.2":
+ version "7.25.2"
+ dependencies:
+ "@babel/helper-module-imports" "^7.24.7"
+ "@babel/helper-simple-access" "^7.24.7"
+ "@babel/helper-validator-identifier" "^7.24.7"
+ "@babel/traverse" "^7.25.2"
+
+"@babel/helper-simple-access@^7.24.7":
+ version "7.24.7"
+ dependencies:
+ "@babel/traverse" "^7.24.7"
+ "@babel/types" "^7.24.7"
+
+"@babel/helper-string-parser@^7.24.8":
+ version "7.24.8"
+
+"@babel/helper-validator-identifier@^7.24.7":
+ version "7.24.7"
+
+"@babel/helper-validator-option@^7.24.8":
+ version "7.24.8"
+
+"@babel/helpers@^7.25.0":
+ version "7.25.6"
+ dependencies:
+ "@babel/template" "^7.25.0"
+ "@babel/types" "^7.25.6"
+
+"@babel/highlight@^7.24.7":
+ version "7.24.7"
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.24.7"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/parser@^7.24.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6":
+ version "7.25.6"
+ dependencies:
+ "@babel/types" "^7.25.6"
+
+"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
+ version "7.24.1"
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/template@^7.25.0":
+ version "7.25.0"
+ dependencies:
+ "@babel/code-frame" "^7.24.7"
+ "@babel/parser" "^7.25.0"
+ "@babel/types" "^7.25.0"
+
+"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2":
+ version "7.25.6"
+ dependencies:
+ "@babel/code-frame" "^7.24.7"
+ "@babel/generator" "^7.25.6"
+ "@babel/parser" "^7.25.6"
+ "@babel/template" "^7.25.0"
+ "@babel/types" "^7.25.6"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
+"@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6":
+ version "7.25.6"
+ dependencies:
+ "@babel/helper-string-parser" "^7.24.8"
+ "@babel/helper-validator-identifier" "^7.24.7"
+ to-fast-properties "^2.0.0"
+
+"@biomejs/biome@^1.8.3":
+ version "1.8.3"
+ optionalDependencies:
+ "@biomejs/cli-darwin-arm64" "1.8.3"
+ "@biomejs/cli-darwin-x64" "1.8.3"
+ "@biomejs/cli-linux-arm64" "1.8.3"
+ "@biomejs/cli-linux-arm64-musl" "1.8.3"
+ "@biomejs/cli-linux-x64" "1.8.3"
+ "@biomejs/cli-linux-x64-musl" "1.8.3"
+ "@biomejs/cli-win32-arm64" "1.8.3"
+ "@biomejs/cli-win32-x64" "1.8.3"
+
+"@biomejs/cli-linux-x64-musl@1.8.3":
+ version "1.8.3"
+
+"@biomejs/cli-linux-x64@1.8.3":
+ version "1.8.3"
+
+"@dnd-kit/accessibility@^3.1.0":
+ version "3.1.0"
+ dependencies:
+ tslib "^2.0.0"
+
+"@dnd-kit/core@^6.1.0":
+ version "6.1.0"
+ dependencies:
+ "@dnd-kit/accessibility" "^3.1.0"
+ "@dnd-kit/utilities" "^3.2.2"
+ tslib "^2.0.0"
+
+"@dnd-kit/modifiers@^7.0.0":
+ version "7.0.0"
+ dependencies:
+ "@dnd-kit/utilities" "^3.2.2"
+ tslib "^2.0.0"
+
+"@dnd-kit/sortable@^8.0.0":
+ version "8.0.0"
+ dependencies:
+ "@dnd-kit/utilities" "^3.2.2"
+ tslib "^2.0.0"
+
+"@dnd-kit/utilities@^3.2.2":
+ version "3.2.2"
+ dependencies:
+ tslib "^2.0.0"
+
+"@emotion/babel-plugin@^11.12.0":
+ version "11.12.0"
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/runtime" "^7.18.3"
+ "@emotion/hash" "^0.9.2"
+ "@emotion/memoize" "^0.9.0"
+ "@emotion/serialize" "^1.2.0"
+ babel-plugin-macros "^3.1.0"
+ convert-source-map "^1.5.0"
+ escape-string-regexp "^4.0.0"
+ find-root "^1.1.0"
+ source-map "^0.5.7"
+ stylis "4.2.0"
+
+"@emotion/cache@^11.13.0", "@emotion/cache@^11.4.0":
+ version "11.13.1"
+ dependencies:
+ "@emotion/memoize" "^0.9.0"
+ "@emotion/sheet" "^1.4.0"
+ "@emotion/utils" "^1.4.0"
+ "@emotion/weak-memoize" "^0.4.0"
+ stylis "4.2.0"
+
+"@emotion/hash@^0.9.2":
+ version "0.9.2"
+
+"@emotion/memoize@^0.9.0":
+ version "0.9.0"
+
+"@emotion/react@^11.8.1":
+ version "11.13.3"
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.12.0"
+ "@emotion/cache" "^11.13.0"
+ "@emotion/serialize" "^1.3.1"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0"
+ "@emotion/utils" "^1.4.0"
+ "@emotion/weak-memoize" "^0.4.0"
+ hoist-non-react-statics "^3.3.1"
+
+"@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.1":
+ version "1.3.1"
+ dependencies:
+ "@emotion/hash" "^0.9.2"
+ "@emotion/memoize" "^0.9.0"
+ "@emotion/unitless" "^0.10.0"
+ "@emotion/utils" "^1.4.0"
+ csstype "^3.0.2"
+
+"@emotion/sheet@^1.4.0":
+ version "1.4.0"
+
+"@emotion/unitless@^0.10.0":
+ version "0.10.0"
+
+"@emotion/use-insertion-effect-with-fallbacks@^1.1.0":
+ version "1.1.0"
+
+"@emotion/utils@^1.4.0":
+ version "1.4.0"
+
+"@emotion/weak-memoize@^0.4.0":
+ version "0.4.0"
+
+"@eslint-community/eslint-utils@^4.2.0":
+ version "4.4.0"
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.6.1":
+ version "4.10.0"
+
+"@eslint/eslintrc@^2.1.4":
+ version "2.1.4"
+ 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"
+
+"@eslint/js@8.57.0":
+ version "8.57.0"
+
+"@floating-ui/core@^1.6.0":
+ version "1.6.7"
+ dependencies:
+ "@floating-ui/utils" "^0.2.7"
+
+"@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.0.1":
+ version "1.6.10"
+ dependencies:
+ "@floating-ui/core" "^1.6.0"
+ "@floating-ui/utils" "^0.2.7"
+
+"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.1":
+ version "2.1.1"
+ dependencies:
+ "@floating-ui/dom" "^1.0.0"
+
+"@floating-ui/react@^0.26.2":
+ version "0.26.23"
+ dependencies:
+ "@floating-ui/react-dom" "^2.1.1"
+ "@floating-ui/utils" "^0.2.7"
+ tabbable "^6.0.0"
+
+"@floating-ui/utils@^0.2.7":
+ version "0.2.7"
+
+"@graphql-typed-document-node/core@^3.1.1":
+ version "3.2.0"
+
+"@hapi/b64@^6.0.1":
+ version "6.0.1"
+ dependencies:
+ "@hapi/hoek" "^11.0.2"
+
+"@hapi/boom@^10.0.1":
+ version "10.0.1"
+ dependencies:
+ "@hapi/hoek" "^11.0.2"
+
+"@hapi/bourne@^3.0.0":
+ version "3.0.0"
+
+"@hapi/cryptiles@^6.0.1":
+ version "6.0.1"
+ dependencies:
+ "@hapi/boom" "^10.0.1"
+
+"@hapi/hoek@^11.0.2":
+ version "11.0.4"
+
+"@hapi/iron@^7.0.0":
+ version "7.0.1"
+ dependencies:
+ "@hapi/b64" "^6.0.1"
+ "@hapi/boom" "^10.0.1"
+ "@hapi/bourne" "^3.0.0"
+ "@hapi/cryptiles" "^6.0.1"
+ "@hapi/hoek" "^11.0.2"
+
+"@hookform/resolvers@^2.9.7":
+ version "2.9.11"
+
+"@humanwhocodes/config-array@^0.11.14":
+ version "0.11.14"
+ dependencies:
+ "@humanwhocodes/object-schema" "^2.0.2"
+ debug "^4.3.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+
+"@humanwhocodes/object-schema@^2.0.2":
+ version "2.0.2"
+
+"@img/sharp-libvips-linux-x64@1.0.4":
+ version "1.0.4"
+
+"@img/sharp-libvips-linuxmusl-x64@1.0.4":
+ version "1.0.4"
+
+"@img/sharp-linux-x64@0.33.5":
+ version "0.33.5"
+ optionalDependencies:
+ "@img/sharp-libvips-linux-x64" "1.0.4"
+
+"@img/sharp-linuxmusl-x64@0.33.5":
+ version "0.33.5"
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-x64" "1.0.4"
+
+"@isaacs/cliui@^8.0.2":
+ version "8.0.2"
+ 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"
+
+"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.5"
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+
+"@jridgewell/source-map@^0.3.3":
+ version "0.3.6"
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+
+"@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.0"
+
+"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@next/env@14.1.4":
+ version "14.1.4"
+
+"@next/eslint-plugin-next@14.1.4":
+ version "14.1.4"
+ dependencies:
+ glob "10.3.10"
+
+"@next/swc-linux-x64-gnu@14.1.4":
+ version "14.1.4"
+
+"@next/swc-linux-x64-musl@14.1.4":
+ version "14.1.4"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@pkgjs/parseargs@^0.11.0":
+ version "0.11.0"
+
+"@popperjs/core@^2.9.0":
+ version "2.11.8"
+
+"@radix-ui/primitive@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-arrow@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-primitive" "2.0.0"
+
+"@radix-ui/react-checkbox@^1.1.0":
+ version "1.1.1"
+ dependencies:
+ "@radix-ui/primitive" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-presence" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-controllable-state" "1.1.0"
+ "@radix-ui/react-use-previous" "1.1.0"
+ "@radix-ui/react-use-size" "1.1.0"
+
+"@radix-ui/react-collection@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-slot" "1.1.0"
+
+"@radix-ui/react-compose-refs@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-context@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-direction@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-dismissable-layer@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/primitive" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+ "@radix-ui/react-use-escape-keydown" "1.1.0"
+
+"@radix-ui/react-dropdown-menu@^2.0.6":
+ version "2.1.1"
+ dependencies:
+ "@radix-ui/primitive" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-id" "1.1.0"
+ "@radix-ui/react-menu" "2.1.1"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-controllable-state" "1.1.0"
+
+"@radix-ui/react-focus-guards@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-focus-scope@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+
+"@radix-ui/react-icons@^1.3.0":
+ version "1.3.0"
+
+"@radix-ui/react-id@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-use-layout-effect" "1.1.0"
+
+"@radix-ui/react-label@^2.0.2":
+ version "2.1.0"
+ dependencies:
+ "@radix-ui/react-primitive" "2.0.0"
+
+"@radix-ui/react-menu@2.1.1":
+ version "2.1.1"
+ dependencies:
+ "@radix-ui/primitive" "1.1.0"
+ "@radix-ui/react-collection" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-direction" "1.1.0"
+ "@radix-ui/react-dismissable-layer" "1.1.0"
+ "@radix-ui/react-focus-guards" "1.1.0"
+ "@radix-ui/react-focus-scope" "1.1.0"
+ "@radix-ui/react-id" "1.1.0"
+ "@radix-ui/react-popper" "1.2.0"
+ "@radix-ui/react-portal" "1.1.1"
+ "@radix-ui/react-presence" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-roving-focus" "1.1.0"
+ "@radix-ui/react-slot" "1.1.0"
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+ aria-hidden "^1.1.1"
+ react-remove-scroll "2.5.7"
+
+"@radix-ui/react-popper@1.2.0":
+ version "1.2.0"
+ dependencies:
+ "@floating-ui/react-dom" "^2.0.0"
+ "@radix-ui/react-arrow" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+ "@radix-ui/react-use-layout-effect" "1.1.0"
+ "@radix-ui/react-use-rect" "1.1.0"
+ "@radix-ui/react-use-size" "1.1.0"
+ "@radix-ui/rect" "1.1.0"
+
+"@radix-ui/react-portal@1.1.1":
+ version "1.1.1"
+ dependencies:
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-layout-effect" "1.1.0"
+
+"@radix-ui/react-presence@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-use-layout-effect" "1.1.0"
+
+"@radix-ui/react-primitive@2.0.0":
+ version "2.0.0"
+ dependencies:
+ "@radix-ui/react-slot" "1.1.0"
+
+"@radix-ui/react-progress@^1.0.3":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+
+"@radix-ui/react-roving-focus@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/primitive" "1.1.0"
+ "@radix-ui/react-collection" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-direction" "1.1.0"
+ "@radix-ui/react-id" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+ "@radix-ui/react-use-controllable-state" "1.1.0"
+
+"@radix-ui/react-slot@^1.0.2", "@radix-ui/react-slot@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-compose-refs" "1.1.0"
+
+"@radix-ui/react-tooltip@^1.0.7":
+ version "1.1.2"
+ dependencies:
+ "@radix-ui/primitive" "1.1.0"
+ "@radix-ui/react-compose-refs" "1.1.0"
+ "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-dismissable-layer" "1.1.0"
+ "@radix-ui/react-id" "1.1.0"
+ "@radix-ui/react-popper" "1.2.0"
+ "@radix-ui/react-portal" "1.1.1"
+ "@radix-ui/react-presence" "1.1.0"
+ "@radix-ui/react-primitive" "2.0.0"
+ "@radix-ui/react-slot" "1.1.0"
+ "@radix-ui/react-use-controllable-state" "1.1.0"
+ "@radix-ui/react-visually-hidden" "1.1.0"
+
+"@radix-ui/react-use-callback-ref@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-use-controllable-state@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+
+"@radix-ui/react-use-escape-keydown@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-use-callback-ref" "1.1.0"
+
+"@radix-ui/react-use-layout-effect@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-use-previous@1.1.0":
+ version "1.1.0"
+
+"@radix-ui/react-use-rect@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/rect" "1.1.0"
+
+"@radix-ui/react-use-size@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-use-layout-effect" "1.1.0"
+
+"@radix-ui/react-visually-hidden@1.1.0":
+ version "1.1.0"
+ dependencies:
+ "@radix-ui/react-primitive" "2.0.0"
+
+"@radix-ui/rect@1.1.0":
+ version "1.1.0"
+
+"@remirror/core-constants@^2.0.2":
+ version "2.0.2"
+
+"@rushstack/eslint-patch@^1.3.3":
+ version "1.8.0"
+
+"@sindresorhus/is@^4.6.0":
+ version "4.6.0"
+
+"@swc/helpers@0.5.2":
+ version "0.5.2"
+ dependencies:
+ tslib "^2.4.0"
+
+"@tailwindcss/typography@^0.5.15":
+ version "0.5.15"
+ dependencies:
+ lodash.castarray "^4.4.0"
+ lodash.isplainobject "^4.0.6"
+ lodash.merge "^4.6.2"
+ postcss-selector-parser "6.0.10"
+
+"@tiptap/core@^2.0.0", "@tiptap/core@^2.0.3", "@tiptap/core@^2.1.10", "@tiptap/core@^2.6.6":
+ version "2.6.6"
+ resolved "https://registry.npmjs.org/@tiptap/core/-/core-2.6.6.tgz"
+ integrity sha512-VO5qTsjt6rwworkuo0s5AqYMfDA0ZwiTiH6FHKFSu2G/6sS7HKcc/LjPq+5Legzps4QYdBDl3W28wGsGuS1GdQ==
+
+"@tiptap/core@2.1.10":
+ version "2.1.10"
+ resolved "https://registry.npmjs.org/@tiptap/core/-/core-2.1.10.tgz"
+ integrity sha512-yhUKsac6nlqbPQfwQnp+4Jb110EqmzocXKoZacLwzHpM7JVsr2+LXMDu9kahtrvHNJErJljhnQvDHRsrrYeJkQ==
+
+"@tiptap/extension-blockquote@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-bold@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-bubble-menu@^2.1.10", "@tiptap/extension-bubble-menu@2.1.10":
+ version "2.1.10"
+ dependencies:
+ tippy.js "^6.3.7"
+
+"@tiptap/extension-bullet-list@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-code-block-lowlight@2.1.10":
+ version "2.1.10"
+
+"@tiptap/extension-code-block@^2.0.0", "@tiptap/extension-code-block@^2.1.10", "@tiptap/extension-code-block@2.1.10":
+ version "2.1.10"
+
+"@tiptap/extension-code@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-document@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-dropcursor@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-floating-menu@^2.1.10":
+ version "2.6.6"
+ dependencies:
+ tippy.js "^6.3.7"
+
+"@tiptap/extension-gapcursor@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-gapcursor@2.1.0":
+ version "2.1.0"
+
+"@tiptap/extension-hard-break@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-heading@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-highlight@2.1.10":
+ version "2.1.10"
+
+"@tiptap/extension-history@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-horizontal-rule@^2.1.10", "@tiptap/extension-horizontal-rule@2.1.10":
+ version "2.1.10"
+
+"@tiptap/extension-image@2.1.10":
+ version "2.1.10"
+
+"@tiptap/extension-italic@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-link@2.1.10":
+ version "2.1.10"
+ dependencies:
+ linkifyjs "^4.1.0"
+
+"@tiptap/extension-list-item@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-ordered-list@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-paragraph@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-placeholder@2.1.10":
+ version "2.1.10"
+
+"@tiptap/extension-strike@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-table-cell@2.1.0":
+ version "2.1.0"
+
+"@tiptap/extension-table-header@2.1.0":
+ version "2.1.0"
+
+"@tiptap/extension-table-row@2.1.0":
+ version "2.1.0"
+
+"@tiptap/extension-table@2.1.0":
+ version "2.1.0"
+
+"@tiptap/extension-text@^2.1.10":
+ version "2.6.6"
+
+"@tiptap/extension-underline@2.1.10":
+ version "2.1.10"
+
+"@tiptap/pm@^2.0.0", "@tiptap/pm@^2.6.6":
+ version "2.6.6"
+ resolved "https://registry.npmjs.org/@tiptap/pm/-/pm-2.6.6.tgz"
+ integrity sha512-56FGLPn3fwwUlIbLs+BO21bYfyqP9fKyZQbQyY0zWwA/AG2kOwoXaRn7FOVbjP6CylyWpFJnpRRmgn694QKHEg==
+ 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.4.1"
+ prosemirror-inputrules "^1.4.0"
+ prosemirror-keymap "^1.2.2"
+ prosemirror-markdown "^1.13.0"
+ prosemirror-menu "^1.2.4"
+ prosemirror-model "^1.22.2"
+ prosemirror-schema-basic "^1.2.3"
+ prosemirror-schema-list "^1.4.1"
+ prosemirror-state "^1.4.3"
+ prosemirror-tables "^1.4.0"
+ prosemirror-trailing-node "^2.0.9"
+ prosemirror-transform "^1.9.0"
+ prosemirror-view "^1.33.9"
+
+"@tiptap/pm@2.1.10":
+ version "2.1.10"
+ resolved "https://registry.npmjs.org/@tiptap/pm/-/pm-2.1.10.tgz"
+ integrity sha512-Y+AqizKnjQpx4pSaA6m/cCD5QHQRPtALhO4ZO4YFZV1idYmsJA3/S5lgJI3ZL5eAHKHcGk6Vv3/8Y+eej5YIPw==
+ 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"
+
+"@tiptap/react@2.1.10":
+ version "2.1.10"
+ dependencies:
+ "@tiptap/extension-bubble-menu" "^2.1.10"
+ "@tiptap/extension-floating-menu" "^2.1.10"
+
+"@tiptap/starter-kit@2.1.10":
+ version "2.1.10"
+ dependencies:
+ "@tiptap/core" "^2.1.10"
+ "@tiptap/extension-blockquote" "^2.1.10"
+ "@tiptap/extension-bold" "^2.1.10"
+ "@tiptap/extension-bullet-list" "^2.1.10"
+ "@tiptap/extension-code" "^2.1.10"
+ "@tiptap/extension-code-block" "^2.1.10"
+ "@tiptap/extension-document" "^2.1.10"
+ "@tiptap/extension-dropcursor" "^2.1.10"
+ "@tiptap/extension-gapcursor" "^2.1.10"
+ "@tiptap/extension-hard-break" "^2.1.10"
+ "@tiptap/extension-heading" "^2.1.10"
+ "@tiptap/extension-history" "^2.1.10"
+ "@tiptap/extension-horizontal-rule" "^2.1.10"
+ "@tiptap/extension-italic" "^2.1.10"
+ "@tiptap/extension-list-item" "^2.1.10"
+ "@tiptap/extension-ordered-list" "^2.1.10"
+ "@tiptap/extension-paragraph" "^2.1.10"
+ "@tiptap/extension-strike" "^2.1.10"
+ "@tiptap/extension-text" "^2.1.10"
+
+"@tiptap/suggestion@2.1.10":
+ version "2.1.10"
+
+"@tsconfig/node16@^1.0.3":
+ version "1.0.4"
+
+"@types/debug@^4.0.0":
+ version "4.1.12"
+ dependencies:
+ "@types/ms" "*"
+
+"@types/estree-jsx@^1.0.0":
+ version "1.0.5"
+ dependencies:
+ "@types/estree" "*"
+
+"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.1", "@types/estree@^1.0.5":
+ version "1.0.5"
+
+"@types/hast@^2.0.0":
+ version "2.3.10"
+ dependencies:
+ "@types/unist" "^2"
+
+"@types/hast@^3.0.0":
+ version "3.0.4"
+ dependencies:
+ "@types/unist" "*"
+
+"@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+ version "7.0.15"
+
+"@types/json5@^0.0.29":
+ version "0.0.29"
+
+"@types/linkify-it@*":
+ version "5.0.0"
+
+"@types/lodash@^4.14.175":
+ version "4.17.7"
+
+"@types/markdown-it@^12.2.3":
+ version "12.2.3"
+ dependencies:
+ "@types/linkify-it" "*"
+ "@types/mdurl" "*"
+
+"@types/mdast@^4.0.0", "@types/mdast@^4.0.4":
+ version "4.0.4"
+ dependencies:
+ "@types/unist" "*"
+
+"@types/mdurl@*":
+ version "2.0.0"
+
+"@types/ms@*":
+ version "0.7.34"
+
+"@types/node-fetch@^2.6.4":
+ version "2.6.11"
+ dependencies:
+ "@types/node" "*"
+ form-data "^4.0.0"
+
+"@types/node@*", "@types/node@^20":
+ version "20.11.30"
+ dependencies:
+ undici-types "~5.26.4"
+
+"@types/node@^18.11.18":
+ version "18.19.47"
+ dependencies:
+ undici-types "~5.26.4"
+
+"@types/nodemailer@^6":
+ version "6.4.15"
+ dependencies:
+ "@types/node" "*"
+
+"@types/parse-json@^4.0.0":
+ version "4.0.2"
+
+"@types/prop-types@*":
+ version "15.7.11"
+
+"@types/qs@^6.9.7":
+ version "6.9.15"
+
+"@types/react-dom@*", "@types/react-dom@^18":
+ version "18.2.22"
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-syntax-highlighter@^15.5.13":
+ version "15.5.13"
+ resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz"
+ integrity sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-transition-group@^4.4.0":
+ version "4.4.11"
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@^18", "@types/react@>=16.8", "@types/react@>=18":
+ version "18.2.67"
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ csstype "^3.0.2"
+
+"@types/scheduler@*":
+ version "0.16.8"
+
+"@types/unist@*", "@types/unist@^3.0.0":
+ version "3.0.3"
+
+"@types/unist@^2":
+ version "2.0.11"
+
+"@types/unist@^2.0.0":
+ version "2.0.11"
+
+"@typescript-eslint/parser@^5.4.2 || ^6.0.0":
+ version "6.21.0"
+ dependencies:
+ "@typescript-eslint/scope-manager" "6.21.0"
+ "@typescript-eslint/types" "6.21.0"
+ "@typescript-eslint/typescript-estree" "6.21.0"
+ "@typescript-eslint/visitor-keys" "6.21.0"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@6.21.0":
+ version "6.21.0"
+ dependencies:
+ "@typescript-eslint/types" "6.21.0"
+ "@typescript-eslint/visitor-keys" "6.21.0"
+
+"@typescript-eslint/types@6.21.0":
+ version "6.21.0"
+
+"@typescript-eslint/typescript-estree@6.21.0":
+ version "6.21.0"
+ dependencies:
+ "@typescript-eslint/types" "6.21.0"
+ "@typescript-eslint/visitor-keys" "6.21.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"
+
+"@typescript-eslint/visitor-keys@6.21.0":
+ version "6.21.0"
+ dependencies:
+ "@typescript-eslint/types" "6.21.0"
+ eslint-visitor-keys "^3.4.1"
+
+"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
+ version "1.2.0"
+
+"@vercel/analytics@^1.2.2":
+ version "1.3.1"
+ dependencies:
+ server-only "^0.0.1"
+
+"@vue/compiler-core@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@babel/parser" "^7.24.7"
+ "@vue/shared" "3.4.38"
+ entities "^4.5.0"
+ estree-walker "^2.0.2"
+ source-map-js "^1.2.0"
+
+"@vue/compiler-dom@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@vue/compiler-core" "3.4.38"
+ "@vue/shared" "3.4.38"
+
+"@vue/compiler-sfc@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@babel/parser" "^7.24.7"
+ "@vue/compiler-core" "3.4.38"
+ "@vue/compiler-dom" "3.4.38"
+ "@vue/compiler-ssr" "3.4.38"
+ "@vue/shared" "3.4.38"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.10"
+ postcss "^8.4.40"
+ source-map-js "^1.2.0"
+
+"@vue/compiler-ssr@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@vue/compiler-dom" "3.4.38"
+ "@vue/shared" "3.4.38"
+
+"@vue/reactivity@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@vue/shared" "3.4.38"
+
+"@vue/runtime-core@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@vue/reactivity" "3.4.38"
+ "@vue/shared" "3.4.38"
+
+"@vue/runtime-dom@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@vue/reactivity" "3.4.38"
+ "@vue/runtime-core" "3.4.38"
+ "@vue/shared" "3.4.38"
+ csstype "^3.1.3"
+
+"@vue/server-renderer@3.4.38":
+ version "3.4.38"
+ dependencies:
+ "@vue/compiler-ssr" "3.4.38"
+ "@vue/shared" "3.4.38"
+
+"@vue/shared@3.4.38":
+ version "3.4.38"
+
+"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/helper-numbers" "1.11.6"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+
+"@webassemblyjs/floating-point-hex-parser@1.11.6":
+ version "1.11.6"
+
+"@webassemblyjs/helper-api-error@1.11.6":
+ version "1.11.6"
+
+"@webassemblyjs/helper-buffer@1.12.1":
+ version "1.12.1"
+
+"@webassemblyjs/helper-numbers@1.11.6":
+ version "1.11.6"
+ dependencies:
+ "@webassemblyjs/floating-point-hex-parser" "1.11.6"
+ "@webassemblyjs/helper-api-error" "1.11.6"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/helper-wasm-bytecode@1.11.6":
+ version "1.11.6"
+
+"@webassemblyjs/helper-wasm-section@1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-buffer" "1.12.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/wasm-gen" "1.12.1"
+
+"@webassemblyjs/ieee754@1.11.6":
+ version "1.11.6"
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.11.6":
+ version "1.11.6"
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.11.6":
+ version "1.11.6"
+
+"@webassemblyjs/wasm-edit@^1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-buffer" "1.12.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/helper-wasm-section" "1.12.1"
+ "@webassemblyjs/wasm-gen" "1.12.1"
+ "@webassemblyjs/wasm-opt" "1.12.1"
+ "@webassemblyjs/wasm-parser" "1.12.1"
+ "@webassemblyjs/wast-printer" "1.12.1"
+
+"@webassemblyjs/wasm-gen@1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/ieee754" "1.11.6"
+ "@webassemblyjs/leb128" "1.11.6"
+ "@webassemblyjs/utf8" "1.11.6"
+
+"@webassemblyjs/wasm-opt@1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-buffer" "1.12.1"
+ "@webassemblyjs/wasm-gen" "1.12.1"
+ "@webassemblyjs/wasm-parser" "1.12.1"
+
+"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@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"
+
+"@webassemblyjs/wast-printer@1.12.1":
+ version "1.12.1"
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@xtuc/long" "4.2.2"
+
+"@wry/caches@^1.0.0":
+ version "1.0.1"
+ dependencies:
+ tslib "^2.3.0"
+
+"@wry/context@^0.7.0":
+ version "0.7.4"
+ dependencies:
+ tslib "^2.3.0"
+
+"@wry/equality@^0.5.6":
+ version "0.5.7"
+ dependencies:
+ tslib "^2.3.0"
+
+"@wry/trie@^0.4.3":
+ version "0.4.3"
+ dependencies:
+ tslib "^2.3.0"
+
+"@wry/trie@^0.5.0":
+ version "0.5.0"
+ dependencies:
+ tslib "^2.3.0"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+
+abort-controller@^3.0.0:
+ version "3.0.0"
+ dependencies:
+ event-target-shim "^5.0.0"
+
+acorn-import-attributes@^1.9.5:
+ version "1.9.5"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.10.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
+ version "8.11.3"
+
+agentkeepalive@^4.2.1:
+ version "4.5.0"
+ dependencies:
+ humanize-ms "^1.2.1"
+
+ai@^2.2.16:
+ version "2.2.37"
+ dependencies:
+ eventsource-parser "1.0.0"
+ nanoid "3.3.6"
+ solid-swr-store "0.10.7"
+ sswr "2.0.0"
+ swr "2.2.0"
+ swr-store "0.10.6"
+ swrv "1.0.4"
+
+ajv-formats@^2.1.1:
+ version "2.1.1"
+ dependencies:
+ ajv "^8.0.0"
+
+ajv-keywords@^3.5.2:
+ version "3.5.2"
+
+ajv-keywords@^5.1.0:
+ version "5.1.0"
+ dependencies:
+ fast-deep-equal "^3.1.3"
+
+ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ 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"
+
+ajv@^6.12.5, ajv@^6.9.1:
+ version "6.12.6"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ 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"
+
+ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0:
+ version "8.17.1"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+
+ansi-regex@^6.0.1:
+ version "6.0.1"
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ dependencies:
+ color-convert "^2.0.1"
+
+ansi-styles@^6.1.0:
+ version "6.2.1"
+
+any-promise@^1.0.0:
+ version "1.3.0"
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+arg@^5.0.2:
+ version "5.0.2"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argparse@^2.0.1:
+ version "2.0.1"
+
+aria-hidden@^1.1.1:
+ version "1.2.4"
+ dependencies:
+ tslib "^2.0.0"
+
+aria-query@^5.3.0:
+ version "5.3.0"
+ dependencies:
+ dequal "^2.0.3"
+
+array-buffer-byte-length@^1.0.1:
+ version "1.0.1"
+ dependencies:
+ call-bind "^1.0.5"
+ is-array-buffer "^3.0.4"
+
+array-includes@^3.1.6, array-includes@^3.1.7:
+ version "3.1.7"
+ 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"
+
+array-union@^2.1.0:
+ version "2.1.0"
+
+array.prototype.findlast@^1.2.4:
+ version "1.2.5"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-shim-unscopables "^1.0.2"
+
+array.prototype.findlastindex@^1.2.3:
+ version "1.2.5"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-shim-unscopables "^1.0.2"
+
+array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2:
+ version "1.3.2"
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.flatmap@^1.3.2:
+ version "1.3.2"
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.toreversed@^1.1.2:
+ version "1.1.2"
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.tosorted@^1.1.3:
+ version "1.1.3"
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.1.0"
+ es-shim-unscopables "^1.0.2"
+
+arraybuffer.prototype.slice@^1.0.3:
+ version "1.0.3"
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.2.1"
+ get-intrinsic "^1.2.3"
+ is-array-buffer "^3.0.4"
+ is-shared-array-buffer "^1.0.2"
+
+ast-types-flow@^0.0.8:
+ version "0.0.8"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+
+autoprefixer@^10.0.1:
+ version "10.4.18"
+ dependencies:
+ browserslist "^4.23.0"
+ caniuse-lite "^1.0.30001591"
+ fraction.js "^4.3.7"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
+available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ dependencies:
+ possible-typed-array-names "^1.0.0"
+
+axe-core@=4.7.0:
+ version "4.7.0"
+
+axobject-query@^3.2.1:
+ version "3.2.1"
+ dependencies:
+ dequal "^2.0.3"
+
+axobject-query@^4.0.0:
+ version "4.1.0"
+
+babel-loader@^9.1.3:
+ version "9.1.3"
+ dependencies:
+ find-cache-dir "^4.0.0"
+ schema-utils "^4.0.0"
+
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
+babel-plugin-transform-remove-imports@^1.7.0:
+ version "1.8.0"
+
+bail@^2.0.0:
+ version "2.0.2"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+
+binary-extensions@^2.0.0:
+ version "2.3.0"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@^4.21.10:
+ version "4.23.3"
+ dependencies:
+ caniuse-lite "^1.0.30001646"
+ electron-to-chromium "^1.5.4"
+ node-releases "^2.0.18"
+ update-browserslist-db "^1.1.0"
+
+browserslist@^4.23.0, "browserslist@>= 4.21.0":
+ version "4.23.0"
+ dependencies:
+ caniuse-lite "^1.0.30001587"
+ electron-to-chromium "^1.4.668"
+ node-releases "^2.0.14"
+ update-browserslist-db "^1.0.13"
+
+browserslist@^4.23.1:
+ version "4.23.3"
+ dependencies:
+ caniuse-lite "^1.0.30001646"
+ electron-to-chromium "^1.5.4"
+ node-releases "^2.0.18"
+ update-browserslist-db "^1.1.0"
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+
+busboy@1.6.0:
+ version "1.6.0"
+ dependencies:
+ streamsearch "^1.1.0"
+
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+ version "1.0.7"
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
+callsites@^3.0.0:
+ version "3.1.0"
+
+camelcase-css@^2.0.1:
+ version "2.0.1"
+
+camelcase@^6.3.0:
+ version "6.3.0"
+
+caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591:
+ version "1.0.30001599"
+
+caniuse-lite@^1.0.30001646:
+ version "1.0.30001655"
+
+ccount@^2.0.0:
+ version "2.0.1"
+
+chalk@^2.4.2:
+ version "2.4.2"
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+change-case@^5.4.2:
+ version "5.4.4"
+
+char-regex@^1.0.2:
+ version "1.0.2"
+
+character-entities-html4@^2.0.0:
+ version "2.1.0"
+
+character-entities-legacy@^1.0.0:
+ version "1.1.4"
+
+character-entities-legacy@^3.0.0:
+ version "3.0.0"
+
+character-entities@^1.0.0:
+ version "1.2.4"
+
+character-entities@^2.0.0:
+ version "2.0.2"
+
+character-reference-invalid@^1.0.0:
+ version "1.1.4"
+
+character-reference-invalid@^2.0.0:
+ version "2.0.1"
+
+chokidar@^3.5.3:
+ version "3.6.0"
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chrome-trace-event@^1.0.2:
+ version "1.0.4"
+
+class-variance-authority@^0.7.0:
+ version "0.7.0"
+ dependencies:
+ clsx "2.0.0"
+
+client-only@0.0.1:
+ version "0.0.1"
+
+cliui@^8.0.1:
+ version "8.0.1"
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
+clsx@^1.2.1:
+ version "1.2.1"
+
+clsx@^2.1.0, clsx@^2.1.1:
+ version "2.1.1"
+
+clsx@2.0.0:
+ version "2.0.0"
+
+code-red@^1.0.3:
+ version "1.0.4"
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+ "@types/estree" "^1.0.1"
+ acorn "^8.10.0"
+ estree-walker "^3.0.3"
+ periscopic "^3.1.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@^1.0.0, color-name@~1.1.4:
+ version "1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+
+color-string@^1.9.0:
+ version "1.9.1"
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^4.2.3:
+ version "4.2.3"
+ dependencies:
+ color-convert "^2.0.1"
+ color-string "^1.9.0"
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ dependencies:
+ delayed-stream "~1.0.0"
+
+comma-separated-tokens@^1.0.0:
+ version "1.0.8"
+
+comma-separated-tokens@^2.0.0:
+ version "2.0.3"
+
+commander@^2.20.0:
+ version "2.20.3"
+
+commander@^4.0.0:
+ version "4.1.1"
+
+common-path-prefix@^3.0.0:
+ version "3.0.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+
+convert-source-map@^1.5.0:
+ version "1.9.0"
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+
+cookie@^0.4.1:
+ version "0.4.2"
+
+cookie@^0.5.0:
+ version "0.5.0"
+
+cosmiconfig@^7.0.0:
+ version "7.1.0"
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+crelt@^1.0.0:
+ version "1.0.6"
+
+cross-fetch@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ node-fetch "^2.6.12"
+
+cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+ version "7.0.3"
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+css-tree@^2.3.1:
+ version "2.3.1"
+ dependencies:
+ mdn-data "2.0.30"
+ source-map-js "^1.0.1"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+
+csstype@^3.0.2, csstype@^3.1.0, csstype@^3.1.3:
+ version "3.1.3"
+
+damerau-levenshtein@^1.0.8:
+ version "1.0.8"
+
+data-view-buffer@^1.0.1:
+ version "1.0.1"
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-length@^1.0.1:
+ version "1.0.1"
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-offset@^1.0.0:
+ version "1.0.0"
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+date-fns@^3.3.1:
+ version "3.6.0"
+
+debug@^3.2.7:
+ version "3.2.7"
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+ version "4.3.4"
+ dependencies:
+ ms "2.1.2"
+
+decode-named-character-reference@^1.0.0:
+ version "1.0.2"
+ dependencies:
+ character-entities "^2.0.0"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+
+define-data-property@^1.0.1, define-data-property@^1.1.4:
+ version "1.1.4"
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
+define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
+ version "1.2.1"
+ dependencies:
+ define-data-property "^1.0.1"
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+
+dequal@^2.0.0, dequal@^2.0.3:
+ version "2.0.3"
+
+detect-libc@^2.0.3:
+ version "2.0.3"
+
+detect-node-es@^1.1.0:
+ version "1.1.0"
+
+devlop@^1.0.0, devlop@^1.1.0:
+ version "1.1.0"
+ dependencies:
+ dequal "^2.0.0"
+
+didyoumean@^1.2.2:
+ version "1.2.2"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ dependencies:
+ path-type "^4.0.0"
+
+dlv@^1.1.3:
+ version "1.1.3"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ dependencies:
+ esutils "^2.0.2"
+
+dom-helpers@^5.0.1:
+ version "5.2.1"
+ dependencies:
+ "@babel/runtime" "^7.8.7"
+ csstype "^3.0.2"
+
+dompurify@^2.3.9:
+ version "2.5.6"
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+
+electron-to-chromium@^1.4.668:
+ version "1.4.711"
+
+electron-to-chromium@^1.5.4:
+ version "1.5.13"
+
+embla-carousel-react@^8.0.4:
+ version "8.2.0"
+ dependencies:
+ embla-carousel "8.2.0"
+ embla-carousel-reactive-utils "8.2.0"
+
+embla-carousel-reactive-utils@8.2.0:
+ version "8.2.0"
+
+embla-carousel@8.2.0:
+ version "8.2.0"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+
+emojilib@^2.4.0:
+ version "2.4.0"
+
+emoticon@^4.0.1:
+ version "4.1.0"
+
+encoding@^0.1.0, encoding@^0.1.13:
+ version "0.1.13"
+ dependencies:
+ iconv-lite "^0.6.2"
+
+enhanced-resolve@^5.12.0:
+ version "5.16.0"
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
+enhanced-resolve@^5.17.1:
+ version "5.17.1"
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
+entities@^4.4.0:
+ version "4.5.0"
+
+entities@^4.5.0:
+ version "4.5.0"
+
+entities@~3.0.1:
+ version "3.0.1"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2:
+ version "1.23.2"
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ data-view-buffer "^1.0.1"
+ data-view-byte-length "^1.0.1"
+ data-view-byte-offset "^1.0.0"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-set-tostringtag "^2.0.3"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
+ globalthis "^1.0.3"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ hasown "^2.0.2"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
+ is-callable "^1.2.7"
+ is-data-view "^1.0.1"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.3"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.13"
+ is-weakref "^1.0.2"
+ object-inspect "^1.13.1"
+ object-keys "^1.1.1"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.2"
+ safe-array-concat "^1.1.2"
+ safe-regex-test "^1.0.3"
+ string.prototype.trim "^1.2.9"
+ string.prototype.trimend "^1.0.8"
+ string.prototype.trimstart "^1.0.7"
+ typed-array-buffer "^1.0.2"
+ typed-array-byte-length "^1.0.1"
+ typed-array-byte-offset "^1.0.2"
+ typed-array-length "^1.0.5"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.15"
+
+es-define-property@^1.0.0:
+ version "1.0.0"
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0:
+ version "1.3.0"
+
+es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17:
+ version "1.0.18"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-errors "^1.3.0"
+ es-set-tostringtag "^2.0.3"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ globalthis "^1.0.3"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.7"
+ iterator.prototype "^1.1.2"
+ safe-array-concat "^1.1.2"
+
+es-module-lexer@^1.2.1:
+ version "1.5.4"
+
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ dependencies:
+ es-errors "^1.3.0"
+
+es-set-tostringtag@^2.0.3:
+ version "2.0.3"
+ dependencies:
+ get-intrinsic "^1.2.4"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.1"
+
+es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ hasown "^2.0.0"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escalade@^3.1.1, escalade@^3.1.2:
+ version "3.1.2"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+
+escape-string-regexp@^5.0.0:
+ version "5.0.0"
+
+eslint-config-next@14.1.4:
+ version "14.1.4"
+ dependencies:
+ "@next/eslint-plugin-next" "14.1.4"
+ "@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"
+
+eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9:
+ version "0.3.9"
+ dependencies:
+ debug "^3.2.7"
+ is-core-module "^2.13.0"
+ resolve "^1.22.4"
+
+eslint-import-resolver-typescript@^3.5.2:
+ version "3.6.1"
+ 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"
+
+eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0:
+ version "2.8.1"
+ dependencies:
+ debug "^3.2.7"
+
+eslint-plugin-import@*, eslint-plugin-import@^2.28.1:
+ version "2.29.1"
+ 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"
+
+eslint-plugin-jsx-a11y@^6.7.1:
+ version "6.8.0"
+ 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"
+
+"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705":
+ version "4.6.0"
+
+eslint-plugin-react@^7.33.2:
+ version "7.34.1"
+ dependencies:
+ array-includes "^3.1.7"
+ array.prototype.findlast "^1.2.4"
+ array.prototype.flatmap "^1.3.2"
+ array.prototype.toreversed "^1.1.2"
+ array.prototype.tosorted "^1.1.3"
+ doctrine "^2.1.0"
+ es-iterator-helpers "^1.0.17"
+ estraverse "^5.3.0"
+ jsx-ast-utils "^2.4.1 || ^3.0.0"
+ minimatch "^3.1.2"
+ object.entries "^1.1.7"
+ object.fromentries "^2.0.7"
+ object.hasown "^1.1.3"
+ object.values "^1.1.7"
+ prop-types "^15.8.1"
+ resolve "^2.0.0-next.5"
+ semver "^6.3.1"
+ string.prototype.matchall "^4.0.10"
+
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-scope@5.1.1:
+ version "5.1.1"
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+
+eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.23.0 || ^8.0.0", eslint@^8:
+ version "8.57.0"
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.4"
+ "@eslint/js" "8.57.0"
+ "@humanwhocodes/config-array" "^0.11.14"
+ "@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"
+
+espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ dependencies:
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
+
+esprima@^4.0.0:
+ version "4.0.1"
+
+esquery@^1.4.2:
+ version "1.5.0"
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
+ version "5.3.0"
+
+estree-util-is-identifier-name@^3.0.0:
+ version "3.0.0"
+
+estree-walker@^2.0.2:
+ version "2.0.2"
+
+estree-walker@^3.0.0, estree-walker@^3.0.3:
+ version "3.0.3"
+ dependencies:
+ "@types/estree" "^1.0.0"
+
+esutils@^2.0.2:
+ version "2.0.3"
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+
+events@^3.2.0:
+ version "3.3.0"
+
+eventsource-parser@1.0.0:
+ version "1.0.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend@^3.0.0:
+ version "3.0.2"
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+
+fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1:
+ version "3.3.2"
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ 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==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+
+fast-uri@^3.0.1:
+ version "3.0.1"
+
+fastq@^1.6.0:
+ version "1.17.1"
+ dependencies:
+ reusify "^1.0.4"
+
+fault@^1.0.0:
+ version "1.0.4"
+ dependencies:
+ format "^0.2.0"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-cache-dir@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ common-path-prefix "^3.0.0"
+ pkg-dir "^7.0.0"
+
+find-root@^1.1.0:
+ version "1.1.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+find-up@^6.3.0:
+ version "6.3.0"
+ dependencies:
+ locate-path "^7.1.0"
+ path-exists "^5.0.0"
+
+flat-cache@^3.0.4:
+ version "3.2.0"
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.3"
+ rimraf "^3.0.2"
+
+flatted@^3.2.9:
+ version "3.3.1"
+
+for-each@^0.3.3:
+ version "0.3.3"
+ dependencies:
+ is-callable "^1.1.3"
+
+foreground-child@^3.1.0:
+ version "3.1.1"
+ dependencies:
+ cross-spawn "^7.0.0"
+ signal-exit "^4.0.1"
+
+form-data-encoder@1.7.2:
+ version "1.7.2"
+
+form-data@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+format@^0.2.0:
+ version "0.2.2"
+
+formdata-node@^4.3.2:
+ version "4.4.1"
+ dependencies:
+ node-domexception "1.0.0"
+ web-streams-polyfill "4.0.0-beta.3"
+
+fraction.js@^4.3.7:
+ version "4.3.7"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+
+function-bind@^1.1.2:
+ version "1.1.2"
+
+function.prototype.name@^1.1.5, function.prototype.name@^1.1.6:
+ version "1.1.6"
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ functions-have-names "^1.2.3"
+
+functions-have-names@^1.2.3:
+ version "1.2.3"
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+
+get-caller-file@^2.0.5:
+ version "2.0.5"
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+get-nonce@^1.0.0:
+ version "1.0.1"
+
+get-symbol-description@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ call-bind "^1.0.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+
+get-tsconfig@^4.5.0:
+ version "4.7.3"
+ dependencies:
+ resolve-pkg-maps "^1.0.0"
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ dependencies:
+ is-glob "^4.0.3"
+
+glob-parent@~5.1.2:
+ version "5.1.2"
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.4.1:
+ version "0.4.1"
+
+glob@^10.3.10, glob@10.3.10:
+ version "10.3.10"
+ 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"
+
+glob@^7.1.3:
+ version "7.2.3"
+ 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"
+
+globals@^11.1.0:
+ version "11.12.0"
+
+globals@^13.19.0:
+ version "13.24.0"
+ dependencies:
+ type-fest "^0.20.2"
+
+globalthis@^1.0.3:
+ version "1.0.3"
+ dependencies:
+ define-properties "^1.1.3"
+
+globby@^11.1.0:
+ version "11.1.0"
+ 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"
+
+gopd@^1.0.1:
+ version "1.0.1"
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4:
+ version "4.2.11"
+
+graphemer@^1.4.0:
+ version "1.4.0"
+
+graphql-tag@^2.12.6:
+ version "2.12.6"
+ dependencies:
+ tslib "^2.1.0"
+
+"graphql@^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql@^15.0.0 || ^16.0.0", graphql@^16.5.0:
+ version "16.9.0"
+
+gray-matter@^4.0.3:
+ version "4.0.3"
+ dependencies:
+ js-yaml "^3.13.1"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+ version "1.0.2"
+
+has-flag@^3.0.0:
+ version "3.0.0"
+
+has-flag@^4.0.0:
+ version "4.0.0"
+
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-proto@^1.0.1, has-proto@^1.0.3:
+ version "1.0.3"
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ has-symbols "^1.0.3"
+
+hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
+ version "2.0.2"
+ dependencies:
+ function-bind "^1.1.2"
+
+hast-util-parse-selector@^2.0.0:
+ version "2.2.5"
+
+hast-util-to-jsx-runtime@^2.0.0:
+ version "2.3.0"
+ dependencies:
+ "@types/estree" "^1.0.0"
+ "@types/hast" "^3.0.0"
+ "@types/unist" "^3.0.0"
+ comma-separated-tokens "^2.0.0"
+ devlop "^1.0.0"
+ estree-util-is-identifier-name "^3.0.0"
+ hast-util-whitespace "^3.0.0"
+ mdast-util-mdx-expression "^2.0.0"
+ mdast-util-mdx-jsx "^3.0.0"
+ mdast-util-mdxjs-esm "^2.0.0"
+ property-information "^6.0.0"
+ space-separated-tokens "^2.0.0"
+ style-to-object "^1.0.0"
+ unist-util-position "^5.0.0"
+ vfile-message "^4.0.0"
+
+hast-util-whitespace@^3.0.0:
+ version "3.0.0"
+ dependencies:
+ "@types/hast" "^3.0.0"
+
+hastscript@^6.0.0:
+ version "6.0.0"
+ dependencies:
+ "@types/hast" "^2.0.0"
+ comma-separated-tokens "^1.0.0"
+ hast-util-parse-selector "^2.0.0"
+ property-information "^5.0.0"
+ space-separated-tokens "^1.0.0"
+
+highlight.js@^10.4.1:
+ version "10.7.3"
+
+highlight.js@^11.6.0:
+ version "11.10.0"
+
+highlight.js@~10.7.0:
+ version "10.7.3"
+
+hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2:
+ version "3.3.2"
+ dependencies:
+ react-is "^16.7.0"
+
+html-url-attributes@^3.0.0:
+ version "3.0.0"
+
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@^0.6.2:
+ version "0.6.3"
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+ignore@^5.2.0:
+ version "5.3.1"
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+
+inline-style-parser@0.2.3:
+ version "0.2.3"
+
+internal-slot@^1.0.5, internal-slot@^1.0.7:
+ version "1.0.7"
+ dependencies:
+ es-errors "^1.3.0"
+ hasown "^2.0.0"
+ side-channel "^1.0.4"
+
+invariant@^2.2.4:
+ version "2.2.4"
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-alphabetical@^1.0.0:
+ version "1.0.4"
+
+is-alphabetical@^2.0.0:
+ version "2.0.1"
+
+is-alphanumerical@^1.0.0:
+ version "1.0.4"
+ dependencies:
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+
+is-alphanumerical@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ is-alphabetical "^2.0.0"
+ is-decimal "^2.0.0"
+
+is-array-buffer@^3.0.4:
+ version "3.0.4"
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+
+is-async-function@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
+ version "1.2.7"
+
+is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1:
+ version "2.13.1"
+ dependencies:
+ hasown "^2.0.0"
+
+is-data-view@^1.0.1:
+ version "1.0.1"
+ dependencies:
+ is-typed-array "^1.1.13"
+
+is-date-object@^1.0.1, is-date-object@^1.0.5:
+ version "1.0.5"
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-decimal@^1.0.0:
+ version "1.0.4"
+
+is-decimal@^2.0.0:
+ version "2.0.1"
+
+is-extendable@^0.1.0:
+ version "0.1.1"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+
+is-finalizationregistry@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ call-bind "^1.0.2"
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+
+is-generator-function@^1.0.10:
+ version "1.0.10"
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+ version "4.0.3"
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hexadecimal@^1.0.0:
+ version "1.0.4"
+
+is-hexadecimal@^2.0.0:
+ version "2.0.1"
+
+is-map@^2.0.3:
+ version "2.0.3"
+
+is-negative-zero@^2.0.3:
+ version "2.0.3"
+
+is-number-object@^1.0.4:
+ version "1.0.7"
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^7.0.0:
+ version "7.0.0"
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+
+is-plain-obj@^4.0.0:
+ version "4.1.0"
+
+is-reference@^3.0.0, is-reference@^3.0.1:
+ version "3.0.2"
+ dependencies:
+ "@types/estree" "*"
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-set@^2.0.3:
+ version "2.0.3"
+
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
+ version "1.0.3"
+ dependencies:
+ call-bind "^1.0.7"
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typed-array@^1.1.13:
+ version "1.1.13"
+ dependencies:
+ which-typed-array "^1.1.14"
+
+is-weakmap@^2.0.2:
+ version "2.0.2"
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ call-bind "^1.0.2"
+
+is-weakset@^2.0.3:
+ version "2.0.3"
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+
+isarray@^2.0.5:
+ version "2.0.5"
+
+isexe@^2.0.0:
+ version "2.0.0"
+
+iterator.prototype@^1.1.2:
+ version "1.1.2"
+ 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"
+
+jackspeak@^2.3.5:
+ version "2.3.6"
+ dependencies:
+ "@isaacs/cliui" "^8.0.2"
+ optionalDependencies:
+ "@pkgjs/parseargs" "^0.11.0"
+
+jest-worker@^27.4.5:
+ version "27.5.1"
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jiti@^1.19.1:
+ version "1.21.0"
+
+js-base64@^3.7.2:
+ version "3.7.7"
+
+js-cookie@^3.0.5:
+ version "3.0.5"
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ dependencies:
+ argparse "^2.0.1"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+
+json-buffer@3.0.1:
+ version "3.0.1"
+
+json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
+ version "2.3.1"
+
+json-schema-traverse@^0.4.1:
+ 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==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+
+json-stable-stringify@^1.0.2:
+ version "1.1.1"
+ dependencies:
+ call-bind "^1.0.5"
+ isarray "^2.0.5"
+ jsonify "^0.0.1"
+ object-keys "^1.1.1"
+
+json5@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.2.3:
+ version "2.2.3"
+
+jsonify@^0.0.1:
+ version "0.0.1"
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5:
+ version "3.3.5"
+ dependencies:
+ array-includes "^3.1.6"
+ array.prototype.flat "^1.3.1"
+ object.assign "^4.1.4"
+ object.values "^1.1.6"
+
+keyv@^4.5.3:
+ version "4.5.4"
+ dependencies:
+ json-buffer "3.0.1"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+
+language-subtag-registry@^0.3.20:
+ version "0.3.22"
+
+language-tags@^1.0.9:
+ version "1.0.9"
+ dependencies:
+ language-subtag-registry "^0.3.20"
+
+levn@^0.4.1:
+ version "0.4.1"
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+lilconfig@^2.1.0:
+ version "2.1.0"
+
+lilconfig@^3.0.0:
+ version "3.1.1"
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+
+linkify-it@^4.0.1:
+ version "4.0.1"
+ dependencies:
+ uc.micro "^1.0.1"
+
+linkify-it@^5.0.0:
+ version "5.0.0"
+ dependencies:
+ uc.micro "^2.0.0"
+
+linkifyjs@^4.1.0:
+ version "4.1.3"
+
+loader-runner@^4.2.0:
+ version "4.3.0"
+
+locate-character@^3.0.0:
+ version "3.0.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ dependencies:
+ p-locate "^5.0.0"
+
+locate-path@^7.1.0:
+ version "7.2.0"
+ dependencies:
+ p-locate "^6.0.0"
+
+lodash-es@^4.17.21:
+ version "4.17.21"
+
+lodash.castarray@^4.4.0:
+ version "4.4.0"
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+
+lodash@^4.17.21:
+ version "4.17.21"
+
+longest-streak@^3.0.0:
+ version "3.1.0"
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+ version "1.4.0"
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lowlight@^1.0, lowlight@^1.17.0:
+ version "1.20.0"
+ dependencies:
+ fault "^1.0.0"
+ highlight.js "~10.7.0"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ dependencies:
+ yallist "^4.0.0"
+
+"lru-cache@^9.1.1 || ^10.0.0":
+ version "10.2.0"
+
+lucide-react@^0.260.0:
+ version "0.260.0"
+
+lucide-react@^0.377.0:
+ version "0.377.0"
+
+magic-string@^0.30.10, magic-string@^0.30.4:
+ version "0.30.11"
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.5.0"
+
+markdown-it-task-lists@^2.1.1:
+ version "2.1.1"
+
+markdown-it@^13.0.1:
+ version "13.0.2"
+ dependencies:
+ argparse "^2.0.1"
+ entities "~3.0.1"
+ linkify-it "^4.0.1"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+markdown-it@^14.0.0:
+ version "14.1.0"
+ dependencies:
+ argparse "^2.0.1"
+ entities "^4.4.0"
+ linkify-it "^5.0.0"
+ mdurl "^2.0.0"
+ punycode.js "^2.3.1"
+ uc.micro "^2.1.0"
+
+markdown-table@^3.0.0:
+ version "3.0.3"
+
+mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1:
+ version "3.0.1"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ escape-string-regexp "^5.0.0"
+ unist-util-is "^6.0.0"
+ unist-util-visit-parents "^6.0.0"
+
+mdast-util-from-markdown@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ mdast-util-to-string "^4.0.0"
+ micromark "^4.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-decode-string "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+ unist-util-stringify-position "^4.0.0"
+
+mdast-util-gfm-autolink-literal@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ ccount "^2.0.0"
+ devlop "^1.0.0"
+ mdast-util-find-and-replace "^3.0.0"
+ micromark-util-character "^2.0.0"
+
+mdast-util-gfm-footnote@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.1.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+
+mdast-util-gfm-strikethrough@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-gfm-table@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ markdown-table "^3.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-gfm-task-list-item@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-gfm@^3.0.0:
+ version "3.0.0"
+ dependencies:
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-gfm-autolink-literal "^2.0.0"
+ mdast-util-gfm-footnote "^2.0.0"
+ mdast-util-gfm-strikethrough "^2.0.0"
+ mdast-util-gfm-table "^2.0.0"
+ mdast-util-gfm-task-list-item "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-mdx-expression@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-mdx-jsx@^3.0.0:
+ version "3.1.3"
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ ccount "^2.0.0"
+ devlop "^1.1.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+ parse-entities "^4.0.0"
+ stringify-entities "^4.0.0"
+ unist-util-stringify-position "^4.0.0"
+ vfile-message "^4.0.0"
+
+mdast-util-mdxjs-esm@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ "@types/estree-jsx" "^1.0.0"
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ devlop "^1.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ mdast-util-to-markdown "^2.0.0"
+
+mdast-util-phrasing@^4.0.0:
+ version "4.1.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ unist-util-is "^6.0.0"
+
+mdast-util-to-hast@^13.0.0:
+ version "13.2.0"
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ "@ungap/structured-clone" "^1.0.0"
+ devlop "^1.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ trim-lines "^3.0.0"
+ unist-util-position "^5.0.0"
+ unist-util-visit "^5.0.0"
+ vfile "^6.0.0"
+
+mdast-util-to-markdown@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ "@types/unist" "^3.0.0"
+ longest-streak "^3.0.0"
+ mdast-util-phrasing "^4.0.0"
+ mdast-util-to-string "^4.0.0"
+ micromark-util-decode-string "^2.0.0"
+ unist-util-visit "^5.0.0"
+ zwitch "^2.0.0"
+
+mdast-util-to-string@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+
+mdn-data@2.0.30:
+ version "2.0.30"
+
+mdurl@^1.0.1:
+ version "1.0.1"
+
+mdurl@^2.0.0:
+ version "2.0.0"
+
+memoize-one@^6.0.0:
+ version "6.0.0"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+
+merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+
+micromark-core-commonmark@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ micromark-factory-destination "^2.0.0"
+ micromark-factory-label "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-factory-title "^2.0.0"
+ micromark-factory-whitespace "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-classify-character "^2.0.0"
+ micromark-util-html-tag-name "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-subtokenize "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-autolink-literal@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-footnote@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ devlop "^1.0.0"
+ micromark-core-commonmark "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-strikethrough@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-classify-character "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-table@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ devlop "^1.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-tagfilter@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm-task-list-item@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ devlop "^1.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-extension-gfm@^3.0.0:
+ version "3.0.0"
+ dependencies:
+ micromark-extension-gfm-autolink-literal "^2.0.0"
+ micromark-extension-gfm-footnote "^2.0.0"
+ micromark-extension-gfm-strikethrough "^2.0.0"
+ micromark-extension-gfm-table "^2.0.0"
+ micromark-extension-gfm-tagfilter "^2.0.0"
+ micromark-extension-gfm-task-list-item "^2.0.0"
+ micromark-util-combine-extensions "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-destination@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-label@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-space@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-title@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-factory-whitespace@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-character@^2.0.0:
+ version "2.1.0"
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-chunked@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-classify-character@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-combine-extensions@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-chunked "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-decode-numeric-character-reference@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-decode-string@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ decode-named-character-reference "^1.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-encode@^2.0.0:
+ version "2.0.0"
+
+micromark-util-html-tag-name@^2.0.0:
+ version "2.0.0"
+
+micromark-util-normalize-identifier@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-resolve-all@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-types "^2.0.0"
+
+micromark-util-sanitize-uri@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ micromark-util-character "^2.0.0"
+ micromark-util-encode "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+
+micromark-util-subtokenize@^2.0.0:
+ version "2.0.1"
+ dependencies:
+ devlop "^1.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromark-util-symbol@^2.0.0:
+ version "2.0.0"
+
+micromark-util-types@^2.0.0:
+ version "2.0.0"
+
+micromark@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ "@types/debug" "^4.0.0"
+ debug "^4.0.0"
+ decode-named-character-reference "^1.0.0"
+ devlop "^1.0.0"
+ micromark-core-commonmark "^2.0.0"
+ micromark-factory-space "^2.0.0"
+ micromark-util-character "^2.0.0"
+ micromark-util-chunked "^2.0.0"
+ micromark-util-combine-extensions "^2.0.0"
+ micromark-util-decode-numeric-character-reference "^2.0.0"
+ micromark-util-encode "^2.0.0"
+ micromark-util-normalize-identifier "^2.0.0"
+ micromark-util-resolve-all "^2.0.0"
+ micromark-util-sanitize-uri "^2.0.0"
+ micromark-util-subtokenize "^2.0.0"
+ micromark-util-symbol "^2.0.0"
+ micromark-util-types "^2.0.0"
+
+micromatch@^4.0.4, micromatch@^4.0.5:
+ version "4.0.5"
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+
+mime-types@^2.1.12, mime-types@^2.1.27:
+ version "2.1.35"
+ dependencies:
+ mime-db "1.52.0"
+
+minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^9.0.1:
+ version "9.0.3"
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@9.0.3:
+ version "9.0.3"
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.2.0, minimist@^1.2.6:
+ version "1.2.8"
+
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
+ version "7.0.4"
+
+ms@^2.0.0, ms@^2.1.1, ms@2.1.2:
+ version "2.1.2"
+
+mz@^2.7.0:
+ version "2.7.0"
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
+nanoclone@^0.2.1:
+ version "0.2.1"
+
+nanoid@^3.1.25, nanoid@^3.3.6, nanoid@^3.3.7:
+ version "3.3.7"
+
+nanoid@3.3.6:
+ version "3.3.6"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+
+neo-async@^2.6.2:
+ version "2.6.2"
+
+next-connect@^1.0.0-next.2:
+ version "1.0.0"
+ dependencies:
+ "@tsconfig/node16" "^1.0.3"
+ regexparam "^2.0.1"
+
+next-remove-imports@^1.0.6:
+ version "1.0.12"
+ dependencies:
+ "@babel/core" "^7.22.9"
+ babel-loader "^9.1.3"
+ babel-plugin-transform-remove-imports "^1.7.0"
+
+next-session@^4.0.5:
+ version "4.0.5"
+ dependencies:
+ cookie "^0.4.1"
+ nanoid "^3.1.25"
+
+next-themes@^0.3.0:
+ version "0.3.0"
+
+"next@^13 || ^14", "next@>= 13", next@14.1.4:
+ version "14.1.4"
+ dependencies:
+ "@next/env" "14.1.4"
+ "@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"
+ optionalDependencies:
+ "@next/swc-darwin-arm64" "14.1.4"
+ "@next/swc-darwin-x64" "14.1.4"
+ "@next/swc-linux-arm64-gnu" "14.1.4"
+ "@next/swc-linux-arm64-musl" "14.1.4"
+ "@next/swc-linux-x64-gnu" "14.1.4"
+ "@next/swc-linux-x64-musl" "14.1.4"
+ "@next/swc-win32-arm64-msvc" "14.1.4"
+ "@next/swc-win32-ia32-msvc" "14.1.4"
+ "@next/swc-win32-x64-msvc" "14.1.4"
+
+node-domexception@1.0.0:
+ version "1.0.0"
+
+node-emoji@^2.1.3:
+ version "2.1.3"
+ dependencies:
+ "@sindresorhus/is" "^4.6.0"
+ char-regex "^1.0.2"
+ emojilib "^2.4.0"
+ skin-tone "^2.0.0"
+
+node-fetch@^2.6.12, node-fetch@^2.6.7:
+ version "2.7.0"
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-releases@^2.0.14:
+ version "2.0.14"
+
+node-releases@^2.0.18:
+ version "2.0.18"
+
+nodemailer@^6.9.13:
+ version "6.9.14"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+
+object-assign@^4.0.1, object-assign@^4.1.1:
+ version "4.1.1"
+
+object-hash@^3.0.0:
+ version "3.0.0"
+
+object-inspect@^1.13.1:
+ version "1.13.1"
+
+object-keys@^1.1.1:
+ version "1.1.1"
+
+object.assign@^4.1.4, object.assign@^4.1.5:
+ version "4.1.5"
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+object.entries@^1.1.7:
+ version "1.1.8"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+object.fromentries@^2.0.7:
+ version "2.0.8"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+
+object.groupby@^1.0.1:
+ version "1.0.3"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+
+object.hasown@^1.1.3:
+ version "1.1.3"
+ dependencies:
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+
+object.values@^1.1.6, object.values@^1.1.7:
+ version "1.2.0"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+once@^1.3.0:
+ version "1.4.0"
+ dependencies:
+ wrappy "1"
+
+openai-edge@^1.2.2:
+ version "1.2.2"
+
+openai@^4.13.0:
+ version "4.57.0"
+ dependencies:
+ "@types/node" "^18.11.18"
+ "@types/node-fetch" "^2.6.4"
+ "@types/qs" "^6.9.7"
+ abort-controller "^3.0.0"
+ agentkeepalive "^4.2.1"
+ form-data-encoder "1.7.2"
+ formdata-node "^4.3.2"
+ node-fetch "^2.6.7"
+ qs "^6.10.3"
+
+optimism@^0.18.0:
+ version "0.18.0"
+ dependencies:
+ "@wry/caches" "^1.0.0"
+ "@wry/context" "^0.7.0"
+ "@wry/trie" "^0.4.3"
+ tslib "^2.3.0"
+
+optionator@^0.9.3:
+ version "0.9.3"
+ 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"
+
+orderedmap@^2.0.0:
+ version "2.1.1"
+
+outstatic@^1.4.9:
+ version "1.4.9"
+ dependencies:
+ "@apollo/client" "^3.6.6"
+ "@dnd-kit/core" "^6.1.0"
+ "@dnd-kit/modifiers" "^7.0.0"
+ "@dnd-kit/sortable" "^8.0.0"
+ "@dnd-kit/utilities" "^3.2.2"
+ "@hapi/iron" "^7.0.0"
+ "@hookform/resolvers" "^2.9.7"
+ "@radix-ui/react-checkbox" "^1.1.0"
+ "@radix-ui/react-icons" "^1.3.0"
+ "@radix-ui/react-slot" "^1.0.2"
+ "@radix-ui/react-tooltip" "^1.0.7"
+ "@tiptap/core" "2.1.10"
+ "@tiptap/extension-bubble-menu" "2.1.10"
+ "@tiptap/extension-code-block" "2.1.10"
+ "@tiptap/extension-code-block-lowlight" "2.1.10"
+ "@tiptap/extension-gapcursor" "2.1.0"
+ "@tiptap/extension-highlight" "2.1.10"
+ "@tiptap/extension-horizontal-rule" "2.1.10"
+ "@tiptap/extension-image" "2.1.10"
+ "@tiptap/extension-link" "2.1.10"
+ "@tiptap/extension-placeholder" "2.1.10"
+ "@tiptap/extension-table" "2.1.0"
+ "@tiptap/extension-table-cell" "2.1.0"
+ "@tiptap/extension-table-header" "2.1.0"
+ "@tiptap/extension-table-row" "2.1.0"
+ "@tiptap/extension-underline" "2.1.10"
+ "@tiptap/pm" "2.1.10"
+ "@tiptap/react" "2.1.10"
+ "@tiptap/starter-kit" "2.1.10"
+ "@tiptap/suggestion" "2.1.10"
+ ai "^2.2.16"
+ camelcase "^6.3.0"
+ change-case "^5.4.2"
+ class-variance-authority "^0.7.0"
+ clsx "^1.2.1"
+ cookie "^0.5.0"
+ cross-fetch "^4.0.0"
+ dompurify "^2.3.9"
+ encoding "^0.1.13"
+ graphql "^16.5.0"
+ gray-matter "^4.0.3"
+ highlight.js "^11.6.0"
+ imurmurhash "^0.1.4"
+ js-base64 "^3.7.2"
+ js-cookie "^3.0.5"
+ json-stable-stringify "^1.0.2"
+ lowlight "^1.0"
+ lucide-react "^0.260.0"
+ next-connect "^1.0.0-next.2"
+ next-remove-imports "^1.0.6"
+ next-session "^4.0.5"
+ openai "^4.13.0"
+ openai-edge "^1.2.2"
+ pluralize "^8.0.0"
+ postcss "^8.4.26"
+ react-datepicker "^6"
+ react-hook-form "^7.31.3"
+ react-select "^5.7.3"
+ react-textarea-autosize "^8.3.4"
+ sift "^16.0.1"
+ sonner "^0.6.2"
+ swr "^1.3.0"
+ tailwind-merge "^1.13.2"
+ thenby "^1.3.4"
+ tippy.js "^6.3.7"
+ tiptap-markdown "0.8.1"
+ transliteration "^2.3.5"
+ url-slug "^3.0.4"
+ use-debounce "^9.0.4"
+ yup "^0.32.11"
+ zustand "^4.4.3"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-limit@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ yocto-queue "^1.0.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ dependencies:
+ p-limit "^3.0.2"
+
+p-locate@^6.0.0:
+ version "6.0.0"
+ dependencies:
+ p-limit "^4.0.0"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ dependencies:
+ callsites "^3.0.0"
+
+parse-entities@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse-entities@^4.0.0:
+ version "4.0.1"
+ dependencies:
+ "@types/unist" "^2.0.0"
+ character-entities "^2.0.0"
+ character-entities-legacy "^3.0.0"
+ character-reference-invalid "^2.0.0"
+ decode-named-character-reference "^1.0.0"
+ is-alphanumerical "^2.0.0"
+ is-decimal "^2.0.0"
+ is-hexadecimal "^2.0.0"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ 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-exists@^4.0.0:
+ version "4.0.0"
+
+path-exists@^5.0.0:
+ version "5.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+
+path-key@^3.1.0:
+ version "3.1.1"
+
+path-parse@^1.0.7:
+ version "1.0.7"
+
+path-scurry@^1.10.1:
+ version "1.10.1"
+ dependencies:
+ lru-cache "^9.1.1 || ^10.0.0"
+ minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+
+periscopic@^3.1.0:
+ version "3.1.0"
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^3.0.0"
+ is-reference "^3.0.0"
+
+picocolors@^1.0.0:
+ version "1.0.0"
+
+picocolors@^1.0.1:
+ version "1.0.1"
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+ version "2.3.1"
+
+pify@^2.3.0:
+ version "2.3.0"
+
+pirates@^4.0.1:
+ version "4.0.6"
+
+pkg-dir@^7.0.0:
+ version "7.0.0"
+ dependencies:
+ find-up "^6.3.0"
+
+pluralize@^8.0.0:
+ version "8.0.0"
+
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+
+postcss-import@^15.1.0:
+ version "15.1.0"
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-js@^4.0.1:
+ version "4.0.1"
+ dependencies:
+ camelcase-css "^2.0.1"
+
+postcss-load-config@^4.0.1:
+ version "4.0.2"
+ dependencies:
+ lilconfig "^3.0.0"
+ yaml "^2.3.4"
+
+postcss-nested@^6.0.1:
+ version "6.0.1"
+ dependencies:
+ postcss-selector-parser "^6.0.11"
+
+postcss-selector-parser@^6.0.11:
+ version "6.0.16"
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-selector-parser@6.0.10:
+ version "6.0.10"
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
+ version "4.2.0"
+
+postcss@^8, postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.26, postcss@>=8.0.9:
+ version "8.4.37"
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.0"
+ source-map-js "^1.2.0"
+
+postcss@^8.4.40:
+ version "8.4.41"
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.1"
+ source-map-js "^1.2.0"
+
+postcss@8.4.31:
+ version "8.4.31"
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+
+prismjs@^1.27.0:
+ version "1.29.0"
+
+prismjs@~1.27.0:
+ version "1.27.0"
+
+prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
+ version "15.8.1"
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
+property-expr@^2.0.4:
+ version "2.0.6"
+
+property-information@^5.0.0:
+ version "5.6.0"
+ dependencies:
+ xtend "^4.0.0"
+
+property-information@^6.0.0:
+ version "6.5.0"
+
+prosemirror-changeset@^2.2.0, prosemirror-changeset@^2.2.1:
+ version "2.2.1"
+ dependencies:
+ prosemirror-transform "^1.0.0"
+
+prosemirror-collab@^1.3.0, prosemirror-collab@^1.3.1:
+ version "1.3.1"
+ dependencies:
+ prosemirror-state "^1.0.0"
+
+prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1, prosemirror-commands@^1.5.2:
+ version "1.6.0"
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-dropcursor@^1.5.0, prosemirror-dropcursor@^1.8.1:
+ version "1.8.1"
+ dependencies:
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+ prosemirror-view "^1.1.0"
+
+prosemirror-gapcursor@^1.3.1, prosemirror-gapcursor@^1.3.2:
+ version "1.3.2"
+ dependencies:
+ prosemirror-keymap "^1.0.0"
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-view "^1.0.0"
+
+prosemirror-history@^1.0.0, prosemirror-history@^1.3.0, prosemirror-history@^1.4.1:
+ version "1.4.1"
+ dependencies:
+ prosemirror-state "^1.2.2"
+ prosemirror-transform "^1.0.0"
+ prosemirror-view "^1.31.0"
+ rope-sequence "^1.3.0"
+
+prosemirror-inputrules@^1.2.0, prosemirror-inputrules@^1.4.0:
+ version "1.4.0"
+ dependencies:
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.0, prosemirror-keymap@^1.2.2:
+ version "1.2.2"
+ dependencies:
+ prosemirror-state "^1.0.0"
+ w3c-keyname "^2.2.0"
+
+prosemirror-markdown@^1.10.1, prosemirror-markdown@^1.11.0, prosemirror-markdown@^1.13.0:
+ version "1.13.0"
+ dependencies:
+ markdown-it "^14.0.0"
+ prosemirror-model "^1.20.0"
+
+prosemirror-menu@^1.2.1, prosemirror-menu@^1.2.4:
+ version "1.2.4"
+ dependencies:
+ crelt "^1.0.0"
+ prosemirror-commands "^1.0.0"
+ prosemirror-history "^1.0.0"
+ prosemirror-state "^1.0.0"
+
+prosemirror-model@^1.0.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.22.1, prosemirror-model@^1.22.2, prosemirror-model@^1.8.1:
+ version "1.22.3"
+ dependencies:
+ orderedmap "^2.0.0"
+
+prosemirror-schema-basic@^1.2.0, prosemirror-schema-basic@^1.2.3:
+ version "1.2.3"
+ dependencies:
+ prosemirror-model "^1.19.0"
+
+prosemirror-schema-list@^1.2.2, prosemirror-schema-list@^1.4.1:
+ version "1.4.1"
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.7.3"
+
+prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.1, prosemirror-state@^1.4.2, prosemirror-state@^1.4.3:
+ version "1.4.3"
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-transform "^1.0.0"
+ prosemirror-view "^1.27.0"
+
+prosemirror-tables@^1.3.0, prosemirror-tables@^1.4.0:
+ version "1.5.0"
+ 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"
+
+prosemirror-trailing-node@^2.0.2, prosemirror-trailing-node@^2.0.9:
+ version "2.0.9"
+ dependencies:
+ "@remirror/core-constants" "^2.0.2"
+ escape-string-regexp "^4.0.0"
+
+prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3, prosemirror-transform@^1.9.0:
+ version "1.10.0"
+ dependencies:
+ prosemirror-model "^1.21.0"
+
+prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0, prosemirror-view@^1.33.8, prosemirror-view@^1.33.9:
+ version "1.34.1"
+ dependencies:
+ prosemirror-model "^1.20.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+
+punycode.js@^2.3.1:
+ version "2.3.1"
+
+punycode@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+qs@^6.10.3:
+ version "6.13.0"
+ dependencies:
+ side-channel "^1.0.6"
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+
+randombytes@^2.1.0:
+ version "2.1.0"
+ dependencies:
+ safe-buffer "^5.1.0"
+
+react-datepicker@^6:
+ version "6.9.0"
+ dependencies:
+ "@floating-ui/react" "^0.26.2"
+ clsx "^2.1.0"
+ date-fns "^3.3.1"
+ prop-types "^15.7.2"
+ react-onclickoutside "^6.13.0"
+
+"react-dom@^15.5.x || ^16.x || ^17.x || ^18.x", "react-dom@^16.8 || ^17 || ^18", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", "react-dom@^16.9.0 || ^17 || ^18", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.2 || ^18", react-dom@^18, react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16.6.0, react-dom@>=16.8.0:
+ version "18.2.0"
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.0"
+
+react-hook-form@^7.0.0, react-hook-form@^7.31.3:
+ version "7.53.0"
+
+react-is@^16.13.1, react-is@^16.7.0:
+ version "16.13.1"
+
+react-markdown@^9.0.1:
+ version "9.0.1"
+ dependencies:
+ "@types/hast" "^3.0.0"
+ devlop "^1.0.0"
+ hast-util-to-jsx-runtime "^2.0.0"
+ html-url-attributes "^3.0.0"
+ mdast-util-to-hast "^13.0.0"
+ remark-parse "^11.0.0"
+ remark-rehype "^11.0.0"
+ unified "^11.0.0"
+ unist-util-visit "^5.0.0"
+ vfile "^6.0.0"
+
+react-onclickoutside@^6.13.0:
+ version "6.13.1"
+
+react-remove-scroll-bar@^2.3.4:
+ version "2.3.6"
+ dependencies:
+ react-style-singleton "^2.2.1"
+ tslib "^2.0.0"
+
+react-remove-scroll@2.5.7:
+ version "2.5.7"
+ 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"
+
+react-select@^5.7.3:
+ version "5.8.0"
+ dependencies:
+ "@babel/runtime" "^7.12.0"
+ "@emotion/cache" "^11.4.0"
+ "@emotion/react" "^11.8.1"
+ "@floating-ui/dom" "^1.0.1"
+ "@types/react-transition-group" "^4.4.0"
+ memoize-one "^6.0.0"
+ prop-types "^15.6.0"
+ react-transition-group "^4.3.0"
+ use-isomorphic-layout-effect "^1.1.2"
+
+react-style-singleton@^2.2.1:
+ version "2.2.1"
+ dependencies:
+ get-nonce "^1.0.0"
+ invariant "^2.2.4"
+ tslib "^2.0.0"
+
+react-syntax-highlighter@^15.5.0:
+ version "15.5.0"
+ dependencies:
+ "@babel/runtime" "^7.3.1"
+ highlight.js "^10.4.1"
+ lowlight "^1.17.0"
+ prismjs "^1.27.0"
+ refractor "^3.6.0"
+
+react-textarea-autosize@^8.3.4:
+ version "8.5.3"
+ dependencies:
+ "@babel/runtime" "^7.20.13"
+ use-composed-ref "^1.3.0"
+ use-latest "^1.2.1"
+
+react-transition-group@^4.3.0:
+ version "4.4.5"
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
+ prop-types "^15.6.2"
+
+react@*, "react@^15.5.x || ^16.x || ^17.x || ^18.x", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.5.1 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17 || ^18", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", "react@^16.8.0 || ^17.0.1 || ^18.0.0", "react@^16.9.0 || ^17 || ^18", "react@^16.x || ^17.x || ^18.x", "react@^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18", react@^18, "react@^18 || ^19", react@^18.0.0, react@^18.2.0, "react@>= 0.14.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0", react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=18:
+ version "18.2.0"
+ dependencies:
+ loose-envify "^1.1.0"
+
+read-cache@^1.0.0:
+ version "1.0.0"
+ dependencies:
+ pify "^2.3.0"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ dependencies:
+ picomatch "^2.2.1"
+
+reflect.getprototypeof@^1.0.4:
+ version "1.0.6"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.1"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ globalthis "^1.0.3"
+ which-builtin-type "^1.1.3"
+
+refractor@^3.6.0:
+ version "3.6.0"
+ dependencies:
+ hastscript "^6.0.0"
+ parse-entities "^2.0.0"
+ prismjs "~1.27.0"
+
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+
+regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.2:
+ version "1.5.2"
+ dependencies:
+ call-bind "^1.0.6"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.1"
+
+regexparam@^2.0.1:
+ version "2.0.2"
+
+rehackt@^0.1.0:
+ version "0.1.0"
+
+remark-emoji@^5.0.1:
+ version "5.0.1"
+ dependencies:
+ "@types/mdast" "^4.0.4"
+ emoticon "^4.0.1"
+ mdast-util-find-and-replace "^3.0.1"
+ node-emoji "^2.1.3"
+ unified "^11.0.4"
+
+remark-gfm@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-gfm "^3.0.0"
+ micromark-extension-gfm "^3.0.0"
+ remark-parse "^11.0.0"
+ remark-stringify "^11.0.0"
+ unified "^11.0.0"
+
+remark-parse@^11.0.0:
+ version "11.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-from-markdown "^2.0.0"
+ micromark-util-types "^2.0.0"
+ unified "^11.0.0"
+
+remark-rehype@^11.0.0:
+ version "11.1.0"
+ dependencies:
+ "@types/hast" "^3.0.0"
+ "@types/mdast" "^4.0.0"
+ mdast-util-to-hast "^13.0.0"
+ unified "^11.0.0"
+ vfile "^6.0.0"
+
+remark-stringify@^11.0.0:
+ version "11.0.0"
+ dependencies:
+ "@types/mdast" "^4.0.0"
+ mdast-util-to-markdown "^2.0.0"
+ unified "^11.0.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+
+resolve-pkg-maps@^1.0.0:
+ version "1.0.0"
+
+resolve@^1.1.7, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4:
+ version "1.22.8"
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+resolve@^2.0.0-next.5:
+ version "2.0.0-next.5"
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+response-iterator@^0.2.6:
+ version "0.2.6"
+
+reusify@^1.0.4:
+ version "1.0.4"
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ dependencies:
+ glob "^7.1.3"
+
+rope-sequence@^1.3.0:
+ version "1.3.4"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ dependencies:
+ queue-microtask "^1.2.2"
+
+safe-array-concat@^1.1.2:
+ version "1.1.2"
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+ has-symbols "^1.0.3"
+ isarray "^2.0.5"
+
+safe-buffer@^5.1.0:
+ version "5.2.1"
+
+safe-regex-test@^1.0.3:
+ version "1.0.3"
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-regex "^1.1.4"
+
+"safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+
+scheduler@^0.23.0:
+ version "0.23.0"
+ dependencies:
+ loose-envify "^1.1.0"
+
+schema-utils@^3.1.1:
+ version "3.3.0"
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.2.0:
+ version "3.3.0"
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^4.0.0:
+ version "4.2.0"
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ ajv "^8.9.0"
+ ajv-formats "^2.1.1"
+ ajv-keywords "^5.1.0"
+
+section-matter@^1.0.0:
+ version "1.0.0"
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
+semver@^6.3.1:
+ version "6.3.1"
+
+semver@^7.5.4:
+ version "7.6.0"
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.6.3:
+ version "7.6.3"
+
+serialize-javascript@^6.0.1:
+ version "6.0.2"
+ dependencies:
+ randombytes "^2.1.0"
+
+seroval-plugins@^1.1.0:
+ version "1.1.1"
+
+seroval@^1.0, seroval@^1.1.0:
+ version "1.1.1"
+
+server-only@^0.0.1:
+ version "0.0.1"
+
+set-function-length@^1.2.1:
+ version "1.2.2"
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
+set-function-name@^2.0.0, set-function-name@^2.0.1:
+ version "2.0.2"
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.2"
+
+sharp@^0.33.3:
+ version "0.33.5"
+ dependencies:
+ color "^4.2.3"
+ detect-libc "^2.0.3"
+ semver "^7.6.3"
+ optionalDependencies:
+ "@img/sharp-darwin-arm64" "0.33.5"
+ "@img/sharp-darwin-x64" "0.33.5"
+ "@img/sharp-libvips-darwin-arm64" "1.0.4"
+ "@img/sharp-libvips-darwin-x64" "1.0.4"
+ "@img/sharp-libvips-linux-arm" "1.0.5"
+ "@img/sharp-libvips-linux-arm64" "1.0.4"
+ "@img/sharp-libvips-linux-s390x" "1.0.4"
+ "@img/sharp-libvips-linux-x64" "1.0.4"
+ "@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
+ "@img/sharp-libvips-linuxmusl-x64" "1.0.4"
+ "@img/sharp-linux-arm" "0.33.5"
+ "@img/sharp-linux-arm64" "0.33.5"
+ "@img/sharp-linux-s390x" "0.33.5"
+ "@img/sharp-linux-x64" "0.33.5"
+ "@img/sharp-linuxmusl-arm64" "0.33.5"
+ "@img/sharp-linuxmusl-x64" "0.33.5"
+ "@img/sharp-wasm32" "0.33.5"
+ "@img/sharp-win32-ia32" "0.33.5"
+ "@img/sharp-win32-x64" "0.33.5"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+
+side-channel@^1.0.4, side-channel@^1.0.6:
+ version "1.0.6"
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
+
+sift@^16.0.1:
+ version "16.0.1"
+
+signal-exit@^4.0.1:
+ version "4.1.0"
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ dependencies:
+ is-arrayish "^0.3.1"
+
+skin-tone@^2.0.0:
+ version "2.0.0"
+ dependencies:
+ unicode-emoji-modifier-base "^1.0.0"
+
+slash@^3.0.0:
+ version "3.0.0"
+
+solid-js@^1.2, solid-js@^1.7.7:
+ version "1.8.22"
+ dependencies:
+ csstype "^3.1.0"
+ seroval "^1.1.0"
+ seroval-plugins "^1.1.0"
+
+solid-swr-store@0.10.7:
+ version "0.10.7"
+
+sonner@^0.6.2:
+ version "0.6.2"
+
+sonner@^1.4.41:
+ version "1.5.0"
+
+source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0:
+ version "1.2.0"
+
+source-map-support@~0.5.20:
+ version "0.5.21"
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map@^0.5.7:
+ version "0.5.7"
+
+source-map@^0.6.0:
+ version "0.6.1"
+
+space-separated-tokens@^1.0.0:
+ version "1.1.5"
+
+space-separated-tokens@^2.0.0:
+ version "2.0.2"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+
+sswr@2.0.0:
+ version "2.0.0"
+ dependencies:
+ swrev "^4.0.0"
+
+streamsearch@^1.1.0:
+ version "1.1.0"
+
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+ version "4.2.3"
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^5.0.1, string-width@^5.1.2:
+ version "5.1.2"
+ dependencies:
+ eastasianwidth "^0.2.0"
+ emoji-regex "^9.2.2"
+ strip-ansi "^7.0.1"
+
+string.prototype.matchall@^4.0.10:
+ version "4.0.10"
+ 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"
+
+string.prototype.trim@^1.2.9:
+ version "1.2.9"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimend@^1.0.8:
+ version "1.0.8"
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimstart@^1.0.7:
+ version "1.0.7"
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+
+stringify-entities@^4.0.0:
+ version "4.0.4"
+ dependencies:
+ character-entities-html4 "^2.0.0"
+ character-entities-legacy "^3.0.0"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^7.0.1:
+ version "7.1.0"
+ dependencies:
+ ansi-regex "^6.0.1"
+
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+
+strip-json-comments@^3.1.1:
+ version "3.1.1"
+
+style-to-object@^1.0.0:
+ version "1.0.7"
+ dependencies:
+ inline-style-parser "0.2.3"
+
+styled-jsx@5.1.1:
+ version "5.1.1"
+ dependencies:
+ client-only "0.0.1"
+
+stylis@4.2.0:
+ version "4.2.0"
+
+sucrase@^3.32.0:
+ version "3.35.0"
+ 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"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-color@^8.0.0:
+ version "8.1.1"
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+
+"svelte@^3.0.0 || ^4.0.0", svelte@^4.0.0:
+ version "4.2.19"
+ dependencies:
+ "@ampproject/remapping" "^2.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+ "@jridgewell/trace-mapping" "^0.3.18"
+ "@types/estree" "^1.0.1"
+ acorn "^8.9.0"
+ aria-query "^5.3.0"
+ axobject-query "^4.0.0"
+ code-red "^1.0.3"
+ css-tree "^2.3.1"
+ estree-walker "^3.0.3"
+ is-reference "^3.0.1"
+ locate-character "^3.0.0"
+ magic-string "^0.30.4"
+ periscopic "^3.1.0"
+
+swr-store@^0.10, swr-store@0.10.6:
+ version "0.10.6"
+ dependencies:
+ dequal "^2.0.3"
+
+swr@^1.3.0:
+ version "1.3.0"
+
+swr@2.2.0:
+ version "2.2.0"
+ dependencies:
+ use-sync-external-store "^1.2.0"
+
+swrev@^4.0.0:
+ version "4.0.0"
+
+swrv@1.0.4:
+ version "1.0.4"
+
+symbol-observable@^4.0.0:
+ version "4.0.0"
+
+tabbable@^6.0.0:
+ version "6.2.0"
+
+tailwind-merge@^1.13.2:
+ version "1.14.0"
+
+tailwind-merge@^2.3.0:
+ version "2.3.0"
+ dependencies:
+ "@babel/runtime" "^7.24.1"
+
+tailwindcss-animate@^1.0.7:
+ version "1.0.7"
+
+tailwindcss@^3.3.0, "tailwindcss@>=3.0.0 || insiders", "tailwindcss@>=3.0.0 || insiders || >=4.0.0-alpha.20":
+ version "3.4.1"
+ 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"
+
+tapable@^2.1.1, tapable@^2.2.0:
+ version "2.2.1"
+
+terser-webpack-plugin@^5.3.10:
+ version "5.3.10"
+ 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"
+
+terser@^5.26.0:
+ version "5.31.6"
+ dependencies:
+ "@jridgewell/source-map" "^0.3.3"
+ acorn "^8.8.2"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
+text-table@^0.2.0:
+ version "0.2.0"
+
+thenby@^1.3.4:
+ version "1.3.4"
+
+thenify-all@^1.0.0:
+ version "1.6.0"
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ dependencies:
+ any-promise "^1.0.0"
+
+tippy.js@^6.3.7:
+ version "6.3.7"
+ dependencies:
+ "@popperjs/core" "^2.9.0"
+
+tiptap-markdown@0.8.1:
+ version "0.8.1"
+ dependencies:
+ "@types/markdown-it" "^12.2.3"
+ markdown-it "^13.0.1"
+ markdown-it-task-lists "^2.1.1"
+ prosemirror-markdown "^1.11.0"
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ dependencies:
+ is-number "^7.0.0"
+
+toposort@^2.0.2:
+ version "2.0.2"
+
+tr46@~0.0.3:
+ version "0.0.3"
+
+transliteration@^2.3.5:
+ version "2.3.5"
+ dependencies:
+ yargs "^17.5.1"
+
+trim-lines@^3.0.0:
+ version "3.0.1"
+
+trough@^2.0.0:
+ version "2.2.0"
+
+ts-api-utils@^1.0.1:
+ version "1.3.0"
+
+ts-interface-checker@^0.1.9:
+ version "0.1.13"
+
+ts-invariant@^0.10.3:
+ version "0.10.3"
+ dependencies:
+ tslib "^2.1.0"
+
+tsconfig-paths@^3.15.0:
+ version "3.15.0"
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.2"
+ minimist "^1.2.6"
+ strip-bom "^3.0.0"
+
+tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0:
+ version "2.6.2"
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+
+typed-array-buffer@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-length@^1.0.1:
+ version "1.0.1"
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-offset@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-length@^1.0.5:
+ version "1.0.5"
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
+
+typescript@*, typescript@^5, typescript@>=3.3.1, typescript@>=4.2.0:
+ version "5.4.2"
+
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+ version "1.0.6"
+
+uc.micro@^2.0.0, uc.micro@^2.1.0:
+ version "2.1.0"
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
+undici-types@~5.26.4:
+ version "5.26.5"
+
+unicode-emoji-modifier-base@^1.0.0:
+ version "1.0.0"
+
+unified@^11.0.0, unified@^11.0.4:
+ version "11.0.5"
+ dependencies:
+ "@types/unist" "^3.0.0"
+ bail "^2.0.0"
+ devlop "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^4.0.0"
+ trough "^2.0.0"
+ vfile "^6.0.0"
+
+unist-util-is@^6.0.0:
+ version "6.0.0"
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-position@^5.0.0:
+ version "5.0.0"
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-stringify-position@^4.0.0:
+ version "4.0.0"
+ dependencies:
+ "@types/unist" "^3.0.0"
+
+unist-util-visit-parents@^6.0.0:
+ version "6.0.1"
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+
+unist-util-visit@^5.0.0:
+ version "5.0.0"
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-is "^6.0.0"
+ unist-util-visit-parents "^6.0.0"
+
+update-browserslist-db@^1.0.13:
+ version "1.0.13"
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+update-browserslist-db@^1.1.0:
+ version "1.1.0"
+ dependencies:
+ escalade "^3.1.2"
+ picocolors "^1.0.1"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+url-slug@^3.0.4:
+ version "3.0.6"
+
+use-callback-ref@^1.3.0:
+ version "1.3.2"
+ dependencies:
+ tslib "^2.0.0"
+
+use-composed-ref@^1.3.0:
+ version "1.3.0"
+
+use-debounce@^9.0.4:
+ version "9.0.4"
+
+use-isomorphic-layout-effect@^1.1.1, use-isomorphic-layout-effect@^1.1.2:
+ version "1.1.2"
+
+use-latest@^1.2.1:
+ version "1.2.1"
+ dependencies:
+ use-isomorphic-layout-effect "^1.1.1"
+
+use-sidecar@^1.1.2:
+ version "1.1.2"
+ dependencies:
+ detect-node-es "^1.1.0"
+ tslib "^2.0.0"
+
+use-sync-external-store@^1.2.0, use-sync-external-store@1.2.2:
+ version "1.2.2"
+
+util-deprecate@^1.0.2:
+ version "1.0.2"
+
+vfile-message@^4.0.0:
+ version "4.0.2"
+ dependencies:
+ "@types/unist" "^3.0.0"
+ unist-util-stringify-position "^4.0.0"
+
+vfile@^6.0.0:
+ version "6.0.3"
+ dependencies:
+ "@types/unist" "^3.0.0"
+ vfile-message "^4.0.0"
+
+vue@^3.3.4, "vue@>=3.2.26 < 4", vue@3.4.38:
+ version "3.4.38"
+ dependencies:
+ "@vue/compiler-dom" "3.4.38"
+ "@vue/compiler-sfc" "3.4.38"
+ "@vue/runtime-dom" "3.4.38"
+ "@vue/server-renderer" "3.4.38"
+ "@vue/shared" "3.4.38"
+
+w3c-keyname@^2.2.0:
+ version "2.2.8"
+
+watchpack@^2.4.1:
+ version "2.4.2"
+ dependencies:
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.1.2"
+
+web-streams-polyfill@4.0.0-beta.3:
+ version "4.0.0-beta.3"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+
+webpack-sources@^3.2.3:
+ version "3.2.3"
+
+webpack@^5.1.0, webpack@>=5:
+ version "5.94.0"
+ dependencies:
+ "@types/estree" "^1.0.5"
+ "@webassemblyjs/ast" "^1.12.1"
+ "@webassemblyjs/wasm-edit" "^1.12.1"
+ "@webassemblyjs/wasm-parser" "^1.12.1"
+ acorn "^8.7.1"
+ acorn-import-attributes "^1.9.5"
+ browserslist "^4.21.10"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^5.17.1"
+ 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.11"
+ 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.1"
+ webpack-sources "^3.2.3"
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ 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"
+
+which-builtin-type@^1.1.3:
+ version "1.1.3"
+ 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"
+
+which-collection@^1.0.1:
+ version "1.0.2"
+ dependencies:
+ is-map "^2.0.3"
+ is-set "^2.0.3"
+ is-weakmap "^2.0.2"
+ is-weakset "^2.0.3"
+
+which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
+ version "1.1.15"
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.2"
+
+which@^2.0.1:
+ version "2.0.2"
+ dependencies:
+ isexe "^2.0.0"
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version "7.0.0"
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^8.1.0:
+ version "8.1.0"
+ dependencies:
+ ansi-styles "^6.1.0"
+ string-width "^5.0.1"
+ strip-ansi "^7.0.1"
+
+wrappy@1:
+ version "1.0.2"
+
+xtend@^4.0.0:
+ version "4.0.2"
+
+y18n@^5.0.5:
+ version "5.0.8"
+
+yallist@^3.0.2:
+ version "3.1.1"
+
+yallist@^4.0.0:
+ version "4.0.0"
+
+yaml@^1.10.0:
+ version "1.10.2"
+
+yaml@^2.3.4:
+ version "2.4.1"
+
+yargs-parser@^21.1.1:
+ version "21.1.1"
+
+yargs@^17.5.1:
+ version "17.7.2"
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+
+yocto-queue@^1.0.0:
+ version "1.1.1"
+
+yup@^0.32.11:
+ version "0.32.11"
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ "@types/lodash" "^4.14.175"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ nanoclone "^0.2.1"
+ property-expr "^2.0.4"
+ toposort "^2.0.2"
+
+zen-observable-ts@^1.2.5:
+ version "1.2.5"
+ dependencies:
+ zen-observable "0.8.15"
+
+zen-observable@0.8.15:
+ version "0.8.15"
+
+zustand@^4.4.3:
+ version "4.5.5"
+ dependencies:
+ use-sync-external-store "1.2.2"
+
+zwitch@^2.0.0:
+ version "2.0.4"