diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 00000000..a3e2aded
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,3 @@
+public/build/**
+build/**
+api/**
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..94fdd3fb
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,74 @@
+/** @type {import('eslint').Linter.Config} */
+module.exports = {
+ extends: [
+ "eslint:recommended",
+ "plugin:react/recommended",
+ "plugin:react/jsx-runtime",
+ "plugin:jsx-a11y/recommended",
+ "plugin:jsx-a11y/strict",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:vitest/all",
+ "prettier",
+ ],
+ plugins: [
+ "formatjs",
+ "@typescript-eslint",
+ "prefer-arrow",
+ "vitest",
+ "prettier",
+ ],
+ parser: "@typescript-eslint/parser",
+ overrides: [
+ {
+ files: ["**/*.ts", "**/*.tsx"],
+ extends: [
+ "plugin:@typescript-eslint/recommended-requiring-type-checking",
+ "plugin:@typescript-eslint/strict",
+ ],
+ parserOptions: {
+ project: "./tsconfig.json",
+ },
+ },
+ ],
+ root: true,
+ rules: {
+ "prettier/prettier": "error",
+ "@typescript-eslint/explicit-function-return-type": "error",
+ "prefer-arrow/prefer-arrow-functions": [
+ "warn",
+ {
+ disallowPrototype: true,
+ singleReturnOnly: false,
+ classPropertiesAllowed: false,
+ },
+ ],
+ "@typescript-eslint/typedef": [
+ "error",
+ {
+ arrayDestructuring: false,
+ arrowParameter: true,
+ memberVariableDeclaration: false,
+ objectDestructuring: false,
+ parameter: true,
+ propertyDeclaration: true,
+ variableDeclaration: false,
+ },
+ ],
+ "no-console": "error",
+ "vitest/no-hooks": "off",
+ "@typescript-eslint/no-unused-vars": [
+ "error",
+ {
+ argsIgnorePattern: "^_",
+ },
+ ],
+ },
+ settings: {
+ react: {
+ version: "detect",
+ },
+ },
+ env: {
+ node: true,
+ },
+};
diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml
new file mode 100644
index 00000000..ec47d1c3
--- /dev/null
+++ b/.github/actions/setup/action.yml
@@ -0,0 +1,38 @@
+name: "Setup pipeline step"
+description: "Setup worker and installs dependencies"
+runs:
+ using: "composite"
+ steps:
+ - name: Setup node
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20
+
+ - name: Install pnpm
+ uses: pnpm/action-setup@v2
+ id: pnpm-install
+ with:
+ version: 8
+ run_install: false
+
+ - name: Get pnpm store directory
+ id: pnpm-cache
+ shell: bash
+ run: |
+ echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
+
+ - name: Setup pnpm cache
+ uses: actions/cache@v4
+ with:
+ path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
+ - name: Install deps
+ shell: bash
+ run: pnpm install --ignore-scripts
+
+ - name: Install prisma client
+ shell: bash
+ run: pnpm prisma generate
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 00000000..cd4f877f
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,172 @@
+name: 🚀 CI/CD
+env:
+ VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
+ VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ lint:
+ name: ⬣ ESLint
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+
+ - name: Setup worker
+ uses: ./.github/actions/setup
+
+ - name: Lint
+ run: pnpm run lint
+
+ test:
+ name: 🧪 Tests
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+
+ - name: Setup worker
+ uses: ./.github/actions/setup
+
+ - name: Testing
+ run: pnpm run test:coverage
+
+ typecheck:
+ name: ʦ TypeScript
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+
+ - name: Setup worker
+ uses: ./.github/actions/setup
+
+ - name: Type check
+ run: pnpm run typecheck
+
+ build:
+ name: 🏗️ Build
+ if: github.event_name == 'pull_request'
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+
+ - name: Setup worker
+ uses: ./.github/actions/setup
+
+ - name: Install Vercel CLI
+ run: pnpm install --global vercel@latest
+
+ - name: Pull Vercel Environment Information
+ run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
+
+ - name: Build Project Artifacts
+ run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
+
+ deploy:
+ name: 🚀 Deploy to Vercel
+ if: github.event_name != 'pull_request'
+ needs: [lint, typecheck, test]
+ runs-on: ubuntu-latest
+ permissions:
+ deployments: write
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+
+ - name: Setup worker
+ uses: ./.github/actions/setup
+
+ - name: Install Vercel CLI
+ run: pnpm install --global vercel@latest
+
+ - name: Pull Vercel Environment Information
+ run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
+
+ - name: Build Project Artifacts
+ run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
+
+ - name: Delete deployment
+ uses: strumwolf/delete-deployment-environment@v3
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: Production
+ onlyRemoveDeployments: true
+
+ - name: Create GitHub deployment
+ uses: chrnorm/deployment-action@v2
+ id: deployment
+ with:
+ token: '${{ github.token }}'
+ environment-url: https://larsschieffer.de
+ environment: Production
+
+ - name: Deploy Project Artifacts to Vercel
+ run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
+
+ - name: Update deployment status (success)
+ if: success()
+ uses: chrnorm/deployment-status@v2
+ with:
+ token: '${{ github.token }}'
+ environment-url: https://larsschieffer.de
+ state: 'success'
+ deployment-id: ${{ steps.deployment.outputs.deployment_id }}
+
+ - name: Update deployment status (failure)
+ if: failure()
+ uses: chrnorm/deployment-status@v2
+ with:
+ token: '${{ github.token }}'
+ environment-url: https://larsschieffer.de
+ state: 'failure'
+ deployment-id: ${{ steps.deployment.outputs.deployment_id }}
+
+ is-db-migration-required:
+ name: 🧪 Check for database migration
+ runs-on: ubuntu-latest
+ if: github.event_name != 'pull_request'
+ outputs:
+ is-required: ${{ steps.filter.outputs.database }}
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+ - uses: dorny/paths-filter@v2
+ id: filter
+ with:
+ filters: |
+ database:
+ - './prisma/**'
+
+ db-migration:
+ name: 📀 Run database migration
+ runs-on: ubuntu-latest
+ needs: [is-db-migration-required, deploy]
+ if: github.event_name != 'pull_request' && needs.is-db-migration-required.outputs.is-required == 'true'
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4
+
+ - name: Setup worker
+ uses: ./.github/actions/setup
+
+ - name: Run database migrations
+ run: pnpm prisma migrate deploy
+ env:
+ POSTGRES_PRISMA_URL: ${{ secrets.POSTGRES_PRISMA_URL }}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..5421f390
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+node_modules
+
+.cache
+.vercel
+.output
+
+/build/
+/public/build
+/api
+
+/config/*
+!/config/test.env
+
+/coverage
+
+.DS_Store
diff --git a/.husky/post-checkout b/.husky/post-checkout
new file mode 100755
index 00000000..0cf548cf
--- /dev/null
+++ b/.husky/post-checkout
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+. "$(dirname -- "$0")/_/husky.sh"
+
+pnpm install
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 00000000..36246c64
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,3 @@
+auto-install-peers=true
+shamefully-hoist=true
+engine-strict=true
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..56aec6aa
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,5 @@
+# Ignore artifacts:
+build
+coverage
+public/build
+pnpm-lock.yaml
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 00000000..0518537e
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ plugins: ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"],
+};
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..388e343f
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# My personal website
diff --git a/app/components/blog/blog-feedback.tsx b/app/components/blog/blog-feedback.tsx
new file mode 100644
index 00000000..80ec2272
--- /dev/null
+++ b/app/components/blog/blog-feedback.tsx
@@ -0,0 +1,15 @@
+import { getMDXComponent } from "mdx-bundler/client";
+import { useMemo } from "react";
+import type { BlogFeedbackProps } from "~/types/blog";
+
+export const BlogFeedback = ({ content }: BlogFeedbackProps): JSX.Element => {
+ const FeedbackContent = useMemo(() => getMDXComponent(content), [content]);
+
+ return (
+
+
+
+ );
+};
+
+export default BlogFeedback;
diff --git a/app/components/blog/blog-frame.tsx b/app/components/blog/blog-frame.tsx
new file mode 100644
index 00000000..3faaa10a
--- /dev/null
+++ b/app/components/blog/blog-frame.tsx
@@ -0,0 +1,17 @@
+import type { BlogFrameProps } from "~/types/blog";
+
+export const BlogFrame = ({
+ children,
+ alignment = "vertical",
+}: BlogFrameProps): JSX.Element => {
+ return (
+
+ {children}
+
+ );
+};
+export default BlogFrame;
diff --git a/app/components/blog/blog-image.tsx b/app/components/blog/blog-image.tsx
new file mode 100644
index 00000000..1384a403
--- /dev/null
+++ b/app/components/blog/blog-image.tsx
@@ -0,0 +1,7 @@
+import type { BlogImageProps } from "~/types/blog";
+
+export const BlogImage = ({ src, alt }: BlogImageProps): JSX.Element => {
+ return ;
+};
+
+export default BlogImage;
diff --git a/app/components/blog/blog-post-thumbnail.tsx b/app/components/blog/blog-post-thumbnail.tsx
new file mode 100644
index 00000000..3ced54db
--- /dev/null
+++ b/app/components/blog/blog-post-thumbnail.tsx
@@ -0,0 +1,67 @@
+import { CgNotes } from "@react-icons/all-files/cg/CgNotes";
+import { Link } from "@remix-run/react";
+import { useState } from "react";
+import { useIntl } from "react-intl";
+import { getDay, getMonth } from "~/services/date";
+import type { BlogPostThumbnailProps } from "~/types/blog";
+
+export const BlogPostThumbnail = ({
+ slug,
+ frontMatter: { title, description, thumbnail, published },
+}: BlogPostThumbnailProps): JSX.Element => {
+ const [isHoverOnThumbnail, setHoverOnThumbnail] = useState(false);
+ const [hasImageError, setImageError] = useState(!thumbnail);
+ const intl = useIntl();
+ const publishedDate = new Date(published);
+
+ return (
+ setHoverOnThumbnail(true)}
+ onMouseLeave={(): void => setHoverOnThumbnail(false)}
+ >
+
+ {hasImageError ? (
+
+ ) : (
+
{
+ setImageError(true);
+ }}
+ />
+ )}
+ {isHoverOnThumbnail ? (
+
+
+
+ ) : null}
+
+
+ {getDay(publishedDate)}
+
+
+ {getMonth(intl.locale, publishedDate)}
+
+
+
+
+
{title}
+
{description}
+
+
+ );
+};
+
+export default BlogPostThumbnail;
diff --git a/app/components/blog/blog-substitutions.tsx b/app/components/blog/blog-substitutions.tsx
new file mode 100644
index 00000000..5b193e99
--- /dev/null
+++ b/app/components/blog/blog-substitutions.tsx
@@ -0,0 +1,68 @@
+import type { BlogFrameProps } from "~/types/blog";
+import { BlogFrame } from "./blog-frame";
+import { BlogImage } from "./blog-image";
+
+const ImageFrame = (props: BlogFrameProps): JSX.Element => (
+
+);
+
+const code = (props: React.HTMLAttributes): JSX.Element => (
+
+);
+
+const pre = (props: React.HTMLAttributes): JSX.Element => (
+
+);
+
+const a = (
+ props: React.AnchorHTMLAttributes,
+): JSX.Element => (
+
+ {props.children}
+
+);
+
+const ul = (props: React.HTMLAttributes): JSX.Element => (
+
+);
+
+const li = (props: React.HTMLAttributes): JSX.Element => (
+
+);
+
+const h3 = (props: React.HTMLAttributes): JSX.Element => (
+
+ {props.children}
+
+);
+
+const h2 = (props: React.HTMLAttributes): JSX.Element => (
+
+ {props.children}
+
+);
+
+export const blogSubstitutionComponents = {
+ h2,
+ h3,
+ ul,
+ li,
+ a,
+ pre,
+ code,
+ ImageFrame,
+ BlogImage,
+};
diff --git a/app/components/box/box-content.tsx b/app/components/box/box-content.tsx
new file mode 100644
index 00000000..2a2b4494
--- /dev/null
+++ b/app/components/box/box-content.tsx
@@ -0,0 +1,23 @@
+import type { ContentBoxProps } from "~/types/box";
+import { BoxRounded } from "./box-rounded";
+
+export const BoxContent = ({
+ children,
+ headline,
+ options: { position } = { position: "left" },
+}: ContentBoxProps): JSX.Element => {
+ return (
+
+
+ {headline}
+
+ {children}
+
+ );
+};
+
+export default BoxContent;
diff --git a/app/components/box/box-rounded.tsx b/app/components/box/box-rounded.tsx
new file mode 100644
index 00000000..984279dd
--- /dev/null
+++ b/app/components/box/box-rounded.tsx
@@ -0,0 +1,11 @@
+import type { RoundedBoxProps } from "~/types/box";
+
+export const BoxRounded = ({
+ children,
+ className = "",
+}: RoundedBoxProps): JSX.Element => {
+ return (
+ {children}
+ );
+};
+export default BoxRounded;
diff --git a/app/components/date-range.test.tsx b/app/components/date-range.test.tsx
new file mode 100644
index 00000000..08aaad1c
--- /dev/null
+++ b/app/components/date-range.test.tsx
@@ -0,0 +1,61 @@
+import { render, screen } from "@testing-library/react";
+import { flatten } from "flat";
+import { IntlProvider } from "react-intl";
+import { Given } from "tests/common/given";
+import { beforeEach, describe, expect, it } from "vitest";
+import messages from "../../public/assets/i18n/en.json";
+import DateRange from "./date-range";
+
+describe("date-range", () => {
+ let start: Date;
+ let end: Date;
+
+ beforeEach(() => {
+ start = Given.date();
+ end = new Date(Given.date().setMonth(start.getMonth() + 1));
+ });
+
+ it("with different dates should show both representations", () => {
+ // Arrange
+ const expected = /^Dec 1996 - Jan 1997$/;
+
+ // Act
+ render(
+
+
+ ,
+ );
+
+ // Assert
+ expect(screen.queryByTestId("date-range")).toHaveTextContent(expected);
+ });
+ it("with same date should show only single representation", () => {
+ // Arrange
+ const expected = /^Dec 1996$/;
+
+ // Act
+ render(
+
+
+ ,
+ );
+
+ // Assert
+ expect(screen.queryByTestId("date-range")).toHaveTextContent(expected);
+ });
+
+ it("without end date should say until present", () => {
+ // Arrange
+ const expected = /^Dec 1996 - Present$/;
+
+ // Act
+ render(
+
+
+ ,
+ );
+
+ // Assert
+ expect(screen.queryByTestId("date-range")).toHaveTextContent(expected);
+ });
+});
diff --git a/app/components/date-range.tsx b/app/components/date-range.tsx
new file mode 100644
index 00000000..437b3f00
--- /dev/null
+++ b/app/components/date-range.tsx
@@ -0,0 +1,26 @@
+import { useIntl } from "react-intl";
+import type { DateRangeProps } from "~/types/date-range";
+
+export const DateRange = ({ start, end }: DateRangeProps): JSX.Element => {
+ const intl = useIntl();
+
+ const displayDate = (date: string): string =>
+ new Date(date).toLocaleDateString(intl.locale, {
+ month: "short",
+ year: "numeric",
+ });
+
+ const visibleStartDate = displayDate(start);
+ const visibleEndDate =
+ end == null ? intl.formatMessage({ id: "time.present" }) : displayDate(end);
+
+ return (
+
+ {visibleStartDate == visibleEndDate
+ ? visibleStartDate
+ : `${visibleStartDate} - ${visibleEndDate}`}
+
+ );
+};
+
+export default DateRange;
diff --git a/app/components/error-page/error-page-default.tsx b/app/components/error-page/error-page-default.tsx
new file mode 100644
index 00000000..f32e2300
--- /dev/null
+++ b/app/components/error-page/error-page-default.tsx
@@ -0,0 +1,12 @@
+import { ErrorPage } from "./error-page";
+
+export const ErrorPageDefault = (): JSX.Element => {
+ return (
+
+ );
+};
diff --git a/app/components/error-page/error-page-something-went-wrong.tsx b/app/components/error-page/error-page-something-went-wrong.tsx
new file mode 100644
index 00000000..be00d8b4
--- /dev/null
+++ b/app/components/error-page/error-page-something-went-wrong.tsx
@@ -0,0 +1,12 @@
+import { ErrorPage } from "./error-page";
+
+export const ErrorPageNotFound = (): JSX.Element => {
+ return (
+
+ );
+};
diff --git a/app/components/error-page/error-page.tsx b/app/components/error-page/error-page.tsx
new file mode 100644
index 00000000..d42f10e0
--- /dev/null
+++ b/app/components/error-page/error-page.tsx
@@ -0,0 +1,52 @@
+import { Form, useLocation } from "@remix-run/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import { ASSETS_LOCATION } from "~/constants/assets-location";
+import type { ErrorPageProps } from "~/types/error";
+import BoxRounded from "../box/box-rounded";
+
+export const ErrorPage = ({
+ imageAltTextId,
+ imagePath,
+ descriptionTextId,
+ buttonTextId,
+}: ErrorPageProps): JSX.Element => {
+ const intl = useIntl();
+ const { pathname } = useLocation();
+
+ return (
+
+
+
+ );
+};
diff --git a/app/components/experience/experience-education.tsx b/app/components/experience/experience-education.tsx
new file mode 100644
index 00000000..55c53e1d
--- /dev/null
+++ b/app/components/experience/experience-education.tsx
@@ -0,0 +1,11 @@
+import type { ExperienceOfEducationProps } from "~/types/experience";
+import { ExperienceStep } from "./experience-step";
+
+export const ExperienceOfEducation = ({
+ education,
+ options,
+}: ExperienceOfEducationProps): JSX.Element => {
+ return ;
+};
+
+export default ExperienceOfEducation;
diff --git a/app/components/experience/experience-step.tsx b/app/components/experience/experience-step.tsx
new file mode 100644
index 00000000..af318e76
--- /dev/null
+++ b/app/components/experience/experience-step.tsx
@@ -0,0 +1,32 @@
+import { useIntl } from "react-intl";
+import type { StepProps } from "~/types/experience";
+import { DateRange } from "../date-range";
+
+export const ExperienceStep = ({
+ data: { title, organisation, start, end, description },
+ options,
+}: StepProps): JSX.Element => {
+ const intl = useIntl();
+
+ return (
+
+
+
+ {`${title}${
+ organisation
+ ? ` ${intl.formatMessage({ id: "at" })} ${organisation}`
+ : ""
+ }`}
+
+
+
+
+
+
+ {description ?
{description}
: null}
+
+
+ );
+};
+
+export default ExperienceStep;
diff --git a/app/components/experience/experience-work.tsx b/app/components/experience/experience-work.tsx
new file mode 100644
index 00000000..d2f4e128
--- /dev/null
+++ b/app/components/experience/experience-work.tsx
@@ -0,0 +1,28 @@
+import type { Skill } from "@prisma/client";
+import { useIntl } from "react-intl";
+import type { ExperienceOfWorkProps, StepData } from "~/types/experience";
+import { ExperienceStep } from "./experience-step";
+
+export const ExperienceOfWork = ({
+ experience: { title, organisation, start, end, skills },
+ options,
+}: ExperienceOfWorkProps): JSX.Element => {
+ const intl = useIntl();
+ const description =
+ skills.length > 0
+ ? `${intl.formatMessage({ id: "experience.skills" })}: ${skills
+ .map((skill: Skill) => skill.title)
+ .join(" · ")}`
+ : "";
+ const data: StepData = {
+ title,
+ organisation,
+ start,
+ end,
+ description,
+ };
+
+ return ;
+};
+
+export default ExperienceOfWork;
diff --git a/app/components/experience/experiences-education.tsx b/app/components/experience/experiences-education.tsx
new file mode 100644
index 00000000..7834e55a
--- /dev/null
+++ b/app/components/experience/experiences-education.tsx
@@ -0,0 +1,40 @@
+import type { Education } from "@prisma/client";
+import { FcElectronics } from "@react-icons/all-files/fc/FcElectronics";
+import type { SerializeFrom } from "@remix-run/node";
+import { useIntl } from "react-intl";
+import { Experiences } from "~/components/experience/experiences";
+import type { ExperienceEducationProps } from "~/types/experience";
+import { ExperienceOfEducation } from "./experience-education";
+
+export const ExperiencesEducation = ({
+ educations,
+}: ExperienceEducationProps): JSX.Element => {
+ const intl = useIntl();
+ return (
+ }
+ headline={intl.formatMessage({
+ id: "headline.educationAndCertification",
+ })}
+ >
+ {educations.map(
+ (
+ education: SerializeFrom,
+ index: number,
+ arr: SerializeFrom[],
+ ) => (
+
+ ),
+ )}
+
+ );
+};
+
+export default ExperiencesEducation;
diff --git a/app/components/experience/experiences-work.tsx b/app/components/experience/experiences-work.tsx
new file mode 100644
index 00000000..894754ef
--- /dev/null
+++ b/app/components/experience/experiences-work.tsx
@@ -0,0 +1,40 @@
+import { FcBriefcase } from "@react-icons/all-files/fc/FcBriefcase";
+import { useIntl } from "react-intl";
+import { Experiences } from "~/components/experience/experiences";
+import type {
+ ExperienceWithSkills,
+ ExperiencesWorkProps,
+} from "~/types/experience";
+import { ExperienceOfWork } from "./experience-work";
+
+export const ExperiencesWork = ({
+ experiences,
+}: ExperiencesWorkProps): JSX.Element => {
+ const intl = useIntl();
+
+ return (
+ }
+ headline={intl.formatMessage({ id: "headline.experience" })}
+ >
+ {experiences.map(
+ (
+ experience: ExperienceWithSkills,
+ index: number,
+ arr: ExperienceWithSkills[],
+ ) => (
+
+ ),
+ )}
+
+ );
+};
+
+export default ExperiencesWork;
diff --git a/app/components/experience/experiences.tsx b/app/components/experience/experiences.tsx
new file mode 100644
index 00000000..a2994b77
--- /dev/null
+++ b/app/components/experience/experiences.tsx
@@ -0,0 +1,18 @@
+import type { ExperiencesProps } from "~/types/experience";
+
+export const Experiences = ({
+ children,
+ headline,
+ icon,
+}: ExperiencesProps): JSX.Element => {
+ return (
+
+ );
+};
+export default Experiences;
diff --git a/app/components/navigation/navigation-full.tsx b/app/components/navigation/navigation-full.tsx
new file mode 100644
index 00000000..f4fba164
--- /dev/null
+++ b/app/components/navigation/navigation-full.tsx
@@ -0,0 +1,45 @@
+import { Link, useLocation } from "@remix-run/react";
+import { FormattedMessage } from "react-intl";
+import { isLinkTargetingPathname as isHighlighted } from "~/services/path";
+import type { NavigationItem, NavigationProps } from "~/types/navigation";
+
+export const NavigationFull = ({
+ navigationItems,
+}: NavigationProps): JSX.Element => {
+ const { pathname } = useLocation();
+
+ return (
+
+
+
+ {navigationItems.map(
+ ({ link, translationKey }: NavigationItem, index: number) => {
+ return (
+
+
+
+ );
+ },
+ )}
+
+
+ );
+};
+
+export default NavigationFull;
diff --git a/app/components/navigation/navigation-small.tsx b/app/components/navigation/navigation-small.tsx
new file mode 100644
index 00000000..f3992713
--- /dev/null
+++ b/app/components/navigation/navigation-small.tsx
@@ -0,0 +1,74 @@
+import { GoThreeBars } from "@react-icons/all-files/go/GoThreeBars";
+import { GoX } from "@react-icons/all-files/go/GoX";
+import { Link, useLocation } from "@remix-run/react";
+import { useEffect, useState } from "react";
+import { FormattedMessage, useIntl } from "react-intl";
+import { isLinkTargetingPathname as isHighlighted } from "~/services/path";
+import type { NavigationItem, NavigationProps } from "~/types/navigation";
+
+export const NavigationSmall = ({
+ navigationItems,
+}: NavigationProps): JSX.Element => {
+ const [isMenuOpen, setMenuOpen] = useState(false);
+ const location = useLocation();
+ const intl = useIntl();
+
+ const toggleMenuState = (): void => {
+ setMenuOpen((menuState: boolean) => !menuState);
+ };
+
+ useEffect(() => {
+ setMenuOpen(false);
+ }, [location.pathname]);
+
+ useEffect(() => {
+ if (isMenuOpen) {
+ document.body.classList.add("overflow-hidden");
+ } else {
+ document.body.classList.remove("overflow-hidden");
+ }
+ }, [isMenuOpen]);
+
+ return (
+
+
+ {isMenuOpen ? (
+
+ {navigationItems.map(
+ ({ link, translationKey }: NavigationItem, index: number) => (
+
+
+
+ ),
+ )}
+
+ ) : null}
+
+ );
+};
+
+export default NavigationSmall;
diff --git a/app/components/profile/profile-item.tsx b/app/components/profile/profile-item.tsx
new file mode 100644
index 00000000..7f14dad2
--- /dev/null
+++ b/app/components/profile/profile-item.tsx
@@ -0,0 +1,15 @@
+import type { ProfileItemProps } from "~/types/profile";
+
+export const ProfileItem = ({
+ icon,
+ description,
+}: ProfileItemProps): JSX.Element => {
+ return (
+
+ {icon}
+ {description ? {description} : null}
+
+ );
+};
+
+export default ProfileItem;
diff --git a/app/components/profile/profile.tsx b/app/components/profile/profile.tsx
new file mode 100644
index 00000000..7bfe017e
--- /dev/null
+++ b/app/components/profile/profile.tsx
@@ -0,0 +1,96 @@
+import { BsCalendar } from "@react-icons/all-files/bs/BsCalendar";
+import { BsEnvelope } from "@react-icons/all-files/bs/BsEnvelope";
+import { FaGithub } from "@react-icons/all-files/fa/FaGithub";
+import { FaLinkedinIn } from "@react-icons/all-files/fa/FaLinkedinIn";
+import { FaRegFilePdf } from "@react-icons/all-files/fa/FaRegFilePdf";
+import { FaXing } from "@react-icons/all-files/fa/FaXing";
+import { HiOutlineLocationMarker } from "@react-icons/all-files/hi/HiOutlineLocationMarker";
+import { FormattedMessage, useIntl } from "react-intl";
+import { ASSETS_LOCATION } from "~/constants/assets-location";
+import { notImplementedYet } from "~/services/under-construction";
+import { BoxRounded } from "../box/box-rounded";
+import { ProfileItem } from "./profile-item";
+
+export const Profile = (): JSX.Element => {
+ const intl = useIntl();
+
+ return (
+
+
+
+
+
+
+ Lars Schieffer
+
+
+
+
+
+
+
+
+
+
}
+ description={intl.formatMessage({ id: "profile.birthdayMonth" })}
+ >
+
}
+ description={intl.formatMessage({
+ id: "profile.currentLocation",
+ })}
+ >
+
}
+ description={intl.formatMessage({ id: "contact.email" })}
+ >
+
+
+
+
+
+ );
+};
+
+export default Profile;
diff --git a/app/components/progress-bar/progress-bar-column.test.tsx b/app/components/progress-bar/progress-bar-column.test.tsx
new file mode 100644
index 00000000..2d0942ee
--- /dev/null
+++ b/app/components/progress-bar/progress-bar-column.test.tsx
@@ -0,0 +1,31 @@
+import { render, screen } from "@testing-library/react";
+import { describe, expect, it } from "vitest";
+import ProgressBarColumn from "./progress-bar-column";
+
+describe("progress-bar-column", () => {
+ it("should render progress bars", () => {
+ // Arrange
+ const title = "Example Title";
+ const percentage = 42;
+ const progressBarProps = {
+ title,
+ percentage,
+ };
+
+ const headline = "Progress Bar Headline";
+
+ // Act
+ render(
+ ,
+ );
+
+ // Assert
+ expect(screen.queryByTestId("progress-bar-column")).toHaveTextContent(
+ headline,
+ );
+ expect(screen.queryAllByTestId("progress-bar")).toHaveLength(2);
+ });
+});
diff --git a/app/components/progress-bar/progress-bar-column.tsx b/app/components/progress-bar/progress-bar-column.tsx
new file mode 100644
index 00000000..701ff603
--- /dev/null
+++ b/app/components/progress-bar/progress-bar-column.tsx
@@ -0,0 +1,27 @@
+import type {
+ ProgressBarColumnProps,
+ ProgressBarProps,
+} from "~/types/progress-bar";
+import { ProgressBar } from "./progress-bar";
+
+export const ProgressBarColumn = ({
+ progressBarItems,
+ headline,
+}: ProgressBarColumnProps): JSX.Element => (
+
+
{headline}
+
+ {progressBarItems.map(
+ ({ title, percentage }: ProgressBarProps, index: number) => (
+
+ ),
+ )}
+
+
+);
+
+export default ProgressBarColumn;
diff --git a/app/components/progress-bar/progress-bar.test.tsx b/app/components/progress-bar/progress-bar.test.tsx
new file mode 100644
index 00000000..9f374645
--- /dev/null
+++ b/app/components/progress-bar/progress-bar.test.tsx
@@ -0,0 +1,57 @@
+import { render, screen } from "@testing-library/react";
+import { describe, expect, it } from "vitest";
+import ProgressBar from "./progress-bar";
+
+describe("progress-bar", () => {
+ it.each<[number]>([[0], [25], [50], [75], [100]])(
+ "with %s as percentage should render progress bar",
+ (percentage: number) => {
+ // Arrange
+ const title = "Example Title";
+
+ // Act
+ render();
+
+ // Assert
+ expect(screen.queryByTestId("progress-bar")).toHaveTextContent(title);
+ expect(screen.queryByTestId("progress-bar")).toHaveTextContent(
+ `${percentage}%`,
+ );
+ expect(screen.queryByTestId("progress-bar")).toHaveStyle(
+ `width: ${percentage}%`,
+ );
+ },
+ );
+
+ it("with negative percentage should render 0% progress bar", () => {
+ // Arrange
+ const title = "Example Title";
+ const percentage = -10;
+
+ // Act
+ render();
+
+ // Assert
+ expect(screen.queryByTestId("progress-bar")).toHaveTextContent(title);
+ expect(screen.queryByTestId("progress-bar")).not.toHaveTextContent(
+ `${percentage}%`,
+ );
+ expect(screen.queryByTestId("progress-bar")).toHaveStyle(`width: 0%`);
+ });
+
+ it("with more than 100 percentage points should render 100% progress bar", () => {
+ // Arrange
+ const title = "Example Title";
+ const percentage = 110;
+
+ // Act
+ render();
+
+ // Assert
+ expect(screen.queryByTestId("progress-bar")).toHaveTextContent(title);
+ expect(screen.queryByTestId("progress-bar")).not.toHaveTextContent(
+ `${percentage}%`,
+ );
+ expect(screen.queryByTestId("progress-bar")).toHaveStyle(`width: 100%`);
+ });
+});
diff --git a/app/components/progress-bar/progress-bar.tsx b/app/components/progress-bar/progress-bar.tsx
new file mode 100644
index 00000000..1533e0ae
--- /dev/null
+++ b/app/components/progress-bar/progress-bar.tsx
@@ -0,0 +1,19 @@
+import type { ProgressBarProps } from "~/types/progress-bar";
+
+export const ProgressBar = ({
+ title,
+ percentage,
+}: ProgressBarProps): JSX.Element => (
+
+
+ {title}
+ {percentage >= 0 && percentage <= 100 ? {percentage}% : null}
+
+
+);
+
+export default ProgressBar;
diff --git a/app/components/toast.test.tsx b/app/components/toast.test.tsx
new file mode 100644
index 00000000..a22cb107
--- /dev/null
+++ b/app/components/toast.test.tsx
@@ -0,0 +1,15 @@
+import { render, screen } from "@testing-library/react";
+import { describe, expect, it } from "vitest";
+import Toast from "./toast";
+
+describe("toast", () => {
+ it("should create component", () => {
+ render(
+
+
+
,
+ );
+
+ expect(screen.queryByTestId("toast")?.firstChild).toHaveClass("Toastify");
+ });
+});
diff --git a/app/components/toast.tsx b/app/components/toast.tsx
new file mode 100644
index 00000000..9676bb44
--- /dev/null
+++ b/app/components/toast.tsx
@@ -0,0 +1,20 @@
+import { ToastContainer } from "react-toastify";
+
+export const Toast = (): JSX.Element => {
+ return (
+
+ );
+};
+
+export default Toast;
diff --git a/app/constants/assets-location.ts b/app/constants/assets-location.ts
new file mode 100644
index 00000000..0ce44735
--- /dev/null
+++ b/app/constants/assets-location.ts
@@ -0,0 +1 @@
+export const ASSETS_LOCATION = "https://assets.lars.schieffer.cloud/";
diff --git a/app/constants/github.ts b/app/constants/github.ts
new file mode 100644
index 00000000..18c16f7d
--- /dev/null
+++ b/app/constants/github.ts
@@ -0,0 +1,3 @@
+export const GITHUB_OWNER = "larsschieffer";
+export const GITHUB_REPO = "personal-website";
+export const GITHUB_CONTENT_REPO = "personal-website-posts";
diff --git a/app/constants/navigation-items.ts b/app/constants/navigation-items.ts
new file mode 100644
index 00000000..3c71e279
--- /dev/null
+++ b/app/constants/navigation-items.ts
@@ -0,0 +1,7 @@
+import type { NavigationItem } from "~/types/navigation";
+
+export const navigationItems: NavigationItem[] = [
+ { translationKey: "navigation.aboutMe", link: "about" },
+ { translationKey: "navigation.resume", link: "resume" },
+ { translationKey: "navigation.blog", link: "blog" },
+];
diff --git a/app/constants/sitemap.ts b/app/constants/sitemap.ts
new file mode 100644
index 00000000..93a15b9d
--- /dev/null
+++ b/app/constants/sitemap.ts
@@ -0,0 +1,9 @@
+import type { SitemapUrl } from "~/types/sitemap";
+
+export const DOMAINE = "lars.schieffer.cloud";
+export const WEBSITE_URL = `https://${DOMAINE}/`;
+export const WEBSITE_PATHS: SitemapUrl[] = [
+ { url: "about", changefreq: "yearly", priority: 0.5 },
+ { url: "resume", changefreq: "monthly", priority: 0.5 },
+ { url: "blog", changefreq: "weekly", priority: 0.8 },
+];
diff --git a/app/constants/skill-percentages.ts b/app/constants/skill-percentages.ts
new file mode 100644
index 00000000..e8554e50
--- /dev/null
+++ b/app/constants/skill-percentages.ts
@@ -0,0 +1,28 @@
+import type { ProgressBarProps } from "~/types/progress-bar";
+
+export const frontendSkills: ProgressBarProps[] = [
+ { title: "Typescript", percentage: 85 },
+ { title: "JavaScript", percentage: 85 },
+ { title: "HTML", percentage: 70 },
+ { title: "CSS", percentage: 70 },
+ { title: "Angular", percentage: 85 },
+ { title: "RxJS", percentage: 80 },
+ { title: "NgRx", percentage: 80 },
+ { title: "React", percentage: 50 },
+];
+
+export const backendSkills: ProgressBarProps[] = [
+ { title: "Java", percentage: 80 },
+ { title: "Spring Boot", percentage: 80 },
+ { title: "Apache Kafka", percentage: 60 },
+];
+
+export const cloudSkills: ProgressBarProps[] = [
+ { title: "Serverless Computing", percentage: 80 },
+ { title: "AWS", percentage: 80 },
+];
+
+export const securitySkills: ProgressBarProps[] = [
+ { title: "OAuth2", percentage: 60 },
+ { title: "Keycloak", percentage: 60 },
+];
diff --git a/app/root.tsx b/app/root.tsx
new file mode 100644
index 00000000..f7b16314
--- /dev/null
+++ b/app/root.tsx
@@ -0,0 +1,88 @@
+import {
+ Links,
+ LiveReload,
+ Meta,
+ Outlet,
+ Scripts,
+ ScrollRestoration,
+ isRouteErrorResponse,
+ useRouteError,
+} from "@remix-run/react";
+import type { LinksFunction, MetaFunction } from "@vercel/remix";
+import { flatten } from "flat";
+import { IntlProvider } from "react-intl";
+import toastify from "react-toastify/dist/ReactToastify.css";
+import fonts from "~/styles/fonts.css";
+import tailwind from "~/styles/tailwind.css";
+import messages from "../public/assets/i18n/en.json";
+import { ErrorPageDefault } from "./components/error-page/error-page-default";
+import { ErrorPageNotFound } from "./components/error-page/error-page-something-went-wrong";
+import { Toast } from "./components/toast";
+import { metaFunctionFactory } from "./services/meta";
+
+export const links: LinksFunction = () => [
+ { rel: "stylesheet", href: fonts },
+ { rel: "stylesheet", href: toastify },
+ { rel: "stylesheet", href: tailwind },
+];
+
+export const meta: MetaFunction = metaFunctionFactory();
+
+export const App = (): JSX.Element => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export const ErrorBoundary = (): JSX.Element => {
+ const error = useRouteError();
+ const isRouteError = isRouteErrorResponse(error);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {isRouteError ? : }
+
+
+
+
+
+
+
+
+ );
+};
+
+export default App;
diff --git a/app/routes/_content.about.tsx b/app/routes/_content.about.tsx
new file mode 100644
index 00000000..655f43b0
--- /dev/null
+++ b/app/routes/_content.about.tsx
@@ -0,0 +1,51 @@
+import { useLoaderData } from "@remix-run/react";
+import type { TypedResponse } from "@vercel/remix";
+import { json } from "@vercel/remix";
+import { getMDXComponent } from "mdx-bundler/client";
+import { useMemo } from "react";
+import { useIntl } from "react-intl";
+import invariant from "tiny-invariant";
+import { BoxContent } from "~/components/box/box-content";
+import { ExperiencesWork } from "~/components/experience/experiences-work";
+import { db } from "~/services/server/db.server";
+import { bundleFileMarkdown } from "~/services/server/markdown.server";
+import type { ContentAbout } from "~/types/content";
+
+export const loader = async (): Promise> => {
+ const experiences = await db.experience.findMany({
+ include: { skills: true },
+ orderBy: [
+ {
+ start: "desc",
+ },
+ ],
+ });
+
+ const markdown = await bundleFileMarkdown("en/blog/about-me.mdx");
+ invariant(markdown, "About me markdown is missing");
+ const { code, frontmatter } = markdown;
+
+ return json({ experiences, aboutMe: { code, frontmatter } });
+};
+
+export const About = (): JSX.Element => {
+ const {
+ experiences,
+ aboutMe: { code },
+ } = useLoaderData();
+ const intl = useIntl();
+ const AboutMeText = useMemo(() => getMDXComponent(code), [code]);
+
+ return (
+
+
+
+
+ );
+};
+
+export default About;
diff --git a/app/routes/_content.blog._index.tsx b/app/routes/_content.blog._index.tsx
new file mode 100644
index 00000000..23093213
--- /dev/null
+++ b/app/routes/_content.blog._index.tsx
@@ -0,0 +1,79 @@
+import { useLoaderData } from "@remix-run/react";
+import type { SerializeFrom, TypedResponse } from "@vercel/remix";
+import { json } from "@vercel/remix";
+import { useIntl } from "react-intl";
+import invariant from "tiny-invariant";
+import { BlogPostThumbnail } from "~/components/blog/blog-post-thumbnail";
+import { BoxContent } from "~/components/box/box-content";
+import { getMetaDataOfFilesAtPath } from "~/services/server/github-api.server";
+import { bundleFileMarkdown } from "~/services/server/markdown.server";
+import type { BlogFrontmatter, PostThumbnailType } from "~/types/blog";
+import type { ContentBlogData } from "~/types/content";
+
+const byDateDesc = (
+ { frontmatter: { published: a } }: { frontmatter: BlogFrontmatter },
+ { frontmatter: { published: b } }: { frontmatter: BlogFrontmatter },
+): number => new Date(b).getTime() - new Date(a).getTime();
+
+const onlyAlreadyPublished = ({
+ frontmatter: { published },
+}: {
+ frontmatter: BlogFrontmatter;
+}): boolean => new Date(published) < new Date();
+
+export const loader = async (): Promise> => {
+ const files = await getMetaDataOfFilesAtPath("en/blog");
+
+ let posts = await Promise.all(
+ files.map(
+ async ({
+ path,
+ sha,
+ name,
+ }: {
+ path: string;
+ sha: string;
+ name: string;
+ }) => {
+ const markdown = await bundleFileMarkdown(path);
+ invariant(markdown);
+
+ const { frontmatter } = markdown;
+
+ return {
+ id: sha,
+ slug: name.replace(/.mdx/g, ""),
+ frontmatter,
+ };
+ },
+ ),
+ );
+ posts = posts.sort(byDateDesc).filter(onlyAlreadyPublished);
+
+ return json({
+ posts,
+ });
+};
+
+export const Blog = (): JSX.Element => {
+ const intl = useIntl();
+ const { posts } = useLoaderData();
+
+ return (
+
+
+ {posts.map(
+ ({ id, slug, frontmatter }: SerializeFrom) => (
+
+ ),
+ )}
+
+
+ );
+};
+
+export default Blog;
diff --git a/app/routes/_content.blog.posts.$slug.tsx b/app/routes/_content.blog.posts.$slug.tsx
new file mode 100644
index 00000000..88f7cf30
--- /dev/null
+++ b/app/routes/_content.blog.posts.$slug.tsx
@@ -0,0 +1,147 @@
+import { FaGithub } from "@react-icons/all-files/fa/FaGithub";
+import { FaLinkedinIn } from "@react-icons/all-files/fa/FaLinkedinIn";
+import { FaXing } from "@react-icons/all-files/fa/FaXing";
+import { useLoaderData } from "@remix-run/react";
+import type { ServerRuntimeMetaArgs } from "@remix-run/server-runtime";
+import type {
+ LinksFunction,
+ LoaderFunctionArgs,
+ MetaFunction,
+ TypedResponse,
+} from "@vercel/remix";
+import { json } from "@vercel/remix";
+import hljs from "highlight.js";
+import highlightjs from "highlight.js/styles/github.css";
+import { getMDXComponent } from "mdx-bundler/client";
+import { useEffect, useMemo, useState } from "react";
+import { useIntl } from "react-intl";
+import invariant from "tiny-invariant";
+import { BlogFeedback } from "~/components/blog/blog-feedback";
+import { blogSubstitutionComponents } from "~/components/blog/blog-substitutions";
+import { BoxContent } from "~/components/box/box-content";
+import { WEBSITE_URL } from "~/constants/sitemap";
+import { metaFunctionFactory } from "~/services/meta";
+import { bundleFileMarkdown } from "~/services/server/markdown.server";
+import type { BlogFrontmatter } from "~/types/blog";
+import type { ContentBlogPostDate } from "~/types/content";
+
+export const links: LinksFunction = () => [
+ { rel: "stylesheet", href: highlightjs },
+];
+
+export const meta: MetaFunction = (args: ServerRuntimeMetaArgs) => {
+ const {
+ post: { frontmatter },
+ } = args.data as { post: { frontmatter: BlogFrontmatter } };
+
+ const meta = {
+ url: `${WEBSITE_URL}${args.location.pathname.substring(1)}`,
+ location: frontmatter.title,
+ description: frontmatter.description,
+ ...(frontmatter.thumbnail && { imageUrl: frontmatter.thumbnail }),
+ };
+
+ return metaFunctionFactory(meta)(args);
+};
+
+export const loader = async ({
+ params: { slug },
+}: LoaderFunctionArgs): Promise> => {
+ invariant(slug, "PostId is required");
+
+ const post = await bundleFileMarkdown(`en/blog/${slug}.mdx`);
+
+ if (!post) {
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal
+ throw json(`Blog post ${slug} not found`, 404);
+ }
+
+ const feedback = await bundleFileMarkdown(`en/feedback.mdx`);
+ invariant(feedback, "Feedback markdown is missing");
+
+ return json({ post, feedback, slug });
+};
+
+export const Post = (): JSX.Element => {
+ const {
+ post: {
+ code: postContent,
+ frontmatter: { title, description, thumbnail },
+ },
+ feedback: { code: feedbackContent },
+ slug,
+ } = useLoaderData();
+ const PostContent = useMemo(
+ () => getMDXComponent(postContent),
+ [postContent],
+ );
+
+ const intl = useIntl();
+
+ useEffect((): void => {
+ hljs.configure({
+ languages: ["html", "javascript", "typescript", "shell"],
+ });
+ hljs.highlightAll();
+ }, []);
+
+ const [currentUrl, setCurrentUrl] = useState(WEBSITE_URL);
+
+ useEffect((): void => {
+ setCurrentUrl(window.location.href);
+ }, []);
+
+ return (
+
+
+
+ {description}
+
+ {thumbnail != undefined ? (
+
+ ) : null}
+
+
+
+
+
+
+
+ );
+};
+
+export default Post;
diff --git a/app/routes/_content.blog.rss[.]xml.ts b/app/routes/_content.blog.rss[.]xml.ts
new file mode 100644
index 00000000..8c785147
--- /dev/null
+++ b/app/routes/_content.blog.rss[.]xml.ts
@@ -0,0 +1,95 @@
+import { Feed } from "feed";
+import invariant from "tiny-invariant";
+import { ASSETS_LOCATION } from "~/constants/assets-location";
+import { DOMAINE, WEBSITE_URL } from "~/constants/sitemap";
+import { getMetaDataOfFilesAtPath } from "~/services/server/github-api.server";
+import { bundleFileMarkdown } from "~/services/server/markdown.server";
+import type { BlogFrontmatter, PostThumbnailType } from "~/types/blog";
+
+const byDateDesc = (
+ { frontmatter: { published: a } }: { frontmatter: BlogFrontmatter },
+ { frontmatter: { published: b } }: { frontmatter: BlogFrontmatter },
+): number => new Date(b).getTime() - new Date(a).getTime();
+
+const onlyAlreadyPublished = ({
+ frontmatter: { published },
+}: {
+ frontmatter: BlogFrontmatter;
+}): boolean => new Date(published) < new Date();
+
+const contactDetails = {
+ name: "Lars Schieffer",
+ email: `contact@${DOMAINE}`,
+ link: WEBSITE_URL,
+};
+
+export const loader = async (): Promise => {
+ const feed = new Feed({
+ title: "Lars Schieffers Blog",
+ description: "The Lars Schieffers Blog",
+ id: `${WEBSITE_URL}blog`,
+ link: `${WEBSITE_URL}blog`,
+ language: "en",
+ image: `${ASSETS_LOCATION}portrait.webp`,
+ favicon: `${WEBSITE_URL}favicon.ico`,
+ copyright: `All rights reserved ${new Date().getUTCFullYear()}, Lars Schieffer`,
+ generator: "Lars Schieffer",
+ author: contactDetails,
+ });
+ const files = await getMetaDataOfFilesAtPath("en/blog");
+
+ let posts = await Promise.all(
+ files.map(
+ async ({
+ path,
+ sha,
+ name,
+ }: {
+ path: string;
+ sha: string;
+ name: string;
+ }) => {
+ const markdown = await bundleFileMarkdown(path);
+ invariant(markdown);
+
+ const { frontmatter } = markdown;
+
+ return {
+ id: sha,
+ slug: name.replace(/.mdx/g, ""),
+ frontmatter,
+ };
+ },
+ ),
+ );
+ posts = posts.sort(byDateDesc).filter(onlyAlreadyPublished);
+
+ posts.forEach(
+ ({
+ frontmatter: { title, description, published, thumbnail },
+ slug,
+ }: PostThumbnailType) => {
+ feed.addItem({
+ title,
+ id: `${WEBSITE_URL}blog/posts/${slug}`,
+ link: `${WEBSITE_URL}blog/posts/${slug}`,
+ description,
+ date: new Date(new Date(published).setHours(10, 0, 0, 0)),
+ author: [contactDetails],
+ image: thumbnail,
+ });
+ },
+ );
+
+ feed.addCategory("Technologie");
+
+ feed.addContributor(contactDetails);
+
+ return new Response(feed.rss2(), {
+ headers: {
+ "Content-Type": "application/xml; charset=utf-8",
+ "x-content-type-options": "nosniff",
+ "Cache-Control": `public, max-age=${60 * 10}, s-maxage=${60 * 60 * 24}`,
+ },
+ });
+};
diff --git a/app/routes/_content.resume.tsx b/app/routes/_content.resume.tsx
new file mode 100644
index 00000000..5f6d283a
--- /dev/null
+++ b/app/routes/_content.resume.tsx
@@ -0,0 +1,74 @@
+import { useLoaderData } from "@remix-run/react";
+import type { TypedResponse } from "@vercel/remix";
+import { json } from "@vercel/remix";
+import { useIntl } from "react-intl";
+import { BoxContent } from "~/components/box/box-content";
+import { ExperiencesEducation } from "~/components/experience/experiences-education";
+import { ExperiencesWork } from "~/components/experience/experiences-work";
+import { ProgressBarColumn } from "~/components/progress-bar/progress-bar-column";
+import {
+ backendSkills,
+ cloudSkills,
+ frontendSkills,
+ securitySkills,
+} from "~/constants/skill-percentages";
+import { db } from "~/services/server/db.server";
+import type { ContentResumeData } from "~/types/content";
+
+export const loader = async (): Promise> => {
+ const experiences = await db.experience.findMany({
+ include: { skills: true },
+ orderBy: [
+ {
+ start: "desc",
+ },
+ ],
+ });
+
+ const educations = await db.education.findMany({
+ orderBy: [
+ {
+ start: "desc",
+ },
+ ],
+ });
+
+ return json({ educations, experiences });
+};
+
+export const Resume = (): JSX.Element => {
+ const { educations, experiences } = useLoaderData();
+ const intl = useIntl();
+
+ return (
+
+
+
+
+
+ );
+};
+
+export default Resume;
diff --git a/app/routes/_content.tsx b/app/routes/_content.tsx
new file mode 100644
index 00000000..baa97207
--- /dev/null
+++ b/app/routes/_content.tsx
@@ -0,0 +1,92 @@
+import { Link, Outlet, useLoaderData, useLocation } from "@remix-run/react";
+import type { ServerRuntimeMetaArgs } from "@remix-run/server-runtime";
+import type { MetaFunction, TypedResponse } from "@vercel/remix";
+import { json } from "@vercel/remix";
+import { FormattedMessage } from "react-intl";
+import { NavigationFull } from "~/components/navigation/navigation-full";
+import { NavigationSmall } from "~/components/navigation/navigation-small";
+import { Profile } from "~/components/profile/profile";
+import { navigationItems } from "~/constants/navigation-items";
+import { WEBSITE_URL } from "~/constants/sitemap";
+import { metaFunctionFactory } from "~/services/meta";
+import { isLinkTargetingPathname } from "~/services/path";
+import type { ContentData } from "~/types/content";
+import type { NavigationItem } from "~/types/navigation";
+
+export const meta: MetaFunction = (args: ServerRuntimeMetaArgs) => {
+ const { translationKey = "" } =
+ navigationItems.find(({ link }: NavigationItem) => {
+ return isLinkTargetingPathname(args.location.pathname, link);
+ }) ?? {};
+
+ return metaFunctionFactory({
+ url: `${WEBSITE_URL}${args.location.pathname.substring(1)}`,
+ locationKey: `${translationKey}.title`,
+ descriptionKey: `${translationKey}.description`,
+ })(args);
+};
+
+export const loader = (): TypedResponse => {
+ const data = {
+ copyright: {
+ start: "2021",
+ end: new Date().getUTCFullYear(),
+ },
+ };
+ return json(data);
+};
+
+export const ContentLayout = (): JSX.Element => {
+ const { copyright } = useLoaderData();
+ const { pathname } = useLocation();
+ const isBlogContent = isLinkTargetingPathname(pathname, "blog");
+ return (
+
+
+
+
+
+
+
+ Copyright© {copyright.start}-{copyright.end}
+
+
+ Lars Schieffer,{" "}
+
+
+
+ .
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ContentLayout;
diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx
new file mode 100644
index 00000000..bae87f7f
--- /dev/null
+++ b/app/routes/_index.tsx
@@ -0,0 +1,6 @@
+import type { TypedResponse } from "@vercel/remix";
+import { redirect } from "@vercel/remix";
+import { StatusCodes } from "http-status-codes";
+
+export const loader = (): TypedResponse =>
+ redirect("/about", StatusCodes.PERMANENT_REDIRECT);
diff --git a/app/routes/error.ts b/app/routes/error.ts
new file mode 100644
index 00000000..cbb72604
--- /dev/null
+++ b/app/routes/error.ts
@@ -0,0 +1,17 @@
+import type { ActionFunctionArgs, TypedResponse } from "@remix-run/node";
+import { redirect } from "@remix-run/node";
+import invariant from "tiny-invariant";
+import { createUserGeneratedIssue } from "~/services/server/user-error.server";
+
+export const action = async ({
+ request,
+}: ActionFunctionArgs): Promise> => {
+ const location = (await request.formData()).get("location");
+
+ invariant(location, '"location" is required in form data');
+ invariant(typeof location == "string", '"location" has to be a string');
+
+ await createUserGeneratedIssue(location);
+
+ return redirect("/");
+};
diff --git a/app/routes/imprint.tsx b/app/routes/imprint.tsx
new file mode 100644
index 00000000..edceebfd
--- /dev/null
+++ b/app/routes/imprint.tsx
@@ -0,0 +1,47 @@
+import type { MetaFunction } from "@vercel/remix";
+import { FormattedMessage } from "react-intl";
+import { BoxRounded } from "~/components/box/box-rounded";
+import { WEBSITE_URL } from "~/constants/sitemap";
+import { metaFunctionFactory } from "~/services/meta";
+
+export const meta: MetaFunction = metaFunctionFactory({
+ locationKey: "imprint.title",
+ url: `${WEBSITE_URL}imprint`,
+});
+
+export const Imprint = (): JSX.Element => {
+ return (
+
+
+
+
+
+ :
+
+
+ Lars Schieffer
+ Franz-Marc-Weg 2
+ 66564 Ottweiler
+ Email:
+
+
+
+
+
+ :
+
+
+ §
+ 55 Abs.2 RStV
+ Lars Schieffer
+ Franz-Marc-Weg 2
+ 66564 Ottweiler
+
+
+
+
+
+ );
+};
+
+export default Imprint;
diff --git a/app/routes/robots[.]txt.ts b/app/routes/robots[.]txt.ts
new file mode 100644
index 00000000..6c77fa8a
--- /dev/null
+++ b/app/routes/robots[.]txt.ts
@@ -0,0 +1,12 @@
+export const loader = (): Response => {
+ const robotText = `User-agent: *
+Disallow:
+Sitemap: https://lars.schieffer.cloud/sitemap.xml`;
+
+ return new Response(robotText, {
+ status: 200,
+ headers: {
+ "Content-Type": "text/plain",
+ },
+ });
+};
diff --git a/app/routes/sitemap[.]xml.ts b/app/routes/sitemap[.]xml.ts
new file mode 100644
index 00000000..bc231f98
--- /dev/null
+++ b/app/routes/sitemap[.]xml.ts
@@ -0,0 +1,43 @@
+import { WEBSITE_PATHS, WEBSITE_URL } from "~/constants/sitemap";
+import { getMetaDataOfFilesAtPath } from "~/services/server/github-api.server";
+import type { SitemapUrl } from "~/types/sitemap";
+
+const createLocation = ({ url, changefreq, priority }: SitemapUrl): string => {
+ return `
+ ${WEBSITE_URL}${url}
+ ${changefreq}
+ ${priority}
+ `;
+};
+
+export const loader = async (): Promise => {
+ const posts = await getMetaDataOfFilesAtPath("en/blog");
+
+ const staticPages = WEBSITE_PATHS.map((url: SitemapUrl): string =>
+ createLocation(url),
+ ).join("");
+
+ const dynamicPages = posts
+ .map(({ name }: { name: string }): string =>
+ createLocation({
+ url: `blog/posts/${name.replace(".mdx", "")}`,
+ changefreq: "weekly",
+ priority: 0.7,
+ }),
+ )
+ .join("");
+
+ const sitemap = `
+
+ ${staticPages}
+ ${dynamicPages}
+ `;
+
+ return new Response(sitemap, {
+ headers: {
+ "Content-Type": "application/xml; charset=utf-8",
+ "x-content-type-options": "nosniff",
+ "Cache-Control": `public, max-age=${60 * 10}, s-maxage=${60 * 60 * 24}`,
+ },
+ });
+};
diff --git a/app/services/date.test.ts b/app/services/date.test.ts
new file mode 100644
index 00000000..ae8ad946
--- /dev/null
+++ b/app/services/date.test.ts
@@ -0,0 +1,33 @@
+import { describe, expect, it } from "vitest";
+import type { TestCaseFor } from "../../tests/common/given";
+import { Given } from "../../tests/common/given";
+import { getDay, getMonth } from "./date";
+
+describe("getMonth", () => {
+ it.each>([
+ { parameters: ["de", Given.date()], expectedReturn: "Dez" },
+ { parameters: ["en", Given.date()], expectedReturn: "Dec" },
+ ])(
+ "should return $expectedReturn for locale $parameters.0 and date $parameters.1",
+ ({
+ parameters: [locale, date],
+ expectedReturn,
+ }: TestCaseFor) => {
+ const actualReturn = getMonth(locale, date);
+ expect(actualReturn).toBe(expectedReturn);
+ },
+ );
+});
+
+describe("getDay", () => {
+ it.each>([
+ { parameters: [Given.date()], expectedReturn: "06" },
+ { parameters: [new Date(2017, 6, 17)], expectedReturn: "17" },
+ ])(
+ "should return $expectedReturn for date $parameters.0",
+ ({ parameters: [date], expectedReturn }: TestCaseFor) => {
+ const actualReturn = getDay(date);
+ expect(actualReturn).toBe(expectedReturn);
+ },
+ );
+});
diff --git a/app/services/date.ts b/app/services/date.ts
new file mode 100644
index 00000000..82584e57
--- /dev/null
+++ b/app/services/date.ts
@@ -0,0 +1,9 @@
+export const getMonth = (locale: Intl.LocalesArgument, date: Date): string =>
+ date.toLocaleDateString(locale, {
+ month: "short",
+ });
+
+export const getDay = (date: Date): string =>
+ date.toLocaleDateString("en", {
+ day: "2-digit",
+ });
diff --git a/app/services/meta.test.ts b/app/services/meta.test.ts
new file mode 100644
index 00000000..f0b994e4
--- /dev/null
+++ b/app/services/meta.test.ts
@@ -0,0 +1,133 @@
+import type { MetaFunction } from "@vercel/remix";
+import { describe, expect, it } from "vitest";
+import { ASSETS_LOCATION } from "~/constants/assets-location";
+import { WEBSITE_URL } from "~/constants/sitemap";
+import translation from "../../public/assets/i18n/en.json";
+import { Given, type TestCaseFor } from "../../tests/common/given";
+import { metaFunctionFactory } from "./meta";
+
+const expectedMetaFunction = (
+ description: string,
+ title: string,
+ imageUrl: string,
+ url: string,
+): MetaFunction => {
+ return () => [
+ {
+ name: "description",
+ content: description,
+ },
+ {
+ title,
+ },
+ { property: "og:title", content: title },
+ {
+ property: "og:image",
+ content: imageUrl,
+ },
+ { property: "og:description", content: description },
+ { property: "og:url", content: url },
+ ];
+};
+
+const description = translation.navigation.resume.description;
+const descriptionKey = "navigation.blog.description";
+const descriptionKeyTranslation = translation.navigation.blog.description;
+const defaultDescription = translation.navigation.aboutMe.description;
+const location = translation.navigation.resume.title;
+const locationKey = "navigation.blog.title";
+const locationKeyTranslation = translation.navigation.blog.title;
+const defaultImageUrl = `${ASSETS_LOCATION}portrait.webp`;
+const url = `${WEBSITE_URL}blog/posts/ng-container`;
+const imageUrl = `${ASSETS_LOCATION}blog/thumbnails/containers.webpp`;
+
+describe("metaFunctionFactory", () => {
+ it.each>([
+ {
+ parameters: [],
+ expectedReturn: expectedMetaFunction(
+ defaultDescription,
+ "Lars Schieffer",
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ location, description }],
+ expectedReturn: expectedMetaFunction(
+ description,
+ `${location} | Lars Schieffer`,
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ location }],
+ expectedReturn: expectedMetaFunction(
+ defaultDescription,
+ `${location} | Lars Schieffer`,
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ description }],
+ expectedReturn: expectedMetaFunction(
+ description,
+ `Lars Schieffer`,
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ locationKey, descriptionKey }],
+ expectedReturn: expectedMetaFunction(
+ descriptionKeyTranslation,
+ `${locationKeyTranslation} | Lars Schieffer`,
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ locationKey }],
+ expectedReturn: expectedMetaFunction(
+ defaultDescription,
+ `${locationKeyTranslation} | Lars Schieffer`,
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ descriptionKey }],
+ expectedReturn: expectedMetaFunction(
+ descriptionKeyTranslation,
+ `Lars Schieffer`,
+ defaultImageUrl,
+ WEBSITE_URL,
+ ),
+ },
+ {
+ parameters: [{ descriptionKey, url, imageUrl }],
+ expectedReturn: expectedMetaFunction(
+ descriptionKeyTranslation,
+ `Lars Schieffer`,
+ imageUrl,
+ url,
+ ),
+ },
+ ])(
+ "should return MetaFunction for $parameters.0",
+ ({
+ parameters,
+ expectedReturn,
+ }: TestCaseFor) => {
+ const args = Given.serverRuntimeMetaArgs();
+
+ const actualReturn = metaFunctionFactory(...parameters);
+
+ expect(actualReturn(args)).toStrictEqual(
+ expectedReturn(Given.serverRuntimeMetaArgs()),
+ );
+ },
+ );
+});
diff --git a/app/services/meta.ts b/app/services/meta.ts
new file mode 100644
index 00000000..c9d5ab27
--- /dev/null
+++ b/app/services/meta.ts
@@ -0,0 +1,57 @@
+import { flatten } from "flat";
+import { IntlProvider } from "react-intl";
+import { ASSETS_LOCATION } from "~/constants/assets-location";
+import { WEBSITE_URL } from "~/constants/sitemap";
+import type { MetaFunctionFactory } from "~/types/meta";
+import messages from "../../public/assets/i18n/en.json";
+
+const {
+ state: { intl },
+} = new IntlProvider({
+ locale: "en",
+ messages: flatten(messages),
+});
+
+export const metaFunctionFactory: MetaFunctionFactory =
+ (
+ {
+ locationKey,
+ descriptionKey = "navigation.aboutMe.description",
+ location,
+ description,
+ url,
+ imageUrl,
+ }: {
+ locationKey?: string;
+ descriptionKey?: string;
+ location?: string;
+ description?: string;
+ url?: string;
+ imageUrl?: string;
+ } = { url: WEBSITE_URL },
+ ) =>
+ () => {
+ location =
+ location ?? (locationKey ? intl?.formatMessage({ id: locationKey }) : "");
+ description = description ?? intl?.formatMessage({ id: descriptionKey });
+ url = url ?? WEBSITE_URL;
+
+ const title = `${location ? `${location} | ` : ""}Lars Schieffer`;
+
+ return [
+ {
+ name: "description",
+ content: description,
+ },
+ {
+ title,
+ },
+ { property: "og:title", content: title },
+ {
+ property: "og:image",
+ content: imageUrl ?? `${ASSETS_LOCATION}portrait.webp`,
+ },
+ { property: "og:description", content: description },
+ { property: "og:url", content: url },
+ ];
+ };
diff --git a/app/services/path.test.ts b/app/services/path.test.ts
new file mode 100644
index 00000000..2dd51d92
--- /dev/null
+++ b/app/services/path.test.ts
@@ -0,0 +1,29 @@
+import { describe, expect, it } from "vitest";
+import type { TestCaseFor } from "../../tests/common/given";
+import { isLinkTargetingPathname } from "./path";
+
+const linkTarget = "blog";
+const pathname = `/${linkTarget}/posts`;
+
+describe("isLinkTargetingPathname", () => {
+ it.each>([
+ { parameters: [undefined, linkTarget], expectedReturn: false },
+ { parameters: [pathname, undefined], expectedReturn: false },
+ { parameters: [pathname, linkTarget], expectedReturn: true },
+ { parameters: [pathname, pathname.substring(1)], expectedReturn: true },
+ {
+ parameters: [pathname, `${pathname.substring(1)}/diff`],
+ expectedReturn: false,
+ },
+ { parameters: [pathname, `diff/${linkTarget}`], expectedReturn: false },
+ ])(
+ "should return $expectedReturn for pathname $parameters.0 and linkTarget $parameters.1",
+ ({
+ parameters: [pathname, linkTarget],
+ expectedReturn,
+ }: TestCaseFor) => {
+ const actualReturn = isLinkTargetingPathname(pathname, linkTarget);
+ expect(actualReturn).toBe(expectedReturn);
+ },
+ );
+});
diff --git a/app/services/path.ts b/app/services/path.ts
new file mode 100644
index 00000000..6e13e962
--- /dev/null
+++ b/app/services/path.ts
@@ -0,0 +1,10 @@
+export const isLinkTargetingPathname = (
+ pathname?: string,
+ linkTarget?: string,
+): boolean => {
+ if (pathname == null || linkTarget == null) {
+ return false;
+ }
+
+ return pathname.startsWith(`/${linkTarget}`);
+};
diff --git a/app/services/server/db.server.create-connection.test.ts b/app/services/server/db.server.create-connection.test.ts
new file mode 100644
index 00000000..58cddfbd
--- /dev/null
+++ b/app/services/server/db.server.create-connection.test.ts
@@ -0,0 +1,15 @@
+import { describe, expect, it } from "vitest";
+
+const clearDBConnection = (): void => {
+ global.__db = undefined;
+};
+
+describe("db", () => {
+ it("should create db connection", async () => {
+ clearDBConnection();
+ const { db } = await import("./db.server");
+
+ expect(db).toBeDefined();
+ expect(global.__db == db).toBeTruthy();
+ });
+});
diff --git a/app/services/server/db.server.production.test.ts b/app/services/server/db.server.production.test.ts
new file mode 100644
index 00000000..0f14ede5
--- /dev/null
+++ b/app/services/server/db.server.production.test.ts
@@ -0,0 +1,21 @@
+import { describe, expect, it, vi } from "vitest";
+
+const clearDBConnection = (): void => {
+ global.__db = undefined;
+};
+
+const setProductionEnvironment = (): void => {
+ vi.stubEnv("NODE_ENV", "production");
+};
+
+describe("db", () => {
+ it("should create db connection", async () => {
+ clearDBConnection();
+ setProductionEnvironment();
+
+ const { db } = await import("./db.server");
+
+ expect(db).toBeDefined();
+ expect(global.__db == undefined).toBeTruthy();
+ });
+});
diff --git a/app/services/server/db.server.reuse-connection.test.ts b/app/services/server/db.server.reuse-connection.test.ts
new file mode 100644
index 00000000..4fde0a1f
--- /dev/null
+++ b/app/services/server/db.server.reuse-connection.test.ts
@@ -0,0 +1,16 @@
+import { PrismaClient } from "@prisma/client";
+import { describe, expect, it } from "vitest";
+
+const initDBConnection = (): PrismaClient => {
+ global.__db = new PrismaClient();
+ return global.__db;
+};
+
+describe("db", () => {
+ it("should reuse db connection", async () => {
+ const dbConnection = initDBConnection();
+ const { db } = await import("./db.server");
+
+ expect(db == dbConnection).toBeTruthy();
+ });
+});
diff --git a/app/services/server/db.server.ts b/app/services/server/db.server.ts
new file mode 100644
index 00000000..27011500
--- /dev/null
+++ b/app/services/server/db.server.ts
@@ -0,0 +1,22 @@
+import { PrismaClient } from "@prisma/client";
+
+let db: PrismaClient;
+
+declare global {
+ // eslint-disable-next-line no-var
+ var __db: PrismaClient | undefined;
+}
+
+// this is needed because in development we don't want to restart
+// the server with every change, but we want to make sure we don't
+// create a new connection to the DB with every change either.
+if (process.env.NODE_ENV === "production") {
+ db = new PrismaClient();
+} else {
+ if (!global.__db) {
+ global.__db = new PrismaClient();
+ }
+ db = global.__db;
+}
+
+export { db };
diff --git a/app/services/server/environment.server.test.ts b/app/services/server/environment.server.test.ts
new file mode 100644
index 00000000..6fc65524
--- /dev/null
+++ b/app/services/server/environment.server.test.ts
@@ -0,0 +1,14 @@
+import { describe, expect, it } from "vitest";
+import { getValueEnvironmentFromVariable } from "./environment.server";
+
+describe("getValueEnvironmentFromVariable", () => {
+ it("should return value of environment variable", () => {
+ const actual = getValueEnvironmentFromVariable("NODE_ENV");
+ expect(actual).toBe("test");
+ });
+ it("should throw on missing environment variable", () => {
+ expect(() => getValueEnvironmentFromVariable("NOT_EXISTING")).toThrow(
+ Error,
+ );
+ });
+});
diff --git a/app/services/server/environment.server.ts b/app/services/server/environment.server.ts
new file mode 100644
index 00000000..a7dade12
--- /dev/null
+++ b/app/services/server/environment.server.ts
@@ -0,0 +1,12 @@
+import invariant from "tiny-invariant";
+
+export const getValueEnvironmentFromVariable = (
+ variableName: string,
+): string => {
+ const environmentValue = process.env[variableName];
+ invariant(
+ environmentValue,
+ `Environment variable ${variableName} is missing`,
+ );
+ return environmentValue;
+};
diff --git a/app/services/server/github-api.server.test.ts b/app/services/server/github-api.server.test.ts
new file mode 100644
index 00000000..153e75f3
--- /dev/null
+++ b/app/services/server/github-api.server.test.ts
@@ -0,0 +1,20 @@
+import { Given } from "tests/common/given";
+import { describe, expect, it } from "vitest";
+import { createIssue, getMetaDataOfFilesAtPath } from "./github-api.server";
+
+describe("getMetaDataOfFilesAtPath", () => {
+ it("should return meta data files", async () => {
+ const actual = await getMetaDataOfFilesAtPath(Given.contentPath());
+
+ expect(actual).toStrictEqual([Given.fileMetaData()]);
+ });
+});
+
+describe("createIssue", () => {
+ it("should return id of created issue", async () => {
+ const expectedTitle = "My example title";
+ const actual = await createIssue(expectedTitle);
+
+ expect(actual).toContain({ title: expectedTitle });
+ });
+});
diff --git a/app/services/server/github-api.server.ts b/app/services/server/github-api.server.ts
new file mode 100644
index 00000000..2c319a19
--- /dev/null
+++ b/app/services/server/github-api.server.ts
@@ -0,0 +1,42 @@
+import invariant from "tiny-invariant";
+import {
+ GITHUB_CONTENT_REPO,
+ GITHUB_OWNER,
+ GITHUB_REPO,
+} from "~/constants/github";
+import type { FileMetaData } from "~/types/file";
+import { octokit } from "./octokit.server";
+
+export const getMetaDataOfFilesAtPath = async (
+ path: string,
+): Promise => {
+ const content = await octokit.request(
+ "GET /repos/{owner}/{repo}/contents/{path}",
+ {
+ owner: GITHUB_OWNER,
+ repo: GITHUB_CONTENT_REPO,
+ path,
+ headers: {
+ "X-GitHub-Api-Version": "2022-11-28",
+ },
+ },
+ );
+
+ const { data } = content;
+
+ invariant(Array.isArray(data), "Array of files is expected");
+
+ return data;
+};
+
+export const createIssue = async (
+ title: string,
+): Promise<{ title: string }> => {
+ const issue = await octokit.rest.issues.create({
+ owner: GITHUB_OWNER,
+ repo: GITHUB_REPO,
+ title,
+ });
+
+ return issue.data;
+};
diff --git a/app/services/server/markdown.server.test.ts b/app/services/server/markdown.server.test.ts
new file mode 100644
index 00000000..6235e98c
--- /dev/null
+++ b/app/services/server/markdown.server.test.ts
@@ -0,0 +1,20 @@
+// @vitest-environment node
+import { Given } from "tests/common/given";
+import { describe, expect, it } from "vitest";
+import { bundleFileMarkdown } from "./markdown.server";
+
+describe("bundleFileMarkdown", () => {
+ it("should return bundled markdown", async () => {
+ const actual = await bundleFileMarkdown(Given.nameOfMarkdownFile());
+
+ expect(actual).toBeDefined();
+ });
+
+ it("should not create bundle for not existing markdown file", async () => {
+ const actual = await bundleFileMarkdown(
+ Given.sameOfNotExistingMarkdownFile(),
+ );
+
+ expect(actual).toBeUndefined();
+ });
+});
diff --git a/app/services/server/markdown.server.ts b/app/services/server/markdown.server.ts
new file mode 100644
index 00000000..e08ec8b6
--- /dev/null
+++ b/app/services/server/markdown.server.ts
@@ -0,0 +1,44 @@
+import type { BuildOptions } from "esbuild";
+
+import { bundleMDX } from "mdx-bundler";
+import path from "path";
+import type { Markdown } from "~/types/markdown";
+import { getValueEnvironmentFromVariable } from "./environment.server";
+
+process.env.ESBUILD_BINARY_PATH = path.join(
+ process.cwd(),
+ "node_modules",
+ "esbuild",
+ "bin",
+ "esbuild",
+);
+
+const location = getValueEnvironmentFromVariable("CONTENT_LOCATION");
+
+export const bundleFileMarkdown = async >(
+ filePath: string,
+): Promise | undefined> => {
+ const file = await fetch(`${location}/${filePath}`);
+ if (isFileMissing(file)) {
+ return;
+ }
+
+ return await bundleMDX({
+ source: await file.text(),
+ esbuildOptions,
+ });
+};
+
+const isFileMissing = (file: Response): boolean => {
+ return file.status === 404;
+};
+
+const esbuildOptions = >(
+ options: BuildOptions,
+ _frontmatter: T,
+): BuildOptions => {
+ options.minify = true;
+ options.target = ["es2019"];
+
+ return options;
+};
diff --git a/app/services/server/octokit.server.create-connection.test.ts b/app/services/server/octokit.server.create-connection.test.ts
new file mode 100644
index 00000000..578b41ca
--- /dev/null
+++ b/app/services/server/octokit.server.create-connection.test.ts
@@ -0,0 +1,15 @@
+import { describe, expect, it } from "vitest";
+
+const clearOctokitClient = (): void => {
+ global.__octokit = undefined;
+};
+
+describe("oktokit", () => {
+ it("should create oktokit client", async () => {
+ clearOctokitClient();
+ const { octokit } = await import("./octokit.server");
+
+ expect(octokit).toBeDefined();
+ expect(global.__octokit == octokit).toBeTruthy();
+ });
+});
diff --git a/app/services/server/octokit.server.production.test.ts b/app/services/server/octokit.server.production.test.ts
new file mode 100644
index 00000000..2dbe7a3c
--- /dev/null
+++ b/app/services/server/octokit.server.production.test.ts
@@ -0,0 +1,21 @@
+import { describe, expect, it, vi } from "vitest";
+
+const clearOctokitClient = (): void => {
+ global.__octokit = undefined;
+};
+
+const setProductionEnvironment = (): void => {
+ vi.stubEnv("NODE_ENV", "production");
+};
+
+describe("oktokit", () => {
+ it("should create oktokit client", async () => {
+ clearOctokitClient();
+ setProductionEnvironment();
+
+ const { octokit } = await import("./octokit.server");
+
+ expect(octokit).toBeDefined();
+ expect(global.__octokit == undefined).toBeTruthy();
+ });
+});
diff --git a/app/services/server/octokit.server.reuse-connection.test.ts b/app/services/server/octokit.server.reuse-connection.test.ts
new file mode 100644
index 00000000..405bbb91
--- /dev/null
+++ b/app/services/server/octokit.server.reuse-connection.test.ts
@@ -0,0 +1,17 @@
+import { Octokit } from "@octokit/rest";
+import { describe, expect, it } from "vitest";
+
+const initOctokitClient = (): Octokit => {
+ global.__octokit = new Octokit();
+
+ return global.__octokit;
+};
+
+describe("db", () => {
+ it("should reuse oktokit client", async () => {
+ const octokitClient = initOctokitClient();
+ const { octokit } = await import("./octokit.server");
+
+ expect(octokit == octokitClient).toBeTruthy();
+ });
+});
diff --git a/app/services/server/octokit.server.ts b/app/services/server/octokit.server.ts
new file mode 100644
index 00000000..a4258ae0
--- /dev/null
+++ b/app/services/server/octokit.server.ts
@@ -0,0 +1,25 @@
+import { Octokit } from "@octokit/rest";
+
+const initOctokit = (): Octokit => {
+ return new Octokit({
+ auth: process.env.GITHUB_TOKEN,
+ });
+};
+
+let octokit: Octokit;
+
+declare global {
+ // eslint-disable-next-line no-var
+ var __octokit: Octokit | undefined;
+}
+
+if (process.env.NODE_ENV === "production") {
+ octokit = initOctokit();
+} else {
+ if (!global.__octokit) {
+ global.__octokit = initOctokit();
+ }
+ octokit = global.__octokit;
+}
+
+export { octokit };
diff --git a/app/services/server/user-error.server.test.ts b/app/services/server/user-error.server.test.ts
new file mode 100644
index 00000000..486d739f
--- /dev/null
+++ b/app/services/server/user-error.server.test.ts
@@ -0,0 +1,10 @@
+import { describe, expect, it } from "vitest";
+import { createUserGeneratedIssue } from "./user-error.server";
+
+describe("createUserGeneratedIssue", () => {
+ it("should create user error", async () => {
+ await expect(
+ createUserGeneratedIssue("/PAGE-WITH-ERROR"),
+ ).resolves.not.toThrow();
+ });
+});
diff --git a/app/services/server/user-error.server.ts b/app/services/server/user-error.server.ts
new file mode 100644
index 00000000..45fd3fcd
--- /dev/null
+++ b/app/services/server/user-error.server.ts
@@ -0,0 +1,7 @@
+import { createIssue } from "./github-api.server";
+
+export const createUserGeneratedIssue = async (
+ location: string,
+): Promise => {
+ await createIssue(`User experienced error at ${location}`);
+};
diff --git a/app/services/under-construction.test.ts b/app/services/under-construction.test.ts
new file mode 100644
index 00000000..b1b2bfa1
--- /dev/null
+++ b/app/services/under-construction.test.ts
@@ -0,0 +1,12 @@
+import { describe, expect, it } from "vitest";
+import { notImplementedYet } from "./under-construction";
+
+describe("notImplementedYet", () => {
+ it("should return id for toast message", () => {
+ const expectedReturn = "1";
+
+ const actualReturn = notImplementedYet();
+
+ expect(actualReturn).toBe(expectedReturn);
+ });
+});
diff --git a/app/services/under-construction.ts b/app/services/under-construction.ts
new file mode 100644
index 00000000..dfc3e3e9
--- /dev/null
+++ b/app/services/under-construction.ts
@@ -0,0 +1,8 @@
+import type { Id } from "react-toastify";
+import { toast } from "react-toastify";
+
+import { IoIosConstruct } from "@react-icons/all-files/io/IoIosConstruct";
+
+export const notImplementedYet = (): Id => {
+ return toast("The feature is under construction.", { icon: IoIosConstruct });
+};
diff --git a/app/styles/fonts.css b/app/styles/fonts.css
new file mode 100644
index 00000000..8b9e0bb4
--- /dev/null
+++ b/app/styles/fonts.css
@@ -0,0 +1,13 @@
+@import "@fontsource/merriweather/300.css";
+@import "@fontsource/merriweather/400.css";
+@import "@fontsource/merriweather/700.css";
+@import "@fontsource/merriweather/900.css";
+@import "@fontsource/inter/100.css";
+@import "@fontsource/inter/200.css";
+@import "@fontsource/inter/300.css";
+@import "@fontsource/inter/400.css";
+@import "@fontsource/inter/500.css";
+@import "@fontsource/inter/600.css";
+@import "@fontsource/inter/700.css";
+@import "@fontsource/inter/800.css";
+@import "@fontsource/inter/900.css";
diff --git a/app/styles/tailwind.css b/app/styles/tailwind.css
new file mode 100644
index 00000000..b5c61c95
--- /dev/null
+++ b/app/styles/tailwind.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/app/types/blog.ts b/app/types/blog.ts
new file mode 100644
index 00000000..e603b042
--- /dev/null
+++ b/app/types/blog.ts
@@ -0,0 +1,31 @@
+import type { PropsWithChildren } from "react";
+
+export interface BlogFeedbackProps {
+ content: string;
+}
+
+export interface BlogFrontmatter extends Record {
+ title: string;
+ published: string;
+ description: string;
+ thumbnail?: string;
+}
+
+export interface BlogPostThumbnailProps {
+ slug: string;
+ frontMatter: BlogFrontmatter;
+}
+
+export interface PostThumbnailType {
+ id: string;
+ slug: string;
+ frontmatter: BlogFrontmatter;
+}
+export interface BlogImageProps {
+ src: string;
+ alt: string;
+}
+
+export interface BlogFrameProps extends PropsWithChildren {
+ alignment: "vertical" | "horizontal";
+}
diff --git a/app/types/box.ts b/app/types/box.ts
new file mode 100644
index 00000000..f540521a
--- /dev/null
+++ b/app/types/box.ts
@@ -0,0 +1,12 @@
+import type { PropsWithChildren } from "react";
+
+export interface ContentBoxProps extends PropsWithChildren {
+ headline: string;
+ options?: {
+ position: "left" | "center";
+ };
+}
+
+export interface RoundedBoxProps extends PropsWithChildren {
+ className?: string;
+}
diff --git a/app/types/content.ts b/app/types/content.ts
new file mode 100644
index 00000000..a0b28cd3
--- /dev/null
+++ b/app/types/content.ts
@@ -0,0 +1,41 @@
+import type { Education, Experience, Skill } from "@prisma/client";
+import type { BlogFrontmatter } from "./blog";
+import type { Markdown } from "./markdown";
+
+export interface ContentData {
+ copyright: {
+ start: string;
+ end: number;
+ };
+}
+
+export interface ContentResumeData {
+ educations: Education[];
+ experiences: (Experience & {
+ skills: Skill[];
+ })[];
+}
+
+export interface ContentBlogPostDate {
+ post: Markdown;
+ feedback: Markdown;
+ slug: string;
+}
+
+export interface ContentBlogData {
+ posts: {
+ id: string;
+ slug: string;
+ frontmatter: BlogFrontmatter;
+ }[];
+}
+
+export interface ContentAbout {
+ experiences: (Experience & {
+ skills: Skill[];
+ })[];
+ aboutMe: {
+ code: string;
+ frontmatter: Record;
+ };
+}
diff --git a/app/types/date-range.ts b/app/types/date-range.ts
new file mode 100644
index 00000000..8ccbe07e
--- /dev/null
+++ b/app/types/date-range.ts
@@ -0,0 +1,4 @@
+import type { Experience } from "@prisma/client";
+import type { SerializeFrom } from "@vercel/remix";
+
+export type DateRangeProps = SerializeFrom>;
diff --git a/app/types/error.ts b/app/types/error.ts
new file mode 100644
index 00000000..f25570b5
--- /dev/null
+++ b/app/types/error.ts
@@ -0,0 +1,6 @@
+export interface ErrorPageProps {
+ imagePath: string;
+ imageAltTextId: string;
+ descriptionTextId: string;
+ buttonTextId: string;
+}
diff --git a/app/types/experience.ts b/app/types/experience.ts
new file mode 100644
index 00000000..7e9bc8b8
--- /dev/null
+++ b/app/types/experience.ts
@@ -0,0 +1,50 @@
+import type { Education, Experience, Skill } from "@prisma/client";
+import type { SerializeFrom } from "@vercel/remix";
+import type { PropsWithChildren, ReactNode } from "react";
+
+export type ExperienceWithSkills = SerializeFrom<
+ Experience & {
+ skills: Skill[];
+ }
+>;
+
+export interface ExperienceOfEducationProps {
+ education: SerializeFrom;
+ options: StepOptions;
+}
+
+export interface ExperienceOfWorkProps {
+ experience: ExperienceWithSkills;
+ options: StepOptions;
+}
+
+export interface StepOptions {
+ isFirstInColumn?: boolean;
+ isLastInColumn?: boolean;
+}
+
+export interface StepData {
+ title: string;
+ organisation: string | null;
+ start: string;
+ end: string | null;
+ description: string | null;
+}
+
+export interface StepProps {
+ data: StepData;
+ options: StepOptions;
+}
+
+export interface ExperiencesProps extends PropsWithChildren {
+ headline: string;
+ icon: ReactNode;
+}
+
+export interface ExperienceEducationProps {
+ educations: SerializeFrom[];
+}
+
+export interface ExperiencesWorkProps {
+ experiences: ExperienceWithSkills[];
+}
diff --git a/app/types/file.ts b/app/types/file.ts
new file mode 100644
index 00000000..e45ff729
--- /dev/null
+++ b/app/types/file.ts
@@ -0,0 +1,5 @@
+export interface FileMetaData {
+ path: string;
+ sha: string;
+ name: string;
+}
diff --git a/app/types/markdown.ts b/app/types/markdown.ts
new file mode 100644
index 00000000..badb1f6d
--- /dev/null
+++ b/app/types/markdown.ts
@@ -0,0 +1,11 @@
+import type { Message } from "esbuild";
+import type grayMatter from "gray-matter";
+
+export interface Markdown> {
+ code: string;
+ frontmatter: T;
+ errors: Message[];
+ matter: Omit, "data"> & {
+ data: T;
+ };
+}
diff --git a/app/types/meta.ts b/app/types/meta.ts
new file mode 100644
index 00000000..94b41f7e
--- /dev/null
+++ b/app/types/meta.ts
@@ -0,0 +1,30 @@
+import type { MetaFunction } from "@vercel/remix";
+
+export type MetaFunctionFactory = (
+ meta?:
+ | { location: string; description: string; url: string; imageUrl: string }
+ | {
+ locationKey: string;
+ descriptionKey: string;
+ url: string;
+ imageUrl: string;
+ }
+ | { location: string; url: string; imageUrl: string }
+ | { locationKey: string; url: string; imageUrl: string }
+ | { description: string; url: string; imageUrl: string }
+ | { descriptionKey: string; url: string; imageUrl: string }
+ | { location: string; description: string; url: string }
+ | { locationKey: string; descriptionKey: string; url: string }
+ | { location: string; url: string }
+ | { locationKey: string; url: string }
+ | { description: string; url: string }
+ | { descriptionKey: string; url: string }
+ | { url: string; imageUrl: string }
+ | { location: string; description: string }
+ | { locationKey: string; descriptionKey: string }
+ | { location: string }
+ | { locationKey: string }
+ | { description: string }
+ | { descriptionKey: string }
+ | { url: string },
+) => MetaFunction;
diff --git a/app/types/navigation.ts b/app/types/navigation.ts
new file mode 100644
index 00000000..82cb94c2
--- /dev/null
+++ b/app/types/navigation.ts
@@ -0,0 +1,8 @@
+export interface NavigationProps {
+ navigationItems: NavigationItem[];
+}
+
+export interface NavigationItem {
+ translationKey: string;
+ link: string;
+}
diff --git a/app/types/profile.ts b/app/types/profile.ts
new file mode 100644
index 00000000..f72bcae5
--- /dev/null
+++ b/app/types/profile.ts
@@ -0,0 +1,6 @@
+import type { ReactNode } from "react";
+
+export interface ProfileItemProps {
+ icon: ReactNode;
+ description: string;
+}
diff --git a/app/types/progress-bar.ts b/app/types/progress-bar.ts
new file mode 100644
index 00000000..30d807b5
--- /dev/null
+++ b/app/types/progress-bar.ts
@@ -0,0 +1,9 @@
+export interface ProgressBarProps {
+ title: string;
+ percentage: number;
+}
+
+export interface ProgressBarColumnProps {
+ progressBarItems: ProgressBarProps[];
+ headline: string;
+}
diff --git a/app/types/sitemap.ts b/app/types/sitemap.ts
new file mode 100644
index 00000000..0aab8d42
--- /dev/null
+++ b/app/types/sitemap.ts
@@ -0,0 +1,5 @@
+export interface SitemapUrl {
+ url: string;
+ changefreq: "daily" | "weekly" | "monthly" | "yearly";
+ priority: number;
+}
diff --git a/config/test.env b/config/test.env
new file mode 100644
index 00000000..87576afc
--- /dev/null
+++ b/config/test.env
@@ -0,0 +1,3 @@
+POSTGRES_PRISMA_URL = "postgresql://postgres:postgres@localhost:5432/test"
+CONTENT_LOCATION="http://localhost/content-location"
+GITHUB_TOKEN = ""
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..5566d83c
--- /dev/null
+++ b/package.json
@@ -0,0 +1,91 @@
+{
+ "private": true,
+ "sideEffects": false,
+ "scripts": {
+ "preinstall": "pnpm dlx only-allow pnpm",
+ "prepare": "husky install",
+ "build": "remix build",
+ "dev": "dotenv -e config/dev.env remix dev",
+ "typecheck": "tsc",
+ "lint": "eslint --max-warnings 0 --cache --cache-location ./node_modules/.cache/eslint .",
+ "lint:write": "eslint --fix .",
+ "test": "vitest",
+ "test:coverage": "vitest --coverage --run",
+ "seed": "ts-node prisma/seed.ts",
+ "seed:dev": "dotenv -e config/dev.env pnpm dlx prisma db seed",
+ "db-migrate:dev": "dotenv -e config/dev.env pnpm dlx prisma migrate dev",
+ "db-management:dev": "dotenv -e config/dev.env pnpm prisma studio",
+ "db-management:prod": "dotenv -e config/prod.env pnpm prisma studio"
+ },
+ "dependencies": {
+ "@fontsource/inter": "5.0.18",
+ "@fontsource/merriweather": "5.0.13",
+ "@octokit/rest": "20.1.1",
+ "@prisma/client": "5.13.0",
+ "@react-icons/all-files": "4.1.0",
+ "@remix-run/css-bundle": "2.9.1",
+ "@remix-run/node": "2.9.1",
+ "@remix-run/react": "2.9.1",
+ "@remix-run/serve": "2.9.1",
+ "@remix-run/vercel": "1.19.3",
+ "@vercel/node": "3.1.0",
+ "@vercel/remix": "2.9.1",
+ "esbuild": "0.21.1",
+ "feed": "4.2.2",
+ "flat": "6.0.1",
+ "highlight.js": "11.9.0",
+ "http-status-codes": "2.3.0",
+ "isbot": "5.1.6",
+ "mdx-bundler": "10.0.2",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-intl": "6.6.6",
+ "react-toastify": "10.0.5",
+ "tiny-invariant": "1.3.3"
+ },
+ "devDependencies": {
+ "@remix-run/dev": "2.9.1",
+ "@remix-run/serve": "2.9.1",
+ "@testing-library/react": "15.0.7",
+ "@types/flat": "5.0.5",
+ "@types/node": "20.12.10",
+ "@types/react": "18.3.1",
+ "@types/react-dom": "18.3.0",
+ "@typescript-eslint/eslint-plugin": "7.8.0",
+ "@typescript-eslint/parser": "7.8.0",
+ "@vitest/coverage-v8": "0.34.6",
+ "autoprefixer": "10.4.19",
+ "concurrently": "8.2.2",
+ "dotenv": "16.4.5",
+ "dotenv-cli": "7.4.2",
+ "esbuild-register": "3.5.0",
+ "eslint": "8.57.0",
+ "eslint-config-prettier": "9.1.0",
+ "eslint-plugin-formatjs": "4.13.1",
+ "eslint-plugin-jsx-a11y": "6.8.0",
+ "eslint-plugin-prefer-arrow": "1.2.3",
+ "eslint-plugin-prettier": "5.1.3",
+ "eslint-plugin-react": "7.34.1",
+ "eslint-plugin-vitest": "0.3.10",
+ "husky": "9.0.11",
+ "jsdom": "24.0.0",
+ "msw": "2.3.0",
+ "postcss": "8.4.38",
+ "prettier": "3.2.5",
+ "prettier-plugin-organize-imports": "3.2.4",
+ "prettier-plugin-tailwindcss": "0.5.14",
+ "prisma": "5.13.0",
+ "tailwindcss": "3.4.3",
+ "ts-node": "10.9.2",
+ "typescript": "5.4.5",
+ "vite-tsconfig-paths": "4.3.2",
+ "vitest": "0.34.6",
+ "vitest-dom": "0.1.1"
+ },
+ "engines": {
+ "node": "20.12.2"
+ },
+ "prisma": {
+ "seed": "node --require esbuild-register prisma/seed.ts"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 00000000..3e495a9b
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,11175 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@fontsource/inter':
+ specifier: 5.0.18
+ version: 5.0.18
+ '@fontsource/merriweather':
+ specifier: 5.0.13
+ version: 5.0.13
+ '@octokit/rest':
+ specifier: 20.1.1
+ version: 20.1.1
+ '@prisma/client':
+ specifier: 5.13.0
+ version: 5.13.0(prisma@5.13.0)
+ '@react-icons/all-files':
+ specifier: 4.1.0
+ version: 4.1.0(react@18.3.1)
+ '@remix-run/css-bundle':
+ specifier: 2.9.1
+ version: 2.9.1
+ '@remix-run/node':
+ specifier: 2.9.1
+ version: 2.9.1(typescript@5.4.5)
+ '@remix-run/react':
+ specifier: 2.9.1
+ version: 2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
+ '@remix-run/serve':
+ specifier: 2.9.1
+ version: 2.9.1(typescript@5.4.5)
+ '@remix-run/vercel':
+ specifier: 1.19.3
+ version: 1.19.3(@vercel/node@3.1.0)
+ '@vercel/node':
+ specifier: 3.1.0
+ version: 3.1.0
+ '@vercel/remix':
+ specifier: 2.9.1
+ version: 2.9.1(@remix-run/dev@2.9.1(@remix-run/react@2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@remix-run/serve@2.9.1(typescript@5.4.5))(@types/node@20.12.10)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))(typescript@5.4.5))(@remix-run/node@2.9.1(typescript@5.4.5))(@remix-run/server-runtime@2.9.1(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ esbuild:
+ specifier: 0.21.1
+ version: 0.21.1
+ feed:
+ specifier: 4.2.2
+ version: 4.2.2
+ flat:
+ specifier: 6.0.1
+ version: 6.0.1
+ highlight.js:
+ specifier: 11.9.0
+ version: 11.9.0
+ http-status-codes:
+ specifier: 2.3.0
+ version: 2.3.0
+ isbot:
+ specifier: 5.1.6
+ version: 5.1.6
+ mdx-bundler:
+ specifier: 10.0.2
+ version: 10.0.2(esbuild@0.21.1)
+ react:
+ specifier: 18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: 18.3.1
+ version: 18.3.1(react@18.3.1)
+ react-intl:
+ specifier: 6.6.6
+ version: 6.6.6(react@18.3.1)(typescript@5.4.5)
+ react-toastify:
+ specifier: 10.0.5
+ version: 10.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ tiny-invariant:
+ specifier: 1.3.3
+ version: 1.3.3
+ devDependencies:
+ '@remix-run/dev':
+ specifier: 2.9.1
+ version: 2.9.1(@remix-run/react@2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@remix-run/serve@2.9.1(typescript@5.4.5))(@types/node@20.12.10)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))(typescript@5.4.5)
+ '@testing-library/react':
+ specifier: 15.0.7
+ version: 15.0.7(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@types/flat':
+ specifier: 5.0.5
+ version: 5.0.5
+ '@types/node':
+ specifier: 20.12.10
+ version: 20.12.10
+ '@types/react':
+ specifier: 18.3.1
+ version: 18.3.1
+ '@types/react-dom':
+ specifier: 18.3.0
+ version: 18.3.0
+ '@typescript-eslint/eslint-plugin':
+ specifier: 7.8.0
+ version: 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/parser':
+ specifier: 7.8.0
+ version: 7.8.0(eslint@8.57.0)(typescript@5.4.5)
+ '@vitest/coverage-v8':
+ specifier: 0.34.6
+ version: 0.34.6(vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0))
+ autoprefixer:
+ specifier: 10.4.19
+ version: 10.4.19(postcss@8.4.38)
+ concurrently:
+ specifier: 8.2.2
+ version: 8.2.2
+ dotenv:
+ specifier: 16.4.5
+ version: 16.4.5
+ dotenv-cli:
+ specifier: 7.4.2
+ version: 7.4.2
+ esbuild-register:
+ specifier: 3.5.0
+ version: 3.5.0(esbuild@0.21.1)
+ eslint:
+ specifier: 8.57.0
+ version: 8.57.0
+ eslint-config-prettier:
+ specifier: 9.1.0
+ version: 9.1.0(eslint@8.57.0)
+ eslint-plugin-formatjs:
+ specifier: 4.13.1
+ version: 4.13.1(eslint@8.57.0)
+ eslint-plugin-jsx-a11y:
+ specifier: 6.8.0
+ version: 6.8.0(eslint@8.57.0)
+ eslint-plugin-prefer-arrow:
+ specifier: 1.2.3
+ version: 1.2.3(eslint@8.57.0)
+ eslint-plugin-prettier:
+ specifier: 5.1.3
+ version: 5.1.3(@types/eslint@8.40.0)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5)
+ eslint-plugin-react:
+ specifier: 7.34.1
+ version: 7.34.1(eslint@8.57.0)
+ eslint-plugin-vitest:
+ specifier: 0.3.10
+ version: 0.3.10(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)(vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0))
+ husky:
+ specifier: 9.0.11
+ version: 9.0.11
+ jsdom:
+ specifier: 24.0.0
+ version: 24.0.0
+ msw:
+ specifier: 2.3.0
+ version: 2.3.0(typescript@5.4.5)
+ postcss:
+ specifier: 8.4.38
+ version: 8.4.38
+ prettier:
+ specifier: 3.2.5
+ version: 3.2.5
+ prettier-plugin-organize-imports:
+ specifier: 3.2.4
+ version: 3.2.4(prettier@3.2.5)(typescript@5.4.5)
+ prettier-plugin-tailwindcss:
+ specifier: 0.5.14
+ version: 0.5.14(prettier-plugin-organize-imports@3.2.4(prettier@3.2.5)(typescript@5.4.5))(prettier@3.2.5)
+ prisma:
+ specifier: 5.13.0
+ version: 5.13.0
+ tailwindcss:
+ specifier: 3.4.3
+ version: 3.4.3(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))
+ ts-node:
+ specifier: 10.9.2
+ version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5)
+ typescript:
+ specifier: 5.4.5
+ version: 5.4.5
+ vite-tsconfig-paths:
+ specifier: 4.3.2
+ version: 4.3.2(typescript@5.4.5)
+ vitest:
+ specifier: 0.34.6
+ version: 0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0)
+ vitest-dom:
+ specifier: 0.1.1
+ version: 0.1.1(vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0))
+
+packages:
+
+ '@aashutoshrathi/word-wrap@1.2.6':
+ resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
+ engines: {node: '>=0.10.0'}
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ '@ampproject/remapping@2.2.1':
+ resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+ engines: {node: '>=6.0.0'}
+
+ '@babel/code-frame@7.22.13':
+ resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.22.3':
+ resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.22.1':
+ resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.23.0':
+ resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.18.6':
+ resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.22.1':
+ resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-create-class-features-plugin@7.22.1':
+ resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-environment-visitor@7.22.20':
+ resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-function-name@7.23.0':
+ resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-hoist-variables@7.22.5':
+ resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-member-expression-to-functions@7.22.3':
+ resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.21.4':
+ resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.22.1':
+ resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-optimise-call-expression@7.18.6':
+ resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.22.5':
+ resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.22.1':
+ resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-simple-access@7.21.5':
+ resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.20.0':
+ resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-split-export-declaration@7.22.6':
+ resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.22.5':
+ resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.22.20':
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.21.0':
+ resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.22.3':
+ resolution: {integrity: sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/highlight@7.22.20':
+ resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.23.0':
+ resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-decorators@7.22.10':
+ resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-jsx@7.21.4':
+ resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.21.4':
+ resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-commonjs@7.21.5':
+ resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.22.3':
+ resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/preset-typescript@7.21.5':
+ resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.23.2':
+ resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.22.15':
+ resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.23.2':
+ resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.23.0':
+ resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
+ engines: {node: '>=6.9.0'}
+
+ '@bcoe/v8-coverage@0.2.3':
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ '@bundled-es-modules/cookie@2.0.0':
+ resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==}
+
+ '@bundled-es-modules/statuses@1.0.1':
+ resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==}
+
+ '@cspotcode/source-map-support@0.8.1':
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+
+ '@edge-runtime/format@2.2.1':
+ resolution: {integrity: sha512-JQTRVuiusQLNNLe2W9tnzBlV/GvSVcozLl4XZHk5swnRZ/v6jp8TqR8P7sqmJsQqblDZ3EztcWmLDbhRje/+8g==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/node-utils@2.3.0':
+ resolution: {integrity: sha512-uUtx8BFoO1hNxtHjp3eqVPC/mWImGb2exOfGjMLUoipuWgjej+f4o/VP4bUI8U40gu7Teogd5VTeZUkGvJSPOQ==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/ponyfill@2.4.2':
+ resolution: {integrity: sha512-oN17GjFr69chu6sDLvXxdhg0Qe8EZviGSuqzR9qOiKh4MhFYGdBBcqRNzdmYeAdeRzOW2mM9yil4RftUQ7sUOA==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/primitives@4.1.0':
+ resolution: {integrity: sha512-Vw0lbJ2lvRUqc7/soqygUX216Xb8T3WBZ987oywz6aJqRxcwSVWwr9e+Nqo2m9bxobA9mdbWNNoRY6S9eko1EQ==}
+ engines: {node: '>=16'}
+
+ '@edge-runtime/vm@3.2.0':
+ resolution: {integrity: sha512-0dEVyRLM/lG4gp1R/Ik5bfPl/1wX00xFwd5KcNH602tzBa09oF7pbTKETEhR1GjZ75K6OJnYFu8II2dyMhONMw==}
+ engines: {node: '>=16'}
+
+ '@emotion/hash@0.9.1':
+ resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
+
+ '@esbuild-plugins/node-resolve@0.2.2':
+ resolution: {integrity: sha512-+t5FdX3ATQlb53UFDBRb4nqjYBz492bIrnVWvpQHpzZlu9BQL5HasMZhqc409ygUwOWCXZhrWr6NyZ6T6Y+cxw==}
+ peerDependencies:
+ esbuild: '*'
+
+ '@esbuild/aix-ppc64@0.21.1':
+ resolution: {integrity: sha512-O7yppwipkXvnEPjzkSXJRk2g4bS8sUx9p9oXHq9MU/U7lxUzZVsnFZMDTmeeX9bfQxrFcvOacl/ENgOh0WP9pA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.17.19':
+ resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.17.6':
+ resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.21.1':
+ resolution: {integrity: sha512-jXhccq6es+onw7x8MxoFnm820mz7sGa9J14kLADclmiEUH4fyj+FjR6t0M93RgtlI/awHWhtF0Wgfhqgf9gDZA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.17.19':
+ resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.17.6':
+ resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.21.1':
+ resolution: {integrity: sha512-hh3jKWikdnTtHCglDAeVO3Oyh8MaH8xZUaWMiCCvJ9/c3NtPqZq+CACOlGTxhddypXhl+8B45SeceYBfB/e8Ow==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.17.19':
+ resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.17.6':
+ resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.1':
+ resolution: {integrity: sha512-NPObtlBh4jQHE01gJeucqEhdoD/4ya2owSIS8lZYS58aR0x7oZo9lB2lVFxgTANSa5MGCBeoQtr+yA9oKCGPvA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.17.19':
+ resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.17.6':
+ resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.21.1':
+ resolution: {integrity: sha512-BLT7TDzqsVlQRmJfO/FirzKlzmDpBWwmCUlyggfzUwg1cAxVxeA4O6b1XkMInlxISdfPAOunV9zXjvh5x99Heg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.17.19':
+ resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.17.6':
+ resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.21.1':
+ resolution: {integrity: sha512-D3h3wBQmeS/vp93O4B+SWsXB8HvRDwMyhTNhBd8yMbh5wN/2pPWRW5o/hM3EKgk9bdKd9594lMGoTCTiglQGRQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.17.19':
+ resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.17.6':
+ resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.21.1':
+ resolution: {integrity: sha512-/uVdqqpNKXIxT6TyS/oSK4XE4xWOqp6fh4B5tgAwozkyWdylcX+W4YF2v6SKsL4wCQ5h1bnaSNjWPXG/2hp8AQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.17.19':
+ resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.17.6':
+ resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.21.1':
+ resolution: {integrity: sha512-paAkKN1n1jJitw+dAoR27TdCzxRl1FOEITx3h201R6NoXUojpMzgMLdkXVgCvaCSCqwYkeGLoe9UVNRDKSvQgw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.17.19':
+ resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.17.6':
+ resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.21.1':
+ resolution: {integrity: sha512-G65d08YoH00TL7Xg4LaL3gLV21bpoAhQ+r31NUu013YB7KK0fyXIt05VbsJtpqh/6wWxoLJZOvQHYnodRrnbUQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.17.19':
+ resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.17.6':
+ resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.21.1':
+ resolution: {integrity: sha512-tRHnxWJnvNnDpNVnsyDhr1DIQZUfCXlHSCDohbXFqmg9W4kKR7g8LmA3kzcwbuxbRMKeit8ladnCabU5f2traA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.17.19':
+ resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.17.6':
+ resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.1':
+ resolution: {integrity: sha512-tt/54LqNNAqCz++QhxoqB9+XqdsaZOtFD/srEhHYwBd3ZUOepmR1Eeot8bS+Q7BiEvy9vvKbtpHf+r6q8hF5UA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.17.19':
+ resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.17.6':
+ resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.21.1':
+ resolution: {integrity: sha512-MhNalK6r0nZD0q8VzUBPwheHzXPr9wronqmZrewLfP7ui9Fv1tdPmg6e7A8lmg0ziQCziSDHxh3cyRt4YMhGnQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.17.19':
+ resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.17.6':
+ resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.21.1':
+ resolution: {integrity: sha512-YCKVY7Zen5rwZV+nZczOhFmHaeIxR4Zn3jcmNH53LbgF6IKRwmrMywqDrg4SiSNApEefkAbPSIzN39FC8VsxPg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.17.19':
+ resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.17.6':
+ resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.21.1':
+ resolution: {integrity: sha512-bw7bcQ+270IOzDV4mcsKAnDtAFqKO0jVv3IgRSd8iM0ac3L8amvCrujRVt1ajBTJcpDaFhIX+lCNRKteoDSLig==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.17.19':
+ resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.17.6':
+ resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.21.1':
+ resolution: {integrity: sha512-ARmDRNkcOGOm1AqUBSwRVDfDeD9hGYRfkudP2QdoonBz1ucWVnfBPfy7H4JPI14eYtZruRSczJxyu7SRYDVOcg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.17.19':
+ resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.17.6':
+ resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.1':
+ resolution: {integrity: sha512-o73TcUNMuoTZlhwFdsgr8SfQtmMV58sbgq6gQq9G1xUiYnHMTmJbwq65RzMx89l0iya69lR4bxBgtWiiOyDQZA==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.17.19':
+ resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.17.6':
+ resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.1':
+ resolution: {integrity: sha512-da4/1mBJwwgJkbj4fMH7SOXq2zapgTo0LKXX1VUZ0Dxr+e8N0WbS80nSZ5+zf3lvpf8qxrkZdqkOqFfm57gXwA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.17.19':
+ resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.17.6':
+ resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.21.1':
+ resolution: {integrity: sha512-CPWs0HTFe5woTJN5eKPvgraUoRHrCtzlYIAv9wBC+FAyagBSaf+UdZrjwYyTGnwPGkThV4OCI7XibZOnPvONVw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.17.19':
+ resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.17.6':
+ resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.21.1':
+ resolution: {integrity: sha512-xxhTm5QtzNLc24R0hEkcH+zCx/o49AsdFZ0Cy5zSd/5tOj4X2g3/2AJB625NoadUuc4A8B3TenLJoYdWYOYCew==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.17.19':
+ resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.17.6':
+ resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.21.1':
+ resolution: {integrity: sha512-CWibXszpWys1pYmbr9UiKAkX6x+Sxw8HWtw1dRESK1dLW5fFJ6rMDVw0o8MbadusvVQx1a8xuOxnHXT941Hp1A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.17.19':
+ resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.17.6':
+ resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.21.1':
+ resolution: {integrity: sha512-jb5B4k+xkytGbGUS4T+Z89cQJ9DJ4lozGRSV+hhfmCPpfJ3880O31Q1srPCimm+V6UCbnigqD10EgDNgjvjerQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.17.19':
+ resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.17.6':
+ resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.21.1':
+ resolution: {integrity: sha512-PgyFvjJhXqHn1uxPhyN1wZ6dIomKjiLUQh1LjFvjiV1JmnkZ/oMPrfeEAZg5R/1ftz4LZWZr02kefNIQ5SKREQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.17.19':
+ resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.17.6':
+ resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.21.1':
+ resolution: {integrity: sha512-W9NttRZQR5ehAiqHGDnvfDaGmQOm6Fi4vSlce8mjM75x//XKuVAByohlEX6N17yZnVXxQFuh4fDRunP8ca6bfA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.4.0':
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.10.0':
+ resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint-community/regexpp@4.8.0':
+ resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/js@8.57.0':
+ resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@fal-works/esbuild-plugin-global-externals@2.1.2':
+ resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==}
+
+ '@fastify/busboy@2.0.0':
+ resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
+ engines: {node: '>=14'}
+
+ '@fontsource/inter@5.0.18':
+ resolution: {integrity: sha512-YCsoYPTcs713sI7tLtxaPrIhXAXvEetGg5Ry02ivA8qUOb3fQHojbK/X9HLD5OOKvFUNR2Ynkwb1kR1hVKQHpw==}
+
+ '@fontsource/merriweather@5.0.13':
+ resolution: {integrity: sha512-V/UsU+5yceDICBUJJXWCT+6xf5YpLIVUHfUjBQ+NNbllIhe3zaVZ1f3t5+fNKwvBzKBDa3RNMCofAdW7uzw08Q==}
+
+ '@formatjs/ecma402-abstract@1.18.2':
+ resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==}
+
+ '@formatjs/fast-memoize@2.2.0':
+ resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
+
+ '@formatjs/icu-messageformat-parser@2.7.6':
+ resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==}
+
+ '@formatjs/icu-skeleton-parser@1.8.0':
+ resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==}
+
+ '@formatjs/intl-displaynames@6.6.6':
+ resolution: {integrity: sha512-Dg5URSjx0uzF8VZXtHb6KYZ6LFEEhCbAbKoYChYHEOnMFTw/ZU3jIo/NrujzQD2EfKPgQzIq73LOUvW6Z/LpFA==}
+
+ '@formatjs/intl-listformat@7.5.5':
+ resolution: {integrity: sha512-XoI52qrU6aBGJC9KJddqnacuBbPlb/bXFN+lIFVFhQ1RnFHpzuFrlFdjD9am2O7ZSYsyqzYRpkVcXeT1GHkwDQ==}
+
+ '@formatjs/intl-localematcher@0.5.4':
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+
+ '@formatjs/intl@2.10.2':
+ resolution: {integrity: sha512-raPGWr3JRv3neXV78SqPFrGC05fIbhhNzVghHNxFde27ls2KkXiMhtP7HBybjGpikVSjjhdhaZto+4p1vmm9bQ==}
+ peerDependencies:
+ typescript: ^4.7 || 5
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@formatjs/ts-transformer@3.13.12':
+ resolution: {integrity: sha512-uf1+DgbsCrzHAg7uIf0QlzpIkHYxRSRig5iJa9FaoUNIDZzNEE2oW/uLLLq7I9Z2FLIPhbmgq8hbW40FoQv+Fg==}
+ peerDependencies:
+ ts-jest: '>=27'
+ peerDependenciesMeta:
+ ts-jest:
+ optional: true
+
+ '@humanwhocodes/config-array@0.11.14':
+ resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
+ engines: {node: '>=10.10.0'}
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/object-schema@2.0.2':
+ resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
+
+ '@inquirer/confirm@3.0.0':
+ resolution: {integrity: sha512-LHeuYP1D8NmQra1eR4UqvZMXwxEdDXyElJmmZfU44xdNLL6+GcQBS0uE16vyfZVjH8c22p9e+DStROfE/hyHrg==}
+ engines: {node: '>=18'}
+
+ '@inquirer/core@7.0.0':
+ resolution: {integrity: sha512-g13W5yEt9r1sEVVriffJqQ8GWy94OnfxLCreNSOTw0HPVcszmc/If1KIf7YBmlwtX4klmvwpZHnQpl3N7VX2xA==}
+ engines: {node: '>=18'}
+
+ '@inquirer/type@1.2.0':
+ resolution: {integrity: sha512-/vvkUkYhrjbm+RolU7V1aUFDydZVKNKqKHR5TsE+j5DXgXFwrsOPcoGUJ02K0O7q7O53CU2DOTMYCHeGZ25WHA==}
+ engines: {node: '>=18'}
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@istanbuljs/schema@0.1.3':
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ '@jest/schemas@29.6.0':
+ resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jridgewell/gen-mapping@0.3.3':
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.0':
+ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.1':
+ resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.1.2':
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.4.14':
+ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+
+ '@jridgewell/sourcemap-codec@1.4.15':
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+
+ '@jridgewell/trace-mapping@0.3.18':
+ resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
+
+ '@jridgewell/trace-mapping@0.3.9':
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+
+ '@jspm/core@2.0.1':
+ resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==}
+
+ '@mapbox/node-pre-gyp@1.0.11':
+ resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
+ hasBin: true
+
+ '@mdx-js/esbuild@3.0.0':
+ resolution: {integrity: sha512-hQaYb1jI0tojPlvHi+dwOKLHQxl9oczY8zZfat8ANfYZ9zgPGJXUU+SMBruZnd4ij34/l9BQPHEwTxTUQ7s9hw==}
+ peerDependencies:
+ esbuild: '>=0.14.0'
+
+ '@mdx-js/mdx@2.3.0':
+ resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==}
+
+ '@mdx-js/mdx@3.0.0':
+ resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==}
+
+ '@mswjs/cookies@1.1.0':
+ resolution: {integrity: sha512-0ZcCVQxifZmhwNBoQIrystCb+2sWBY2Zw8lpfJBPCHGCA/HWqehITeCRVIv4VMy8MPlaHo2w2pTHFV2pFfqKPw==}
+ engines: {node: '>=18'}
+
+ '@mswjs/interceptors@0.29.1':
+ resolution: {integrity: sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==}
+ engines: {node: '>=18'}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@npmcli/fs@3.1.0':
+ resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ '@npmcli/git@4.1.0':
+ resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ '@npmcli/package-json@4.0.1':
+ resolution: {integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ '@npmcli/promise-spawn@6.0.2':
+ resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ '@octokit/auth-token@4.0.0':
+ resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
+ engines: {node: '>= 18'}
+
+ '@octokit/core@5.2.0':
+ resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==}
+ engines: {node: '>= 18'}
+
+ '@octokit/endpoint@9.0.5':
+ resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==}
+ engines: {node: '>= 18'}
+
+ '@octokit/graphql@7.1.0':
+ resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==}
+ engines: {node: '>= 18'}
+
+ '@octokit/openapi-types@22.0.1':
+ resolution: {integrity: sha512-1yN5m1IMNXthoBDUXFF97N1gHop04B3H8ws7wtOr8GgRyDO1gKALjwMHARNBoMBiB/2vEe/vxstrApcJZzQbnQ==}
+
+ '@octokit/openapi-types@22.2.0':
+ resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
+
+ '@octokit/plugin-paginate-rest@11.3.1':
+ resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '5'
+
+ '@octokit/plugin-request-log@4.0.0':
+ resolution: {integrity: sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': '>=5'
+
+ '@octokit/plugin-rest-endpoint-methods@13.2.2':
+ resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ '@octokit/core': ^5
+
+ '@octokit/request-error@5.1.0':
+ resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==}
+ engines: {node: '>= 18'}
+
+ '@octokit/request@8.4.0':
+ resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==}
+ engines: {node: '>= 18'}
+
+ '@octokit/rest@20.1.1':
+ resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==}
+ engines: {node: '>= 18'}
+
+ '@octokit/types@13.3.0':
+ resolution: {integrity: sha512-L0Jd3e0FWSPNTmqtqiS61K4Qd9r9iAOCtqo1B12z/qe+KDjXvQF5FngLqSWzJ748lFfaPItjsv4+36dA4KrPVA==}
+
+ '@octokit/types@13.5.0':
+ resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==}
+
+ '@open-draft/deferred-promise@2.2.0':
+ resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==}
+
+ '@open-draft/logger@0.3.0':
+ resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==}
+
+ '@open-draft/until@2.1.0':
+ resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@pkgr/core@0.1.1':
+ resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
+ '@prisma/client@5.13.0':
+ resolution: {integrity: sha512-uYdfpPncbZ/syJyiYBwGZS8Gt1PTNoErNYMuqHDa2r30rNSFtgTA/LXsSk55R7pdRTMi5pHkeP9B14K6nHmwkg==}
+ engines: {node: '>=16.13'}
+ peerDependencies:
+ prisma: '*'
+ peerDependenciesMeta:
+ prisma:
+ optional: true
+
+ '@prisma/debug@5.13.0':
+ resolution: {integrity: sha512-699iqlEvzyCj9ETrXhs8o8wQc/eVW+FigSsHpiskSFydhjVuwTJEfj/nIYqTaWFYuxiWQRfm3r01meuW97SZaQ==}
+
+ '@prisma/engines-version@5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b':
+ resolution: {integrity: sha512-AyUuhahTINGn8auyqYdmxsN+qn0mw3eg+uhkp8zwknXYIqoT3bChG4RqNY/nfDkPvzWAPBa9mrDyBeOnWSgO6A==}
+
+ '@prisma/engines@5.13.0':
+ resolution: {integrity: sha512-hIFLm4H1boj6CBZx55P4xKby9jgDTeDG0Jj3iXtwaaHmlD5JmiDkZhh8+DYWkTGchu+rRF36AVROLnk0oaqhHw==}
+
+ '@prisma/fetch-engine@5.13.0':
+ resolution: {integrity: sha512-Yh4W+t6YKyqgcSEB3odBXt7QyVSm0OQlBSldQF2SNXtmOgMX8D7PF/fvH6E6qBCpjB/yeJLy/FfwfFijoHI6sA==}
+
+ '@prisma/get-platform@5.13.0':
+ resolution: {integrity: sha512-B/WrQwYTzwr7qCLifQzYOmQhZcFmIFhR81xC45gweInSUn2hTEbfKUPd2keAog+y5WI5xLAFNJ3wkXplvSVkSw==}
+
+ '@react-icons/all-files@4.1.0':
+ resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==}
+ peerDependencies:
+ react: '*'
+
+ '@remix-run/css-bundle@2.9.1':
+ resolution: {integrity: sha512-M1Nm3oOBKg6Kozb17CFR7hYfrJ+jp6lgBnwNmmRk5QZnz1fyiRU8Po8EZ3muLlBeEsu7KqiYlrH8UeWtSAXKEg==}
+ engines: {node: '>=18.0.0'}
+
+ '@remix-run/dev@2.9.1':
+ resolution: {integrity: sha512-/YhegnnRrarsqU+11+HdGwjcIT1KgkS9L7kWCM0+ivDvyiBYAuI6xbPG/q/FY6LqLAPYeOxsJmUNl+aj+yMltA==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+ peerDependencies:
+ '@remix-run/react': ^2.9.1
+ '@remix-run/serve': ^2.9.1
+ typescript: ^5.1.0
+ vite: ^5.1.0
+ wrangler: ^3.28.2
+ peerDependenciesMeta:
+ '@remix-run/serve':
+ optional: true
+ typescript:
+ optional: true
+ vite:
+ optional: true
+ wrangler:
+ optional: true
+
+ '@remix-run/express@2.9.1':
+ resolution: {integrity: sha512-Q0U0oxINSk1t3HdvGnnHOa4M0iT9KlhBEN3JeCpc6BxIXovjceMUOOw0TTcgw8GmpXWaWO/p6vM/w4YZqb0KLg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ express: ^4.17.1
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@remix-run/node@1.19.3':
+ resolution: {integrity: sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==}
+ engines: {node: '>=14.0.0'}
+
+ '@remix-run/node@2.9.1':
+ resolution: {integrity: sha512-shicVsSmXepj4zotWHR2kLmyYCxQ25mHmfBL11ODIcIs7iSmQO+W7CNbmX1jcRvhHki/v+S/n4fMm0iKNeJ92w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@remix-run/react@2.9.1':
+ resolution: {integrity: sha512-QQVZPS56okvDF3FBuGBjyKuYa6bXZvXFFlYeWfngI8ZnDbCzQLKV1oD0FWMhKuQxMaKs25uWg2YwGqwWTdin3w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@remix-run/router@1.16.0':
+ resolution: {integrity: sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q==}
+ engines: {node: '>=14.0.0'}
+
+ '@remix-run/router@1.7.2':
+ resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==}
+ engines: {node: '>=14'}
+
+ '@remix-run/serve@2.9.1':
+ resolution: {integrity: sha512-NtxfJqJFtBrSM+GjdBs+pqcbzZfeCVm0l67OUm+THHLHHFWsxndbqWX2nSSYacWNnGu+O2gNiBDzxyOE8/aElA==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
+ '@remix-run/server-runtime@1.19.3':
+ resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==}
+ engines: {node: '>=14.0.0'}
+
+ '@remix-run/server-runtime@2.9.1':
+ resolution: {integrity: sha512-6rRPiR+eMdTPkDojlYiZohVzXkD3+3X55ZvD78axMVocwGcDFFllpmgH9NSR2RKHW9eZDZUfKvNCwd/i9W6Xog==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@remix-run/vercel@1.19.3':
+ resolution: {integrity: sha512-LoWffUns8u9oqOHSvZtH0LMXWm4NuZ2hUldLx7TAw19lfif1liwa8WrqxRyMItuUp1xEo6shTDCNEUNdQtsEGg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@vercel/node': ^1.8.3 || ^2.4.0
+
+ '@remix-run/web-blob@3.1.0':
+ resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==}
+
+ '@remix-run/web-fetch@4.4.2':
+ resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==}
+ engines: {node: ^10.17 || >=12.3}
+
+ '@remix-run/web-file@3.0.3':
+ resolution: {integrity: sha512-yPf6MSXNcaQ4H1vkT/TSgImnqqfvfVKZzjd0vz3wvR0MM1NmrYfLbSbwfFLXdESFnQpXItbyKsgYGeAUEawgBg==}
+
+ '@remix-run/web-file@3.1.0':
+ resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==}
+
+ '@remix-run/web-form-data@3.1.0':
+ resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==}
+
+ '@remix-run/web-stream@1.0.4':
+ resolution: {integrity: sha512-SVO42pH21I1sAhksGEM8ZBV/jc1mz6knZSg6Qo/2HPy9JTvtUykm3QMHtF2OMCTUXxdRW+4E/rphkPRyGc8WKw==}
+
+ '@remix-run/web-stream@1.1.0':
+ resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==}
+
+ '@rollup/pluginutils@4.2.1':
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+
+ '@sinclair/typebox@0.27.8':
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ '@testing-library/dom@10.0.0':
+ resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==}
+ engines: {node: '>=18'}
+
+ '@testing-library/react@15.0.7':
+ resolution: {integrity: sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/react': ^18.0.0
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@ts-morph/common@0.11.1':
+ resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==}
+
+ '@tsconfig/node10@1.0.9':
+ resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
+
+ '@tsconfig/node12@1.0.11':
+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
+
+ '@tsconfig/node14@1.0.3':
+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
+
+ '@tsconfig/node16@1.0.4':
+ resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
+
+ '@types/acorn@4.0.6':
+ resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
+
+ '@types/aria-query@5.0.1':
+ resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==}
+
+ '@types/chai-subset@1.3.3':
+ resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==}
+
+ '@types/chai@4.3.5':
+ resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==}
+
+ '@types/cookie@0.4.1':
+ resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==}
+
+ '@types/cookie@0.6.0':
+ resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+
+ '@types/debug@4.1.8':
+ resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
+
+ '@types/eslint@8.40.0':
+ resolution: {integrity: sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==}
+
+ '@types/estree-jsx@1.0.0':
+ resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==}
+
+ '@types/estree@1.0.1':
+ resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
+
+ '@types/flat@5.0.5':
+ resolution: {integrity: sha512-nPLljZQKSnac53KDUDzuzdRfGI0TDb5qPrb+SrQyN3MtdQrOnGsKniHN1iYZsJEBIVQve94Y6gNz22sgISZq+Q==}
+
+ '@types/hast@2.3.4':
+ resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
+
+ '@types/hast@3.0.3':
+ resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==}
+
+ '@types/hoist-non-react-statics@3.3.1':
+ resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
+
+ '@types/istanbul-lib-coverage@2.0.4':
+ resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/json-stable-stringify@1.0.34':
+ resolution: {integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==}
+
+ '@types/mdast@3.0.11':
+ resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==}
+
+ '@types/mdast@4.0.3':
+ resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
+
+ '@types/mdx@2.0.5':
+ resolution: {integrity: sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==}
+
+ '@types/ms@0.7.31':
+ resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
+
+ '@types/mute-stream@0.0.4':
+ resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==}
+
+ '@types/node@14.18.33':
+ resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==}
+
+ '@types/node@16.18.11':
+ resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==}
+
+ '@types/node@20.12.10':
+ resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==}
+
+ '@types/picomatch@2.3.0':
+ resolution: {integrity: sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==}
+
+ '@types/prop-types@15.7.5':
+ resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
+
+ '@types/react-dom@18.3.0':
+ resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+
+ '@types/react@18.3.1':
+ resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==}
+
+ '@types/resolve@1.20.2':
+ resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
+
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ '@types/statuses@2.0.4':
+ resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==}
+
+ '@types/unist@2.0.6':
+ resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
+
+ '@types/unist@3.0.2':
+ resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
+
+ '@types/wrap-ansi@3.0.0':
+ resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==}
+
+ '@typescript-eslint/eslint-plugin@7.8.0':
+ resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^7.0.0
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/parser@7.8.0':
+ resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/scope-manager@6.11.0':
+ resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/scope-manager@6.21.0':
+ resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/scope-manager@7.8.0':
+ resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@typescript-eslint/type-utils@7.8.0':
+ resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/types@6.11.0':
+ resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/types@6.21.0':
+ resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/types@7.8.0':
+ resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@typescript-eslint/typescript-estree@6.11.0':
+ resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/typescript-estree@6.21.0':
+ resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/typescript-estree@7.8.0':
+ resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/utils@6.11.0':
+ resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+
+ '@typescript-eslint/utils@6.21.0':
+ resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+
+ '@typescript-eslint/utils@7.8.0':
+ resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+
+ '@typescript-eslint/visitor-keys@6.11.0':
+ resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/visitor-keys@6.21.0':
+ resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ '@typescript-eslint/visitor-keys@7.8.0':
+ resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+
+ '@ungap/structured-clone@1.2.0':
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ '@vanilla-extract/babel-plugin-debug-ids@1.0.3':
+ resolution: {integrity: sha512-vm4jYu1xhSa6ofQ9AhIpR3DkAp4c+eoR1Rpm8/TQI4DmWbmGbOjYRcqV0aWsfaIlNhN4kFuxFMKBNN9oG6iRzA==}
+
+ '@vanilla-extract/css@1.11.0':
+ resolution: {integrity: sha512-uohj+8cGWbnrVzTfrjlJeXqdGjH3d3TcscdQxKe3h5bb5QQXTpPSq+c+SeWADIGiZybzcW0CBvZV8jsy1ywY9w==}
+
+ '@vanilla-extract/integration@6.2.1':
+ resolution: {integrity: sha512-+xYJz07G7TFAMZGrOqArOsURG+xcYvqctujEkANjw2McCBvGEK505RxQqOuNiA9Mi9hgGdNp2JedSa94f3eoLg==}
+
+ '@vanilla-extract/private@1.0.3':
+ resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==}
+
+ '@vercel/build-utils@8.0.0':
+ resolution: {integrity: sha512-6vOiAVFA/Uu4+uV3f751rcXgfKVHrgBQFKXwvPTczl1q0djvCHsQDngl1ccu1NSyWSzdem3YhhDkLOUMHLN3xA==}
+
+ '@vercel/error-utils@2.0.2':
+ resolution: {integrity: sha512-Sj0LFafGpYr6pfCqrQ82X6ukRl5qpmVrHM/191kNYFqkkB9YkjlMAj6QcEsvCG259x4QZ7Tya++0AB85NDPbKQ==}
+
+ '@vercel/nft@0.26.4':
+ resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ '@vercel/node@3.1.0':
+ resolution: {integrity: sha512-Ghx663fSKJoe9NxjEU9i5d9+QcPPEw4HWkSThCCO9OK0Ov2KdeZEBcfZe8OYLiFDY10LN0EPe2Ur3NmofcwyNA==}
+
+ '@vercel/remix@2.9.1':
+ resolution: {integrity: sha512-S65PDKlkpR9sYMHxNRZsxHHuiEenupg0rKs1YIV2R3j51rwFFcgFcvbbGIckQqUmwy2Wne7jONokuPe4WxFcyQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@remix-run/dev': 2.9.1
+ '@remix-run/node': 2.9.1
+ '@remix-run/server-runtime': 2.9.1
+ react: '*'
+ react-dom: '*'
+
+ '@vercel/static-config@3.0.0':
+ resolution: {integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==}
+
+ '@vitest/coverage-v8@0.34.6':
+ resolution: {integrity: sha512-fivy/OK2d/EsJFoEoxHFEnNGTg+MmdZBAVK9Ka4qhXR2K3J0DS08vcGVwzDtXSuUMabLv4KtPcpSKkcMXFDViw==}
+ peerDependencies:
+ vitest: '>=0.32.0 <1'
+
+ '@vitest/expect@0.34.6':
+ resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==}
+
+ '@vitest/runner@0.34.6':
+ resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==}
+
+ '@vitest/snapshot@0.34.6':
+ resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==}
+
+ '@vitest/spy@0.34.6':
+ resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==}
+
+ '@vitest/utils@0.34.6':
+ resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==}
+
+ '@web3-storage/multipart-parser@1.0.0':
+ resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==}
+
+ '@zxing/text-encoding@0.9.0':
+ resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==}
+
+ abbrev@1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn-import-attributes@1.9.2:
+ resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==}
+ peerDependencies:
+ acorn: ^8
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn-walk@8.2.0:
+ resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@8.10.0:
+ resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ agent-base@7.1.0:
+ resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
+ engines: {node: '>= 14'}
+
+ aggregate-error@3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+
+ ahocorasick@1.0.2:
+ resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==}
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ajv@8.6.3:
+ resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==}
+
+ ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ aproba@2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
+
+ are-we-there-yet@2.0.0:
+ resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
+ engines: {node: '>=10'}
+
+ arg@4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
+ argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+
+ array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ array-includes@3.1.7:
+ resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
+ engines: {node: '>= 0.4'}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ array.prototype.findlast@1.2.4:
+ resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flat@1.3.2:
+ resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flatmap@1.3.2:
+ resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.toreversed@1.1.2:
+ resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==}
+
+ array.prototype.tosorted@1.1.3:
+ resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==}
+
+ arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+ engines: {node: '>= 0.4'}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
+ ast-types-flow@0.0.8:
+ resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+
+ astring@1.8.5:
+ resolution: {integrity: sha512-TuBbdn7jWVzf8dmFGTaRpW8qgANtWLi1qJLnkfGO5uVf6jf9f/F4B1H35tnOI+qVYZo3p3i8WZlbZOuPAE0wEA==}
+ hasBin: true
+
+ async-listen@3.0.0:
+ resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==}
+ engines: {node: '>= 14'}
+
+ async-listen@3.0.1:
+ resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==}
+ engines: {node: '>= 14'}
+
+ async-sema@3.1.1:
+ resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
+
+ asynciterator.prototype@1.0.0:
+ resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ autoprefixer@10.4.19:
+ resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ axe-core@4.7.0:
+ resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==}
+ engines: {node: '>=4'}
+
+ axobject-query@3.2.1:
+ resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
+
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ basic-auth@2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+
+ before-after-hook@2.2.3:
+ resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
+
+ binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
+ bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
+ body-parser@1.20.1:
+ resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+
+ browserify-zlib@0.1.4:
+ resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==}
+
+ browserslist@4.23.0:
+ resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ builtins@5.0.1:
+ resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
+
+ bytes@3.0.0:
+ resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
+ engines: {node: '>= 0.8'}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+
+ cacache@17.1.4:
+ resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+
+ caniuse-lite@1.0.30001599:
+ resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==}
+
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
+ chai@4.3.10:
+ resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
+ engines: {node: '>=4'}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+ character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
+ check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+
+ chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+
+ chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ cjs-module-lexer@1.2.3:
+ resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
+
+ clean-stack@2.2.0:
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
+
+ cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
+ cli-width@4.1.0:
+ resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
+ engines: {node: '>= 12'}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
+ clsx@2.1.0:
+ resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==}
+ engines: {node: '>=6'}
+
+ code-block-writer@10.1.1:
+ resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==}
+
+ collapse-white-space@2.1.0:
+ resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ color-support@1.1.3:
+ resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
+ hasBin: true
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
+ commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ compressible@2.0.18:
+ resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+ engines: {node: '>= 0.6'}
+
+ compression@1.7.4:
+ resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==}
+ engines: {node: '>= 0.8.0'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ concurrently@8.2.2:
+ resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
+ engines: {node: ^14.13.0 || >=16.0.0}
+ hasBin: true
+
+ console-control-strings@1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ convert-hrtime@3.0.0:
+ resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==}
+ engines: {node: '>=8'}
+
+ convert-source-map@1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie-signature@1.2.1:
+ resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==}
+ engines: {node: '>=6.6.0'}
+
+ cookie@0.4.2:
+ resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
+ engines: {node: '>= 0.6'}
+
+ cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+
+ cookie@0.6.0:
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ create-require@1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+
+ cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+
+ css-what@5.1.0:
+ resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==}
+ engines: {node: '>= 6'}
+
+ css.escape@1.5.1:
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ cssstyle@4.0.1:
+ resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
+ engines: {node: '>=18'}
+
+ csstype@3.1.2:
+ resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+
+ damerau-levenshtein@1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+
+ data-uri-to-buffer@3.0.1:
+ resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==}
+ engines: {node: '>= 6'}
+
+ data-urls@5.0.0:
+ resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
+ engines: {node: '>=18'}
+
+ date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decimal.js@10.4.3:
+ resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+
+ decode-named-character-reference@1.0.2:
+ resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+
+ deep-eql@4.1.3:
+ resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
+ engines: {node: '>=6'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ deep-object-diff@1.1.9:
+ resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==}
+
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ delegates@1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ deprecation@2.3.1:
+ resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ detect-libc@2.0.2:
+ resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
+ engines: {node: '>=8'}
+
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
+ didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
+ diff-sequences@29.4.3:
+ resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ diff@4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
+
+ diff@5.1.0:
+ resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
+ engines: {node: '>=0.3.1'}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ dom-accessibility-api@0.5.16:
+ resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+
+ dom-accessibility-api@0.6.1:
+ resolution: {integrity: sha512-WbiG8jCZESbcSwxLmbUiv3WZurc6H4opBIbBkBe/I3OSZvWCXXj+wxPueWodM/p4gegM1CqEr0iFY5DqyrncxA==}
+
+ dotenv-cli@7.4.2:
+ resolution: {integrity: sha512-SbUj8l61zIbzyhIbg0FwPJq6+wjbzdn9oEtozQpZ6kW2ihCcapKVZj49oCT3oPM+mgQm+itgvUQcG5szxVrZTA==}
+ hasBin: true
+
+ dotenv-expand@10.0.0:
+ resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==}
+ engines: {node: '>=12'}
+
+ dotenv@16.4.5:
+ resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+ engines: {node: '>=12'}
+
+ duplexify@3.7.1:
+ resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ edge-runtime@2.5.9:
+ resolution: {integrity: sha512-pk+k0oK0PVXdlT4oRp4lwh+unuKB7Ng4iZ2HB+EZ7QCEQizX360Rp/F4aRpgpRgdP2ufB35N+1KppHmYjqIGSg==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.4.680:
+ resolution: {integrity: sha512-4nToZ5jlPO14W82NkF32wyjhYqQByVaDmLy4J2/tYcAbJfgO2TKJC780Az1V13gzq4l73CJ0yuyalpXvxXXD9A==}
+
+ emoji-regex@10.3.0:
+ resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ err-code@2.0.3:
+ resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
+
+ es-abstract@1.22.5:
+ resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-iterator-helpers@1.0.15:
+ resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==}
+
+ es-iterator-helpers@1.0.17:
+ resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==}
+ engines: {node: '>= 0.4'}
+
+ es-module-lexer@1.4.1:
+ resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
+
+ es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+ engines: {node: '>= 0.4'}
+
+ es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+
+ es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+
+ esbuild-android-64@0.14.47:
+ resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ esbuild-android-arm64@0.14.47:
+ resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ esbuild-darwin-64@0.14.47:
+ resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ esbuild-darwin-arm64@0.14.47:
+ resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ esbuild-freebsd-64@0.14.47:
+ resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ esbuild-freebsd-arm64@0.14.47:
+ resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ esbuild-linux-32@0.14.47:
+ resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ esbuild-linux-64@0.14.47:
+ resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ esbuild-linux-arm64@0.14.47:
+ resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ esbuild-linux-arm@0.14.47:
+ resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ esbuild-linux-mips64le@0.14.47:
+ resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ esbuild-linux-ppc64le@0.14.47:
+ resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ esbuild-linux-riscv64@0.14.47:
+ resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ esbuild-linux-s390x@0.14.47:
+ resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ esbuild-netbsd-64@0.14.47:
+ resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ esbuild-openbsd-64@0.14.47:
+ resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ esbuild-plugins-node-modules-polyfill@1.6.1:
+ resolution: {integrity: sha512-6sAwI24PV8W0zxeO+i4BS5zoQypS3SzEGwIdxpzpy65riRuK8apMw8PN0aKVLCTnLr0FgNIxUMRd9BsreBrtog==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ esbuild: ^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0 || ^0.18.0 || ^0.19.0
+
+ esbuild-register@3.5.0:
+ resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==}
+ peerDependencies:
+ esbuild: '>=0.12 <1'
+
+ esbuild-sunos-64@0.14.47:
+ resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ esbuild-windows-32@0.14.47:
+ resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ esbuild-windows-64@0.14.47:
+ resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ esbuild-windows-arm64@0.14.47:
+ resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ esbuild@0.14.47:
+ resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.17.19:
+ resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.17.6:
+ resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ esbuild@0.21.1:
+ resolution: {integrity: sha512-GPqx+FX7mdqulCeQ4TsGZQ3djBJkx5k7zBGtqt9ycVlWNg8llJ4RO9n2vciu8BN2zAEs6lPbPl0asZsAh7oWzg==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ eslint-config-prettier@9.1.0:
+ resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
+ eslint-plugin-formatjs@4.13.1:
+ resolution: {integrity: sha512-QYXgrBYLwEcqN4Vvis18es1JFAY+6YAkjpyNmTZzAMpithZm9U7z6eWUD4gqFainWlk8cFKvkOOvSyQ4/LUgVA==}
+ peerDependencies:
+ eslint: 7 || 8
+
+ eslint-plugin-jsx-a11y@6.8.0:
+ resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+
+ eslint-plugin-prefer-arrow@1.2.3:
+ resolution: {integrity: sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==}
+ peerDependencies:
+ eslint: '>=2.0.0'
+
+ eslint-plugin-prettier@5.1.3:
+ resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ '@types/eslint': '>=8.0.0'
+ eslint: '>=8.0.0'
+ eslint-config-prettier: '*'
+ prettier: '>=3.0.0'
+ peerDependenciesMeta:
+ '@types/eslint':
+ optional: true
+ eslint-config-prettier:
+ optional: true
+
+ eslint-plugin-react@7.34.1:
+ resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+
+ eslint-plugin-vitest@0.3.10:
+ resolution: {integrity: sha512-08lj4rdhZHYyHk+Py2nJ7SlE6arP8GNfGXl9jVqhe9s5JoZIGiBpIkLGX+VNBiB6vXTn56H6Ant7Koc6XzRjtQ==}
+ engines: {node: 14.x || >= 16}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': '*'
+ eslint: '>=8.0.0'
+ vitest: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ vitest:
+ optional: true
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint@8.57.0:
+ resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ esquery@1.5.0:
+ resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-util-attach-comments@2.1.1:
+ resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==}
+
+ estree-util-attach-comments@3.0.0:
+ resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
+
+ estree-util-build-jsx@2.2.2:
+ resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==}
+
+ estree-util-build-jsx@3.0.1:
+ resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==}
+
+ estree-util-is-identifier-name@1.1.0:
+ resolution: {integrity: sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==}
+
+ estree-util-is-identifier-name@2.1.0:
+ resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==}
+
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
+ estree-util-to-js@1.2.0:
+ resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==}
+
+ estree-util-to-js@2.0.0:
+ resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
+
+ estree-util-value-to-estree@1.3.0:
+ resolution: {integrity: sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==}
+ engines: {node: '>=12.0.0'}
+
+ estree-util-value-to-estree@3.0.1:
+ resolution: {integrity: sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==}
+ engines: {node: '>=16.0.0'}
+
+ estree-util-visit@1.2.1:
+ resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==}
+
+ estree-util-visit@2.0.0:
+ resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ eval@0.1.6:
+ resolution: {integrity: sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==}
+ engines: {node: '>= 0.8'}
+
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
+ execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+
+ exit-hook@2.2.1:
+ resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
+ engines: {node: '>=6'}
+
+ express@4.18.2:
+ resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
+ engines: {node: '>= 0.10.0'}
+
+ extend-shallow@2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
+ fast-glob@3.3.1:
+ resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fastq@1.15.0:
+ resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
+
+ fault@2.0.1:
+ resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==}
+
+ feed@4.2.2:
+ resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==}
+ engines: {node: '>=0.4.0'}
+
+ figures@3.2.0:
+ resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+ engines: {node: '>=8'}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ fill-range@7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.2.0:
+ resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
+ engines: {node: '>= 0.8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat-cache@3.0.4:
+ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flat@6.0.1:
+ resolution: {integrity: sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ flatted@3.2.7:
+ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
+
+ for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+
+ foreground-child@3.1.1:
+ resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ engines: {node: '>=14'}
+
+ form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+
+ format@0.2.2:
+ resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
+ engines: {node: '>=0.4.x'}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+
+ fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
+ fs-minipass@3.0.3:
+ resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ function.prototype.name@1.1.6:
+ resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+ engines: {node: '>= 0.4'}
+
+ functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+
+ gauge@3.0.2:
+ resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
+ engines: {node: '>=10'}
+
+ generic-names@4.0.0:
+ resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
+ get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+
+ get-port@5.1.1:
+ resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
+ engines: {node: '>=8'}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ get-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@10.3.10:
+ resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+
+ glob@7.1.6:
+ resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ globals@13.20.0:
+ resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
+ engines: {node: '>=8'}
+
+ globalthis@1.0.3:
+ resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ engines: {node: '>= 0.4'}
+
+ globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ graphql@16.8.1:
+ resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
+
+ gray-matter@4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+ engines: {node: '>=6.0'}
+
+ gunzip-maybe@1.4.2:
+ resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==}
+ hasBin: true
+
+ has-bigints@1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ has-unicode@2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+
+ hasown@2.0.0:
+ resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.1:
+ resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
+ engines: {node: '>= 0.4'}
+
+ hast-util-to-estree@2.3.3:
+ resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==}
+
+ hast-util-to-estree@3.1.0:
+ resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==}
+
+ hast-util-to-jsx-runtime@2.2.0:
+ resolution: {integrity: sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==}
+
+ hast-util-whitespace@2.0.1:
+ resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+ headers-polyfill@4.0.2:
+ resolution: {integrity: sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==}
+
+ highlight.js@11.9.0:
+ resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==}
+ engines: {node: '>=12.0.0'}
+
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
+ hosted-git-info@6.1.1:
+ resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ html-encoding-sniffer@4.0.0:
+ resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
+ engines: {node: '>=18'}
+
+ html-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+
+ http-status-codes@2.3.0:
+ resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ https-proxy-agent@7.0.4:
+ resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==}
+ engines: {node: '>= 14'}
+
+ human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ husky@9.0.11:
+ resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ icss-utils@5.1.0:
+ resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.2.4:
+ resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
+ engines: {node: '>= 4'}
+
+ ignore@5.3.1:
+ resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ engines: {node: '>= 4'}
+
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ indent-string@5.0.0:
+ resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
+ engines: {node: '>=12'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ inline-style-parser@0.1.1:
+ resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
+
+ internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ engines: {node: '>= 0.4'}
+
+ intl-messageformat@10.5.12:
+ resolution: {integrity: sha512-izl0uxhy/melhw8gP2r8pGiVieviZmM4v5Oqx3c1/R7g9cwER2smmGfSjcIsp8Y3Q53bfciL/gkxacJRx/dUvg==}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
+ is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+
+ is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
+
+ is-async-function@2.0.0:
+ resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
+ engines: {node: '>= 0.4'}
+
+ is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+
+ is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-core-module@2.13.1:
+ resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+
+ is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
+ is-deflate@1.0.0:
+ resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==}
+
+ is-extendable@0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finalizationregistry@1.0.2:
+ resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-generator-function@1.0.10:
+ resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+ engines: {node: '>= 0.4'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-gzip@1.0.0:
+ resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
+ is-interactive@1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+
+ is-map@2.0.2:
+ resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
+
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+
+ is-node-process@1.2.0:
+ resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==}
+
+ is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-obj@3.0.0:
+ resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
+ engines: {node: '>=10'}
+
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
+ is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+
+ is-reference@3.0.1:
+ resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==}
+
+ is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+
+ is-set@2.0.2:
+ resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
+
+ is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
+
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
+ is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+
+ is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+
+ is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ engines: {node: '>= 0.4'}
+
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
+ is-weakmap@2.0.1:
+ resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
+
+ is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+
+ is-weakset@2.0.2:
+ resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ isbot@3.8.0:
+ resolution: {integrity: sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==}
+ engines: {node: '>=12'}
+
+ isbot@5.1.6:
+ resolution: {integrity: sha512-Phksj1A0dBP/M/5xeOx0zWemKlZRQvrbNzI19/HWso0uodiOcR8YYCXN60IdzwbKsGj5LnxPkMy6FuBtgckMNw==}
+ engines: {node: '>=18'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ istanbul-lib-coverage@3.2.0:
+ resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
+ engines: {node: '>=8'}
+
+ istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+
+ istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+
+ istanbul-reports@3.1.5:
+ resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==}
+ engines: {node: '>=8'}
+
+ iterator.prototype@1.1.2:
+ resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
+
+ jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
+
+ javascript-stringify@2.1.0:
+ resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==}
+
+ jiti@1.21.0:
+ resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ jsdom@24.0.0:
+ resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ canvas: ^2.11.2
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
+ jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-parse-even-better-errors@3.0.0:
+ resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ json-schema-to-ts@1.6.4:
+ resolution: {integrity: sha512-pR4yQ9DHz6itqswtHCm26mw45FSNfQ9rEQjosaZErhn5J3J2sIViQiz8rDaezjKAhFGpmsoczYVBgGHzFw/stA==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json-stable-stringify@1.0.2:
+ resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonc-parser@3.2.0:
+ resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
+ jsonify@0.0.1:
+ resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==}
+
+ jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
+ language-subtag-registry@0.3.22:
+ resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
+
+ language-tags@1.0.9:
+ resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
+ engines: {node: '>=0.10'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ loader-utils@3.2.1:
+ resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==}
+ engines: {node: '>= 12.13.0'}
+
+ local-pkg@0.4.3:
+ resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
+ engines: {node: '>=14'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash-es@4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+
+ lodash.camelcase@4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+
+ lodash.debounce@4.0.8:
+ resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ loupe@2.3.6:
+ resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
+ deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5
+
+ lru-cache@10.0.1:
+ resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==}
+ engines: {node: 14 || >=16.14}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ lru-cache@7.18.3:
+ resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ engines: {node: '>=12'}
+
+ lz-string@1.5.0:
+ resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
+ hasBin: true
+
+ magic-string@0.30.1:
+ resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==}
+ engines: {node: '>=12'}
+
+ make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+
+ make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
+
+ make-error@1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+
+ markdown-extensions@1.1.1:
+ resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==}
+ engines: {node: '>=0.10.0'}
+
+ markdown-extensions@2.0.0:
+ resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
+ engines: {node: '>=16'}
+
+ mdast-util-definitions@5.1.2:
+ resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
+
+ mdast-util-from-markdown@1.3.0:
+ resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==}
+
+ mdast-util-from-markdown@2.0.0:
+ resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==}
+
+ mdast-util-frontmatter@1.0.1:
+ resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==}
+
+ mdast-util-frontmatter@2.0.1:
+ resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==}
+
+ mdast-util-mdx-expression@1.3.2:
+ resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==}
+
+ mdast-util-mdx-expression@2.0.0:
+ resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==}
+
+ mdast-util-mdx-jsx@2.1.4:
+ resolution: {integrity: sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==}
+
+ mdast-util-mdx-jsx@3.0.0:
+ resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==}
+
+ mdast-util-mdx@2.0.1:
+ resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==}
+
+ mdast-util-mdx@3.0.0:
+ resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==}
+
+ mdast-util-mdxjs-esm@1.3.1:
+ resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==}
+
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
+ mdast-util-phrasing@3.0.1:
+ resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
+
+ mdast-util-phrasing@4.0.0:
+ resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==}
+
+ mdast-util-to-hast@12.3.0:
+ resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==}
+
+ mdast-util-to-hast@13.0.2:
+ resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==}
+
+ mdast-util-to-markdown@1.5.0:
+ resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
+
+ mdast-util-to-markdown@2.1.0:
+ resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==}
+
+ mdast-util-to-string@3.2.0:
+ resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
+
+ mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
+ mdx-bundler@10.0.2:
+ resolution: {integrity: sha512-0wF0zoCv+Ms4G+eSlk/jaKYoJHc0oXBaOma3kYlFJiKq9H8h41Dd66ioDBGF4noy80Pf7KTBQlyHfEpTqVml7A==}
+ engines: {node: '>=18', npm: '>=6'}
+ peerDependencies:
+ esbuild: 0.*
+
+ media-query-parser@2.0.2:
+ resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ merge-descriptors@1.0.1:
+ resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ micromark-core-commonmark@1.0.6:
+ resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==}
+
+ micromark-core-commonmark@2.0.0:
+ resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==}
+
+ micromark-extension-frontmatter@1.1.0:
+ resolution: {integrity: sha512-0nLelmvXR5aZ+F2IL6/Ed4cDnHLpL/VD/EELKuclsTWHrLI8UgxGHEmeoumeX2FXiM6z2WrBIOEcbKUZR8RYNg==}
+
+ micromark-extension-frontmatter@2.0.0:
+ resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==}
+
+ micromark-extension-mdx-expression@1.0.5:
+ resolution: {integrity: sha512-/ruJEj+Qpgar/P+b6z0firNIbY5VMHFdL3MJDvsnVVY+RnecmGNpN7YUZhb51NfBtk7iQnNCl5xeb4E5cWxXvw==}
+
+ micromark-extension-mdx-expression@3.0.0:
+ resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==}
+
+ micromark-extension-mdx-jsx@1.0.4:
+ resolution: {integrity: sha512-Jq4O738s2PvxJJSMZhV+y/7uq+pGI/ugQvHJBQelWpE3ECYvJMtF2duwfHQoAuUnIKSvg8b0dU1D+EXTAYE5ww==}
+
+ micromark-extension-mdx-jsx@3.0.0:
+ resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==}
+
+ micromark-extension-mdx-md@1.0.1:
+ resolution: {integrity: sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==}
+
+ micromark-extension-mdx-md@2.0.0:
+ resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==}
+
+ micromark-extension-mdxjs-esm@1.0.4:
+ resolution: {integrity: sha512-mmyCf6baCbLf+OHTCZdj+f8lDY8GBae4qhbffrJDqM1KltghsZz2k3nbvRfEwm301G62nhrlom9M9OheQwrssg==}
+
+ micromark-extension-mdxjs-esm@3.0.0:
+ resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==}
+
+ micromark-extension-mdxjs@1.0.1:
+ resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==}
+
+ micromark-extension-mdxjs@3.0.0:
+ resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==}
+
+ micromark-factory-destination@1.0.0:
+ resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==}
+
+ micromark-factory-destination@2.0.0:
+ resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
+
+ micromark-factory-label@1.0.2:
+ resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==}
+
+ micromark-factory-label@2.0.0:
+ resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==}
+
+ micromark-factory-mdx-expression@1.0.8:
+ resolution: {integrity: sha512-/GWj6h6bDFCDCkxOCb/xXpgKGonhBXEqMnhTThVo0nlIN/i8z6L6YrmRq+N91oerxY97fEz7vHSCSIcW7fGFhQ==}
+
+ micromark-factory-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==}
+
+ micromark-factory-space@1.0.0:
+ resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==}
+
+ micromark-factory-space@2.0.0:
+ resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==}
+
+ micromark-factory-title@1.0.2:
+ resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==}
+
+ micromark-factory-title@2.0.0:
+ resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==}
+
+ micromark-factory-whitespace@1.0.0:
+ resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==}
+
+ micromark-factory-whitespace@2.0.0:
+ resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==}
+
+ micromark-util-character@1.1.0:
+ resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==}
+
+ micromark-util-character@2.0.1:
+ resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==}
+
+ micromark-util-chunked@1.0.0:
+ resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==}
+
+ micromark-util-chunked@2.0.0:
+ resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==}
+
+ micromark-util-classify-character@1.0.0:
+ resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==}
+
+ micromark-util-classify-character@2.0.0:
+ resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==}
+
+ micromark-util-combine-extensions@1.0.0:
+ resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==}
+
+ micromark-util-combine-extensions@2.0.0:
+ resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==}
+
+ micromark-util-decode-numeric-character-reference@1.0.0:
+ resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==}
+
+ micromark-util-decode-numeric-character-reference@2.0.1:
+ resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==}
+
+ micromark-util-decode-string@1.0.2:
+ resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==}
+
+ micromark-util-decode-string@2.0.0:
+ resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==}
+
+ micromark-util-encode@1.0.1:
+ resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==}
+
+ micromark-util-encode@2.0.0:
+ resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
+
+ micromark-util-events-to-acorn@1.2.3:
+ resolution: {integrity: sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==}
+
+ micromark-util-events-to-acorn@2.0.2:
+ resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==}
+
+ micromark-util-html-tag-name@1.1.0:
+ resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==}
+
+ micromark-util-html-tag-name@2.0.0:
+ resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==}
+
+ micromark-util-normalize-identifier@1.0.0:
+ resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==}
+
+ micromark-util-normalize-identifier@2.0.0:
+ resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==}
+
+ micromark-util-resolve-all@1.0.0:
+ resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==}
+
+ micromark-util-resolve-all@2.0.0:
+ resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==}
+
+ micromark-util-sanitize-uri@1.1.0:
+ resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==}
+
+ micromark-util-sanitize-uri@2.0.0:
+ resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
+
+ micromark-util-subtokenize@1.0.2:
+ resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==}
+
+ micromark-util-subtokenize@2.0.0:
+ resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==}
+
+ micromark-util-symbol@1.0.1:
+ resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==}
+
+ micromark-util-symbol@2.0.0:
+ resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
+
+ micromark-util-types@1.0.2:
+ resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==}
+
+ micromark-util-types@2.0.0:
+ resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
+
+ micromark@3.1.0:
+ resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==}
+
+ micromark@4.0.0:
+ resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
+
+ micromatch@4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@9.0.3:
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimatch@9.0.4:
+ resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass-collect@1.0.2:
+ resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
+ engines: {node: '>= 8'}
+
+ minipass-flush@1.0.5:
+ resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
+ engines: {node: '>= 8'}
+
+ minipass-pipeline@1.2.4:
+ resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
+ engines: {node: '>=8'}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minipass@7.0.4:
+ resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
+ mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mlly@1.4.0:
+ resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==}
+
+ morgan@1.10.0:
+ resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==}
+ engines: {node: '>= 0.8.0'}
+
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
+ mrmime@1.0.1:
+ resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
+ engines: {node: '>=10'}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ msw@2.3.0:
+ resolution: {integrity: sha512-cDr1q/QTMzaWhY8n9lpGhceY209k29UZtdTgJ3P8Bzne3TSMchX2EM/ldvn4ATLOktpCefCU2gcEgzHc31GTPw==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ typescript: '>= 4.7.x'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ mute-stream@1.0.0:
+ resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ node-fetch@2.6.11:
+ resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-fetch@2.6.9:
+ resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-gyp-build@4.6.1:
+ resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==}
+ hasBin: true
+
+ node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+
+ nopt@5.0.0:
+ resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ normalize-package-data@5.0.0:
+ resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+
+ npm-install-checks@6.3.0:
+ resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-normalize-package-bin@3.0.1:
+ resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-package-arg@10.1.0:
+ resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-pick-manifest@8.0.2:
+ resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+
+ npmlog@5.0.1:
+ resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+
+ nwsapi@2.2.7:
+ resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+
+ object-inspect@1.13.1:
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ engines: {node: '>= 0.4'}
+
+ object.entries@1.1.7:
+ resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==}
+ engines: {node: '>= 0.4'}
+
+ object.fromentries@2.0.7:
+ resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
+ engines: {node: '>= 0.4'}
+
+ object.hasown@1.1.3:
+ resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==}
+
+ object.values@1.1.7:
+ resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
+ engines: {node: '>= 0.4'}
+
+ on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ on-headers@1.0.2:
+ resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+ engines: {node: '>= 0.8'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ optionator@0.9.3:
+ resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
+ engines: {node: '>= 0.8.0'}
+
+ ora@5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+
+ outdent@0.8.0:
+ resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==}
+
+ outvariant@1.4.2:
+ resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-limit@4.0.0:
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ p-map@4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+
+ pako@0.2.9:
+ resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-entities@4.0.1:
+ resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
+
+ parse-ms@2.1.0:
+ resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
+ engines: {node: '>=6'}
+
+ parse5@7.1.2:
+ resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.10.1:
+ resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ path-to-regexp@0.1.7:
+ resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
+
+ path-to-regexp@6.2.1:
+ resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ pathe@1.1.1:
+ resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
+
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
+ peek-stream@1.1.3:
+ resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==}
+
+ periscopic@3.1.0:
+ resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
+
+ picocolors@1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pidtree@0.6.0:
+ resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pirates@4.0.5:
+ resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
+ engines: {node: '>= 6'}
+
+ pkg-types@1.0.3:
+ resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
+
+ possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
+ postcss-discard-duplicates@5.1.0:
+ resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
+ engines: {node: ^10 || ^12 || >=14.0}
+ peerDependencies:
+ postcss: ^8.2.15
+
+ postcss-import@15.1.0:
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-js@4.0.1:
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+
+ postcss-load-config@4.0.1:
+ resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss-modules-extract-imports@3.0.0:
+ resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-local-by-default@4.0.3:
+ resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-scope@3.0.0:
+ resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules-values@4.0.0:
+ resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+
+ postcss-modules@6.0.0:
+ resolution: {integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-nested@6.0.1:
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+
+ postcss-selector-parser@6.0.13:
+ resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
+ engines: {node: '>=4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.4.38:
+ resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier-linter-helpers@1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+
+ prettier-plugin-organize-imports@3.2.4:
+ resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==}
+ peerDependencies:
+ '@volar/vue-language-plugin-pug': ^1.0.4
+ '@volar/vue-typescript': ^1.0.4
+ prettier: '>=2.0'
+ typescript: '>=2.9'
+ peerDependenciesMeta:
+ '@volar/vue-language-plugin-pug':
+ optional: true
+ '@volar/vue-typescript':
+ optional: true
+
+ prettier-plugin-tailwindcss@0.5.14:
+ resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==}
+ engines: {node: '>=14.21.3'}
+ peerDependencies:
+ '@ianvs/prettier-plugin-sort-imports': '*'
+ '@prettier/plugin-pug': '*'
+ '@shopify/prettier-plugin-liquid': '*'
+ '@trivago/prettier-plugin-sort-imports': '*'
+ '@zackad/prettier-plugin-twig-melody': '*'
+ prettier: ^3.0
+ prettier-plugin-astro: '*'
+ prettier-plugin-css-order: '*'
+ prettier-plugin-import-sort: '*'
+ prettier-plugin-jsdoc: '*'
+ prettier-plugin-marko: '*'
+ prettier-plugin-organize-attributes: '*'
+ prettier-plugin-organize-imports: '*'
+ prettier-plugin-sort-imports: '*'
+ prettier-plugin-style-order: '*'
+ prettier-plugin-svelte: '*'
+ peerDependenciesMeta:
+ '@ianvs/prettier-plugin-sort-imports':
+ optional: true
+ '@prettier/plugin-pug':
+ optional: true
+ '@shopify/prettier-plugin-liquid':
+ optional: true
+ '@trivago/prettier-plugin-sort-imports':
+ optional: true
+ '@zackad/prettier-plugin-twig-melody':
+ optional: true
+ prettier-plugin-astro:
+ optional: true
+ prettier-plugin-css-order:
+ optional: true
+ prettier-plugin-import-sort:
+ optional: true
+ prettier-plugin-jsdoc:
+ optional: true
+ prettier-plugin-marko:
+ optional: true
+ prettier-plugin-organize-attributes:
+ optional: true
+ prettier-plugin-organize-imports:
+ optional: true
+ prettier-plugin-sort-imports:
+ optional: true
+ prettier-plugin-style-order:
+ optional: true
+ prettier-plugin-svelte:
+ optional: true
+
+ prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ prettier@3.2.5:
+ resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ pretty-format@27.5.1:
+ resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+
+ pretty-format@29.6.1:
+ resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ pretty-ms@7.0.1:
+ resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
+ engines: {node: '>=10'}
+
+ prisma@5.13.0:
+ resolution: {integrity: sha512-kGtcJaElNRAdAGsCNykFSZ7dBKpL14Cbs+VaQ8cECxQlRPDjBlMHNFYeYt0SKovAVy2Y65JXQwB3A5+zIQwnTg==}
+ engines: {node: '>=16.13'}
+ hasBin: true
+
+ proc-log@3.0.0:
+ resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ promise-inflight@1.0.1:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+
+ promise-retry@2.0.1:
+ resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
+ engines: {node: '>=10'}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ property-information@6.2.0:
+ resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ psl@1.9.0:
+ resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+
+ pump@2.0.1:
+ resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
+
+ pump@3.0.0:
+ resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+
+ pumpify@1.5.1:
+ resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ qs@6.11.0:
+ resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
+ engines: {node: '>=0.6'}
+
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.1:
+ resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
+ engines: {node: '>= 0.8'}
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-intl@6.6.6:
+ resolution: {integrity: sha512-dKXQNUrhZTlCp8uelYW8PHiM4saNKyLmHCfsJYWK0N/kZ/Ien35wjPHB8x9yQcTJbeN/hBOmb4x16iKUrdL9MA==}
+ peerDependencies:
+ react: ^16.6.0 || 17 || 18
+ typescript: ^4.7 || 5
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-is@17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+
+ react-is@18.2.0:
+ resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+
+ react-refresh@0.14.0:
+ resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
+ engines: {node: '>=0.10.0'}
+
+ react-router-dom@6.23.0:
+ resolution: {integrity: sha512-Q9YaSYvubwgbal2c9DJKfx6hTNoBp3iJDsl+Duva/DwxoJH+OTXkxGpql4iUK2sla/8z4RpjAm6EWx1qUDuopQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+
+ react-router@6.23.0:
+ resolution: {integrity: sha512-wPMZ8S2TuPadH0sF5irFGjkNLIcRvOSaEe7v+JER8508dyJumm6XZB1u5kztlX0RVq6AzRVndzqcUh6sFIauzA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: '>=16.8'
+
+ react-toastify@10.0.5:
+ resolution: {integrity: sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
+ read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ redent@4.0.0:
+ resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==}
+ engines: {node: '>=12'}
+
+ reflect.getprototypeof@1.0.4:
+ resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==}
+ engines: {node: '>= 0.4'}
+
+ regenerator-runtime@0.14.0:
+ resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
+
+ regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ engines: {node: '>= 0.4'}
+
+ remark-frontmatter@4.0.1:
+ resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==}
+
+ remark-frontmatter@5.0.0:
+ resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==}
+
+ remark-mdx-frontmatter@1.1.1:
+ resolution: {integrity: sha512-7teX9DW4tI2WZkXS4DBxneYSY7NHiXl4AKdWDO9LXVweULlCT8OPWsOjLEnMIXViN1j+QcY8mfbq3k0EK6x3uA==}
+ engines: {node: '>=12.2.0'}
+
+ remark-mdx-frontmatter@4.0.0:
+ resolution: {integrity: sha512-PZzAiDGOEfv1Ua7exQ8S5kKxkD8CDaSb4nM+1Mprs6u8dyvQifakh+kCj6NovfGXW+bTvrhjaR3srzjS2qJHKg==}
+
+ remark-mdx@2.3.0:
+ resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==}
+
+ remark-mdx@3.0.0:
+ resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==}
+
+ remark-parse@10.0.2:
+ resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
+
+ remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+ remark-rehype@10.1.0:
+ resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
+
+ remark-rehype@11.0.0:
+ resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ require-like@0.1.2:
+ resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==}
+
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+
+ resolve.exports@2.0.2:
+ resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
+ engines: {node: '>=10'}
+
+ resolve@1.22.2:
+ resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
+ hasBin: true
+
+ resolve@2.0.0-next.5:
+ resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ hasBin: true
+
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+
+ rollup@3.23.0:
+ resolution: {integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ rrweb-cssom@0.6.0:
+ resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
+
+ run-async@3.0.0:
+ resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
+ engines: {node: '>=0.12.0'}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rxjs@7.8.1:
+ resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
+
+ sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+
+ safe-array-concat@1.1.0:
+ resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
+ engines: {node: '>=0.4'}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ engines: {node: '>= 0.4'}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ sax@1.2.4:
+ resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+
+ saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ section-matter@1.0.0:
+ resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+ engines: {node: '>=4'}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.6.0:
+ resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.18.0:
+ resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+ engines: {node: '>= 0.8.0'}
+
+ serve-static@1.15.0:
+ resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+ engines: {node: '>= 0.8.0'}
+
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
+ set-cookie-parser@2.6.0:
+ resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
+
+ set-function-length@1.2.1:
+ resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
+ engines: {node: '>= 0.4'}
+
+ set-function-name@2.0.1:
+ resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
+ engines: {node: '>= 0.4'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.8.1:
+ resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
+
+ side-channel@1.0.4:
+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.0.2:
+ resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==}
+ engines: {node: '>=14'}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
+ spawn-command@0.0.2:
+ resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
+
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.3.0:
+ resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.16:
+ resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
+
+ sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
+ ssri@10.0.5:
+ resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ std-env@3.3.3:
+ resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==}
+
+ stream-shift@1.0.1:
+ resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
+
+ stream-slice@0.1.2:
+ resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==}
+
+ strict-event-emitter@0.5.1:
+ resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==}
+
+ string-hash@1.1.3:
+ resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string.prototype.matchall@4.0.10:
+ resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
+
+ string.prototype.trim@1.2.8:
+ resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimend@1.0.7:
+ resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
+
+ string.prototype.trimstart@1.0.7:
+ resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ stringify-entities@4.0.3:
+ resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-bom-string@1.0.0:
+ resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
+ engines: {node: '>=0.10.0'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ strip-indent@4.0.0:
+ resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==}
+ engines: {node: '>=12'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ strip-literal@1.0.1:
+ resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==}
+
+ style-to-object@0.4.1:
+ resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==}
+
+ sucrase@3.32.0:
+ resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+
+ synckit@0.8.8:
+ resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ tailwindcss@3.4.3:
+ resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
+ tar-fs@2.1.1:
+ resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
+
+ tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+
+ tar@6.1.15:
+ resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==}
+ engines: {node: '>=10'}
+
+ test-exclude@6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+
+ thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+
+ through2@2.0.5:
+ resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
+
+ time-span@4.0.0:
+ resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==}
+ engines: {node: '>=10'}
+
+ tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+
+ tinybench@2.5.0:
+ resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==}
+
+ tinypool@0.7.0:
+ resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@2.1.1:
+ resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==}
+ engines: {node: '>=14.0.0'}
+
+ to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ toml@3.0.0:
+ resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+
+ tough-cookie@4.1.3:
+ resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
+ engines: {node: '>=6'}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ tr46@5.0.0:
+ resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
+ engines: {node: '>=18'}
+
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ trough@2.1.0:
+ resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
+
+ ts-api-utils@1.3.0:
+ resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
+
+ ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
+ ts-morph@12.0.0:
+ resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==}
+
+ ts-node@10.9.1:
+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+
+ ts-node@10.9.2:
+ resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+
+ ts-toolbelt@6.15.5:
+ resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==}
+
+ tsconfck@3.0.3:
+ resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
+
+ tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+
+ turbo-stream@2.0.1:
+ resolution: {integrity: sha512-sm0ZtcX9YWh28p5X8t5McxC2uthrt9p+g0bGE0KTVFhnhNWefpSVCr+67zRNDUOfo4bpXwiOp7otO+dyQ7/y/A==}
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-detect@4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ type-fest@0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+
+ type-fest@4.10.3:
+ resolution: {integrity: sha512-JLXyjizi072smKGGcZiAJDCNweT8J+AuRxmPZ1aG7TERg4ijx9REl8CNhbr36RV4qXqL1gO1FF9HL8OkVmmrsA==}
+ engines: {node: '>=16'}
+
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-length@1.0.5:
+ resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==}
+ engines: {node: '>= 0.4'}
+
+ typescript@4.9.5:
+ resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ typescript@5.4.5:
+ resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ ufo@1.1.2:
+ resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==}
+
+ unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ undici@5.26.5:
+ resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==}
+ engines: {node: '>=14.0'}
+
+ undici@6.15.0:
+ resolution: {integrity: sha512-VviMt2tlMg1BvQ0FKXxrz1eJuyrcISrL2sPfBf7ZskX/FCEc/7LeThQaoygsMJpNqrATWQIsRVx+1Dpe4jaYuQ==}
+ engines: {node: '>=18.17'}
+
+ unicode-emoji-utils@1.2.0:
+ resolution: {integrity: sha512-djUB91p/6oYpgps4W5K/MAvM+UspoAANHSUW495BrxeLRoned3iNPEDQgrKx9LbLq93VhNz0NWvI61vcfrwYoA==}
+
+ unified@10.1.2:
+ resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
+
+ unified@11.0.4:
+ resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
+
+ unique-filename@3.0.0:
+ resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ unique-slug@4.0.0:
+ resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ unist-util-generated@2.0.1:
+ resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==}
+
+ unist-util-is@5.2.1:
+ resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
+
+ unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+
+ unist-util-position-from-estree@1.1.2:
+ resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==}
+
+ unist-util-position-from-estree@2.0.0:
+ resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
+
+ unist-util-position@4.0.4:
+ resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==}
+
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+ unist-util-remove-position@4.0.2:
+ resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==}
+
+ unist-util-remove-position@5.0.0:
+ resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
+
+ unist-util-stringify-position@3.0.3:
+ resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
+
+ unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+ unist-util-visit-parents@5.1.3:
+ resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
+
+ unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+
+ unist-util-visit@4.1.2:
+ resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
+
+ unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
+ universal-user-agent@6.0.0:
+ resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==}
+
+ universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+
+ universalify@2.0.0:
+ resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ engines: {node: '>= 10.0.0'}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ update-browserslist-db@1.0.13:
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ util@0.12.5:
+ resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+
+ uvu@0.5.6:
+ resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ v8-compile-cache-lib@3.0.1:
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+
+ v8-to-istanbul@9.1.0:
+ resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==}
+ engines: {node: '>=10.12.0'}
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ validate-npm-package-name@5.0.0:
+ resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ vfile-message@3.1.4:
+ resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
+
+ vfile-message@4.0.2:
+ resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
+
+ vfile@5.3.7:
+ resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
+
+ vfile@6.0.1:
+ resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
+
+ vite-node@0.28.5:
+ resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==}
+ engines: {node: '>=v14.16.0'}
+ hasBin: true
+
+ vite-node@0.34.6:
+ resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==}
+ engines: {node: '>=v14.18.0'}
+ hasBin: true
+
+ vite-tsconfig-paths@4.3.2:
+ resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
+ vite@4.3.9:
+ resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vitest-dom@0.1.1:
+ resolution: {integrity: sha512-n/bonR2hcRHCE5hlzG/P0yTXTUXx/gPtsaeUWP86ADfwo/+dHDpnTTV14qY7+kevsUbOZFYECu77MXY7AA0QSA==}
+ peerDependencies:
+ vitest: '>=0.31.0'
+
+ vitest@0.34.6:
+ resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==}
+ engines: {node: '>=v14.18.0'}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@vitest/browser': '*'
+ '@vitest/ui': '*'
+ happy-dom: '*'
+ jsdom: '*'
+ playwright: '*'
+ safaridriver: '*'
+ webdriverio: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+ playwright:
+ optional: true
+ safaridriver:
+ optional: true
+ webdriverio:
+ optional: true
+
+ w3c-xmlserializer@5.0.0:
+ resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
+ engines: {node: '>=18'}
+
+ wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+
+ web-encoding@1.1.5:
+ resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==}
+
+ web-streams-polyfill@3.2.1:
+ resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
+ engines: {node: '>= 8'}
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+
+ whatwg-encoding@3.1.1:
+ resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
+ engines: {node: '>=18'}
+
+ whatwg-mimetype@4.0.0:
+ resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
+ engines: {node: '>=18'}
+
+ whatwg-url@14.0.0:
+ resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==}
+ engines: {node: '>=18'}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+
+ which-builtin-type@1.1.3:
+ resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==}
+ engines: {node: '>= 0.4'}
+
+ which-collection@1.0.1:
+ resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
+
+ which-typed-array@1.1.14:
+ resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==}
+ engines: {node: '>= 0.4'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ which@3.0.1:
+ resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ hasBin: true
+
+ why-is-node-running@2.2.2:
+ resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ wide-align@1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ ws@7.5.9:
+ resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
+ engines: {node: '>=8.3.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@8.16.0:
+ resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xml-js@1.6.11:
+ resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
+ hasBin: true
+
+ xml-name-validator@5.0.0:
+ resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
+ engines: {node: '>=18'}
+
+ xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ yaml@2.3.1:
+ resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==}
+ engines: {node: '>= 14'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yn@3.1.1:
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ yocto-queue@1.0.0:
+ resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
+ engines: {node: '>=12.20'}
+
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
+snapshots:
+
+ '@aashutoshrathi/word-wrap@1.2.6': {}
+
+ '@alloc/quick-lru@5.2.0': {}
+
+ '@ampproject/remapping@2.2.1':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.18
+
+ '@babel/code-frame@7.22.13':
+ dependencies:
+ '@babel/highlight': 7.22.20
+ chalk: 2.4.2
+
+ '@babel/compat-data@7.22.3': {}
+
+ '@babel/core@7.22.1':
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@babel/code-frame': 7.22.13
+ '@babel/generator': 7.23.0
+ '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1)
+ '@babel/helper-module-transforms': 7.22.1
+ '@babel/helpers': 7.22.3
+ '@babel/parser': 7.23.0
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.23.2
+ '@babel/types': 7.23.0
+ convert-source-map: 1.9.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.23.0':
+ dependencies:
+ '@babel/types': 7.23.0
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.18
+ jsesc: 2.5.2
+
+ '@babel/helper-annotate-as-pure@7.18.6':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-compilation-targets@7.22.1(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/compat-data': 7.22.3
+ '@babel/core': 7.22.1
+ '@babel/helper-validator-option': 7.21.0
+ browserslist: 4.23.0
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-function-name': 7.23.0
+ '@babel/helper-member-expression-to-functions': 7.22.3
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/helper-replace-supers': 7.22.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.20.0
+ '@babel/helper-split-export-declaration': 7.22.6
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-environment-visitor@7.22.20': {}
+
+ '@babel/helper-function-name@7.23.0':
+ dependencies:
+ '@babel/template': 7.22.15
+ '@babel/types': 7.23.0
+
+ '@babel/helper-hoist-variables@7.22.5':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-member-expression-to-functions@7.22.3':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-module-imports@7.21.4':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-module-transforms@7.22.1':
+ dependencies:
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-module-imports': 7.21.4
+ '@babel/helper-simple-access': 7.21.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/helper-validator-identifier': 7.22.20
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.23.2
+ '@babel/types': 7.23.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.18.6':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-plugin-utils@7.22.5': {}
+
+ '@babel/helper-replace-supers@7.22.1':
+ dependencies:
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-member-expression-to-functions': 7.22.3
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.23.2
+ '@babel/types': 7.23.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-simple-access@7.21.5':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.20.0':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-split-export-declaration@7.22.6':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/helper-string-parser@7.22.5': {}
+
+ '@babel/helper-validator-identifier@7.22.20': {}
+
+ '@babel/helper-validator-option@7.21.0': {}
+
+ '@babel/helpers@7.22.3':
+ dependencies:
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.23.2
+ '@babel/types': 7.23.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/highlight@7.22.20':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+
+ '@babel/parser@7.23.0':
+ dependencies:
+ '@babel/types': 7.23.0
+
+ '@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+
+ '@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+
+ '@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+
+ '@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-module-transforms': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/helper-simple-access': 7.21.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1)
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/preset-typescript@7.21.5(@babel/core@7.22.1)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/helper-validator-option': 7.21.0
+ '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1)
+ '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.1)
+ '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/runtime@7.23.2':
+ dependencies:
+ regenerator-runtime: 0.14.0
+
+ '@babel/template@7.22.15':
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/parser': 7.23.0
+ '@babel/types': 7.23.0
+
+ '@babel/traverse@7.23.2':
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/generator': 7.23.0
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-function-name': 7.23.0
+ '@babel/helper-hoist-variables': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/parser': 7.23.0
+ '@babel/types': 7.23.0
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.23.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.22.5
+ '@babel/helper-validator-identifier': 7.22.20
+ to-fast-properties: 2.0.0
+
+ '@bcoe/v8-coverage@0.2.3': {}
+
+ '@bundled-es-modules/cookie@2.0.0':
+ dependencies:
+ cookie: 0.5.0
+
+ '@bundled-es-modules/statuses@1.0.1':
+ dependencies:
+ statuses: 2.0.1
+
+ '@cspotcode/source-map-support@0.8.1':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
+ '@edge-runtime/format@2.2.1': {}
+
+ '@edge-runtime/node-utils@2.3.0': {}
+
+ '@edge-runtime/ponyfill@2.4.2': {}
+
+ '@edge-runtime/primitives@4.1.0': {}
+
+ '@edge-runtime/vm@3.2.0':
+ dependencies:
+ '@edge-runtime/primitives': 4.1.0
+
+ '@emotion/hash@0.9.1': {}
+
+ '@esbuild-plugins/node-resolve@0.2.2(esbuild@0.21.1)':
+ dependencies:
+ '@types/resolve': 1.20.2
+ debug: 4.3.4
+ esbuild: 0.21.1
+ escape-string-regexp: 4.0.0
+ resolve: 1.22.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@esbuild/aix-ppc64@0.21.1':
+ optional: true
+
+ '@esbuild/android-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/android-arm64@0.17.6':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.1':
+ optional: true
+
+ '@esbuild/android-arm@0.17.19':
+ optional: true
+
+ '@esbuild/android-arm@0.17.6':
+ optional: true
+
+ '@esbuild/android-arm@0.21.1':
+ optional: true
+
+ '@esbuild/android-x64@0.17.19':
+ optional: true
+
+ '@esbuild/android-x64@0.17.6':
+ optional: true
+
+ '@esbuild/android-x64@0.21.1':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.17.6':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.1':
+ optional: true
+
+ '@esbuild/darwin-x64@0.17.19':
+ optional: true
+
+ '@esbuild/darwin-x64@0.17.6':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.1':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.17.6':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.1':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.17.19':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.17.6':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.1':
+ optional: true
+
+ '@esbuild/linux-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-arm64@0.17.6':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.1':
+ optional: true
+
+ '@esbuild/linux-arm@0.17.19':
+ optional: true
+
+ '@esbuild/linux-arm@0.17.6':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.1':
+ optional: true
+
+ '@esbuild/linux-ia32@0.17.19':
+ optional: true
+
+ '@esbuild/linux-ia32@0.17.6':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.1':
+ optional: true
+
+ '@esbuild/linux-loong64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-loong64@0.17.6':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.1':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.17.19':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.17.6':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.1':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.17.6':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.1':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.17.6':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.1':
+ optional: true
+
+ '@esbuild/linux-s390x@0.17.19':
+ optional: true
+
+ '@esbuild/linux-s390x@0.17.6':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.1':
+ optional: true
+
+ '@esbuild/linux-x64@0.17.19':
+ optional: true
+
+ '@esbuild/linux-x64@0.17.6':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.1':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.17.19':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.17.6':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.1':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.17.19':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.17.6':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.1':
+ optional: true
+
+ '@esbuild/sunos-x64@0.17.19':
+ optional: true
+
+ '@esbuild/sunos-x64@0.17.6':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.1':
+ optional: true
+
+ '@esbuild/win32-arm64@0.17.19':
+ optional: true
+
+ '@esbuild/win32-arm64@0.17.6':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.1':
+ optional: true
+
+ '@esbuild/win32-ia32@0.17.19':
+ optional: true
+
+ '@esbuild/win32-ia32@0.17.6':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.1':
+ optional: true
+
+ '@esbuild/win32-x64@0.17.19':
+ optional: true
+
+ '@esbuild/win32-x64@0.17.6':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.1':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
+ dependencies:
+ eslint: 8.57.0
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.10.0': {}
+
+ '@eslint-community/regexpp@4.8.0': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.4
+ espree: 9.6.1
+ globals: 13.20.0
+ ignore: 5.3.1
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.0': {}
+
+ '@fal-works/esbuild-plugin-global-externals@2.1.2': {}
+
+ '@fastify/busboy@2.0.0': {}
+
+ '@fontsource/inter@5.0.18': {}
+
+ '@fontsource/merriweather@5.0.13': {}
+
+ '@formatjs/ecma402-abstract@1.18.2':
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+
+ '@formatjs/fast-memoize@2.2.0':
+ dependencies:
+ tslib: 2.6.2
+
+ '@formatjs/icu-messageformat-parser@2.7.6':
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/icu-skeleton-parser': 1.8.0
+ tslib: 2.6.2
+
+ '@formatjs/icu-skeleton-parser@1.8.0':
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ tslib: 2.6.2
+
+ '@formatjs/intl-displaynames@6.6.6':
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+
+ '@formatjs/intl-listformat@7.5.5':
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.2
+
+ '@formatjs/intl-localematcher@0.5.4':
+ dependencies:
+ tslib: 2.6.2
+
+ '@formatjs/intl@2.10.2(typescript@5.4.5)':
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/fast-memoize': 2.2.0
+ '@formatjs/icu-messageformat-parser': 2.7.6
+ '@formatjs/intl-displaynames': 6.6.6
+ '@formatjs/intl-listformat': 7.5.5
+ intl-messageformat: 10.5.12
+ tslib: 2.6.2
+ optionalDependencies:
+ typescript: 5.4.5
+
+ '@formatjs/ts-transformer@3.13.12':
+ dependencies:
+ '@formatjs/icu-messageformat-parser': 2.7.6
+ '@types/json-stable-stringify': 1.0.34
+ '@types/node': 14.18.33
+ chalk: 4.1.2
+ json-stable-stringify: 1.0.2
+ tslib: 2.6.2
+ typescript: 5.4.5
+
+ '@humanwhocodes/config-array@0.11.14':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.2
+ debug: 4.3.4
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.2': {}
+
+ '@inquirer/confirm@3.0.0':
+ dependencies:
+ '@inquirer/core': 7.0.0
+ '@inquirer/type': 1.2.0
+
+ '@inquirer/core@7.0.0':
+ dependencies:
+ '@inquirer/type': 1.2.0
+ '@types/mute-stream': 0.0.4
+ '@types/node': 20.12.10
+ '@types/wrap-ansi': 3.0.0
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-spinners: 2.9.2
+ cli-width: 4.1.0
+ figures: 3.2.0
+ mute-stream: 1.0.0
+ run-async: 3.0.0
+ signal-exit: 4.1.0
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+
+ '@inquirer/type@1.2.0': {}
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@istanbuljs/schema@0.1.3': {}
+
+ '@jest/schemas@29.6.0':
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+
+ '@jridgewell/gen-mapping@0.3.3':
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.18
+
+ '@jridgewell/resolve-uri@3.1.0': {}
+
+ '@jridgewell/resolve-uri@3.1.1': {}
+
+ '@jridgewell/set-array@1.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.4.14': {}
+
+ '@jridgewell/sourcemap-codec@1.4.15': {}
+
+ '@jridgewell/trace-mapping@0.3.18':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+
+ '@jridgewell/trace-mapping@0.3.9':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ '@jspm/core@2.0.1': {}
+
+ '@mapbox/node-pre-gyp@1.0.11':
+ dependencies:
+ detect-libc: 2.0.2
+ https-proxy-agent: 5.0.1
+ make-dir: 3.1.0
+ node-fetch: 2.6.11
+ nopt: 5.0.0
+ npmlog: 5.0.1
+ rimraf: 3.0.2
+ semver: 7.6.0
+ tar: 6.1.15
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@mdx-js/esbuild@3.0.0(esbuild@0.21.1)':
+ dependencies:
+ '@mdx-js/mdx': 3.0.0
+ '@types/unist': 3.0.2
+ esbuild: 0.21.1
+ vfile: 6.0.1
+ vfile-message: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@mdx-js/mdx@2.3.0':
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/mdx': 2.0.5
+ estree-util-build-jsx: 2.2.2
+ estree-util-is-identifier-name: 2.1.0
+ estree-util-to-js: 1.2.0
+ estree-walker: 3.0.3
+ hast-util-to-estree: 2.3.3
+ markdown-extensions: 1.1.1
+ periscopic: 3.1.0
+ remark-mdx: 2.3.0
+ remark-parse: 10.0.2
+ remark-rehype: 10.1.0
+ unified: 10.1.2
+ unist-util-position-from-estree: 1.1.2
+ unist-util-stringify-position: 3.0.3
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@mdx-js/mdx@3.0.0':
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 3.0.3
+ '@types/mdx': 2.0.5
+ collapse-white-space: 2.1.0
+ devlop: 1.1.0
+ estree-util-build-jsx: 3.0.1
+ estree-util-is-identifier-name: 3.0.0
+ estree-util-to-js: 2.0.0
+ estree-walker: 3.0.3
+ hast-util-to-estree: 3.1.0
+ hast-util-to-jsx-runtime: 2.2.0
+ markdown-extensions: 2.0.0
+ periscopic: 3.1.0
+ remark-mdx: 3.0.0
+ remark-parse: 11.0.0
+ remark-rehype: 11.0.0
+ source-map: 0.7.4
+ unified: 11.0.4
+ unist-util-position-from-estree: 2.0.0
+ unist-util-stringify-position: 4.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@mswjs/cookies@1.1.0': {}
+
+ '@mswjs/interceptors@0.29.1':
+ dependencies:
+ '@open-draft/deferred-promise': 2.2.0
+ '@open-draft/logger': 0.3.0
+ '@open-draft/until': 2.1.0
+ is-node-process: 1.2.0
+ outvariant: 1.4.2
+ strict-event-emitter: 0.5.1
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.15.0
+
+ '@npmcli/fs@3.1.0':
+ dependencies:
+ semver: 7.6.0
+
+ '@npmcli/git@4.1.0':
+ dependencies:
+ '@npmcli/promise-spawn': 6.0.2
+ lru-cache: 7.18.3
+ npm-pick-manifest: 8.0.2
+ proc-log: 3.0.0
+ promise-inflight: 1.0.1
+ promise-retry: 2.0.1
+ semver: 7.6.0
+ which: 3.0.1
+ transitivePeerDependencies:
+ - bluebird
+
+ '@npmcli/package-json@4.0.1':
+ dependencies:
+ '@npmcli/git': 4.1.0
+ glob: 10.3.10
+ hosted-git-info: 6.1.1
+ json-parse-even-better-errors: 3.0.0
+ normalize-package-data: 5.0.0
+ proc-log: 3.0.0
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - bluebird
+
+ '@npmcli/promise-spawn@6.0.2':
+ dependencies:
+ which: 3.0.1
+
+ '@octokit/auth-token@4.0.0': {}
+
+ '@octokit/core@5.2.0':
+ dependencies:
+ '@octokit/auth-token': 4.0.0
+ '@octokit/graphql': 7.1.0
+ '@octokit/request': 8.4.0
+ '@octokit/request-error': 5.1.0
+ '@octokit/types': 13.3.0
+ before-after-hook: 2.2.3
+ universal-user-agent: 6.0.0
+
+ '@octokit/endpoint@9.0.5':
+ dependencies:
+ '@octokit/types': 13.3.0
+ universal-user-agent: 6.0.0
+
+ '@octokit/graphql@7.1.0':
+ dependencies:
+ '@octokit/request': 8.4.0
+ '@octokit/types': 13.3.0
+ universal-user-agent: 6.0.0
+
+ '@octokit/openapi-types@22.0.1': {}
+
+ '@octokit/openapi-types@22.2.0': {}
+
+ '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)':
+ dependencies:
+ '@octokit/core': 5.2.0
+ '@octokit/types': 13.5.0
+
+ '@octokit/plugin-request-log@4.0.0(@octokit/core@5.2.0)':
+ dependencies:
+ '@octokit/core': 5.2.0
+
+ '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)':
+ dependencies:
+ '@octokit/core': 5.2.0
+ '@octokit/types': 13.5.0
+
+ '@octokit/request-error@5.1.0':
+ dependencies:
+ '@octokit/types': 13.3.0
+ deprecation: 2.3.1
+ once: 1.4.0
+
+ '@octokit/request@8.4.0':
+ dependencies:
+ '@octokit/endpoint': 9.0.5
+ '@octokit/request-error': 5.1.0
+ '@octokit/types': 13.3.0
+ universal-user-agent: 6.0.0
+
+ '@octokit/rest@20.1.1':
+ dependencies:
+ '@octokit/core': 5.2.0
+ '@octokit/plugin-paginate-rest': 11.3.1(@octokit/core@5.2.0)
+ '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.2.0)
+ '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0)
+
+ '@octokit/types@13.3.0':
+ dependencies:
+ '@octokit/openapi-types': 22.0.1
+
+ '@octokit/types@13.5.0':
+ dependencies:
+ '@octokit/openapi-types': 22.2.0
+
+ '@open-draft/deferred-promise@2.2.0': {}
+
+ '@open-draft/logger@0.3.0':
+ dependencies:
+ is-node-process: 1.2.0
+ outvariant: 1.4.2
+
+ '@open-draft/until@2.1.0': {}
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@pkgr/core@0.1.1': {}
+
+ '@prisma/client@5.13.0(prisma@5.13.0)':
+ optionalDependencies:
+ prisma: 5.13.0
+
+ '@prisma/debug@5.13.0': {}
+
+ '@prisma/engines-version@5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b': {}
+
+ '@prisma/engines@5.13.0':
+ dependencies:
+ '@prisma/debug': 5.13.0
+ '@prisma/engines-version': 5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b
+ '@prisma/fetch-engine': 5.13.0
+ '@prisma/get-platform': 5.13.0
+
+ '@prisma/fetch-engine@5.13.0':
+ dependencies:
+ '@prisma/debug': 5.13.0
+ '@prisma/engines-version': 5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b
+ '@prisma/get-platform': 5.13.0
+
+ '@prisma/get-platform@5.13.0':
+ dependencies:
+ '@prisma/debug': 5.13.0
+
+ '@react-icons/all-files@4.1.0(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
+ '@remix-run/css-bundle@2.9.1': {}
+
+ '@remix-run/dev@2.9.1(@remix-run/react@2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@remix-run/serve@2.9.1(typescript@5.4.5))(@types/node@20.12.10)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))(typescript@5.4.5)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/generator': 7.23.0
+ '@babel/parser': 7.23.0
+ '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.22.1)
+ '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1)
+ '@babel/preset-typescript': 7.21.5(@babel/core@7.22.1)
+ '@babel/traverse': 7.23.2
+ '@babel/types': 7.23.0
+ '@mdx-js/mdx': 2.3.0
+ '@npmcli/package-json': 4.0.1
+ '@remix-run/node': 2.9.1(typescript@5.4.5)
+ '@remix-run/react': 2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
+ '@remix-run/router': 1.16.0
+ '@remix-run/server-runtime': 2.9.1(typescript@5.4.5)
+ '@types/mdx': 2.0.5
+ '@vanilla-extract/integration': 6.2.1(@types/node@20.12.10)
+ arg: 5.0.2
+ cacache: 17.1.4
+ chalk: 4.1.2
+ chokidar: 3.5.3
+ cross-spawn: 7.0.3
+ dotenv: 16.4.5
+ es-module-lexer: 1.4.1
+ esbuild: 0.17.6
+ esbuild-plugins-node-modules-polyfill: 1.6.1(esbuild@0.17.6)
+ execa: 5.1.1
+ exit-hook: 2.2.1
+ express: 4.18.2
+ fs-extra: 10.1.0
+ get-port: 5.1.1
+ gunzip-maybe: 1.4.2
+ jsesc: 3.0.2
+ json5: 2.2.3
+ lodash: 4.17.21
+ lodash.debounce: 4.0.8
+ minimatch: 9.0.4
+ ora: 5.4.1
+ picocolors: 1.0.0
+ picomatch: 2.3.1
+ pidtree: 0.6.0
+ postcss: 8.4.38
+ postcss-discard-duplicates: 5.1.0(postcss@8.4.38)
+ postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))
+ postcss-modules: 6.0.0(postcss@8.4.38)
+ prettier: 2.8.8
+ pretty-ms: 7.0.1
+ react-refresh: 0.14.0
+ remark-frontmatter: 4.0.1
+ remark-mdx-frontmatter: 1.1.1
+ semver: 7.6.0
+ set-cookie-parser: 2.6.0
+ tar-fs: 2.1.1
+ tsconfig-paths: 4.2.0
+ ws: 7.5.9
+ optionalDependencies:
+ '@remix-run/serve': 2.9.1(typescript@5.4.5)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - '@types/node'
+ - bluebird
+ - bufferutil
+ - less
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - ts-node
+ - utf-8-validate
+
+ '@remix-run/express@2.9.1(express@4.18.2)(typescript@5.4.5)':
+ dependencies:
+ '@remix-run/node': 2.9.1(typescript@5.4.5)
+ express: 4.18.2
+ optionalDependencies:
+ typescript: 5.4.5
+
+ '@remix-run/node@1.19.3':
+ dependencies:
+ '@remix-run/server-runtime': 1.19.3
+ '@remix-run/web-fetch': 4.4.2
+ '@remix-run/web-file': 3.0.3
+ '@remix-run/web-stream': 1.0.4
+ '@web3-storage/multipart-parser': 1.0.0
+ abort-controller: 3.0.0
+ cookie-signature: 1.2.1
+ source-map-support: 0.5.21
+ stream-slice: 0.1.2
+
+ '@remix-run/node@2.9.1(typescript@5.4.5)':
+ dependencies:
+ '@remix-run/server-runtime': 2.9.1(typescript@5.4.5)
+ '@remix-run/web-fetch': 4.4.2
+ '@web3-storage/multipart-parser': 1.0.0
+ cookie-signature: 1.2.1
+ source-map-support: 0.5.21
+ stream-slice: 0.1.2
+ undici: 6.15.0
+ optionalDependencies:
+ typescript: 5.4.5
+
+ '@remix-run/react@2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)':
+ dependencies:
+ '@remix-run/router': 1.16.0
+ '@remix-run/server-runtime': 2.9.1(typescript@5.4.5)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-router: 6.23.0(react@18.3.1)
+ react-router-dom: 6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ turbo-stream: 2.0.1
+ optionalDependencies:
+ typescript: 5.4.5
+
+ '@remix-run/router@1.16.0': {}
+
+ '@remix-run/router@1.7.2': {}
+
+ '@remix-run/serve@2.9.1(typescript@5.4.5)':
+ dependencies:
+ '@remix-run/express': 2.9.1(express@4.18.2)(typescript@5.4.5)
+ '@remix-run/node': 2.9.1(typescript@5.4.5)
+ chokidar: 3.5.3
+ compression: 1.7.4
+ express: 4.18.2
+ get-port: 5.1.1
+ morgan: 1.10.0
+ source-map-support: 0.5.21
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@remix-run/server-runtime@1.19.3':
+ dependencies:
+ '@remix-run/router': 1.7.2
+ '@types/cookie': 0.4.1
+ '@web3-storage/multipart-parser': 1.0.0
+ cookie: 0.4.2
+ set-cookie-parser: 2.6.0
+ source-map: 0.7.4
+
+ '@remix-run/server-runtime@2.9.1(typescript@5.4.5)':
+ dependencies:
+ '@remix-run/router': 1.16.0
+ '@types/cookie': 0.6.0
+ '@web3-storage/multipart-parser': 1.0.0
+ cookie: 0.6.0
+ set-cookie-parser: 2.6.0
+ source-map: 0.7.4
+ turbo-stream: 2.0.1
+ optionalDependencies:
+ typescript: 5.4.5
+
+ '@remix-run/vercel@1.19.3(@vercel/node@3.1.0)':
+ dependencies:
+ '@remix-run/node': 1.19.3
+ '@vercel/node': 3.1.0
+
+ '@remix-run/web-blob@3.1.0':
+ dependencies:
+ '@remix-run/web-stream': 1.1.0
+ web-encoding: 1.1.5
+
+ '@remix-run/web-fetch@4.4.2':
+ dependencies:
+ '@remix-run/web-blob': 3.1.0
+ '@remix-run/web-file': 3.1.0
+ '@remix-run/web-form-data': 3.1.0
+ '@remix-run/web-stream': 1.1.0
+ '@web3-storage/multipart-parser': 1.0.0
+ abort-controller: 3.0.0
+ data-uri-to-buffer: 3.0.1
+ mrmime: 1.0.1
+
+ '@remix-run/web-file@3.0.3':
+ dependencies:
+ '@remix-run/web-blob': 3.1.0
+
+ '@remix-run/web-file@3.1.0':
+ dependencies:
+ '@remix-run/web-blob': 3.1.0
+
+ '@remix-run/web-form-data@3.1.0':
+ dependencies:
+ web-encoding: 1.1.5
+
+ '@remix-run/web-stream@1.0.4':
+ dependencies:
+ web-streams-polyfill: 3.2.1
+
+ '@remix-run/web-stream@1.1.0':
+ dependencies:
+ web-streams-polyfill: 3.2.1
+
+ '@rollup/pluginutils@4.2.1':
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+
+ '@sinclair/typebox@0.27.8': {}
+
+ '@testing-library/dom@10.0.0':
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/runtime': 7.23.2
+ '@types/aria-query': 5.0.1
+ aria-query: 5.3.0
+ chalk: 4.1.2
+ dom-accessibility-api: 0.5.16
+ lz-string: 1.5.0
+ pretty-format: 27.5.1
+
+ '@testing-library/react@15.0.7(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@babel/runtime': 7.23.2
+ '@testing-library/dom': 10.0.0
+ '@types/react-dom': 18.3.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.1
+
+ '@ts-morph/common@0.11.1':
+ dependencies:
+ fast-glob: 3.3.1
+ minimatch: 3.1.2
+ mkdirp: 1.0.4
+ path-browserify: 1.0.1
+
+ '@tsconfig/node10@1.0.9': {}
+
+ '@tsconfig/node12@1.0.11': {}
+
+ '@tsconfig/node14@1.0.3': {}
+
+ '@tsconfig/node16@1.0.4': {}
+
+ '@types/acorn@4.0.6':
+ dependencies:
+ '@types/estree': 1.0.1
+
+ '@types/aria-query@5.0.1': {}
+
+ '@types/chai-subset@1.3.3':
+ dependencies:
+ '@types/chai': 4.3.5
+
+ '@types/chai@4.3.5': {}
+
+ '@types/cookie@0.4.1': {}
+
+ '@types/cookie@0.6.0': {}
+
+ '@types/debug@4.1.8':
+ dependencies:
+ '@types/ms': 0.7.31
+
+ '@types/eslint@8.40.0':
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/json-schema': 7.0.15
+
+ '@types/estree-jsx@1.0.0':
+ dependencies:
+ '@types/estree': 1.0.1
+
+ '@types/estree@1.0.1': {}
+
+ '@types/flat@5.0.5': {}
+
+ '@types/hast@2.3.4':
+ dependencies:
+ '@types/unist': 3.0.2
+
+ '@types/hast@3.0.3':
+ dependencies:
+ '@types/unist': 3.0.2
+
+ '@types/hoist-non-react-statics@3.3.1':
+ dependencies:
+ '@types/react': 18.3.1
+ hoist-non-react-statics: 3.3.2
+
+ '@types/istanbul-lib-coverage@2.0.4': {}
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/json-stable-stringify@1.0.34': {}
+
+ '@types/mdast@3.0.11':
+ dependencies:
+ '@types/unist': 3.0.2
+
+ '@types/mdast@4.0.3':
+ dependencies:
+ '@types/unist': 3.0.2
+
+ '@types/mdx@2.0.5': {}
+
+ '@types/ms@0.7.31': {}
+
+ '@types/mute-stream@0.0.4':
+ dependencies:
+ '@types/node': 20.12.10
+
+ '@types/node@14.18.33': {}
+
+ '@types/node@16.18.11': {}
+
+ '@types/node@20.12.10':
+ dependencies:
+ undici-types: 5.26.5
+
+ '@types/picomatch@2.3.0': {}
+
+ '@types/prop-types@15.7.5': {}
+
+ '@types/react-dom@18.3.0':
+ dependencies:
+ '@types/react': 18.3.1
+
+ '@types/react@18.3.1':
+ dependencies:
+ '@types/prop-types': 15.7.5
+ csstype: 3.1.2
+
+ '@types/resolve@1.20.2': {}
+
+ '@types/semver@7.5.8': {}
+
+ '@types/statuses@2.0.4': {}
+
+ '@types/unist@2.0.6': {}
+
+ '@types/unist@3.0.2': {}
+
+ '@types/wrap-ansi@3.0.0': {}
+
+ '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)':
+ dependencies:
+ '@eslint-community/regexpp': 4.10.0
+ '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/scope-manager': 7.8.0
+ '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.8.0
+ debug: 4.3.4
+ eslint: 8.57.0
+ graphemer: 1.4.0
+ ignore: 5.3.1
+ natural-compare: 1.4.0
+ semver: 7.6.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 7.8.0
+ '@typescript-eslint/types': 7.8.0
+ '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.8.0
+ debug: 4.3.4
+ eslint: 8.57.0
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@6.11.0':
+ dependencies:
+ '@typescript-eslint/types': 6.11.0
+ '@typescript-eslint/visitor-keys': 6.11.0
+
+ '@typescript-eslint/scope-manager@6.21.0':
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/visitor-keys': 6.21.0
+
+ '@typescript-eslint/scope-manager@7.8.0':
+ dependencies:
+ '@typescript-eslint/types': 7.8.0
+ '@typescript-eslint/visitor-keys': 7.8.0
+
+ '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
+ debug: 4.3.4
+ eslint: 8.57.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@6.11.0': {}
+
+ '@typescript-eslint/types@6.21.0': {}
+
+ '@typescript-eslint/types@7.8.0': {}
+
+ '@typescript-eslint/typescript-estree@6.11.0(typescript@5.4.5)':
+ dependencies:
+ '@typescript-eslint/types': 6.11.0
+ '@typescript-eslint/visitor-keys': 6.11.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.6.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5)':
+ 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.6.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)':
+ dependencies:
+ '@typescript-eslint/types': 7.8.0
+ '@typescript-eslint/visitor-keys': 7.8.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.4
+ semver: 7.6.0
+ ts-api-utils: 1.3.0(typescript@5.4.5)
+ optionalDependencies:
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@6.11.0(eslint@8.57.0)(typescript@5.4.5)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.8
+ '@typescript-eslint/scope-manager': 6.11.0
+ '@typescript-eslint/types': 6.11.0
+ '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.4.5)
+ eslint: 8.57.0
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.8
+ '@typescript-eslint/scope-manager': 6.21.0
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5)
+ eslint: 8.57.0
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.8
+ '@typescript-eslint/scope-manager': 7.8.0
+ '@typescript-eslint/types': 7.8.0
+ '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
+ eslint: 8.57.0
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/visitor-keys@6.11.0':
+ dependencies:
+ '@typescript-eslint/types': 6.11.0
+ eslint-visitor-keys: 3.4.3
+
+ '@typescript-eslint/visitor-keys@6.21.0':
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ eslint-visitor-keys: 3.4.3
+
+ '@typescript-eslint/visitor-keys@7.8.0':
+ dependencies:
+ '@typescript-eslint/types': 7.8.0
+ eslint-visitor-keys: 3.4.3
+
+ '@ungap/structured-clone@1.2.0': {}
+
+ '@vanilla-extract/babel-plugin-debug-ids@1.0.3':
+ dependencies:
+ '@babel/core': 7.22.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vanilla-extract/css@1.11.0':
+ dependencies:
+ '@emotion/hash': 0.9.1
+ '@vanilla-extract/private': 1.0.3
+ ahocorasick: 1.0.2
+ chalk: 4.1.2
+ css-what: 5.1.0
+ cssesc: 3.0.0
+ csstype: 3.1.2
+ deep-object-diff: 1.1.9
+ deepmerge: 4.3.1
+ media-query-parser: 2.0.2
+ outdent: 0.8.0
+
+ '@vanilla-extract/integration@6.2.1(@types/node@20.12.10)':
+ dependencies:
+ '@babel/core': 7.22.1
+ '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1)
+ '@vanilla-extract/babel-plugin-debug-ids': 1.0.3
+ '@vanilla-extract/css': 1.11.0
+ esbuild: 0.17.6
+ eval: 0.1.6
+ find-up: 5.0.0
+ javascript-stringify: 2.1.0
+ lodash: 4.17.21
+ mlly: 1.4.0
+ outdent: 0.8.0
+ vite: 4.3.9(@types/node@20.12.10)
+ vite-node: 0.28.5(@types/node@20.12.10)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ '@vanilla-extract/private@1.0.3': {}
+
+ '@vercel/build-utils@8.0.0': {}
+
+ '@vercel/error-utils@2.0.2': {}
+
+ '@vercel/nft@0.26.4':
+ dependencies:
+ '@mapbox/node-pre-gyp': 1.0.11
+ '@rollup/pluginutils': 4.2.1
+ acorn: 8.10.0
+ acorn-import-attributes: 1.9.2(acorn@8.10.0)
+ async-sema: 3.1.1
+ bindings: 1.5.0
+ estree-walker: 2.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ micromatch: 4.0.5
+ node-gyp-build: 4.6.1
+ resolve-from: 5.0.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@vercel/node@3.1.0':
+ dependencies:
+ '@edge-runtime/node-utils': 2.3.0
+ '@edge-runtime/primitives': 4.1.0
+ '@edge-runtime/vm': 3.2.0
+ '@types/node': 16.18.11
+ '@vercel/build-utils': 8.0.0
+ '@vercel/error-utils': 2.0.2
+ '@vercel/nft': 0.26.4
+ '@vercel/static-config': 3.0.0
+ async-listen: 3.0.0
+ cjs-module-lexer: 1.2.3
+ edge-runtime: 2.5.9
+ es-module-lexer: 1.4.1
+ esbuild: 0.14.47
+ etag: 1.8.1
+ node-fetch: 2.6.9
+ path-to-regexp: 6.2.1
+ ts-morph: 12.0.0
+ ts-node: 10.9.1(@types/node@16.18.11)(typescript@4.9.5)
+ typescript: 4.9.5
+ undici: 5.26.5
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+ - encoding
+ - supports-color
+
+ '@vercel/remix@2.9.1(@remix-run/dev@2.9.1(@remix-run/react@2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@remix-run/serve@2.9.1(typescript@5.4.5))(@types/node@20.12.10)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))(typescript@5.4.5))(@remix-run/node@2.9.1(typescript@5.4.5))(@remix-run/server-runtime@2.9.1(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@remix-run/dev': 2.9.1(@remix-run/react@2.9.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(@remix-run/serve@2.9.1(typescript@5.4.5))(@types/node@20.12.10)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))(typescript@5.4.5)
+ '@remix-run/node': 2.9.1(typescript@5.4.5)
+ '@remix-run/server-runtime': 2.9.1(typescript@5.4.5)
+ '@vercel/static-config': 3.0.0
+ isbot: 3.8.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ ts-morph: 12.0.0
+
+ '@vercel/static-config@3.0.0':
+ dependencies:
+ ajv: 8.6.3
+ json-schema-to-ts: 1.6.4
+ ts-morph: 12.0.0
+
+ '@vitest/coverage-v8@0.34.6(vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0))':
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@bcoe/v8-coverage': 0.2.3
+ istanbul-lib-coverage: 3.2.0
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.5
+ magic-string: 0.30.1
+ picocolors: 1.0.0
+ std-env: 3.3.3
+ test-exclude: 6.0.0
+ v8-to-istanbul: 9.1.0
+ vitest: 0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitest/expect@0.34.6':
+ dependencies:
+ '@vitest/spy': 0.34.6
+ '@vitest/utils': 0.34.6
+ chai: 4.3.10
+
+ '@vitest/runner@0.34.6':
+ dependencies:
+ '@vitest/utils': 0.34.6
+ p-limit: 4.0.0
+ pathe: 1.1.1
+
+ '@vitest/snapshot@0.34.6':
+ dependencies:
+ magic-string: 0.30.1
+ pathe: 1.1.1
+ pretty-format: 29.6.1
+
+ '@vitest/spy@0.34.6':
+ dependencies:
+ tinyspy: 2.1.1
+
+ '@vitest/utils@0.34.6':
+ dependencies:
+ diff-sequences: 29.4.3
+ loupe: 2.3.6
+ pretty-format: 29.6.1
+
+ '@web3-storage/multipart-parser@1.0.0': {}
+
+ '@zxing/text-encoding@0.9.0':
+ optional: true
+
+ abbrev@1.1.1: {}
+
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-import-attributes@1.9.2(acorn@8.10.0):
+ dependencies:
+ acorn: 8.10.0
+
+ acorn-jsx@5.3.2(acorn@8.10.0):
+ dependencies:
+ acorn: 8.10.0
+
+ acorn-walk@8.2.0: {}
+
+ acorn@8.10.0: {}
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ agent-base@7.1.0:
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ aggregate-error@3.1.0:
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
+ ahocorasick@1.0.2: {}
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ajv@8.6.3:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+
+ ansi-escapes@4.3.2:
+ dependencies:
+ type-fest: 0.21.3
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.0.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@5.2.0: {}
+
+ ansi-styles@6.2.1: {}
+
+ any-promise@1.3.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ aproba@2.0.0: {}
+
+ are-we-there-yet@2.0.0:
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 3.6.2
+
+ arg@4.1.3: {}
+
+ arg@5.0.2: {}
+
+ argparse@1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+
+ argparse@2.0.1: {}
+
+ aria-query@5.3.0:
+ dependencies:
+ dequal: 2.0.3
+
+ array-buffer-byte-length@1.0.1:
+ dependencies:
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
+
+ array-flatten@1.1.1: {}
+
+ array-includes@3.1.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ get-intrinsic: 1.2.4
+ is-string: 1.0.7
+
+ array-union@2.1.0: {}
+
+ array.prototype.findlast@1.2.4:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flat@1.3.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.flatmap@1.3.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.toreversed@1.1.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ es-shim-unscopables: 1.0.2
+
+ array.prototype.tosorted@1.1.3:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.0.2
+
+ arraybuffer.prototype.slice@1.0.3:
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ is-array-buffer: 3.0.4
+ is-shared-array-buffer: 1.0.3
+
+ assertion-error@1.1.0: {}
+
+ ast-types-flow@0.0.8: {}
+
+ astring@1.8.5: {}
+
+ async-listen@3.0.0: {}
+
+ async-listen@3.0.1: {}
+
+ async-sema@3.1.1: {}
+
+ asynciterator.prototype@1.0.0:
+ dependencies:
+ has-symbols: 1.0.3
+
+ asynckit@0.4.0: {}
+
+ autoprefixer@10.4.19(postcss@8.4.38):
+ dependencies:
+ browserslist: 4.23.0
+ caniuse-lite: 1.0.30001599
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.38
+ postcss-value-parser: 4.2.0
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.0.0
+
+ axe-core@4.7.0: {}
+
+ axobject-query@3.2.1:
+ dependencies:
+ dequal: 2.0.3
+
+ bail@2.0.2: {}
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ basic-auth@2.0.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ before-after-hook@2.2.3: {}
+
+ binary-extensions@2.2.0: {}
+
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ body-parser@1.20.1:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.11.0
+ raw-body: 2.5.1
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.2:
+ dependencies:
+ fill-range: 7.0.1
+
+ browserify-zlib@0.1.4:
+ dependencies:
+ pako: 0.2.9
+
+ browserslist@4.23.0:
+ dependencies:
+ caniuse-lite: 1.0.30001599
+ electron-to-chromium: 1.4.680
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.23.0)
+
+ buffer-from@1.1.2: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ builtins@5.0.1:
+ dependencies:
+ semver: 7.6.0
+
+ bytes@3.0.0: {}
+
+ bytes@3.1.2: {}
+
+ cac@6.7.14: {}
+
+ cacache@17.1.4:
+ dependencies:
+ '@npmcli/fs': 3.1.0
+ fs-minipass: 3.0.3
+ glob: 10.3.10
+ lru-cache: 7.18.3
+ minipass: 7.0.4
+ minipass-collect: 1.0.2
+ minipass-flush: 1.0.5
+ minipass-pipeline: 1.2.4
+ p-map: 4.0.0
+ ssri: 10.0.5
+ tar: 6.1.15
+ unique-filename: 3.0.0
+
+ call-bind@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.1.0: {}
+
+ camelcase-css@2.0.1: {}
+
+ caniuse-lite@1.0.30001599: {}
+
+ ccount@2.0.1: {}
+
+ chai@4.3.10:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.3
+ get-func-name: 2.0.2
+ loupe: 2.3.6
+ pathval: 1.1.1
+ type-detect: 4.0.8
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chalk@5.3.0: {}
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
+
+ chokidar@3.5.3:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+
+ chownr@1.1.4: {}
+
+ chownr@2.0.0: {}
+
+ cjs-module-lexer@1.2.3: {}
+
+ clean-stack@2.2.0: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-spinners@2.9.2: {}
+
+ cli-width@4.1.0: {}
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clone@1.0.4: {}
+
+ clsx@2.1.0: {}
+
+ code-block-writer@10.1.1: {}
+
+ collapse-white-space@2.1.0: {}
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ color-support@1.1.3: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ comma-separated-tokens@2.0.3: {}
+
+ commander@4.1.1: {}
+
+ compressible@2.0.18:
+ dependencies:
+ mime-db: 1.52.0
+
+ compression@1.7.4:
+ dependencies:
+ accepts: 1.3.8
+ bytes: 3.0.0
+ compressible: 2.0.18
+ debug: 2.6.9
+ on-headers: 1.0.2
+ safe-buffer: 5.1.2
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ concat-map@0.0.1: {}
+
+ concurrently@8.2.2:
+ dependencies:
+ chalk: 4.1.2
+ date-fns: 2.30.0
+ lodash: 4.17.21
+ rxjs: 7.8.1
+ shell-quote: 1.8.1
+ spawn-command: 0.0.2
+ supports-color: 8.1.1
+ tree-kill: 1.2.2
+ yargs: 17.7.2
+
+ console-control-strings@1.1.0: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ convert-hrtime@3.0.0: {}
+
+ convert-source-map@1.9.0: {}
+
+ cookie-signature@1.0.6: {}
+
+ cookie-signature@1.2.1: {}
+
+ cookie@0.4.2: {}
+
+ cookie@0.5.0: {}
+
+ cookie@0.6.0: {}
+
+ core-util-is@1.0.3: {}
+
+ create-require@1.1.1: {}
+
+ cross-spawn@7.0.3:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-what@5.1.0: {}
+
+ css.escape@1.5.1: {}
+
+ cssesc@3.0.0: {}
+
+ cssstyle@4.0.1:
+ dependencies:
+ rrweb-cssom: 0.6.0
+
+ csstype@3.1.2: {}
+
+ damerau-levenshtein@1.0.8: {}
+
+ data-uri-to-buffer@3.0.1: {}
+
+ data-urls@5.0.0:
+ dependencies:
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.0.0
+
+ date-fns@2.30.0:
+ dependencies:
+ '@babel/runtime': 7.23.2
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@4.3.4:
+ dependencies:
+ ms: 2.1.2
+
+ decimal.js@10.4.3: {}
+
+ decode-named-character-reference@1.0.2:
+ dependencies:
+ character-entities: 2.0.2
+
+ deep-eql@4.1.3:
+ dependencies:
+ type-detect: 4.0.8
+
+ deep-is@0.1.4: {}
+
+ deep-object-diff@1.1.9: {}
+
+ deepmerge@4.3.1: {}
+
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ delayed-stream@1.0.0: {}
+
+ delegates@1.0.0: {}
+
+ depd@2.0.0: {}
+
+ deprecation@2.3.1: {}
+
+ dequal@2.0.3: {}
+
+ destroy@1.2.0: {}
+
+ detect-libc@2.0.2: {}
+
+ devlop@1.1.0:
+ dependencies:
+ dequal: 2.0.3
+
+ didyoumean@1.2.2: {}
+
+ diff-sequences@29.4.3: {}
+
+ diff@4.0.2: {}
+
+ diff@5.1.0: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ dlv@1.1.3: {}
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dom-accessibility-api@0.5.16: {}
+
+ dom-accessibility-api@0.6.1: {}
+
+ dotenv-cli@7.4.2:
+ dependencies:
+ cross-spawn: 7.0.3
+ dotenv: 16.4.5
+ dotenv-expand: 10.0.0
+ minimist: 1.2.8
+
+ dotenv-expand@10.0.0: {}
+
+ dotenv@16.4.5: {}
+
+ duplexify@3.7.1:
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ stream-shift: 1.0.1
+
+ eastasianwidth@0.2.0: {}
+
+ edge-runtime@2.5.9:
+ dependencies:
+ '@edge-runtime/format': 2.2.1
+ '@edge-runtime/ponyfill': 2.4.2
+ '@edge-runtime/vm': 3.2.0
+ async-listen: 3.0.1
+ mri: 1.2.0
+ picocolors: 1.0.0
+ pretty-ms: 7.0.1
+ signal-exit: 4.0.2
+ time-span: 4.0.0
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.4.680: {}
+
+ emoji-regex@10.3.0: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ encodeurl@1.0.2: {}
+
+ end-of-stream@1.4.4:
+ dependencies:
+ once: 1.4.0
+
+ entities@4.5.0: {}
+
+ err-code@2.0.3: {}
+
+ es-abstract@1.22.5:
+ 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
+ es-define-property: 1.0.0
+ es-errors: 1.3.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.1
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
+ is-callable: 1.2.7
+ 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.0
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.8
+ string.prototype.trimend: 1.0.7
+ 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.14
+
+ es-define-property@1.0.0:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ es-errors@1.3.0: {}
+
+ es-iterator-helpers@1.0.15:
+ dependencies:
+ asynciterator.prototype: 1.0.0
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ 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.0
+
+ es-iterator-helpers@1.0.17:
+ dependencies:
+ asynciterator.prototype: 1.0.0
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ 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.0
+
+ es-module-lexer@1.4.1: {}
+
+ es-set-tostringtag@2.0.3:
+ dependencies:
+ get-intrinsic: 1.2.4
+ has-tostringtag: 1.0.2
+ hasown: 2.0.1
+
+ es-shim-unscopables@1.0.2:
+ dependencies:
+ hasown: 2.0.1
+
+ es-to-primitive@1.2.1:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+
+ esbuild-android-64@0.14.47:
+ optional: true
+
+ esbuild-android-arm64@0.14.47:
+ optional: true
+
+ esbuild-darwin-64@0.14.47:
+ optional: true
+
+ esbuild-darwin-arm64@0.14.47:
+ optional: true
+
+ esbuild-freebsd-64@0.14.47:
+ optional: true
+
+ esbuild-freebsd-arm64@0.14.47:
+ optional: true
+
+ esbuild-linux-32@0.14.47:
+ optional: true
+
+ esbuild-linux-64@0.14.47:
+ optional: true
+
+ esbuild-linux-arm64@0.14.47:
+ optional: true
+
+ esbuild-linux-arm@0.14.47:
+ optional: true
+
+ esbuild-linux-mips64le@0.14.47:
+ optional: true
+
+ esbuild-linux-ppc64le@0.14.47:
+ optional: true
+
+ esbuild-linux-riscv64@0.14.47:
+ optional: true
+
+ esbuild-linux-s390x@0.14.47:
+ optional: true
+
+ esbuild-netbsd-64@0.14.47:
+ optional: true
+
+ esbuild-openbsd-64@0.14.47:
+ optional: true
+
+ esbuild-plugins-node-modules-polyfill@1.6.1(esbuild@0.17.6):
+ dependencies:
+ '@jspm/core': 2.0.1
+ esbuild: 0.17.6
+ local-pkg: 0.4.3
+ resolve.exports: 2.0.2
+
+ esbuild-register@3.5.0(esbuild@0.21.1):
+ dependencies:
+ debug: 4.3.4
+ esbuild: 0.21.1
+ transitivePeerDependencies:
+ - supports-color
+
+ esbuild-sunos-64@0.14.47:
+ optional: true
+
+ esbuild-windows-32@0.14.47:
+ optional: true
+
+ esbuild-windows-64@0.14.47:
+ optional: true
+
+ esbuild-windows-arm64@0.14.47:
+ optional: true
+
+ esbuild@0.14.47:
+ optionalDependencies:
+ esbuild-android-64: 0.14.47
+ esbuild-android-arm64: 0.14.47
+ esbuild-darwin-64: 0.14.47
+ esbuild-darwin-arm64: 0.14.47
+ esbuild-freebsd-64: 0.14.47
+ esbuild-freebsd-arm64: 0.14.47
+ esbuild-linux-32: 0.14.47
+ esbuild-linux-64: 0.14.47
+ esbuild-linux-arm: 0.14.47
+ esbuild-linux-arm64: 0.14.47
+ esbuild-linux-mips64le: 0.14.47
+ esbuild-linux-ppc64le: 0.14.47
+ esbuild-linux-riscv64: 0.14.47
+ esbuild-linux-s390x: 0.14.47
+ esbuild-netbsd-64: 0.14.47
+ esbuild-openbsd-64: 0.14.47
+ esbuild-sunos-64: 0.14.47
+ esbuild-windows-32: 0.14.47
+ esbuild-windows-64: 0.14.47
+ esbuild-windows-arm64: 0.14.47
+
+ esbuild@0.17.19:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.17.19
+ '@esbuild/android-arm64': 0.17.19
+ '@esbuild/android-x64': 0.17.19
+ '@esbuild/darwin-arm64': 0.17.19
+ '@esbuild/darwin-x64': 0.17.19
+ '@esbuild/freebsd-arm64': 0.17.19
+ '@esbuild/freebsd-x64': 0.17.19
+ '@esbuild/linux-arm': 0.17.19
+ '@esbuild/linux-arm64': 0.17.19
+ '@esbuild/linux-ia32': 0.17.19
+ '@esbuild/linux-loong64': 0.17.19
+ '@esbuild/linux-mips64el': 0.17.19
+ '@esbuild/linux-ppc64': 0.17.19
+ '@esbuild/linux-riscv64': 0.17.19
+ '@esbuild/linux-s390x': 0.17.19
+ '@esbuild/linux-x64': 0.17.19
+ '@esbuild/netbsd-x64': 0.17.19
+ '@esbuild/openbsd-x64': 0.17.19
+ '@esbuild/sunos-x64': 0.17.19
+ '@esbuild/win32-arm64': 0.17.19
+ '@esbuild/win32-ia32': 0.17.19
+ '@esbuild/win32-x64': 0.17.19
+
+ esbuild@0.17.6:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.17.6
+ '@esbuild/android-arm64': 0.17.6
+ '@esbuild/android-x64': 0.17.6
+ '@esbuild/darwin-arm64': 0.17.6
+ '@esbuild/darwin-x64': 0.17.6
+ '@esbuild/freebsd-arm64': 0.17.6
+ '@esbuild/freebsd-x64': 0.17.6
+ '@esbuild/linux-arm': 0.17.6
+ '@esbuild/linux-arm64': 0.17.6
+ '@esbuild/linux-ia32': 0.17.6
+ '@esbuild/linux-loong64': 0.17.6
+ '@esbuild/linux-mips64el': 0.17.6
+ '@esbuild/linux-ppc64': 0.17.6
+ '@esbuild/linux-riscv64': 0.17.6
+ '@esbuild/linux-s390x': 0.17.6
+ '@esbuild/linux-x64': 0.17.6
+ '@esbuild/netbsd-x64': 0.17.6
+ '@esbuild/openbsd-x64': 0.17.6
+ '@esbuild/sunos-x64': 0.17.6
+ '@esbuild/win32-arm64': 0.17.6
+ '@esbuild/win32-ia32': 0.17.6
+ '@esbuild/win32-x64': 0.17.6
+
+ esbuild@0.21.1:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.1
+ '@esbuild/android-arm': 0.21.1
+ '@esbuild/android-arm64': 0.21.1
+ '@esbuild/android-x64': 0.21.1
+ '@esbuild/darwin-arm64': 0.21.1
+ '@esbuild/darwin-x64': 0.21.1
+ '@esbuild/freebsd-arm64': 0.21.1
+ '@esbuild/freebsd-x64': 0.21.1
+ '@esbuild/linux-arm': 0.21.1
+ '@esbuild/linux-arm64': 0.21.1
+ '@esbuild/linux-ia32': 0.21.1
+ '@esbuild/linux-loong64': 0.21.1
+ '@esbuild/linux-mips64el': 0.21.1
+ '@esbuild/linux-ppc64': 0.21.1
+ '@esbuild/linux-riscv64': 0.21.1
+ '@esbuild/linux-s390x': 0.21.1
+ '@esbuild/linux-x64': 0.21.1
+ '@esbuild/netbsd-x64': 0.21.1
+ '@esbuild/openbsd-x64': 0.21.1
+ '@esbuild/sunos-x64': 0.21.1
+ '@esbuild/win32-arm64': 0.21.1
+ '@esbuild/win32-ia32': 0.21.1
+ '@esbuild/win32-x64': 0.21.1
+
+ escalade@3.1.1: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ eslint-config-prettier@9.1.0(eslint@8.57.0):
+ dependencies:
+ eslint: 8.57.0
+
+ eslint-plugin-formatjs@4.13.1(eslint@8.57.0):
+ dependencies:
+ '@formatjs/icu-messageformat-parser': 2.7.6
+ '@formatjs/ts-transformer': 3.13.12
+ '@types/eslint': 8.40.0
+ '@types/picomatch': 2.3.0
+ '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ emoji-regex: 10.3.0
+ eslint: 8.57.0
+ magic-string: 0.30.1
+ picomatch: 2.3.1
+ tslib: 2.6.2
+ typescript: 5.4.5
+ unicode-emoji-utils: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+ - ts-jest
+
+ eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.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
+ eslint: 8.57.0
+ 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-prefer-arrow@1.2.3(eslint@8.57.0):
+ dependencies:
+ eslint: 8.57.0
+
+ eslint-plugin-prettier@5.1.3(@types/eslint@8.40.0)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5):
+ dependencies:
+ eslint: 8.57.0
+ prettier: 3.2.5
+ prettier-linter-helpers: 1.0.0
+ synckit: 0.8.8
+ optionalDependencies:
+ '@types/eslint': 8.40.0
+ eslint-config-prettier: 9.1.0(eslint@8.57.0)
+
+ eslint-plugin-react@7.34.1(eslint@8.57.0):
+ 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
+ eslint: 8.57.0
+ estraverse: 5.3.0
+ jsx-ast-utils: 3.3.5
+ 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-plugin-vitest@0.3.10(@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)(vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0)):
+ dependencies:
+ '@typescript-eslint/utils': 6.11.0(eslint@8.57.0)(typescript@5.4.5)
+ eslint: 8.57.0
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
+ vitest: 0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.57.0:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/regexpp': 4.8.0
+ '@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.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.4
+ 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.5.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.20.0
+ graphemer: 1.4.0
+ ignore: 5.2.4
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ 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
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
+ eslint-visitor-keys: 3.4.3
+
+ esprima@4.0.1: {}
+
+ esquery@1.5.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ estree-util-attach-comments@2.1.1:
+ dependencies:
+ '@types/estree': 1.0.1
+
+ estree-util-attach-comments@3.0.0:
+ dependencies:
+ '@types/estree': 1.0.1
+
+ estree-util-build-jsx@2.2.2:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ estree-util-is-identifier-name: 2.1.0
+ estree-walker: 3.0.3
+
+ estree-util-build-jsx@3.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ estree-walker: 3.0.3
+
+ estree-util-is-identifier-name@1.1.0: {}
+
+ estree-util-is-identifier-name@2.1.0: {}
+
+ estree-util-is-identifier-name@3.0.0: {}
+
+ estree-util-to-js@1.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ astring: 1.8.5
+ source-map: 0.7.4
+
+ estree-util-to-js@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ astring: 1.8.5
+ source-map: 0.7.4
+
+ estree-util-value-to-estree@1.3.0:
+ dependencies:
+ is-plain-obj: 3.0.0
+
+ estree-util-value-to-estree@3.0.1:
+ dependencies:
+ '@types/estree': 1.0.1
+ is-plain-obj: 4.1.0
+
+ estree-util-visit@1.2.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/unist': 2.0.6
+
+ estree-util-visit@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/unist': 3.0.2
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.1
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ eval@0.1.6:
+ dependencies:
+ require-like: 0.1.2
+
+ event-target-shim@5.0.1: {}
+
+ execa@5.1.1:
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+
+ exit-hook@2.2.1: {}
+
+ express@4.18.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.1
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.5.0
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.2.0
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.1
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.7
+ proxy-addr: 2.0.7
+ qs: 6.11.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.18.0
+ serve-static: 1.15.0
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ extend-shallow@2.0.1:
+ dependencies:
+ is-extendable: 0.1.1
+
+ extend@3.0.2: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-diff@1.3.0: {}
+
+ fast-glob@3.3.1:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.15.0:
+ dependencies:
+ reusify: 1.0.4
+
+ fault@2.0.1:
+ dependencies:
+ format: 0.2.2
+
+ feed@4.2.2:
+ dependencies:
+ xml-js: 1.6.11
+
+ figures@3.2.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.0.4
+
+ file-uri-to-path@1.0.0: {}
+
+ fill-range@7.0.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.2.0:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@3.0.4:
+ dependencies:
+ flatted: 3.2.7
+ rimraf: 3.0.2
+
+ flat@6.0.1: {}
+
+ flatted@3.2.7: {}
+
+ for-each@0.3.3:
+ dependencies:
+ is-callable: 1.2.7
+
+ foreground-child@3.1.1:
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
+
+ form-data@4.0.0:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ format@0.2.2: {}
+
+ forwarded@0.2.0: {}
+
+ fraction.js@4.3.7: {}
+
+ fresh@0.5.2: {}
+
+ fs-constants@1.0.0: {}
+
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+
+ fs-minipass@3.0.3:
+ dependencies:
+ minipass: 7.0.4
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.2:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.6:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ functions-have-names: 1.2.3
+
+ functions-have-names@1.2.3: {}
+
+ gauge@3.0.2:
+ dependencies:
+ aproba: 2.0.0
+ color-support: 1.1.3
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ object-assign: 4.1.1
+ signal-exit: 3.0.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wide-align: 1.1.5
+
+ generic-names@4.0.0:
+ dependencies:
+ loader-utils: 3.2.1
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-func-name@2.0.2: {}
+
+ get-intrinsic@1.2.4:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.1
+
+ get-port@5.1.1: {}
+
+ get-stream@6.0.1: {}
+
+ get-symbol-description@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@10.3.10:
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.3.6
+ minimatch: 9.0.4
+ minipass: 7.0.4
+ path-scurry: 1.10.1
+
+ glob@7.1.6:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ globals@11.12.0: {}
+
+ globals@13.20.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globalthis@1.0.3:
+ dependencies:
+ define-properties: 1.2.1
+
+ globby@11.1.0:
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.1
+ ignore: 5.3.1
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ globrex@0.1.2: {}
+
+ gopd@1.0.1:
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ graceful-fs@4.2.11: {}
+
+ graphemer@1.4.0: {}
+
+ graphql@16.8.1: {}
+
+ gray-matter@4.0.3:
+ dependencies:
+ js-yaml: 3.14.1
+ kind-of: 6.0.3
+ section-matter: 1.0.0
+ strip-bom-string: 1.0.0
+
+ gunzip-maybe@1.4.2:
+ dependencies:
+ browserify-zlib: 0.1.4
+ is-deflate: 1.0.0
+ is-gzip: 1.0.0
+ peek-stream: 1.1.3
+ pumpify: 1.5.1
+ through2: 2.0.5
+
+ has-bigints@1.0.2: {}
+
+ has-flag@3.0.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.0
+
+ has-proto@1.0.3: {}
+
+ has-symbols@1.0.3: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.0.3
+
+ has-unicode@2.0.1: {}
+
+ hasown@2.0.0:
+ dependencies:
+ function-bind: 1.1.2
+
+ hasown@2.0.1:
+ dependencies:
+ function-bind: 1.1.2
+
+ hast-util-to-estree@2.3.3:
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 2.3.4
+ '@types/unist': 2.0.6
+ comma-separated-tokens: 2.0.3
+ estree-util-attach-comments: 2.1.1
+ estree-util-is-identifier-name: 2.1.0
+ hast-util-whitespace: 2.0.1
+ mdast-util-mdx-expression: 1.3.2
+ mdast-util-mdxjs-esm: 1.3.1
+ property-information: 6.2.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 0.4.1
+ unist-util-position: 4.0.4
+ zwitch: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-estree@3.1.0:
+ dependencies:
+ '@types/estree': 1.0.1
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-attach-comments: 3.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.1
+ property-information: 6.2.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 0.4.1
+ unist-util-position: 5.0.0
+ zwitch: 2.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-jsx-runtime@2.2.0:
+ dependencies:
+ '@types/hast': 3.0.3
+ '@types/unist': 3.0.2
+ comma-separated-tokens: 2.0.3
+ hast-util-whitespace: 3.0.0
+ property-information: 6.2.0
+ space-separated-tokens: 2.0.2
+ style-to-object: 0.4.1
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.2
+
+ hast-util-whitespace@2.0.1: {}
+
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.3
+
+ headers-polyfill@4.0.2: {}
+
+ highlight.js@11.9.0: {}
+
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
+ hosted-git-info@6.1.1:
+ dependencies:
+ lru-cache: 7.18.3
+
+ html-encoding-sniffer@4.0.0:
+ dependencies:
+ whatwg-encoding: 3.1.1
+
+ html-escaper@2.0.2: {}
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ http-status-codes@2.3.0: {}
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@7.0.4:
+ dependencies:
+ agent-base: 7.1.0
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ human-signals@2.1.0: {}
+
+ husky@9.0.11: {}
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ icss-utils@5.1.0(postcss@8.4.38):
+ dependencies:
+ postcss: 8.4.38
+
+ ieee754@1.2.1: {}
+
+ ignore@5.2.4: {}
+
+ ignore@5.3.1: {}
+
+ import-fresh@3.3.0:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ indent-string@5.0.0: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ inline-style-parser@0.1.1: {}
+
+ internal-slot@1.0.7:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.1
+ side-channel: 1.0.4
+
+ intl-messageformat@10.5.12:
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/fast-memoize': 2.2.0
+ '@formatjs/icu-messageformat-parser': 2.7.6
+ tslib: 2.6.2
+
+ ipaddr.js@1.9.1: {}
+
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
+ is-arguments@1.1.1:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-array-buffer@3.0.4:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ is-async-function@2.0.0:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-bigint@1.0.4:
+ dependencies:
+ has-bigints: 1.0.2
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.2.0
+
+ is-boolean-object@1.1.2:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-buffer@2.0.5: {}
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.13.1:
+ dependencies:
+ hasown: 2.0.1
+
+ is-date-object@1.0.5:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-decimal@2.0.1: {}
+
+ is-deflate@1.0.0: {}
+
+ is-extendable@0.1.1: {}
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-generator-function@1.0.10:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-gzip@1.0.0: {}
+
+ is-hexadecimal@2.0.1: {}
+
+ is-interactive@1.0.0: {}
+
+ is-map@2.0.2: {}
+
+ is-negative-zero@2.0.3: {}
+
+ is-node-process@1.2.0: {}
+
+ is-number-object@1.0.7:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@3.0.0: {}
+
+ is-plain-obj@4.1.0: {}
+
+ is-potential-custom-element-name@1.0.1: {}
+
+ is-reference@3.0.1:
+ dependencies:
+ '@types/estree': 1.0.1
+
+ is-regex@1.1.4:
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ is-set@2.0.2: {}
+
+ is-shared-array-buffer@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-stream@2.0.1: {}
+
+ is-string@1.0.7:
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.0.4:
+ dependencies:
+ has-symbols: 1.0.3
+
+ is-typed-array@1.1.13:
+ dependencies:
+ which-typed-array: 1.1.14
+
+ is-unicode-supported@0.1.0: {}
+
+ is-weakmap@2.0.1: {}
+
+ is-weakref@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+
+ is-weakset@2.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ isarray@1.0.0: {}
+
+ isarray@2.0.5: {}
+
+ isbot@3.8.0: {}
+
+ isbot@5.1.6: {}
+
+ isexe@2.0.0: {}
+
+ istanbul-lib-coverage@3.2.0: {}
+
+ istanbul-lib-report@3.0.1:
+ dependencies:
+ istanbul-lib-coverage: 3.2.0
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ istanbul-lib-source-maps@4.0.1:
+ dependencies:
+ debug: 4.3.4
+ istanbul-lib-coverage: 3.2.0
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ istanbul-reports@3.1.5:
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
+ iterator.prototype@1.1.2:
+ dependencies:
+ define-properties: 1.2.1
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ reflect.getprototypeof: 1.0.4
+ set-function-name: 2.0.1
+
+ jackspeak@2.3.6:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ javascript-stringify@2.1.0: {}
+
+ jiti@1.21.0: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@3.14.1:
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ jsdom@24.0.0:
+ dependencies:
+ cssstyle: 4.0.1
+ data-urls: 5.0.0
+ decimal.js: 10.4.3
+ form-data: 4.0.0
+ html-encoding-sniffer: 4.0.0
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.4
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.7
+ parse5: 7.1.2
+ rrweb-cssom: 0.6.0
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.3
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 3.1.1
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 14.0.0
+ ws: 8.16.0
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ jsesc@2.5.2: {}
+
+ jsesc@3.0.2: {}
+
+ json-parse-even-better-errors@3.0.0: {}
+
+ json-schema-to-ts@1.6.4:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ ts-toolbelt: 6.15.5
+
+ json-schema-traverse@0.4.1: {}
+
+ json-schema-traverse@1.0.0: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json-stable-stringify@1.0.2:
+ dependencies:
+ jsonify: 0.0.1
+
+ json5@2.2.3: {}
+
+ jsonc-parser@3.2.0: {}
+
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.0
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsonify@0.0.1: {}
+
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.7
+ array.prototype.flat: 1.3.2
+ object.assign: 4.1.5
+ object.values: 1.1.7
+
+ kind-of@6.0.3: {}
+
+ kleur@4.1.5: {}
+
+ language-subtag-registry@0.3.22: {}
+
+ language-tags@1.0.9:
+ dependencies:
+ language-subtag-registry: 0.3.22
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lilconfig@2.1.0: {}
+
+ lines-and-columns@1.2.4: {}
+
+ loader-utils@3.2.1: {}
+
+ local-pkg@0.4.3: {}
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash-es@4.17.21: {}
+
+ lodash.camelcase@4.3.0: {}
+
+ lodash.debounce@4.0.8: {}
+
+ lodash.merge@4.6.2: {}
+
+ lodash@4.17.21: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ longest-streak@3.1.0: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ loupe@2.3.6:
+ dependencies:
+ get-func-name: 2.0.2
+
+ lru-cache@10.0.1: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ lru-cache@7.18.3: {}
+
+ lz-string@1.5.0: {}
+
+ magic-string@0.30.1:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ make-dir@3.1.0:
+ dependencies:
+ semver: 6.3.1
+
+ make-dir@4.0.0:
+ dependencies:
+ semver: 7.6.0
+
+ make-error@1.3.6: {}
+
+ markdown-extensions@1.1.1: {}
+
+ markdown-extensions@2.0.0: {}
+
+ mdast-util-definitions@5.1.2:
+ dependencies:
+ '@types/mdast': 3.0.11
+ '@types/unist': 2.0.6
+ unist-util-visit: 4.1.2
+
+ mdast-util-from-markdown@1.3.0:
+ dependencies:
+ '@types/mdast': 3.0.11
+ '@types/unist': 2.0.6
+ decode-named-character-reference: 1.0.2
+ mdast-util-to-string: 3.2.0
+ micromark: 3.1.0
+ micromark-util-decode-numeric-character-reference: 1.0.0
+ micromark-util-decode-string: 1.0.2
+ micromark-util-normalize-identifier: 1.0.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ unist-util-stringify-position: 3.0.3
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-from-markdown@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+ '@types/unist': 3.0.2
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ 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
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-frontmatter@1.0.1:
+ dependencies:
+ '@types/mdast': 3.0.11
+ mdast-util-to-markdown: 1.5.0
+ micromark-extension-frontmatter: 1.1.0
+
+ mdast-util-frontmatter@2.0.1:
+ dependencies:
+ '@types/mdast': 4.0.3
+ devlop: 1.1.0
+ escape-string-regexp: 5.0.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ micromark-extension-frontmatter: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@1.3.2:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 2.3.4
+ '@types/mdast': 3.0.11
+ mdast-util-from-markdown: 1.3.0
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@2.1.4:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 2.3.4
+ '@types/mdast': 3.0.11
+ '@types/unist': 2.0.6
+ ccount: 2.0.1
+ mdast-util-from-markdown: 1.3.0
+ mdast-util-to-markdown: 1.5.0
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.3
+ unist-util-remove-position: 4.0.2
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@3.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ '@types/unist': 3.0.2
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ parse-entities: 4.0.1
+ stringify-entities: 4.0.3
+ unist-util-remove-position: 5.0.0
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx@2.0.1:
+ dependencies:
+ mdast-util-from-markdown: 1.3.0
+ mdast-util-mdx-expression: 1.3.2
+ mdast-util-mdx-jsx: 2.1.4
+ mdast-util-mdxjs-esm: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx@3.0.0:
+ dependencies:
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-mdx-expression: 2.0.0
+ mdast-util-mdx-jsx: 3.0.0
+ mdast-util-mdxjs-esm: 2.0.1
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@1.3.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 2.3.4
+ '@types/mdast': 3.0.11
+ mdast-util-from-markdown: 1.3.0
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.0
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-phrasing@3.0.1:
+ dependencies:
+ '@types/mdast': 3.0.11
+ unist-util-is: 5.2.1
+
+ mdast-util-phrasing@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+ unist-util-is: 6.0.0
+
+ mdast-util-to-hast@12.3.0:
+ dependencies:
+ '@types/hast': 2.3.4
+ '@types/mdast': 3.0.11
+ mdast-util-definitions: 5.1.2
+ micromark-util-sanitize-uri: 1.1.0
+ trim-lines: 3.0.1
+ unist-util-generated: 2.0.1
+ unist-util-position: 4.0.4
+ unist-util-visit: 4.1.2
+
+ mdast-util-to-hast@13.0.2:
+ dependencies:
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ '@ungap/structured-clone': 1.2.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.0
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+
+ mdast-util-to-markdown@1.5.0:
+ dependencies:
+ '@types/mdast': 3.0.11
+ '@types/unist': 2.0.6
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 3.0.1
+ mdast-util-to-string: 3.2.0
+ micromark-util-decode-string: 1.0.2
+ unist-util-visit: 4.1.2
+ zwitch: 2.0.4
+
+ mdast-util-to-markdown@2.1.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+ '@types/unist': 3.0.2
+ longest-streak: 3.1.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.4
+
+ mdast-util-to-string@3.2.0:
+ dependencies:
+ '@types/mdast': 3.0.11
+
+ mdast-util-to-string@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+
+ mdx-bundler@10.0.2(esbuild@0.21.1):
+ dependencies:
+ '@babel/runtime': 7.23.2
+ '@esbuild-plugins/node-resolve': 0.2.2(esbuild@0.21.1)
+ '@fal-works/esbuild-plugin-global-externals': 2.1.2
+ '@mdx-js/esbuild': 3.0.0(esbuild@0.21.1)
+ esbuild: 0.21.1
+ gray-matter: 4.0.3
+ remark-frontmatter: 5.0.0
+ remark-mdx-frontmatter: 4.0.0
+ uuid: 9.0.1
+ vfile: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ media-query-parser@2.0.2:
+ dependencies:
+ '@babel/runtime': 7.23.2
+
+ media-typer@0.3.0: {}
+
+ merge-descriptors@1.0.1: {}
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ methods@1.1.2: {}
+
+ micromark-core-commonmark@1.0.6:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-factory-destination: 1.0.0
+ micromark-factory-label: 1.0.2
+ micromark-factory-space: 1.0.0
+ micromark-factory-title: 1.0.2
+ micromark-factory-whitespace: 1.0.0
+ micromark-util-character: 1.1.0
+ micromark-util-chunked: 1.0.0
+ micromark-util-classify-character: 1.0.0
+ micromark-util-html-tag-name: 1.1.0
+ micromark-util-normalize-identifier: 1.0.0
+ micromark-util-resolve-all: 1.0.0
+ micromark-util-subtokenize: 1.0.2
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+
+ micromark-core-commonmark@2.0.0:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.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.1
+ micromark-util-chunked: 2.0.0
+ micromark-util-classify-character: 2.0.0
+ micromark-util-html-tag-name: 2.0.0
+ micromark-util-normalize-identifier: 2.0.0
+ micromark-util-resolve-all: 2.0.0
+ micromark-util-subtokenize: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-frontmatter@1.1.0:
+ dependencies:
+ fault: 2.0.1
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+
+ micromark-extension-frontmatter@2.0.0:
+ dependencies:
+ fault: 2.0.1
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-mdx-expression@1.0.5:
+ dependencies:
+ micromark-factory-mdx-expression: 1.0.8
+ micromark-factory-space: 1.0.0
+ micromark-util-character: 1.1.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+
+ micromark-extension-mdx-expression@3.0.0:
+ dependencies:
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ micromark-factory-mdx-expression: 2.0.1
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-events-to-acorn: 2.0.2
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-mdx-jsx@1.0.4:
+ dependencies:
+ '@types/acorn': 4.0.6
+ estree-util-is-identifier-name: 2.1.0
+ micromark-factory-mdx-expression: 1.0.8
+ micromark-factory-space: 1.0.0
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-extension-mdx-jsx@3.0.0:
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ micromark-factory-mdx-expression: 2.0.1
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ vfile-message: 4.0.2
+
+ micromark-extension-mdx-md@1.0.1:
+ dependencies:
+ micromark-util-types: 1.0.2
+
+ micromark-extension-mdx-md@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.0
+
+ micromark-extension-mdxjs-esm@1.0.4:
+ dependencies:
+ micromark-core-commonmark: 1.0.6
+ micromark-util-character: 1.1.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ unist-util-position-from-estree: 1.1.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-extension-mdxjs-esm@3.0.0:
+ dependencies:
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-events-to-acorn: 2.0.2
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.2
+
+ micromark-extension-mdxjs@1.0.1:
+ dependencies:
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
+ micromark-extension-mdx-expression: 1.0.5
+ micromark-extension-mdx-jsx: 1.0.4
+ micromark-extension-mdx-md: 1.0.1
+ micromark-extension-mdxjs-esm: 1.0.4
+ micromark-util-combine-extensions: 1.0.0
+ micromark-util-types: 1.0.2
+
+ micromark-extension-mdxjs@3.0.0:
+ dependencies:
+ acorn: 8.10.0
+ acorn-jsx: 5.3.2(acorn@8.10.0)
+ micromark-extension-mdx-expression: 3.0.0
+ micromark-extension-mdx-jsx: 3.0.0
+ micromark-extension-mdx-md: 2.0.0
+ micromark-extension-mdxjs-esm: 3.0.0
+ micromark-util-combine-extensions: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-factory-destination@1.0.0:
+ dependencies:
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+
+ micromark-factory-destination@2.0.0:
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-factory-label@1.0.2:
+ dependencies:
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+
+ micromark-factory-label@2.0.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-factory-mdx-expression@1.0.8:
+ dependencies:
+ '@types/estree': 1.0.1
+ micromark-util-character: 1.1.0
+ micromark-util-events-to-acorn: 1.2.3
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ unist-util-position-from-estree: 1.1.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-factory-mdx-expression@2.0.1:
+ dependencies:
+ '@types/estree': 1.0.1
+ devlop: 1.1.0
+ micromark-util-character: 2.0.1
+ micromark-util-events-to-acorn: 2.0.2
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ unist-util-position-from-estree: 2.0.0
+ vfile-message: 4.0.2
+
+ micromark-factory-space@1.0.0:
+ dependencies:
+ micromark-util-character: 1.1.0
+ micromark-util-types: 1.0.2
+
+ micromark-factory-space@2.0.0:
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-types: 2.0.0
+
+ micromark-factory-title@1.0.2:
+ dependencies:
+ micromark-factory-space: 1.0.0
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+
+ micromark-factory-title@2.0.0:
+ dependencies:
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-factory-whitespace@1.0.0:
+ dependencies:
+ micromark-factory-space: 1.0.0
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+
+ micromark-factory-whitespace@2.0.0:
+ dependencies:
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-util-character@1.1.0:
+ dependencies:
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+
+ micromark-util-character@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-util-chunked@1.0.0:
+ dependencies:
+ micromark-util-symbol: 1.0.1
+
+ micromark-util-chunked@2.0.0:
+ dependencies:
+ micromark-util-symbol: 2.0.0
+
+ micromark-util-classify-character@1.0.0:
+ dependencies:
+ micromark-util-character: 1.1.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+
+ micromark-util-classify-character@2.0.0:
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-util-combine-extensions@1.0.0:
+ dependencies:
+ micromark-util-chunked: 1.0.0
+ micromark-util-types: 1.0.2
+
+ micromark-util-combine-extensions@2.0.0:
+ dependencies:
+ micromark-util-chunked: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-util-decode-numeric-character-reference@1.0.0:
+ dependencies:
+ micromark-util-symbol: 1.0.1
+
+ micromark-util-decode-numeric-character-reference@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.0
+
+ micromark-util-decode-string@1.0.2:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 1.1.0
+ micromark-util-decode-numeric-character-reference: 1.0.0
+ micromark-util-symbol: 1.0.1
+
+ micromark-util-decode-string@2.0.0:
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ micromark-util-symbol: 2.0.0
+
+ micromark-util-encode@1.0.1: {}
+
+ micromark-util-encode@2.0.0: {}
+
+ micromark-util-events-to-acorn@1.2.3:
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.1
+ '@types/unist': 2.0.6
+ estree-util-visit: 1.2.1
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+ vfile-message: 3.1.4
+
+ micromark-util-events-to-acorn@2.0.2:
+ dependencies:
+ '@types/acorn': 4.0.6
+ '@types/estree': 1.0.1
+ '@types/unist': 3.0.2
+ devlop: 1.1.0
+ estree-util-visit: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+ vfile-message: 4.0.2
+
+ micromark-util-html-tag-name@1.1.0: {}
+
+ micromark-util-html-tag-name@2.0.0: {}
+
+ micromark-util-normalize-identifier@1.0.0:
+ dependencies:
+ micromark-util-symbol: 1.0.1
+
+ micromark-util-normalize-identifier@2.0.0:
+ dependencies:
+ micromark-util-symbol: 2.0.0
+
+ micromark-util-resolve-all@1.0.0:
+ dependencies:
+ micromark-util-types: 1.0.2
+
+ micromark-util-resolve-all@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.0
+
+ micromark-util-sanitize-uri@1.1.0:
+ dependencies:
+ micromark-util-character: 1.1.0
+ micromark-util-encode: 1.0.1
+ micromark-util-symbol: 1.0.1
+
+ micromark-util-sanitize-uri@2.0.0:
+ dependencies:
+ micromark-util-character: 2.0.1
+ micromark-util-encode: 2.0.0
+ micromark-util-symbol: 2.0.0
+
+ micromark-util-subtokenize@1.0.2:
+ dependencies:
+ micromark-util-chunked: 1.0.0
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+
+ micromark-util-subtokenize@2.0.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-util-symbol@1.0.1: {}
+
+ micromark-util-symbol@2.0.0: {}
+
+ micromark-util-types@1.0.2: {}
+
+ micromark-util-types@2.0.0: {}
+
+ micromark@3.1.0:
+ dependencies:
+ '@types/debug': 4.1.8
+ debug: 4.3.4
+ decode-named-character-reference: 1.0.2
+ micromark-core-commonmark: 1.0.6
+ micromark-factory-space: 1.0.0
+ micromark-util-character: 1.1.0
+ micromark-util-chunked: 1.0.0
+ micromark-util-combine-extensions: 1.0.0
+ micromark-util-decode-numeric-character-reference: 1.0.0
+ micromark-util-encode: 1.0.1
+ micromark-util-normalize-identifier: 1.0.0
+ micromark-util-resolve-all: 1.0.0
+ micromark-util-sanitize-uri: 1.1.0
+ micromark-util-subtokenize: 1.0.2
+ micromark-util-symbol: 1.0.1
+ micromark-util-types: 1.0.2
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+
+ micromark@4.0.0:
+ dependencies:
+ '@types/debug': 4.1.8
+ debug: 4.3.4
+ decode-named-character-reference: 1.0.2
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.0
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.0.1
+ micromark-util-chunked: 2.0.0
+ micromark-util-combine-extensions: 2.0.0
+ micromark-util-decode-numeric-character-reference: 2.0.1
+ 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
+ transitivePeerDependencies:
+ - supports-color
+
+ micromatch@4.0.5:
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ min-indent@1.0.1: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@9.0.3:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimatch@9.0.4:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimist@1.2.8: {}
+
+ minipass-collect@1.0.2:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-flush@1.0.5:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-pipeline@1.2.4:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+
+ minipass@5.0.0: {}
+
+ minipass@7.0.4: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+
+ mkdirp-classic@0.5.3: {}
+
+ mkdirp@1.0.4: {}
+
+ mlly@1.4.0:
+ dependencies:
+ acorn: 8.10.0
+ pathe: 1.1.1
+ pkg-types: 1.0.3
+ ufo: 1.1.2
+
+ morgan@1.10.0:
+ dependencies:
+ basic-auth: 2.0.1
+ debug: 2.6.9
+ depd: 2.0.0
+ on-finished: 2.3.0
+ on-headers: 1.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mri@1.2.0: {}
+
+ mrmime@1.0.1: {}
+
+ ms@2.0.0: {}
+
+ ms@2.1.2: {}
+
+ ms@2.1.3: {}
+
+ msw@2.3.0(typescript@5.4.5):
+ dependencies:
+ '@bundled-es-modules/cookie': 2.0.0
+ '@bundled-es-modules/statuses': 1.0.1
+ '@inquirer/confirm': 3.0.0
+ '@mswjs/cookies': 1.1.0
+ '@mswjs/interceptors': 0.29.1
+ '@open-draft/until': 2.1.0
+ '@types/cookie': 0.6.0
+ '@types/statuses': 2.0.4
+ chalk: 4.1.2
+ graphql: 16.8.1
+ headers-polyfill: 4.0.2
+ is-node-process: 1.2.0
+ outvariant: 1.4.2
+ path-to-regexp: 6.2.1
+ strict-event-emitter: 0.5.1
+ type-fest: 4.10.3
+ yargs: 17.7.2
+ optionalDependencies:
+ typescript: 5.4.5
+
+ mute-stream@1.0.0: {}
+
+ mz@2.7.0:
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+
+ nanoid@3.3.7: {}
+
+ natural-compare@1.4.0: {}
+
+ negotiator@0.6.3: {}
+
+ node-fetch@2.6.11:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-fetch@2.6.9:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-gyp-build@4.6.1: {}
+
+ node-releases@2.0.14: {}
+
+ nopt@5.0.0:
+ dependencies:
+ abbrev: 1.1.1
+
+ normalize-package-data@5.0.0:
+ dependencies:
+ hosted-git-info: 6.1.1
+ is-core-module: 2.13.1
+ semver: 7.6.0
+ validate-npm-package-license: 3.0.4
+
+ normalize-path@3.0.0: {}
+
+ normalize-range@0.1.2: {}
+
+ npm-install-checks@6.3.0:
+ dependencies:
+ semver: 7.6.0
+
+ npm-normalize-package-bin@3.0.1: {}
+
+ npm-package-arg@10.1.0:
+ dependencies:
+ hosted-git-info: 6.1.1
+ proc-log: 3.0.0
+ semver: 7.6.0
+ validate-npm-package-name: 5.0.0
+
+ npm-pick-manifest@8.0.2:
+ dependencies:
+ npm-install-checks: 6.3.0
+ npm-normalize-package-bin: 3.0.1
+ npm-package-arg: 10.1.0
+ semver: 7.6.0
+
+ npm-run-path@4.0.1:
+ dependencies:
+ path-key: 3.1.1
+
+ npmlog@5.0.1:
+ dependencies:
+ are-we-there-yet: 2.0.0
+ console-control-strings: 1.1.0
+ gauge: 3.0.2
+ set-blocking: 2.0.0
+
+ nwsapi@2.2.7: {}
+
+ object-assign@4.1.1: {}
+
+ object-hash@3.0.0: {}
+
+ object-inspect@1.13.1: {}
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.5:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+
+ object.entries@1.1.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ object.fromentries@2.0.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ object.hasown@1.1.3:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ object.values@1.1.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ on-finished@2.3.0:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-headers@1.0.2: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ optionator@0.9.3:
+ dependencies:
+ '@aashutoshrathi/word-wrap': 1.2.6
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
+ outdent@0.8.0: {}
+
+ outvariant@1.4.2: {}
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-limit@4.0.0:
+ dependencies:
+ yocto-queue: 1.0.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ p-map@4.0.0:
+ dependencies:
+ aggregate-error: 3.1.0
+
+ pako@0.2.9: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-entities@4.0.1:
+ dependencies:
+ '@types/unist': 2.0.6
+ character-entities: 2.0.2
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.0.2
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
+ parse-ms@2.1.0: {}
+
+ parse5@7.1.2:
+ dependencies:
+ entities: 4.5.0
+
+ parseurl@1.3.3: {}
+
+ path-browserify@1.0.1: {}
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.10.1:
+ dependencies:
+ lru-cache: 10.0.1
+ minipass: 7.0.4
+
+ path-to-regexp@0.1.7: {}
+
+ path-to-regexp@6.2.1: {}
+
+ path-type@4.0.0: {}
+
+ pathe@1.1.1: {}
+
+ pathval@1.1.1: {}
+
+ peek-stream@1.1.3:
+ dependencies:
+ buffer-from: 1.1.2
+ duplexify: 3.7.1
+ through2: 2.0.5
+
+ periscopic@3.1.0:
+ dependencies:
+ '@types/estree': 1.0.1
+ estree-walker: 3.0.3
+ is-reference: 3.0.1
+
+ picocolors@1.0.0: {}
+
+ picomatch@2.3.1: {}
+
+ pidtree@0.6.0: {}
+
+ pify@2.3.0: {}
+
+ pirates@4.0.5: {}
+
+ pkg-types@1.0.3:
+ dependencies:
+ jsonc-parser: 3.2.0
+ mlly: 1.4.0
+ pathe: 1.1.1
+
+ possible-typed-array-names@1.0.0: {}
+
+ postcss-discard-duplicates@5.1.0(postcss@8.4.38):
+ dependencies:
+ postcss: 8.4.38
+
+ postcss-import@15.1.0(postcss@8.4.38):
+ dependencies:
+ postcss: 8.4.38
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.2
+
+ postcss-js@4.0.1(postcss@8.4.38):
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.38
+
+ postcss-load-config@4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5)):
+ dependencies:
+ lilconfig: 2.1.0
+ yaml: 2.3.1
+ optionalDependencies:
+ postcss: 8.4.38
+ ts-node: 10.9.2(@types/node@20.12.10)(typescript@5.4.5)
+
+ postcss-modules-extract-imports@3.0.0(postcss@8.4.38):
+ dependencies:
+ postcss: 8.4.38
+
+ postcss-modules-local-by-default@4.0.3(postcss@8.4.38):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.4.38)
+ postcss: 8.4.38
+ postcss-selector-parser: 6.0.13
+ postcss-value-parser: 4.2.0
+
+ postcss-modules-scope@3.0.0(postcss@8.4.38):
+ dependencies:
+ postcss: 8.4.38
+ postcss-selector-parser: 6.0.13
+
+ postcss-modules-values@4.0.0(postcss@8.4.38):
+ dependencies:
+ icss-utils: 5.1.0(postcss@8.4.38)
+ postcss: 8.4.38
+
+ postcss-modules@6.0.0(postcss@8.4.38):
+ dependencies:
+ generic-names: 4.0.0
+ icss-utils: 5.1.0(postcss@8.4.38)
+ lodash.camelcase: 4.3.0
+ postcss: 8.4.38
+ postcss-modules-extract-imports: 3.0.0(postcss@8.4.38)
+ postcss-modules-local-by-default: 4.0.3(postcss@8.4.38)
+ postcss-modules-scope: 3.0.0(postcss@8.4.38)
+ postcss-modules-values: 4.0.0(postcss@8.4.38)
+ string-hash: 1.1.3
+
+ postcss-nested@6.0.1(postcss@8.4.38):
+ dependencies:
+ postcss: 8.4.38
+ postcss-selector-parser: 6.0.13
+
+ postcss-selector-parser@6.0.13:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.4.38:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.2.0
+
+ prelude-ls@1.2.1: {}
+
+ prettier-linter-helpers@1.0.0:
+ dependencies:
+ fast-diff: 1.3.0
+
+ prettier-plugin-organize-imports@3.2.4(prettier@3.2.5)(typescript@5.4.5):
+ dependencies:
+ prettier: 3.2.5
+ typescript: 5.4.5
+
+ prettier-plugin-tailwindcss@0.5.14(prettier-plugin-organize-imports@3.2.4(prettier@3.2.5)(typescript@5.4.5))(prettier@3.2.5):
+ dependencies:
+ prettier: 3.2.5
+ optionalDependencies:
+ prettier-plugin-organize-imports: 3.2.4(prettier@3.2.5)(typescript@5.4.5)
+
+ prettier@2.8.8: {}
+
+ prettier@3.2.5: {}
+
+ pretty-format@27.5.1:
+ dependencies:
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
+
+ pretty-format@29.6.1:
+ dependencies:
+ '@jest/schemas': 29.6.0
+ ansi-styles: 5.2.0
+ react-is: 18.2.0
+
+ pretty-ms@7.0.1:
+ dependencies:
+ parse-ms: 2.1.0
+
+ prisma@5.13.0:
+ dependencies:
+ '@prisma/engines': 5.13.0
+
+ proc-log@3.0.0: {}
+
+ process-nextick-args@2.0.1: {}
+
+ promise-inflight@1.0.1: {}
+
+ promise-retry@2.0.1:
+ dependencies:
+ err-code: 2.0.3
+ retry: 0.12.0
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ property-information@6.2.0: {}
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ psl@1.9.0: {}
+
+ pump@2.0.1:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ pump@3.0.0:
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+
+ pumpify@1.5.1:
+ dependencies:
+ duplexify: 3.7.1
+ inherits: 2.0.4
+ pump: 2.0.1
+
+ punycode@2.3.1: {}
+
+ qs@6.11.0:
+ dependencies:
+ side-channel: 1.0.4
+
+ querystringify@2.2.0: {}
+
+ queue-microtask@1.2.3: {}
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.1:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
+ react-intl@6.6.6(react@18.3.1)(typescript@5.4.5):
+ dependencies:
+ '@formatjs/ecma402-abstract': 1.18.2
+ '@formatjs/icu-messageformat-parser': 2.7.6
+ '@formatjs/intl': 2.10.2(typescript@5.4.5)
+ '@formatjs/intl-displaynames': 6.6.6
+ '@formatjs/intl-listformat': 7.5.5
+ '@types/hoist-non-react-statics': 3.3.1
+ '@types/react': 18.3.1
+ hoist-non-react-statics: 3.3.2
+ intl-messageformat: 10.5.12
+ react: 18.3.1
+ tslib: 2.6.2
+ optionalDependencies:
+ typescript: 5.4.5
+
+ react-is@16.13.1: {}
+
+ react-is@17.0.2: {}
+
+ react-is@18.2.0: {}
+
+ react-refresh@0.14.0: {}
+
+ react-router-dom@6.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ '@remix-run/router': 1.16.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ react-router: 6.23.0(react@18.3.1)
+
+ react-router@6.23.0(react@18.3.1):
+ dependencies:
+ '@remix-run/router': 1.16.0
+ react: 18.3.1
+
+ react-toastify@10.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ clsx: 2.1.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
+ read-cache@1.0.0:
+ dependencies:
+ pify: 2.3.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ redent@4.0.0:
+ dependencies:
+ indent-string: 5.0.0
+ strip-indent: 4.0.0
+
+ reflect.getprototypeof@1.0.4:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.3
+ which-builtin-type: 1.1.3
+
+ regenerator-runtime@0.14.0: {}
+
+ regexp.prototype.flags@1.5.2:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.1
+
+ remark-frontmatter@4.0.1:
+ dependencies:
+ '@types/mdast': 3.0.11
+ mdast-util-frontmatter: 1.0.1
+ micromark-extension-frontmatter: 1.1.0
+ unified: 10.1.2
+
+ remark-frontmatter@5.0.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+ mdast-util-frontmatter: 2.0.1
+ micromark-extension-frontmatter: 2.0.0
+ unified: 11.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-mdx-frontmatter@1.1.1:
+ dependencies:
+ estree-util-is-identifier-name: 1.1.0
+ estree-util-value-to-estree: 1.3.0
+ js-yaml: 4.1.0
+ toml: 3.0.0
+
+ remark-mdx-frontmatter@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+ estree-util-is-identifier-name: 3.0.0
+ estree-util-value-to-estree: 3.0.1
+ toml: 3.0.0
+ unified: 11.0.4
+ yaml: 2.3.1
+
+ remark-mdx@2.3.0:
+ dependencies:
+ mdast-util-mdx: 2.0.1
+ micromark-extension-mdxjs: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-mdx@3.0.0:
+ dependencies:
+ mdast-util-mdx: 3.0.0
+ micromark-extension-mdxjs: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-parse@10.0.2:
+ dependencies:
+ '@types/mdast': 3.0.11
+ mdast-util-from-markdown: 1.3.0
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-parse@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.3
+ mdast-util-from-markdown: 2.0.0
+ micromark-util-types: 2.0.0
+ unified: 11.0.4
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-rehype@10.1.0:
+ dependencies:
+ '@types/hast': 2.3.4
+ '@types/mdast': 3.0.11
+ mdast-util-to-hast: 12.3.0
+ unified: 10.1.2
+
+ remark-rehype@11.0.0:
+ dependencies:
+ '@types/hast': 3.0.3
+ '@types/mdast': 4.0.3
+ mdast-util-to-hast: 13.0.2
+ unified: 11.0.4
+ vfile: 6.0.1
+
+ require-directory@2.1.1: {}
+
+ require-from-string@2.0.2: {}
+
+ require-like@0.1.2: {}
+
+ requires-port@1.0.0: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-from@5.0.0: {}
+
+ resolve.exports@2.0.2: {}
+
+ resolve@1.22.2:
+ dependencies:
+ is-core-module: 2.13.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ resolve@2.0.0-next.5:
+ dependencies:
+ is-core-module: 2.13.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ retry@0.12.0: {}
+
+ reusify@1.0.4: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ rollup@3.23.0:
+ optionalDependencies:
+ fsevents: 2.3.2
+
+ rrweb-cssom@0.6.0: {}
+
+ run-async@3.0.0: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.1:
+ dependencies:
+ tslib: 2.6.2
+
+ sade@1.8.1:
+ dependencies:
+ mri: 1.2.0
+
+ safe-array-concat@1.1.0:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ isarray: 2.0.5
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-regex-test@1.0.3:
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-regex: 1.1.4
+
+ safer-buffer@2.1.2: {}
+
+ sax@1.2.4: {}
+
+ saxes@6.0.0:
+ dependencies:
+ xmlchars: 2.2.0
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ section-matter@1.0.0:
+ dependencies:
+ extend-shallow: 2.0.1
+ kind-of: 6.0.3
+
+ semver@6.3.1: {}
+
+ semver@7.6.0:
+ dependencies:
+ lru-cache: 6.0.0
+
+ send@0.18.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@1.15.0:
+ dependencies:
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.18.0
+ transitivePeerDependencies:
+ - supports-color
+
+ set-blocking@2.0.0: {}
+
+ set-cookie-parser@2.6.0: {}
+
+ set-function-length@1.2.1:
+ 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.1:
+ dependencies:
+ define-data-property: 1.1.4
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ setprototypeof@1.2.0: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.8.1: {}
+
+ side-channel@1.0.4:
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.1
+
+ siginfo@2.0.0: {}
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.0.2: {}
+
+ signal-exit@4.1.0: {}
+
+ slash@3.0.0: {}
+
+ source-map-js@1.2.0: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ source-map@0.7.4: {}
+
+ space-separated-tokens@2.0.2: {}
+
+ spawn-command@0.0.2: {}
+
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.16
+
+ spdx-exceptions@2.3.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: 3.0.16
+
+ spdx-license-ids@3.0.16: {}
+
+ sprintf-js@1.0.3: {}
+
+ ssri@10.0.5:
+ dependencies:
+ minipass: 7.0.4
+
+ stackback@0.0.2: {}
+
+ statuses@2.0.1: {}
+
+ std-env@3.3.3: {}
+
+ stream-shift@1.0.1: {}
+
+ stream-slice@0.1.2: {}
+
+ strict-event-emitter@0.5.1: {}
+
+ string-hash@1.1.3: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ string.prototype.matchall@4.0.10:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ regexp.prototype.flags: 1.5.2
+ set-function-name: 2.0.1
+ side-channel: 1.0.4
+
+ string.prototype.trim@1.2.8:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ string.prototype.trimend@1.0.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ string.prototype.trimstart@1.0.7:
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.22.5
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ stringify-entities@4.0.3:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.0.1
+
+ strip-bom-string@1.0.0: {}
+
+ strip-bom@3.0.0: {}
+
+ strip-final-newline@2.0.0: {}
+
+ strip-indent@4.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
+ strip-json-comments@3.1.1: {}
+
+ strip-literal@1.0.1:
+ dependencies:
+ acorn: 8.10.0
+
+ style-to-object@0.4.1:
+ dependencies:
+ inline-style-parser: 0.1.1
+
+ sucrase@3.32.0:
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ commander: 4.1.1
+ glob: 7.1.6
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.5
+ ts-interface-checker: 0.1.13
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ symbol-tree@3.2.4: {}
+
+ synckit@0.8.8:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.6.2
+
+ tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5)):
+ 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.1
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.0
+ 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.38
+ postcss-import: 15.1.0(postcss@8.4.38)
+ postcss-js: 4.0.1(postcss@8.4.38)
+ postcss-load-config: 4.0.1(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5))
+ postcss-nested: 6.0.1(postcss@8.4.38)
+ postcss-selector-parser: 6.0.13
+ resolve: 1.22.2
+ sucrase: 3.32.0
+ transitivePeerDependencies:
+ - ts-node
+
+ tar-fs@2.1.1:
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.0
+ tar-stream: 2.2.0
+
+ tar-stream@2.2.0:
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.4
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ tar@6.1.15:
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+
+ test-exclude@6.0.0:
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+
+ text-table@0.2.0: {}
+
+ thenify-all@1.6.0:
+ dependencies:
+ thenify: 3.3.1
+
+ thenify@3.3.1:
+ dependencies:
+ any-promise: 1.3.0
+
+ through2@2.0.5:
+ dependencies:
+ readable-stream: 2.3.8
+ xtend: 4.0.2
+
+ time-span@4.0.0:
+ dependencies:
+ convert-hrtime: 3.0.0
+
+ tiny-invariant@1.3.3: {}
+
+ tinybench@2.5.0: {}
+
+ tinypool@0.7.0: {}
+
+ tinyspy@2.1.1: {}
+
+ to-fast-properties@2.0.0: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ toml@3.0.0: {}
+
+ tough-cookie@4.1.3:
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+
+ tr46@0.0.3: {}
+
+ tr46@5.0.0:
+ dependencies:
+ punycode: 2.3.1
+
+ tree-kill@1.2.2: {}
+
+ trim-lines@3.0.1: {}
+
+ trough@2.1.0: {}
+
+ ts-api-utils@1.3.0(typescript@5.4.5):
+ dependencies:
+ typescript: 5.4.5
+
+ ts-interface-checker@0.1.13: {}
+
+ ts-morph@12.0.0:
+ dependencies:
+ '@ts-morph/common': 0.11.1
+ code-block-writer: 10.1.1
+
+ ts-node@10.9.1(@types/node@16.18.11)(typescript@4.9.5):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 16.18.11
+ acorn: 8.10.0
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.9.5
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+
+ ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 20.12.10
+ acorn: 8.10.0
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.4.5
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+
+ ts-toolbelt@6.15.5: {}
+
+ tsconfck@3.0.3(typescript@5.4.5):
+ optionalDependencies:
+ typescript: 5.4.5
+
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@2.6.2: {}
+
+ turbo-stream@2.0.1: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-detect@4.0.8: {}
+
+ type-fest@0.20.2: {}
+
+ type-fest@0.21.3: {}
+
+ type-fest@4.10.3: {}
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ typed-array-buffer@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:
+ 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:
+ 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:
+ 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@4.9.5: {}
+
+ typescript@5.4.5: {}
+
+ ufo@1.1.2: {}
+
+ unbox-primitive@1.0.2:
+ dependencies:
+ call-bind: 1.0.7
+ has-bigints: 1.0.2
+ has-symbols: 1.0.3
+ which-boxed-primitive: 1.0.2
+
+ undici-types@5.26.5: {}
+
+ undici@5.26.5:
+ dependencies:
+ '@fastify/busboy': 2.0.0
+
+ undici@6.15.0: {}
+
+ unicode-emoji-utils@1.2.0:
+ dependencies:
+ emoji-regex: 10.3.0
+
+ unified@10.1.2:
+ dependencies:
+ '@types/unist': 2.0.6
+ bail: 2.0.2
+ extend: 3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 4.1.0
+ trough: 2.1.0
+ vfile: 5.3.7
+
+ unified@11.0.4:
+ dependencies:
+ '@types/unist': 3.0.2
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.1.0
+ vfile: 6.0.1
+
+ unique-filename@3.0.0:
+ dependencies:
+ unique-slug: 4.0.0
+
+ unique-slug@4.0.0:
+ dependencies:
+ imurmurhash: 0.1.4
+
+ unist-util-generated@2.0.1: {}
+
+ unist-util-is@5.2.1:
+ dependencies:
+ '@types/unist': 2.0.6
+
+ unist-util-is@6.0.0:
+ dependencies:
+ '@types/unist': 3.0.2
+
+ unist-util-position-from-estree@1.1.2:
+ dependencies:
+ '@types/unist': 2.0.6
+
+ unist-util-position-from-estree@2.0.0:
+ dependencies:
+ '@types/unist': 3.0.2
+
+ unist-util-position@4.0.4:
+ dependencies:
+ '@types/unist': 2.0.6
+
+ unist-util-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.2
+
+ unist-util-remove-position@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-visit: 4.1.2
+
+ unist-util-remove-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-visit: 5.0.0
+
+ unist-util-stringify-position@3.0.3:
+ dependencies:
+ '@types/unist': 2.0.6
+
+ unist-util-stringify-position@4.0.0:
+ dependencies:
+ '@types/unist': 3.0.2
+
+ unist-util-visit-parents@5.1.3:
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-is: 5.2.1
+
+ unist-util-visit-parents@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-is: 6.0.0
+
+ unist-util-visit@4.1.2:
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+
+ unist-util-visit@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
+ universal-user-agent@6.0.0: {}
+
+ universalify@0.2.0: {}
+
+ universalify@2.0.0: {}
+
+ unpipe@1.0.0: {}
+
+ update-browserslist-db@1.0.13(browserslist@4.23.0):
+ dependencies:
+ browserslist: 4.23.0
+ escalade: 3.1.1
+ picocolors: 1.0.0
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ url-parse@1.5.10:
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+
+ util-deprecate@1.0.2: {}
+
+ util@0.12.5:
+ dependencies:
+ inherits: 2.0.4
+ is-arguments: 1.1.1
+ is-generator-function: 1.0.10
+ is-typed-array: 1.1.13
+ which-typed-array: 1.1.14
+
+ utils-merge@1.0.1: {}
+
+ uuid@9.0.1: {}
+
+ uvu@0.5.6:
+ dependencies:
+ dequal: 2.0.3
+ diff: 5.1.0
+ kleur: 4.1.5
+ sade: 1.8.1
+
+ v8-compile-cache-lib@3.0.1: {}
+
+ v8-to-istanbul@9.1.0:
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.18
+ '@types/istanbul-lib-coverage': 2.0.4
+ convert-source-map: 1.9.0
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ validate-npm-package-name@5.0.0:
+ dependencies:
+ builtins: 5.0.1
+
+ vary@1.1.2: {}
+
+ vfile-message@3.1.4:
+ dependencies:
+ '@types/unist': 2.0.6
+ unist-util-stringify-position: 3.0.3
+
+ vfile-message@4.0.2:
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-stringify-position: 4.0.0
+
+ vfile@5.3.7:
+ dependencies:
+ '@types/unist': 2.0.6
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+
+ vfile@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.2
+
+ vite-node@0.28.5(@types/node@20.12.10):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.4
+ mlly: 1.4.0
+ pathe: 1.1.1
+ picocolors: 1.0.0
+ source-map: 0.6.1
+ source-map-support: 0.5.21
+ vite: 4.3.9(@types/node@20.12.10)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vite-node@0.34.6(@types/node@20.12.10):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.4
+ mlly: 1.4.0
+ pathe: 1.1.1
+ picocolors: 1.0.0
+ vite: 4.3.9(@types/node@20.12.10)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vite-tsconfig-paths@4.3.2(typescript@5.4.5):
+ dependencies:
+ debug: 4.3.4
+ globrex: 0.1.2
+ tsconfck: 3.0.3(typescript@5.4.5)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite@4.3.9(@types/node@20.12.10):
+ dependencies:
+ esbuild: 0.17.19
+ postcss: 8.4.38
+ rollup: 3.23.0
+ optionalDependencies:
+ '@types/node': 20.12.10
+ fsevents: 2.3.2
+
+ vitest-dom@0.1.1(vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0)):
+ dependencies:
+ aria-query: 5.3.0
+ chalk: 5.3.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.1
+ lodash-es: 4.17.21
+ redent: 4.0.0
+ vitest: 0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0)
+
+ vitest@0.34.6(@edge-runtime/vm@3.2.0)(jsdom@24.0.0):
+ dependencies:
+ '@types/chai': 4.3.5
+ '@types/chai-subset': 1.3.3
+ '@types/node': 20.12.10
+ '@vitest/expect': 0.34.6
+ '@vitest/runner': 0.34.6
+ '@vitest/snapshot': 0.34.6
+ '@vitest/spy': 0.34.6
+ '@vitest/utils': 0.34.6
+ acorn: 8.10.0
+ acorn-walk: 8.2.0
+ cac: 6.7.14
+ chai: 4.3.10
+ debug: 4.3.4
+ local-pkg: 0.4.3
+ magic-string: 0.30.1
+ pathe: 1.1.1
+ picocolors: 1.0.0
+ std-env: 3.3.3
+ strip-literal: 1.0.1
+ tinybench: 2.5.0
+ tinypool: 0.7.0
+ vite: 4.3.9(@types/node@20.12.10)
+ vite-node: 0.34.6(@types/node@20.12.10)
+ why-is-node-running: 2.2.2
+ optionalDependencies:
+ '@edge-runtime/vm': 3.2.0
+ jsdom: 24.0.0
+ transitivePeerDependencies:
+ - less
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ w3c-xmlserializer@5.0.0:
+ dependencies:
+ xml-name-validator: 5.0.0
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
+ web-encoding@1.1.5:
+ dependencies:
+ util: 0.12.5
+ optionalDependencies:
+ '@zxing/text-encoding': 0.9.0
+
+ web-streams-polyfill@3.2.1: {}
+
+ webidl-conversions@3.0.1: {}
+
+ webidl-conversions@7.0.0: {}
+
+ whatwg-encoding@3.1.1:
+ dependencies:
+ iconv-lite: 0.6.3
+
+ whatwg-mimetype@4.0.0: {}
+
+ whatwg-url@14.0.0:
+ dependencies:
+ tr46: 5.0.0
+ webidl-conversions: 7.0.0
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ which-boxed-primitive@1.0.2:
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+
+ which-builtin-type@1.1.3:
+ dependencies:
+ function.prototype.name: 1.1.6
+ has-tostringtag: 1.0.2
+ 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.14
+
+ which-collection@1.0.1:
+ dependencies:
+ is-map: 2.0.2
+ is-set: 2.0.2
+ is-weakmap: 2.0.1
+ is-weakset: 2.0.2
+
+ which-typed-array@1.1.14:
+ 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.2:
+ dependencies:
+ isexe: 2.0.0
+
+ which@3.0.1:
+ dependencies:
+ isexe: 2.0.0
+
+ why-is-node-running@2.2.2:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
+ wide-align@1.1.5:
+ dependencies:
+ string-width: 4.2.3
+
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ wrappy@1.0.2: {}
+
+ ws@7.5.9: {}
+
+ ws@8.16.0: {}
+
+ xml-js@1.6.11:
+ dependencies:
+ sax: 1.2.4
+
+ xml-name-validator@5.0.0: {}
+
+ xmlchars@2.2.0: {}
+
+ xtend@4.0.2: {}
+
+ y18n@5.0.8: {}
+
+ yallist@3.1.1: {}
+
+ yallist@4.0.0: {}
+
+ yaml@2.3.1: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@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.8
+ yargs-parser: 21.1.1
+
+ yn@3.1.1: {}
+
+ yocto-queue@0.1.0: {}
+
+ yocto-queue@1.0.0: {}
+
+ zwitch@2.0.4: {}
diff --git a/prisma/migrations/20230520172431_init/migration.sql b/prisma/migrations/20230520172431_init/migration.sql
new file mode 100644
index 00000000..d551e5d7
--- /dev/null
+++ b/prisma/migrations/20230520172431_init/migration.sql
@@ -0,0 +1,52 @@
+-- CreateEnum
+CREATE TYPE "SkillArea" AS ENUM ('Frontend', 'Backend', 'EndToEnd', 'Cloud', 'None');
+
+-- CreateTable
+CREATE TABLE "Education" (
+ "id" TEXT NOT NULL,
+ "title" TEXT NOT NULL,
+ "description" TEXT,
+ "organisation" TEXT,
+ "start" DATE NOT NULL,
+ "end" DATE,
+
+ CONSTRAINT "Education_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Experience" (
+ "id" TEXT NOT NULL,
+ "title" TEXT NOT NULL,
+ "organisation" TEXT NOT NULL,
+ "start" DATE NOT NULL,
+ "end" DATE,
+
+ CONSTRAINT "Experience_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Skill" (
+ "id" TEXT NOT NULL,
+ "title" TEXT NOT NULL,
+ "area" "SkillArea" NOT NULL,
+
+ CONSTRAINT "Skill_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "_ExperienceToSkill" (
+ "A" TEXT NOT NULL,
+ "B" TEXT NOT NULL
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "_ExperienceToSkill_AB_unique" ON "_ExperienceToSkill"("A", "B");
+
+-- CreateIndex
+CREATE INDEX "_ExperienceToSkill_B_index" ON "_ExperienceToSkill"("B");
+
+-- AddForeignKey
+ALTER TABLE "_ExperienceToSkill" ADD CONSTRAINT "_ExperienceToSkill_A_fkey" FOREIGN KEY ("A") REFERENCES "Experience"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "_ExperienceToSkill" ADD CONSTRAINT "_ExperienceToSkill_B_fkey" FOREIGN KEY ("B") REFERENCES "Skill"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml
new file mode 100644
index 00000000..fbffa92c
--- /dev/null
+++ b/prisma/migrations/migration_lock.toml
@@ -0,0 +1,3 @@
+# Please do not edit this file manually
+# It should be added in your version-control system (i.e. Git)
+provider = "postgresql"
\ No newline at end of file
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
new file mode 100644
index 00000000..60255923
--- /dev/null
+++ b/prisma/schema.prisma
@@ -0,0 +1,45 @@
+// This is your Prisma schema file,
+// learn more about it in the docs: https://pris.ly/d/prisma-schema
+
+generator client {
+ provider = "prisma-client-js"
+ binaryTargets = ["native", "rhel-openssl-3.0.x"]
+}
+
+datasource db {
+ provider = "postgresql"
+ url = env("POSTGRES_PRISMA_URL")
+}
+
+model Education {
+ id String @id @default(uuid())
+ title String
+ description String?
+ organisation String?
+ start DateTime @db.Date
+ end DateTime? @db.Date
+}
+
+model Experience {
+ id String @id @default(uuid())
+ title String
+ organisation String
+ start DateTime @db.Date
+ end DateTime? @db.Date
+ skills Skill[]
+}
+
+model Skill {
+ id String @id @default(uuid())
+ title String
+ area SkillArea
+ experiences Experience[]
+}
+
+enum SkillArea {
+ Frontend
+ Backend
+ EndToEnd
+ Cloud
+ None
+}
diff --git a/prisma/seed.ts b/prisma/seed.ts
new file mode 100644
index 00000000..2572d994
--- /dev/null
+++ b/prisma/seed.ts
@@ -0,0 +1,253 @@
+import type { Education, Experience, Skill } from "@prisma/client";
+import { PrismaClient, SkillArea } from "@prisma/client";
+const db = new PrismaClient();
+
+type EducationSeed = Omit;
+
+interface ExperienceSeed {
+ experience: Omit;
+ skillIds: string[];
+}
+
+enum SkillId {
+ NGRX = "e0f7d1b4-9cab-49f0-9b34-597f63512440",
+ CONTENTSQUARE = "32c40b1c-8e73-4440-9593-dba04e6d12a3",
+ ANGULAR = "72ee1fc2-3257-4edd-8b18-07e794f81680",
+ KEYCLOAK = "38d6d307-ea17-4ce4-a021-d1228bce4456",
+ JAVA = "fd0d9765-efaa-4a5c-a0d9-c4922b5c3581",
+ APACHE_KAFKA = "f2645ad3-d86e-4dc3-a6aa-97447dabd21e",
+ NX = "10b8d29e-7d53-4c14-8056-008a89b0840c",
+ SPRING_BOOT = "f40a0584-fe00-4815-b6c4-5183c322cba2",
+ STORYBOOK = "e2312e09-9447-4a2f-8959-52b04ee220b9",
+ DOCKER = "aca7e97b-df93-4b0f-8854-336bb3597ff4",
+ JEST = "443c0839-f9f8-46fc-9adf-4f182ee5a5fe",
+ WEBSOCKET = "851ae48c-4c32-4390-b992-ecb9cf47ada7",
+ PLAYWRIGHT = "94c96ac3-ceec-4385-a99a-3ef077cdc625",
+ AWS = "4501c16e-945f-46cd-a34b-3f3b57ca0e40",
+ RXJS = "2987f8d3-2bf6-4f3e-84a0-9e5a4c67a741",
+ SQL = "9802fb35-3e22-4b51-84fc-a8eff4c1175c",
+ TYPESCRIPT = "0c13157f-9d19-4dc3-88bd-6d20bc823598",
+ TAILWIND_CSS = "6d1def26-b083-4a85-9ab9-c318411492f3",
+}
+
+const getEducation = (): EducationSeed[] => {
+ return [
+ {
+ title: "Master of Science in Computer Science",
+ organisation: "Saarland University",
+ start: new Date("2018-12-01"),
+ end: new Date("2020-09-30"),
+ description:
+ 'Final Thesis: "JANI2PINS: The JANI front-end module for the LTSmin toolset"',
+ },
+ {
+ title: "Bachelor of Science in Computer Science",
+ organisation: "Saarland University",
+ start: new Date("2015-10-01"),
+ end: new Date("2018-11-30"),
+ description:
+ 'Final Thesis: "Numeric Representation of Probability Density Functions"',
+ },
+ {
+ title: "AWS Certified Developer - Associate",
+ organisation: null,
+ start: new Date("2022-03-01"),
+ end: new Date("2022-03-01"),
+ description: null,
+ },
+ {
+ title: "Oracle Certified Professional: Java SE 11 Developer",
+ organisation: null,
+ start: new Date("2021-04-01"),
+ end: new Date("2021-04-01"),
+ description: null,
+ },
+ ];
+};
+
+const getExperiences = (): ExperienceSeed[] => {
+ return [
+ {
+ experience: {
+ title: "IT Consultant",
+ organisation: "detim IT Consulting GmbH",
+ start: new Date("2021-01-01"),
+ end: null,
+ },
+ skillIds: [
+ SkillId.ANGULAR,
+ SkillId.NGRX,
+ SkillId.RXJS,
+ SkillId.AWS,
+ SkillId.TYPESCRIPT,
+ SkillId.APACHE_KAFKA,
+ SkillId.SPRING_BOOT,
+ SkillId.JAVA,
+ SkillId.SQL,
+ ],
+ },
+ {
+ experience: {
+ title: "Frontend Software Developer as external consultant",
+ organisation: "Carglass® Germany",
+ start: new Date("2022-12-15"),
+ end: null,
+ },
+ skillIds: [
+ SkillId.ANGULAR,
+ SkillId.NGRX,
+ SkillId.RXJS,
+ SkillId.NX,
+ SkillId.TYPESCRIPT,
+ SkillId.TAILWIND_CSS,
+ SkillId.CONTENTSQUARE,
+ SkillId.STORYBOOK,
+ SkillId.JEST,
+ SkillId.PLAYWRIGHT,
+ ],
+ },
+ {
+ experience: {
+ title: "Full-Stack Software Developer as external consultant",
+ organisation: "SMD Innovations GmbH",
+ start: new Date("2021-06-15"),
+ end: new Date("2022-09-30"),
+ },
+ skillIds: [
+ SkillId.ANGULAR,
+ SkillId.NGRX,
+ SkillId.RXJS,
+ SkillId.TYPESCRIPT,
+ SkillId.WEBSOCKET,
+ SkillId.APACHE_KAFKA,
+ SkillId.KEYCLOAK,
+ SkillId.SPRING_BOOT,
+ SkillId.DOCKER,
+ ],
+ },
+ ];
+};
+
+const getSkills = (): Skill[] => {
+ return [
+ {
+ id: SkillId.ANGULAR,
+ title: "Angular",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.NGRX,
+ title: "NgRx",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.RXJS,
+ title: "RxJS",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.TYPESCRIPT,
+ title: "TypeScript",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.WEBSOCKET,
+ title: "WebSocket",
+ area: SkillArea.None,
+ },
+ {
+ id: SkillId.APACHE_KAFKA,
+ title: "Apache Kafka",
+ area: SkillArea.Cloud,
+ },
+ {
+ id: SkillId.KEYCLOAK,
+ title: "Keycloak",
+ area: SkillArea.Cloud,
+ },
+ {
+ id: SkillId.SPRING_BOOT,
+ title: "Spring Boot",
+ area: SkillArea.Backend,
+ },
+ {
+ id: SkillId.DOCKER,
+ title: "Docker",
+ area: SkillArea.Cloud,
+ },
+ {
+ id: SkillId.NX,
+ title: "Nx",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.TAILWIND_CSS,
+ title: "Tailwind CSS",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.CONTENTSQUARE,
+ title: "Contentsquare",
+ area: SkillArea.None,
+ },
+ {
+ id: SkillId.STORYBOOK,
+ title: "Storybook",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.JEST,
+ title: "Jest",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.PLAYWRIGHT,
+ title: "Playwright",
+ area: SkillArea.Frontend,
+ },
+ {
+ id: SkillId.AWS,
+ title: "AWS",
+ area: SkillArea.Cloud,
+ },
+ {
+ id: SkillId.JAVA,
+ title: "Java",
+ area: SkillArea.Backend,
+ },
+ {
+ id: SkillId.SQL,
+ title: "SQL",
+ area: SkillArea.Backend,
+ },
+ ];
+};
+
+const seed = async (): Promise => {
+ await Promise.all(
+ getSkills().map((skill: Skill) => {
+ return db.skill.create({ data: skill });
+ }),
+ );
+
+ await Promise.all(
+ getEducation().map((education: EducationSeed) => {
+ return db.education.create({ data: education });
+ }),
+ );
+
+ await Promise.all(
+ getExperiences().map((experienceData: ExperienceSeed) => {
+ return db.experience.create({
+ data: {
+ ...experienceData.experience,
+ skills: {
+ connect: experienceData.skillIds.map((id: string) => ({ id })),
+ },
+ },
+ });
+ }),
+ );
+};
+
+void seed();
diff --git a/public/assets/i18n/en.json b/public/assets/i18n/en.json
new file mode 100644
index 00000000..798f77b8
--- /dev/null
+++ b/public/assets/i18n/en.json
@@ -0,0 +1,71 @@
+{
+ "time": {
+ "present": "Present"
+ },
+ "headline": {
+ "aboutMe": "About Me",
+ "experience": "Experience",
+ "resume": "Résumé",
+ "educationAndCertification": "Education & Certification"
+ },
+ "profile": {
+ "portrait": "Portrait",
+ "jobTitle": "Software Developer",
+ "requestCV": "Request CV",
+ "birthdayMonth": "December, 1996",
+ "currentLocation": "Saarland, Germany"
+ },
+ "contact": {
+ "email": "contact@lars.schieffer.cloud"
+ },
+ "copyright": {
+ "rightsReserved": "All rights reserved"
+ },
+ "imprint": {
+ "title": "Imprint",
+ "contact": "Contact",
+ "editorialContent": "For editorial content",
+ "responsible": "Responsible according to"
+ },
+ "experience": {
+ "skills": "Skills",
+ "thesis": "Thesis"
+ },
+ "skills": {
+ "headline": {
+ "frontend": "Frontend Technologies",
+ "backendAndCloud": "Backend & Cloud Technologies"
+ }
+ },
+ "at": "at",
+ "navigation": {
+ "aboutMe": {
+ "title": "About me",
+ "description": "This is my personal website to showcase my experience and learnings as a software developer."
+ },
+ "resume": {
+ "title": "Résumé",
+ "description": "A brief description of my professional experience, education, and certificates. In other words, my CV."
+ },
+ "blog": {
+ "title": "Blog",
+ "description": "In this blog, I'm writing about some of the challenges we face as software developers and how to improve with clean code approaches."
+ },
+ "toggle": "Toggle menu"
+ },
+ "blog": {
+ "thumbnailLabel": "Thumbnail of"
+ },
+ "error": {
+ "404": {
+ "imageDescription": "Two people holding an empty box",
+ "message": "Sorry,\n the page you requested was not found.",
+ "button": "Back to Homepage"
+ },
+ "default": {
+ "imageDescription": "Two people holding an empty box",
+ "message": "Oops 😕, something went wrong.",
+ "button": "Report Error"
+ }
+ }
+}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 00000000..3fa0e31d
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/remix.config.js b/remix.config.js
new file mode 100644
index 00000000..cceff121
--- /dev/null
+++ b/remix.config.js
@@ -0,0 +1,11 @@
+/** @type {import('@remix-run/dev').AppConfig} */
+module.exports = {
+ ignoredRouteFiles: ["**/.*"],
+ // When running locally in development mode, we use the built-in remix
+ // server. This does not understand the vercel lambda module format,
+ // so we default back to the standard build output.
+ serverBuildPath: "api/index.js",
+ serverModuleFormat: "cjs",
+ tailwind: true,
+ serverDependenciesToBundle: ["flat"],
+};
diff --git a/remix.env.d.ts b/remix.env.d.ts
new file mode 100644
index 00000000..dcf8c45e
--- /dev/null
+++ b/remix.env.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 00000000..f2e93657
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,16 @@
+{
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": ["config:base"],
+ "prHourlyLimit": 2,
+ "rangeStrategy": "pin",
+ "automerge": true,
+ "automergeType": "pr",
+ "platformAutomerge": true,
+ "dependencyDashboard": false,
+ "packageRules": [
+ {
+ "matchPackagePatterns": ["^@remix-run\\/", "@vercel/remix"],
+ "groupName": "Remix packages"
+ }
+ ]
+}
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 00000000..b0182097
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,49 @@
+/** @type {import('tailwindcss').Config} */
+
+module.exports = {
+ content: ["./app/**/*.{js,jsx,ts,tsx}"],
+ theme: {
+ extend: {
+ colors: {
+ gray: {
+ dark: "#44566C",
+ DEFAULT: "#5E6A75",
+ light: "#F0F0F6",
+ lighter: "#F5F8F9",
+ },
+ accent: {
+ DEFAULT: "#0E78A3",
+ secondary: "#F7962A",
+ ternary: "#01BBBD",
+ },
+ },
+ fontFamily: {
+ merriweather: ["Merriweather", "serif"],
+ inter: ["Inter", "sans-serif"],
+ },
+ screens: {
+ xs: "475px",
+ },
+ borderRadius: {
+ "4xl": "2rem",
+ },
+ backgroundImage: {
+ body: `
+ url('https://assets.lars.schieffer.cloud/left_upper_corner.svg'),
+ url('https://assets.lars.schieffer.cloud/right_lower_corner.svg')
+ `,
+ },
+ backgroundPosition: {
+ body: `left top, right bottom`,
+ },
+ backgroundSize: {
+ body: `
+ min(420px, 50vw) auto,
+ min(447px, 50vw) auto,
+ contain
+ `,
+ },
+ },
+ },
+ plugins: [],
+};
diff --git a/tests/common/given.ts b/tests/common/given.ts
new file mode 100644
index 00000000..fe37b200
--- /dev/null
+++ b/tests/common/given.ts
@@ -0,0 +1,67 @@
+import type { ServerRuntimeMetaArgs } from "@remix-run/server-runtime";
+
+import type { Location, Params } from "@remix-run/router";
+import type { FileMetaData } from "~/types/file";
+export interface TestCaseFor unknown> {
+ parameters: Parameters;
+ expectedReturn: ReturnType;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class
+export class Given {
+ public static date(): Date {
+ return new Date(new Date(1996, 11, 6));
+ }
+
+ public static serverRuntimeMetaArgs(): ServerRuntimeMetaArgs {
+ const data = undefined;
+ const params: Params = {};
+ const location: Location = {
+ state: undefined,
+ key: "",
+ pathname: "",
+ search: "",
+ hash: "",
+ };
+ const matches: never[] = [];
+
+ return {
+ data,
+ params,
+ location,
+ matches,
+ };
+ }
+
+ public static sameOfNotExistingMarkdownFile(): string {
+ return "not-existing.mdx";
+ }
+
+ public static slug(): string {
+ return "example";
+ }
+
+ public static nameOfMarkdownFile(): string {
+ return `${Given.slug()}.mdx`;
+ }
+
+ public static contentPath(): string {
+ return "example";
+ }
+
+ public static fileMetaDataPath(): string {
+ return `${Given.contentPath()}/${Given.nameOfMarkdownFile()}`;
+ }
+
+ public static fileMetaData(): FileMetaData {
+ return {
+ path: Given.fileMetaDataPath(),
+ sha: "a1d99928-5bfd-4f0c-bf61-27496d97ea4e",
+ name: Given.slug(),
+ };
+ }
+
+ public static id(): number {
+ return 42;
+ }
+}
diff --git a/tests/common/mock-api.ts b/tests/common/mock-api.ts
new file mode 100644
index 00000000..04ab452b
--- /dev/null
+++ b/tests/common/mock-api.ts
@@ -0,0 +1,40 @@
+import { HttpResponse, PathParams, http } from "msw";
+import { HttpRequestResolverExtras } from "msw/lib/core/handlers/HttpHandler";
+import { ResponseResolverInfo } from "msw/lib/core/handlers/RequestHandler";
+import { setupServer } from "msw/node";
+import { Given } from "./given";
+
+const server = setupServer(
+ http.post(
+ `*/issues`,
+ async ({
+ request,
+ }: ResponseResolverInfo<
+ HttpRequestResolverExtras,
+ { title: string }
+ >): Promise => {
+ const { title } = await request.json();
+
+ return HttpResponse.json({ title }, { status: 201 });
+ },
+ ),
+
+ http.get(
+ new RegExp(`${Given.contentPath()}$`),
+ (): HttpResponse => HttpResponse.json([Given.fileMetaData()]),
+ ),
+
+ http.get(
+ new RegExp(`${Given.nameOfMarkdownFile()}`),
+ (): HttpResponse => HttpResponse.text("# Hello World"),
+ ),
+
+ http.get(
+ new RegExp(`${Given.sameOfNotExistingMarkdownFile()}`),
+ (): HttpResponse =>
+ new HttpResponse(null, {
+ status: 404,
+ }),
+ ),
+);
+export { http, server };
diff --git a/tests/setup/dom.ts b/tests/setup/dom.ts
new file mode 100644
index 00000000..97cd9be7
--- /dev/null
+++ b/tests/setup/dom.ts
@@ -0,0 +1 @@
+import "vitest-dom/extend-expect";
diff --git a/tests/setup/environment.ts b/tests/setup/environment.ts
new file mode 100644
index 00000000..a649c1ed
--- /dev/null
+++ b/tests/setup/environment.ts
@@ -0,0 +1,4 @@
+import * as dotenv from "dotenv";
+
+// eslint-disable-next-line vitest/require-hook
+dotenv.config({ path: "./config/test.env" });
diff --git a/tests/setup/mock-api-node.ts b/tests/setup/mock-api-node.ts
new file mode 100644
index 00000000..952874cd
--- /dev/null
+++ b/tests/setup/mock-api-node.ts
@@ -0,0 +1,13 @@
+/* eslint-disable vitest/require-top-level-describe */
+import { afterAll, afterEach, beforeAll } from "vitest";
+import { server } from "../common/mock-api";
+
+// Establish API mocking before all tests.
+beforeAll(() => server.listen({ onUnhandledRequest: "error" }));
+
+// Reset any request handlers that we may add during the tests,
+// so they don't affect other tests.
+afterEach(() => server.resetHandlers());
+
+// Clean up after the tests are finished.
+afterAll(() => server.close());
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..8b71e32c
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx", "prisma/seed.ts"],
+ "compilerOptions": {
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "jsx": "react-jsx",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "target": "ES2019",
+ "strict": true,
+ "allowJs": true,
+ "forceConsistentCasingInFileNames": true,
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["./app/*"]
+ },
+ "skipLibCheck": true,
+ "module": "ESNext",
+
+ // Remix takes care of building everything in `remix build`.
+ "noEmit": true
+ }
+}
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 00000000..32183647
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,19 @@
+import tsconfigPaths from "vite-tsconfig-paths";
+import { configDefaults, defineConfig } from "vitest/config";
+
+export default defineConfig({
+ plugins: [tsconfigPaths()],
+ test: {
+ environment: "jsdom",
+ exclude: [...configDefaults.exclude, "./tests/*"],
+ coverage: {
+ 100: true,
+ },
+ globals: true,
+ setupFiles: [
+ "./tests/setup/environment.ts",
+ "./tests/setup/mock-api-node.ts",
+ "./tests/setup/dom.ts",
+ ],
+ },
+});