diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml
new file mode 100644
index 00000000..88f2fdda
--- /dev/null
+++ b/.github/workflows/check.yaml
@@ -0,0 +1,56 @@
+name: Check
+
+on:
+ push:
+ branches:
+ - develop
+ pull_request:
+ workflow_dispatch:
+
+jobs:
+ quality-check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v2
+ with:
+ version: 8.13.1
+ run_install: false
+
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 20
+ cache: pnpm
+
+ - name: Get pnpm store directory
+ shell: bash
+ run: |
+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
+
+ - name: Cache pnpm
+ uses: actions/cache@v4
+ with:
+ path: ${{ env.STORE_PATH }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
+ - name: Cache turbo tasks
+ uses: actions/cache@v4
+ with:
+ path: .turbo
+ key: ${{ runner.os }}-turbo-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-turbo-
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Run Check
+ run: pnpm run staged
+
+ - name: Log success
+ run: echo "✅ Success!"
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
deleted file mode 100644
index 0ec007cb..00000000
--- a/.github/workflows/check.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: Check
-on:
- push:
- branches:
- - develop
- pull_request:
-jobs:
- check:
- name: Check
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
- - name: Install dependencies
- run: npm install
- - name: Check type
- run: npm run tsc
- - name: Check Lint
- run: npm run lint
- - name: Check Test
- run: npm run test
diff --git a/.gitignore b/.gitignore
index 00bba9bb..49deb113 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
# dependencies
/node_modules
+**/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
@@ -10,13 +11,16 @@
/coverage
# next.js
+**/.next
/.next/
/out/
# production
/build
+**/dist
# misc
+**/.DS_Store
.DS_Store
*.pem
@@ -32,6 +36,11 @@ yarn-error.log*
# vercel
.vercel
+# turbo
+**/.turbo
+.turbo
+
# typescript
+**/*.tsbuildinfo
*.tsbuildinfo
next-env.d.ts
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..34a0489e
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,11 @@
+package-lock.json
+.next
+dist
+drizzle/*
+**/*/drizzle
+.prettierignore
+.gitignore
+
+.changeset/
+
+
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 0399a78b..5d3253ee 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,4 @@
{
- "editor.formatOnSave": true
+ "editor.formatOnSave": true,
+ "typescript.tsdk": "node_modules\\typescript\\lib"
}
\ No newline at end of file
diff --git a/config/eslint/base.js b/config/eslint/base.js
new file mode 100644
index 00000000..53c2525a
--- /dev/null
+++ b/config/eslint/base.js
@@ -0,0 +1,63 @@
+/** @type {import('eslint').Linter.Config} */
+const config = {
+ ignorePatterns: ["node_modules", "dist", ".next"],
+ env: {
+ es2022: true,
+ node: true,
+ },
+ extends: ["plugin:eslint-comments/recommended", "prettier"],
+ overrides: [
+ {
+ files: [
+ "**/*.ts",
+ "**/*.tsx",
+ "**/*.js",
+ "**/*.jsx",
+ "**/*.mjs",
+ "**/*.cjs",
+ ],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: true,
+ },
+ plugins: ["@typescript-eslint"],
+ extends: [
+ "plugin:@typescript-eslint/strict-type-checked",
+ "plugin:@typescript-eslint/stylistic-type-checked",
+ ],
+ rules: {
+ "@typescript-eslint/no-empty-interface": "off",
+ "@typescript-eslint/prefer-nullish-coalescing": "off",
+ "@typescript-eslint/restrict-template-expressions": "off",
+ "@typescript-eslint/consistent-type-definitions": "off",
+ "@typescript-eslint/array-type": [
+ "error",
+ {
+ default: "array-simple",
+ readonly: "array-simple",
+ },
+ ],
+ "@typescript-eslint/consistent-type-imports": [
+ "warn",
+ {
+ prefer: "type-imports",
+ fixStyle: "inline-type-imports",
+ },
+ ],
+ "@typescript-eslint/no-unused-vars": [
+ "warn",
+ { argsIgnorePattern: "^_" },
+ ],
+ "@typescript-eslint/require-await": "error",
+ "@typescript-eslint/no-misused-promises": [
+ "error",
+ {
+ checksVoidReturn: { attributes: false },
+ },
+ ],
+ },
+ },
+ ],
+};
+
+module.exports = config;
diff --git a/config/eslint/next.js b/config/eslint/next.js
new file mode 100644
index 00000000..7587867f
--- /dev/null
+++ b/config/eslint/next.js
@@ -0,0 +1,6 @@
+/** @type {import('eslint').Linter.Config} */
+const config = {
+ extends: ["plugin:@next/next/recommended"],
+};
+
+module.exports = config;
diff --git a/config/eslint/package.json b/config/eslint/package.json
new file mode 100644
index 00000000..b4929cdd
--- /dev/null
+++ b/config/eslint/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "eslint-config-libsqlstudio",
+ "private": true,
+ "version": "1.0.0",
+ "files": [
+ "./base.js",
+ "./next.js",
+ "./react.js"
+ ],
+ "devDependencies": {
+ "@typescript-eslint/eslint-plugin": "^7.6.0",
+ "@typescript-eslint/parser": "^7.6.0",
+ "eslint-config-next": "^14.1.4",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-eslint-comments": "^3.2.0",
+ "eslint-plugin-react": "^7.34.1",
+ "eslint-plugin-react-hooks": "^4.6.0"
+ }
+}
diff --git a/config/eslint/react.js b/config/eslint/react.js
new file mode 100644
index 00000000..ef33e317
--- /dev/null
+++ b/config/eslint/react.js
@@ -0,0 +1,25 @@
+/** @type {import('eslint').Linter.Config} */
+const config = {
+ overrides: [
+ {
+ files: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
+ extends: [
+ "plugin:react/recommended",
+ "plugin:react-hooks/recommended",
+ // "plugin:jsx-a11y/recommended",
+ ],
+ settings: {
+ react: {
+ version: "detect",
+ },
+ },
+ rules: {
+ "react/react-in-jsx-scope": "off",
+ "react/prop-types": "off",
+ "react/no-unknown-property": "warn"
+ },
+ },
+ ],
+};
+
+module.exports = config;
diff --git a/config/eslint/tsconfig.json b/config/eslint/tsconfig.json
new file mode 100644
index 00000000..747521af
--- /dev/null
+++ b/config/eslint/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "extends": ["../tsconfig/base.json"],
+ "include": ["**/*.cjs"]
+}
diff --git a/config/tailwind/index.ts b/config/tailwind/index.ts
new file mode 100644
index 00000000..8af504f0
--- /dev/null
+++ b/config/tailwind/index.ts
@@ -0,0 +1,93 @@
+import type { Config } from "tailwindcss";
+
+export const LibSqlStudoTailwindPreset: Config = {
+ darkMode: ["class"],
+ content: [
+ "./pages/**/*.{ts,tsx}",
+ "./components/**/*.{ts,tsx}",
+ "./app/**/*.{ts,tsx}",
+ "./src/**/*.{ts,tsx}",
+ ],
+ prefix: "",
+ theme: {
+ container: {
+ center: true,
+ padding: "2rem",
+ screens: {
+ "2xl": "1400px",
+ },
+ },
+ extend: {
+ colors: {
+ border: "hsl(var(--border))",
+ input: "hsl(var(--input))",
+ ring: "hsl(var(--ring))",
+ background: "hsl(var(--background))",
+ foreground: "hsl(var(--foreground))",
+ primary: {
+ DEFAULT: "hsl(var(--primary))",
+ foreground: "hsl(var(--primary-foreground))",
+ },
+ secondary: {
+ DEFAULT: "hsl(var(--secondary))",
+ foreground: "hsl(var(--secondary-foreground))",
+ },
+ destructive: {
+ DEFAULT: "hsl(var(--destructive))",
+ foreground: "hsl(var(--destructive-foreground))",
+ },
+ muted: {
+ DEFAULT: "hsl(var(--muted))",
+ foreground: "hsl(var(--muted-foreground))",
+ },
+ accent: {
+ DEFAULT: "hsl(var(--accent))",
+ foreground: "hsl(var(--accent-foreground))",
+ },
+ popover: {
+ DEFAULT: "hsl(var(--popover))",
+ foreground: "hsl(var(--popover-foreground))",
+ },
+ card: {
+ DEFAULT: "hsl(var(--card))",
+ foreground: "hsl(var(--card-foreground))",
+ },
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ keyframes: {
+ "accordion-down": {
+ from: { height: "0" },
+ to: { height: "var(--radix-accordion-content-height)" },
+ },
+ "accordion-up": {
+ from: { height: "var(--radix-accordion-content-height)" },
+ to: { height: "0" },
+ },
+ shake: {
+ "10%, 90%": {
+ transform: "translate3d(-1px, 0, 0)",
+ },
+ "20%, 80%": {
+ transform: "translate3d(2px, 0, 0)",
+ },
+ "30%, 50%, 70%": {
+ transform: "translate3d(-4px, 0, 0)",
+ },
+ "40%, 60%": {
+ transform: "translate3d(4px, 0, 0)",
+ },
+ },
+ },
+ animation: {
+ "accordion-down": "accordion-down 0.2s ease-out",
+ "accordion-up": "accordion-up 0.2s ease-out",
+ shake: "shake 0.82s cubic-bezier(.36,.07,.19,.97) both",
+ },
+ },
+ },
+ plugins: [require("tailwindcss-animate")],
+};
diff --git a/config/tailwind/package.json b/config/tailwind/package.json
new file mode 100644
index 00000000..a6846b71
--- /dev/null
+++ b/config/tailwind/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@libsqlstudio/tailwind",
+ "private": true,
+ "version": "1.0.0",
+ "type": "module",
+ "exports": {
+ ".": {
+ "types": "./index.ts",
+ "default": "./index.ts"
+ },
+ "./css": "./style.css"
+ },
+ "devDependencies": {
+ "tailwindcss": "^3.4.3",
+ "tailwindcss-animate": "^1.0.7"
+ }
+}
diff --git a/src/app/globals.css b/config/tailwind/style.css
similarity index 100%
rename from src/app/globals.css
rename to config/tailwind/style.css
diff --git a/config/tailwind/tsconfig.json b/config/tailwind/tsconfig.json
new file mode 100644
index 00000000..95c79a0f
--- /dev/null
+++ b/config/tailwind/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "extends": ["../tsconfig/base.json"],
+ "include": ["**/*.ts"]
+}
diff --git a/config/tsconfig/base.json b/config/tsconfig/base.json
new file mode 100644
index 00000000..60502896
--- /dev/null
+++ b/config/tsconfig/base.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "display": "Strictest",
+ "compilerOptions": {
+ "strict": true,
+ "allowUnusedLabels": false,
+ "allowUnreachableCode": false,
+ "noFallthroughCasesInSwitch": true,
+ "noImplicitOverride": true,
+ "noImplicitReturns": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noUncheckedIndexedAccess": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+
+ "isolatedModules": true,
+
+ "allowJs": true,
+ "checkJs": true,
+
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+
+ "lib": ["es2023"],
+ "module": "esnext",
+ "target": "es2022",
+ "moduleResolution": "bundler",
+ "moduleDetection": "force",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "noEmit": true,
+ "incremental": true
+ }
+}
diff --git a/config/tsconfig/next.json b/config/tsconfig/next.json
new file mode 100644
index 00000000..789e42e8
--- /dev/null
+++ b/config/tsconfig/next.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "display": "Next.js",
+ "extends": "./base.json",
+ "compilerOptions": {
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "jsx": "preserve",
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
+ }
+}
diff --git a/config/tsconfig/package.json b/config/tsconfig/package.json
new file mode 100644
index 00000000..b444629a
--- /dev/null
+++ b/config/tsconfig/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "@libsqlstudio/tsconfig",
+ "private": true,
+ "version": "1.0.0",
+ "type": "module",
+ "files": [
+ "./base.json",
+ "./next.json",
+ "./react.json"
+ ]
+}
diff --git a/config/tsconfig/react.json b/config/tsconfig/react.json
new file mode 100644
index 00000000..b8d0747d
--- /dev/null
+++ b/config/tsconfig/react.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "https://json.schemastore.org/tsconfig",
+ "display": "React",
+ "extends": "./base.json",
+ "compilerOptions": {
+ "target": "ES2020",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "jsx": "react-jsx"
+ }
+}
diff --git a/gui/.eslintrc.cjs b/gui/.eslintrc.cjs
new file mode 100644
index 00000000..7f0e3719
--- /dev/null
+++ b/gui/.eslintrc.cjs
@@ -0,0 +1,29 @@
+/**
+ * @type {import('eslint').Linter.Config}
+ */
+module.exports = {
+ root: true,
+ extends: ["libsqlstudio/base", "libsqlstudio/react"],
+ rules: {
+ "@typescript-eslint/no-unsafe-assignment": "off",
+ "@typescript-eslint/no-unsafe-call": "off",
+ "@typescript-eslint/consistent-type-imports": "off",
+ "@typescript-eslint/no-unnecessary-condition": "off",
+ "@typescript-eslint/no-floating-promises": "off",
+ "@typescript-eslint/no-unsafe-argument": "off",
+ "@typescript-eslint/no-unsafe-member-access": "off",
+ "@typescript-eslint/no-misused-promises": "off",
+ "@typescript-eslint/prefer-includes": "off",
+ "@typescript-eslint/prefer-promise-reject-errors": "off",
+ "@typescript-eslint/no-confusing-void-expression": "off",
+ "@typescript-eslint/restrict-plus-operands": "off",
+ "@typescript-eslint/no-base-to-string": "off",
+ "@typescript-eslint/use-unknown-in-catch-callback-variable": "off",
+ "@typescript-eslint/require-await": "off",
+ "@typescript-eslint/no-dynamic-delete": "off",
+ "@typescript-eslint/non-nullable-type-assertion-style": "off",
+ "@typescript-eslint/array-type": "off",
+ "eslint-comments/no-unlimited-disable": "off",
+ "eslint-comments/disable-enable-pair": "off",
+ },
+};
diff --git a/gui/.gitignore b/gui/.gitignore
new file mode 100644
index 00000000..a547bf36
--- /dev/null
+++ b/gui/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/gui/jest.config.cjs b/gui/jest.config.cjs
new file mode 100644
index 00000000..fe74d3f8
--- /dev/null
+++ b/gui/jest.config.cjs
@@ -0,0 +1,9 @@
+/** @type {import('ts-jest').JestConfigWithTsJest} */
+module.exports = {
+ preset: "ts-jest",
+ testEnvironment: "jsdom",
+ rootDir: "./",
+ moduleNameMapper: {
+ "^@gui/(.*)$": "/src/$1",
+ },
+};
diff --git a/gui/package.json b/gui/package.json
new file mode 100644
index 00000000..90a478bd
--- /dev/null
+++ b/gui/package.json
@@ -0,0 +1,98 @@
+{
+ "name": "@libsqlstudio/gui",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "require": "./dist/index.cjs"
+ },
+ "./css": "./dist/index.css"
+ },
+ "scripts": {
+ "dev": "tsup --watch",
+ "build": "tsup",
+ "staged": "pnpm run typecheck && pnpm run format && pnpm run lint && pnpm run test",
+ "typecheck": "tsc --noEmit",
+ "test": "jest",
+ "test:watch": "jest --watch",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix",
+ "format": "prettier --check .",
+ "format:fix": "prettier --write ."
+ },
+ "peerDependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "dependencies": {
+ "@blocknote/core": "^0.12.1",
+ "@blocknote/react": "^0.12.2",
+ "@codemirror/commands": "^6.3.3",
+ "@codemirror/lang-sql": "^6.5.5",
+ "@codemirror/view": "^6.26.3",
+ "@dnd-kit/core": "^6.1.0",
+ "@dnd-kit/sortable": "^8.0.0",
+ "@justmiracle/result": "^1.2.0",
+ "@lezer/common": "^1.2.1",
+ "@lezer/highlight": "^1.2.0",
+ "@lezer/lr": "^1.4.0",
+ "@libsql/client": "^0.5.3",
+ "@radix-ui/react-alert-dialog": "^1.0.5",
+ "@radix-ui/react-avatar": "^1.0.4",
+ "@radix-ui/react-checkbox": "^1.0.4",
+ "@radix-ui/react-context-menu": "^2.1.5",
+ "@radix-ui/react-dialog": "^1.0.5",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-hover-card": "^1.0.7",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-label": "^2.0.2",
+ "@radix-ui/react-menubar": "^1.0.4",
+ "@radix-ui/react-navigation-menu": "^1.1.4",
+ "@radix-ui/react-popover": "^1.0.7",
+ "@radix-ui/react-radio-group": "^1.1.3",
+ "@radix-ui/react-scroll-area": "^1.0.5",
+ "@radix-ui/react-select": "^2.0.0",
+ "@radix-ui/react-separator": "^1.0.3",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-toggle": "^1.0.3",
+ "@radix-ui/react-toggle-group": "^1.0.4",
+ "@radix-ui/react-tooltip": "^1.0.7",
+ "@tiptap/core": "^2.3.0",
+ "@tiptap/react": "^2.3.0",
+ "@uiw/codemirror-extensions-langs": "^4.21.24",
+ "@uiw/codemirror-themes": "^4.21.21",
+ "@uiw/react-codemirror": "^4.21.21",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.0",
+ "cmdk": "^0.2.0",
+ "cookies-next": "^4.1.1",
+ "deep-equal": "^2.2.3",
+ "lucide-react": "^0.309.0",
+ "react-resizable-panels": "^1.0.9",
+ "sonner": "^1.4.41",
+ "sql-query-identifier": "^2.6.0",
+ "tailwind-merge": "^2.2.2"
+ },
+ "devDependencies": {
+ "@libsqlstudio/tailwind": "workspace:*",
+ "@libsqlstudio/tsconfig": "workspace:*",
+ "@types/deep-equal": "^1.0.4",
+ "@types/jest": "^29.5.11",
+ "@types/react": "^18.2.66",
+ "@types/react-dom": "^18.2.22",
+ "@vitejs/plugin-react": "^4.2.1",
+ "autoprefixer": "^10.4.19",
+ "eslint-config-libsqlstudio": "workspace:*",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "postcss": "^8.4.38",
+ "tailwindcss": "^3.4.3",
+ "ts-jest": "^29.1.2",
+ "tsup": "^8.0.2",
+ "vite": "^5.2.0",
+ "vite-tsconfig-paths": "^4.3.2"
+ }
+}
diff --git a/gui/postcss.config.js b/gui/postcss.config.js
new file mode 100644
index 00000000..2aa7205d
--- /dev/null
+++ b/gui/postcss.config.js
@@ -0,0 +1,6 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/src/components/block-editor/editor.tsx b/gui/src/components/block-editor/editor.tsx
similarity index 83%
rename from src/components/block-editor/editor.tsx
rename to gui/src/components/block-editor/editor.tsx
index 50515098..38f6699f 100644
--- a/src/components/block-editor/editor.tsx
+++ b/gui/src/components/block-editor/editor.tsx
@@ -6,9 +6,10 @@ import "./style.css";
import { BlockNoteView } from "@blocknote/react";
import { SuggestionMenu } from "./suggestions";
import { BlockNoteEditor } from "@blocknote/core";
-import { useTheme } from "@/context/theme-provider";
+import { useTheme } from "@gui/contexts/theme-provider";
export interface BlockEditorProps {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
editor: BlockNoteEditor;
}
diff --git a/src/components/block-editor/extensions/code-block.tsx b/gui/src/components/block-editor/extensions/code-block.tsx
similarity index 94%
rename from src/components/block-editor/extensions/code-block.tsx
rename to gui/src/components/block-editor/extensions/code-block.tsx
index 44849d1b..5efb10e5 100644
--- a/src/components/block-editor/extensions/code-block.tsx
+++ b/gui/src/components/block-editor/extensions/code-block.tsx
@@ -1,17 +1,17 @@
-import { Button } from "@/components/ui/button";
+import { Button } from "@gui/components/ui/button";
import {
Command,
CommandEmpty,
CommandGroup,
CommandInput,
CommandItem,
-} from "@/components/ui/command";
+} from "@gui/components/ui/command";
import {
Popover,
PopoverContent,
PopoverTrigger,
-} from "@/components/ui/popover";
-import { cn, scoped } from "@/lib/utils";
+} from "@gui/components/ui/popover";
+import { cn, scoped } from "@gui/lib/utils";
import { createReactBlockSpec } from "../utils/create-block-spec";
import ReactCodeMirror from "@uiw/react-codemirror";
import { Check, ChevronsUpDown } from "lucide-react";
@@ -43,6 +43,7 @@ export const CodeBlock = createReactBlockSpec(
: "plaintext";
const code = "";
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
(chain() as any).BNUpdateBlock(state.selection.from, {
type: "codeBlock",
props: { language, code },
@@ -93,7 +94,7 @@ export const CodeBlock = createReactBlockSpec(
);
},
- },
+ }
);
interface LanguageSelectorProps {
@@ -133,7 +134,7 @@ function LanguageSelector({ value, onValueChange }: LanguageSelectorProps) {
{lang}
diff --git a/src/components/block-editor/extensions/file-upload.ts b/gui/src/components/block-editor/extensions/file-upload.ts
similarity index 80%
rename from src/components/block-editor/extensions/file-upload.ts
rename to gui/src/components/block-editor/extensions/file-upload.ts
index e8a45363..41d0f950 100644
--- a/src/components/block-editor/extensions/file-upload.ts
+++ b/gui/src/components/block-editor/extensions/file-upload.ts
@@ -1,4 +1,4 @@
-import { uploadFile as uploadUserFile } from "@/lib/file-upload";
+import { uploadFile as uploadUserFile } from "@gui/lib/file-upload";
import { toast } from "sonner";
export async function uploadFile(file: File) {
diff --git a/src/components/block-editor/extensions/index.ts b/gui/src/components/block-editor/extensions/index.ts
similarity index 90%
rename from src/components/block-editor/extensions/index.ts
rename to gui/src/components/block-editor/extensions/index.ts
index 890493b8..024ef7bb 100644
--- a/src/components/block-editor/extensions/index.ts
+++ b/gui/src/components/block-editor/extensions/index.ts
@@ -6,8 +6,8 @@ export { uploadFile } from "./file-upload";
export const schema = BlockNoteSchema.create({
blockSpecs: {
...defaultBlockSpecs,
- codeBlock: CodeBlock
+ codeBlock: CodeBlock,
},
-})
+});
export type Block = typeof schema.Block;
diff --git a/src/components/block-editor/index.tsx b/gui/src/components/block-editor/index.tsx
similarity index 85%
rename from src/components/block-editor/index.tsx
rename to gui/src/components/block-editor/index.tsx
index 1df5b5ba..dc81f300 100644
--- a/src/components/block-editor/index.tsx
+++ b/gui/src/components/block-editor/index.tsx
@@ -6,6 +6,7 @@ export const CONTENT_FORMAT = {
BLOCK_NOTE: "BLOCK_NOTE",
} as const;
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
export interface BlockContent {
format: "BLOCK_NOTE";
content: TContent[] | undefined;
diff --git a/src/components/block-editor/sheet.tsx b/gui/src/components/block-editor/sheet.tsx
similarity index 96%
rename from src/components/block-editor/sheet.tsx
rename to gui/src/components/block-editor/sheet.tsx
index e8d05d2a..3e6b3e17 100644
--- a/src/components/block-editor/sheet.tsx
+++ b/gui/src/components/block-editor/sheet.tsx
@@ -9,7 +9,7 @@ import { Separator } from "../ui/separator";
import { ScrollArea } from "../ui/scroll-area";
import { BlockEditor } from "./editor";
import { BlockContent, CONTENT_FORMAT } from ".";
-import { BlockEditorConfigs } from "@/context/block-editor-provider";
+import { BlockEditorConfigs } from "@gui/contexts/block-editor-provider";
export interface BlockEditorSheetProps {
configs: BlockEditorConfigs | null;
diff --git a/src/components/block-editor/style.css b/gui/src/components/block-editor/style.css
similarity index 100%
rename from src/components/block-editor/style.css
rename to gui/src/components/block-editor/style.css
diff --git a/src/components/block-editor/suggestions/index.tsx b/gui/src/components/block-editor/suggestions/index.tsx
similarity index 83%
rename from src/components/block-editor/suggestions/index.tsx
rename to gui/src/components/block-editor/suggestions/index.tsx
index d7ab52f3..4c4892ab 100644
--- a/src/components/block-editor/suggestions/index.tsx
+++ b/gui/src/components/block-editor/suggestions/index.tsx
@@ -1,14 +1,10 @@
-import {
- BlockNoteEditor,
- filterSuggestionItems,
-} from "@blocknote/core";
+import { BlockNoteEditor, filterSuggestionItems } from "@blocknote/core";
import {
SuggestionMenuController,
getDefaultReactSlashMenuItems,
} from "@blocknote/react";
import { insertCodeBlock } from "./insert-code-block";
-
// How we want to display the suggestions group
// lower number will be displayed first
const GROUP_ORDER = {
@@ -22,6 +18,7 @@ const GROUP_ORDER = {
const CUSTOM_SUGGESTIONS = [insertCodeBlock];
// utility function to get all custom suggestions
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
function getCustomSlashMenuItems(editor: BlockNoteEditor) {
return CUSTOM_SUGGESTIONS.map((item) => item(editor));
}
@@ -29,6 +26,7 @@ function getCustomSlashMenuItems(editor: BlockNoteEditor) {
export const SuggestionMenu = ({
editor,
}: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
editor: BlockNoteEditor;
}) => {
return (
@@ -42,7 +40,7 @@ export const SuggestionMenu = ({
];
// sort the suggestions by group
- const sortedItems = allItem.toSorted((a, b) => {
+ const sortedItems = allItem.sort((a, b) => {
const aOrder = GROUP_ORDER[a.group || ""] || 5;
const bOrder = GROUP_ORDER[b.group || ""] || 5;
return aOrder - bOrder;
diff --git a/src/components/block-editor/suggestions/insert-code-block.tsx b/gui/src/components/block-editor/suggestions/insert-code-block.tsx
similarity index 100%
rename from src/components/block-editor/suggestions/insert-code-block.tsx
rename to gui/src/components/block-editor/suggestions/insert-code-block.tsx
diff --git a/src/components/block-editor/utils/create-block-spec.tsx b/gui/src/components/block-editor/utils/create-block-spec.tsx
similarity index 92%
rename from src/components/block-editor/utils/create-block-spec.tsx
rename to gui/src/components/block-editor/utils/create-block-spec.tsx
index 2d0f0dbe..01274c46 100644
--- a/src/components/block-editor/utils/create-block-spec.tsx
+++ b/gui/src/components/block-editor/utils/create-block-spec.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
import {
BlockFromConfig,
BlockNoteEditor,
@@ -45,7 +46,7 @@ export type ReactCustomBlockImplementation<
contentRef: (node: HTMLElement | null) => void;
}>;
parse?: (
- el: HTMLElement,
+ el: HTMLElement
) => PartialBlockFromConfig["props"] | undefined;
addInputRules?: () // block: BlockFromConfig,
// editor: BlockNoteEditor, I, S>
@@ -71,13 +72,13 @@ export function BlockContentWrapper<
// Adds custom HTML attributes
{...Object.fromEntries(
Object.entries(props.domAttributes || {}).filter(
- ([key]) => key !== "class",
- ),
+ ([key]) => key !== "class"
+ )
)}
// Sets blockContent class
className={mergeCSSClasses(
"bn-block-content",
- props.domAttributes?.class || "",
+ props.domAttributes!["class"] || ""
)}
// Sets content type attribute
data-content-type={props.blockType}
@@ -90,11 +91,11 @@ export function BlockContentWrapper<
.filter(
([prop, value]) =>
!inheritedProps.includes(prop) &&
- value !== props.propSchema[prop].default,
+ value !== props.propSchema[prop]!.default
)
.map(([prop, value]) => {
return [camelToDataKebab(prop), value];
- }),
+ })
)}
>
{props.children}
@@ -110,7 +111,7 @@ export function createReactBlockSpec<
const S extends StyleSchema,
>(
blockConfig: T,
- blockImplementation: ReactCustomBlockImplementation,
+ blockImplementation: ReactCustomBlockImplementation
) {
const node = createStronglyTypedTiptapNode({
name: blockConfig.type as T["type"],
@@ -128,6 +129,7 @@ export function createReactBlockSpec<
return blockImplementation.addInputRules?.() || [];
},
+ // @ts-expect-error
parseHTML() {
return getParseRules(blockConfig, blockImplementation.parse);
},
@@ -154,7 +156,7 @@ export function createReactBlockSpec<
props.getPos,
editor,
this.editor,
- blockConfig.type,
+ blockConfig.type
) as any;
// Gets the custom HTML attributes for `blockContent` nodes
const blockContentDOMAttributes =
@@ -181,7 +183,7 @@ export function createReactBlockSpec<
},
{
className: "bn-react-node-view-renderer",
- },
+ }
)(props);
},
});
@@ -208,11 +210,14 @@ export function createReactBlockSpec<
/>
),
- editor,
+ editor
);
output.contentDOM?.setAttribute("data-editable", "");
- return output;
+ return output as {
+ dom: HTMLElement;
+ contentDOM: HTMLElement | undefined;
+ };
},
toExternalHTML: (block, editor) => {
const blockContentDOMAttributes =
@@ -238,7 +243,10 @@ export function createReactBlockSpec<
}, editor);
output.contentDOM?.setAttribute("data-editable", "");
- return output;
+ return output as {
+ dom: HTMLElement;
+ contentDOM: HTMLElement | undefined;
+ };
},
});
}
diff --git a/src/components/block-editor/utils/react-render.tsx b/gui/src/components/block-editor/utils/react-render.tsx
similarity index 85%
rename from src/components/block-editor/utils/react-render.tsx
rename to gui/src/components/block-editor/utils/react-render.tsx
index d88cd863..74100a62 100644
--- a/src/components/block-editor/utils/react-render.tsx
+++ b/gui/src/components/block-editor/utils/react-render.tsx
@@ -4,6 +4,7 @@ import { Root, createRoot } from "react-dom/client";
export function renderToDOMSpec(
fc: (refCB: (ref: HTMLElement | null) => void) => React.ReactNode,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
editor: BlockNoteEditor | undefined
) {
let contentDOM: HTMLElement | undefined;
@@ -15,7 +16,7 @@ export function renderToDOMSpec(
// This is currently only used for Styles. In this case, react context etc. won't be available inside `fc`
root = createRoot(div);
flushSync(() => {
- root!.render(fc((el) => (contentDOM = el || undefined)));
+ root?.render(fc((el) => (contentDOM = el || undefined)));
});
} else {
// Render temporarily using `EditorContent` (which is stored somewhat hacky on `editor._tiptapEditor.contentComponent`)
@@ -37,10 +38,8 @@ export function renderToDOMSpec(
// clone so we can unmount the react root
contentDOM?.setAttribute("data-tmp-find", "true");
const cloneRoot = div.cloneNode(true) as HTMLElement;
- const dom = cloneRoot.firstElementChild! as HTMLElement;
- const contentDOMClone = cloneRoot.querySelector(
- "[data-tmp-find]"
- ) as HTMLElement | null;
+ const dom = cloneRoot.firstElementChild as HTMLElement;
+ const contentDOMClone = cloneRoot.querySelector("[data-tmp-find]");
contentDOMClone?.removeAttribute("data-tmp-find");
root?.unmount();
diff --git a/src/components/code-preview/index.tsx b/gui/src/components/code-preview/index.tsx
similarity index 96%
rename from src/components/code-preview/index.tsx
rename to gui/src/components/code-preview/index.tsx
index caeb9197..a9526704 100644
--- a/src/components/code-preview/index.tsx
+++ b/gui/src/components/code-preview/index.tsx
@@ -1,7 +1,7 @@
-export default function CodePreview({ code }: { code: string }) {
- return (
-
- {code}
-
- );
-}
+export default function CodePreview({ code }: { code: string }) {
+ return (
+
+ {code}
+
+ );
+}
diff --git a/src/components/connection-dialog.tsx b/gui/src/components/connection-dialog.tsx
similarity index 66%
rename from src/components/connection-dialog.tsx
rename to gui/src/components/connection-dialog.tsx
index 6f758a0f..f342e019 100644
--- a/src/components/connection-dialog.tsx
+++ b/gui/src/components/connection-dialog.tsx
@@ -1,7 +1,6 @@
-import { Button } from "@/components/ui/button";
-import { useConnectionConfig } from "@/context/connection-config-provider";
-import { useRouter } from "next/navigation";
+import { Button } from "@gui/components/ui/button";
import LogoLoading from "./logo-loading";
+import { useConfig } from "@gui/contexts/config-provider";
export default function ConnectingDialog({
message,
@@ -11,14 +10,11 @@ export default function ConnectingDialog({
message?: string;
onRetry?: () => void;
}>) {
- const { config } = useConnectionConfig();
-
- const router = useRouter();
-
+ const { name, onBack } = useConfig();
let body = (
- Connecting to {config.name}
+ Connecting to {name}
);
@@ -34,7 +30,7 @@ export default function ConnectingDialog({
-
diff --git a/src/components/context-menu-handler.tsx b/gui/src/components/context-menu-handler.tsx
similarity index 93%
rename from src/components/context-menu-handler.tsx
rename to gui/src/components/context-menu-handler.tsx
index 2d6bb2be..9d05f8cb 100644
--- a/src/components/context-menu-handler.tsx
+++ b/gui/src/components/context-menu-handler.tsx
@@ -1,9 +1,9 @@
-import useMessageListener from "@/hooks/useMessageListener";
-import { MessageChannelName } from "@/messages/const";
-import {
+import useMessageListener from "@gui/hooks/useMessageListener";
+import { MessageChannelName } from "@gui/messages/const";
+import type {
OpenContextMenuList,
OpenContextMenuOptions,
-} from "@/messages/openContextMenu";
+} from "@gui/messages/open-context-menu";
import {
ContextMenu,
ContextMenuTrigger,
@@ -15,7 +15,7 @@ import {
ContextMenuSub,
ContextMenuSubTrigger,
ContextMenuSubContent,
-} from "@/components/ui/context-menu";
+} from "@gui/components/ui/context-menu";
import { useEffect, useRef, useState } from "react";
function ContextMenuList({ menu }: { menu: OpenContextMenuList }) {
diff --git a/src/components/custom/ErrorMessage.tsx b/gui/src/components/custom/ErrorMessage.tsx
similarity index 95%
rename from src/components/custom/ErrorMessage.tsx
rename to gui/src/components/custom/ErrorMessage.tsx
index 43f6520b..3dfbec23 100644
--- a/src/components/custom/ErrorMessage.tsx
+++ b/gui/src/components/custom/ErrorMessage.tsx
@@ -1,7 +1,7 @@
-export default function ErrorMessage({
- message,
-}: {
- readonly message: string;
-}) {
- return {message}
;
-}
+export default function ErrorMessage({
+ message,
+}: {
+ readonly message: string;
+}) {
+ return {message}
;
+}
diff --git a/src/components/database-gui.tsx b/gui/src/components/database-gui.tsx
similarity index 83%
rename from src/components/database-gui.tsx
rename to gui/src/components/database-gui.tsx
index 9cfd4be4..d65a88f5 100644
--- a/src/components/database-gui.tsx
+++ b/gui/src/components/database-gui.tsx
@@ -1,85 +1,85 @@
-"use client";
-import {
- ResizableHandle,
- ResizablePanel,
- ResizablePanelGroup,
-} from "@/components/ui/resizable";
-import { useEffect, useMemo, useState } from "react";
-import WindowTabs, { WindowTabItemProps } from "./windows-tab";
-import useMessageListener from "@/hooks/useMessageListener";
-import { MessageChannelName } from "@/messages/const";
-import { OpenTabsProps, receiveOpenTabMessage } from "@/messages/open-tab";
-import QueryWindow from "@/components/tabs/query-tab";
-import { LucideCode, LucideDatabase, LucideSettings } from "lucide-react";
-import SidebarTab, { SidebarTabItem } from "./sidebar-tab";
-import SchemaView from "./schema-sidebar";
-import SettingSidebar from "./sidebar/setting-sidebar";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-
-export default function DatabaseGui() {
- const DEFAULT_WIDTH = 300;
-
- const [defaultWidthPercentage, setDefaultWidthPercentage] = useState(20);
-
- useEffect(() => {
- setDefaultWidthPercentage((DEFAULT_WIDTH / window.innerWidth) * 100);
- }, []);
-
- const { collaborationDriver } = useDatabaseDriver();
- const [selectedTabIndex, setSelectedTabIndex] = useState(0);
- const [tabs, setTabs] = useState(() => [
- {
- title: "Query",
- key: "query",
- component: ,
- icon: LucideCode,
- },
- ]);
-
- useMessageListener(
- MessageChannelName.OPEN_NEW_TAB,
- (newTab) => {
- if (newTab) {
- receiveOpenTabMessage({ newTab, setSelectedTabIndex, setTabs });
- }
- }
- );
-
- const sidebarTabs = useMemo(() => {
- return [
- {
- key: "database",
- name: "Database",
- content: ,
- icon: LucideDatabase,
- },
- collaborationDriver
- ? {
- key: "setting",
- name: "Setting",
- content: ,
- icon: LucideSettings,
- }
- : undefined,
- ].filter(Boolean) as SidebarTabItem[];
- }, [collaborationDriver]);
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- );
-}
+"use client";
+import {
+ ResizableHandle,
+ ResizablePanel,
+ ResizablePanelGroup,
+} from "@gui/components/ui/resizable";
+import { useEffect, useMemo, useState } from "react";
+import WindowTabs, { WindowTabItemProps } from "./windows-tab";
+import useMessageListener from "@gui/hooks/useMessageListener";
+import { MessageChannelName } from "@gui/messages/const";
+import { OpenTabsProps, receiveOpenTabMessage } from "@gui/messages/open-tab";
+import QueryWindow from "@gui/components/tabs/query-tab";
+import { LucideCode, LucideDatabase, LucideSettings } from "lucide-react";
+import SidebarTab, { SidebarTabItem } from "./sidebar-tab";
+import SchemaView from "./schema-sidebar";
+import SettingSidebar from "./sidebar/setting-sidebar";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+
+export default function DatabaseGui() {
+ const DEFAULT_WIDTH = 300;
+
+ const [defaultWidthPercentage, setDefaultWidthPercentage] = useState(20);
+
+ useEffect(() => {
+ setDefaultWidthPercentage((DEFAULT_WIDTH / window.innerWidth) * 100);
+ }, []);
+
+ const { collaborationDriver } = useDatabaseDriver();
+ const [selectedTabIndex, setSelectedTabIndex] = useState(0);
+ const [tabs, setTabs] = useState(() => [
+ {
+ title: "Query",
+ key: "query",
+ component: ,
+ icon: LucideCode,
+ },
+ ]);
+
+ useMessageListener(
+ MessageChannelName.OPEN_NEW_TAB,
+ (newTab) => {
+ if (newTab) {
+ receiveOpenTabMessage({ newTab, setSelectedTabIndex, setTabs });
+ }
+ }
+ );
+
+ const sidebarTabs = useMemo(() => {
+ return [
+ {
+ key: "database",
+ name: "Database",
+ content: ,
+ icon: LucideDatabase,
+ },
+ collaborationDriver
+ ? {
+ key: "setting",
+ name: "Setting",
+ content: ,
+ icon: LucideSettings,
+ }
+ : undefined,
+ ].filter(Boolean) as SidebarTabItem[];
+ }, [collaborationDriver]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/list-button-item.tsx b/gui/src/components/list-button-item.tsx
similarity index 94%
rename from src/components/list-button-item.tsx
rename to gui/src/components/list-button-item.tsx
index 4a47508d..399cf311 100644
--- a/src/components/list-button-item.tsx
+++ b/gui/src/components/list-button-item.tsx
@@ -1,5 +1,5 @@
import { buttonVariants } from "./ui/button";
-import { cn } from "@/lib/utils";
+import { cn } from "@gui/lib/utils";
import { LucideIcon } from "lucide-react";
export default function ListButtonItem({
diff --git a/src/components/loading-opacity.tsx b/gui/src/components/loading-opacity.tsx
similarity index 100%
rename from src/components/loading-opacity.tsx
rename to gui/src/components/loading-opacity.tsx
diff --git a/src/components/logo-loading.tsx b/gui/src/components/logo-loading.tsx
similarity index 96%
rename from src/components/logo-loading.tsx
rename to gui/src/components/logo-loading.tsx
index 62e123b9..a2545b5f 100644
--- a/src/components/logo-loading.tsx
+++ b/gui/src/components/logo-loading.tsx
@@ -1,21 +1,21 @@
-export default function LogoLoading() {
- return (
-
-
-
- ✱
-
-
-
-
-
LibSQL Studio
-
-
- );
-}
+export default function LogoLoading() {
+ return (
+
+
+
+ ✱
+
+
+
+
+
LibSQL Studio
+
+
+ );
+}
diff --git a/src/components/main-connection.tsx b/gui/src/components/main-connection.tsx
similarity index 60%
rename from src/components/main-connection.tsx
rename to gui/src/components/main-connection.tsx
index c98014b7..b3cc3512 100644
--- a/src/components/main-connection.tsx
+++ b/gui/src/components/main-connection.tsx
@@ -1,71 +1,64 @@
-"use client";
-import { useEffect, useLayoutEffect } from "react";
-import DatabaseGui from "./database-gui";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import { TooltipProvider } from "@/components/ui/tooltip";
-import { AutoCompleteProvider } from "@/context/AutoCompleteProvider";
-import ContextMenuHandler from "./context-menu-handler";
-import InternalPubSub from "@/lib/internal-pubsub";
-import { useRouter } from "next/navigation";
-import { SchemaProvider } from "@/context/SchemaProvider";
-import { BlockEditorProvider } from "@/context/block-editor-provider";
-import { useConnectionConfig } from "@/context/connection-config-provider";
-
-export interface ConnectionCredential {
- url: string;
- token: string;
-}
-
-function MainConnection() {
- const { databaseDriver: driver } = useDatabaseDriver();
-
- useEffect(() => {
- return () => {
- driver.close();
- };
- }, [driver]);
-
- return (
-
-
-
-
-
- );
-}
-
-function MainConnectionContainer() {
- const router = useRouter();
- const { databaseDriver: driver } = useDatabaseDriver();
- const { config } = useConnectionConfig();
-
- /**
- * We use useLayoutEffect because it executes before
- * other component mount. Since we need to attach the
- * message handler first before children component
- * start listening and sending message to each other
- */
- useLayoutEffect(() => {
- console.info("Injecting message into window object");
- window.internalPubSub = new InternalPubSub();
- }, [driver, router]);
-
- useEffect(() => {
- document.title = config.name + " - LibSQL Studio";
- }, [config]);
-
- return (
- <>
-
-
-
-
-
-
- >
- );
-}
-
-export default function MainScreen() {
- return ;
-}
+"use client";
+import { useEffect, useLayoutEffect } from "react";
+import { TooltipProvider } from "@gui/components/ui/tooltip";
+import ContextMenuHandler from "./context-menu-handler";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+import DatabaseGui from "./database-gui";
+import { useConfig } from "@gui/contexts/config-provider";
+import { AutoCompleteProvider } from "@gui/contexts/auto-complete-provider";
+import { BlockEditorProvider } from "@gui/contexts/block-editor-provider";
+import InternalPubSub from "@gui/lib/internal-pubsub";
+import { SchemaProvider } from "@gui/contexts/schema-provider";
+
+function MainConnection() {
+ const { databaseDriver: driver } = useDatabaseDriver();
+
+ useEffect(() => {
+ return () => {
+ driver.close();
+ };
+ }, [driver]);
+
+ return (
+
+
+
+
+
+ );
+}
+
+function MainConnectionContainer() {
+ const { databaseDriver: driver } = useDatabaseDriver();
+ const { name } = useConfig();
+
+ /**
+ * We use useLayoutEffect because it executes before
+ * other component mount. Since we need to attach the
+ * message handler first before children component
+ * start listening and sending message to each other
+ */
+ useLayoutEffect(() => {
+ console.info("Injecting message into window object");
+ window.internalPubSub = new InternalPubSub();
+ }, [driver]);
+
+ useEffect(() => {
+ document.title = name + " - LibSQL Studio";
+ }, [name]);
+
+ return (
+ <>
+
+
+
+
+
+
+ >
+ );
+}
+
+export default function MainScreen() {
+ return ;
+}
diff --git a/src/components/query-progress-log.tsx b/gui/src/components/query-progress-log.tsx
similarity index 93%
rename from src/components/query-progress-log.tsx
rename to gui/src/components/query-progress-log.tsx
index 626a2b0f..b6f6aff6 100644
--- a/src/components/query-progress-log.tsx
+++ b/gui/src/components/query-progress-log.tsx
@@ -1,85 +1,85 @@
-import { MultipleQueryProgress } from "@/lib/multiple-query";
-import { useEffect, useState } from "react";
-import CodePreview from "./code-preview";
-
-function formatTimeAgo(ms: number) {
- if (ms < 1000) {
- return `${ms}ms`;
- } else {
- return `${(ms / 1000).toLocaleString(undefined, {
- maximumFractionDigits: 2,
- minimumFractionDigits: 2,
- })}s`;
- }
-}
-
-export default function QueryProgressLog({
- progress,
-}: {
- progress: MultipleQueryProgress;
-}) {
- const [, setCurrentTime] = useState(() => Date.now());
-
- useEffect(() => {
- if (!progress.error) {
- const intervalId = setInterval(() => setCurrentTime(Date.now()), 200);
- return () => clearInterval(intervalId);
- }
- }, [progress]);
-
- const last3 = progress.logs.slice(-3).reverse();
- const value = progress.progress;
- const total = progress.total;
- const isEnded = total === value || !!progress.error;
-
- return (
-
-
- {isEnded ? (
-
- Executed {value}/{total}
-
- ) : (
-
- Executing {value}/{total}
-
- )}
-
-
-
- {last3.map((detail) => {
- return (
-
- {detail.end && !detail.error && (
-
- [Query #{detail.order + 1}] This query took{" "}
- {formatTimeAgo(detail.end - detail.start)} and affected{" "}
- {detail.affectedRow} row(s).
-
- )}
-
- {!!detail.error && (
-
- )}
-
- {!detail.end && (
-
- Executing this query
-
- {formatTimeAgo(Date.now() - detail.start)}
- {" "}
- ago.
-
- )}
-
-
-
-
- );
- })}
-
-
- );
-}
+import { MultipleQueryProgress } from "@gui/lib/multiple-query";
+import { useEffect, useState } from "react";
+import CodePreview from "./code-preview";
+
+function formatTimeAgo(ms: number) {
+ if (ms < 1000) {
+ return `${ms}ms`;
+ } else {
+ return `${(ms / 1000).toLocaleString(undefined, {
+ maximumFractionDigits: 2,
+ minimumFractionDigits: 2,
+ })}s`;
+ }
+}
+
+export default function QueryProgressLog({
+ progress,
+}: {
+ progress: MultipleQueryProgress;
+}) {
+ const [, setCurrentTime] = useState(() => Date.now());
+
+ useEffect(() => {
+ if (!progress.error) {
+ const intervalId = setInterval(() => setCurrentTime(Date.now()), 200);
+ return () => clearInterval(intervalId);
+ }
+ }, [progress]);
+
+ const last3 = progress.logs.slice(-3).reverse();
+ const value = progress.progress;
+ const total = progress.total;
+ const isEnded = total === value || !!progress.error;
+
+ return (
+
+
+ {isEnded ? (
+
+ Executed {value}/{total}
+
+ ) : (
+
+ Executing {value}/{total}
+
+ )}
+
+
+
+ {last3.map((detail) => {
+ return (
+
+ {detail.end && !detail.error && (
+
+ [Query #{detail.order + 1}] This query took{" "}
+ {formatTimeAgo(detail.end - detail.start)} and affected{" "}
+ {detail.affectedRow} row(s).
+
+ )}
+
+ {!!detail.error && (
+
+ )}
+
+ {!detail.end && (
+
+ Executing this query
+
+ {formatTimeAgo(Date.now() - detail.start)}
+ {" "}
+ ago.
+
+ )}
+
+
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/query-result-table.tsx b/gui/src/components/query-result-table.tsx
similarity index 91%
rename from src/components/query-result-table.tsx
rename to gui/src/components/query-result-table.tsx
index 33260762..75044841 100644
--- a/src/components/query-result-table.tsx
+++ b/gui/src/components/query-result-table.tsx
@@ -1,484 +1,495 @@
-import GenericCell from "@/components/table-cell/GenericCell";
-import NumberCell from "@/components/table-cell/NumberCell";
-import TextCell from "@/components/table-cell/TextCell";
-import OptimizeTable, {
- OptimizeTableCellRenderProps,
- OptimizeTableHeaderWithIndexProps,
-} from "@/components/table-optimized";
-import OptimizeTableState from "@/components/table-optimized/OptimizeTableState";
-import { exportRowsToExcel, exportRowsToSqlInsert } from "@/lib/export-helper";
-import { KEY_BINDING } from "@/lib/key-matcher";
-import { openContextMenuFromEvent } from "@/messages/openContextMenu";
-import {
- LucideChevronDown,
- LucidePin,
- LucidePlus,
- LucideSortAsc,
- LucideSortDesc,
- LucideTrash2,
-} from "lucide-react";
-import React, { PropsWithChildren, useCallback, useState } from "react";
-import {
- ColumnSortOption,
- DatabaseValue,
- TableColumnDataType,
-} from "@/drivers/base-driver";
-import { useBlockEditor } from "@/context/block-editor-provider";
-import parseSafeJson from "@/lib/json-safe";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuTrigger,
- DropdownMenuItem,
- DropdownMenuSeparator,
-} from "./ui/dropdown-menu";
-import { triggerSelectFiles, uploadFile } from "@/lib/file-upload";
-import { toast } from "sonner";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import BigNumberCell from "./table-cell/BigNumberCell";
-
-interface ResultTableProps {
- data: OptimizeTableState;
- tableName?: string;
- onSortColumnChange?: (columns: ColumnSortOption[]) => void;
- sortColumns?: ColumnSortOption[];
-}
-
-function isBlockNoteString(value: DatabaseValue): boolean {
- if (typeof value !== "string") return false;
- if (!(value.startsWith("{") && value.endsWith("}"))) return false;
-
- const parsedJson = parseSafeJson(value, null);
- if (!parsedJson) return false;
-
- return parsedJson?.format === "BLOCK_NOTE";
-}
-
-function Header({
- children,
- header,
-}: PropsWithChildren<{ header: OptimizeTableHeaderWithIndexProps }>) {
- const [open, setOpen] = useState(false);
-
- return (
-
-
- {
- setOpen(true);
- }}
- >
- {header.icon ?
{header.icon}
: null}
-
{header.displayName}
-
-
-
-
- {children}
-
-
- );
-}
-
-export default function ResultTable({
- data,
- tableName,
- onSortColumnChange,
-}: ResultTableProps) {
- const [stickyHeaderIndex, setStickHeaderIndex] = useState();
- const { openBlockEditor } = useBlockEditor();
- const { databaseDriver } = useDatabaseDriver();
-
- const renderHeader = useCallback(
- (header: OptimizeTableHeaderWithIndexProps) => {
- return (
-
- {
- setStickHeaderIndex(
- header.index === stickyHeaderIndex ? undefined : header.index
- );
- }}
- >
-
- Pin Header
-
-
- {
- if (onSortColumnChange) {
- onSortColumnChange([{ columnName: header.name, by: "ASC" }]);
- }
- }}
- >
-
- Sort A → Z
-
- {
- if (onSortColumnChange) {
- onSortColumnChange([{ columnName: header.name, by: "DESC" }]);
- }
- }}
- >
-
- Sort Z → A
-
-
- );
- },
- [stickyHeaderIndex, tableName, onSortColumnChange]
- );
-
- const renderCell = useCallback(
- ({ y, x, state, header }: OptimizeTableCellRenderProps) => {
- const isFocus = state.hasFocus(y, x);
- const editMode = isFocus && state.isInEditMode();
-
- if (header.dataType === TableColumnDataType.TEXT) {
- const value = state.getValue(y, x) as DatabaseValue;
- let editor: "input" | "blocknote" = "input"; // this is default editor
-
- if (isBlockNoteString(value)) {
- editor = "blocknote";
- }
-
- return (
- }
- focus={isFocus}
- isChanged={state.hasCellChange(y, x)}
- onChange={(newValue) => {
- state.changeValue(y, x, newValue);
- }}
- />
- );
- } else if (header.dataType === TableColumnDataType.REAL) {
- return (
- }
- focus={isFocus}
- isChanged={state.hasCellChange(y, x)}
- onChange={(newValue) => {
- state.changeValue(y, x, newValue);
- }}
- />
- );
- } else if (header.dataType === TableColumnDataType.INTEGER) {
- if (databaseDriver.supportBigInt()) {
- return (
- }
- focus={isFocus}
- isChanged={state.hasCellChange(y, x)}
- onChange={(newValue) => {
- state.changeValue(y, x, newValue);
- }}
- />
- );
- } else {
- return (
- }
- focus={isFocus}
- isChanged={state.hasCellChange(y, x)}
- onChange={(newValue) => {
- state.changeValue(y, x, newValue);
- }}
- />
- );
- }
- }
-
- return ;
- },
- [databaseDriver]
- );
-
- const onHeaderContextMenu = useCallback((e: React.MouseEvent) => {
- e.preventDefault();
- e.stopPropagation();
- }, []);
-
- const copyCallback = useCallback((state: OptimizeTableState) => {
- const focus = state.getFocus();
- if (focus) {
- const y = focus.y;
- const x = focus.x;
- window.navigator.clipboard.writeText(state.getValue(y, x) as string);
- }
- }, []);
-
- const pasteCallback = useCallback((state: OptimizeTableState) => {
- const focus = state.getFocus();
- if (focus) {
- const y = focus.y;
- const x = focus.x;
- window.navigator.clipboard.readText().then((pasteValue) => {
- state.changeValue(y, x, pasteValue);
- });
- }
- }, []);
-
- const onCellContextMenu = useCallback(
- ({
- state,
- event,
- }: {
- state: OptimizeTableState;
- event: React.MouseEvent;
- }) => {
- const randomUUID = crypto.randomUUID();
- const timestamp = Math.floor(Date.now() / 1000).toString();
- const hasFocus = !!state.getFocus();
-
- function setFocusValue(newValue: unknown) {
- const focusCell = state.getFocus();
- if (focusCell) {
- state.changeValue(focusCell.y, focusCell.x, newValue);
- }
- }
-
- function getFocusValue() {
- const focusCell = state.getFocus();
- if (focusCell) {
- return state.getValue(focusCell.y, focusCell.x);
- }
- }
-
- openContextMenuFromEvent([
- {
- title: "Insert Value",
- disabled: !hasFocus,
- subWidth: 200,
- sub: [
- {
- title: NULL
,
- onClick: () => {
- setFocusValue(null);
- },
- },
- {
- title: DEFAULT
,
- onClick: () => {
- setFocusValue(undefined);
- },
- },
- { separator: true },
- {
- title: (
-
- Unix Timestamp
- {timestamp}
-
- ),
- onClick: () => {
- setFocusValue(timestamp);
- },
- },
- { separator: true },
- {
- title: (
-
- UUID
- {randomUUID}
-
- ),
- onClick: () => {
- setFocusValue(randomUUID);
- },
- },
- ],
- },
- {
- title: "Edit with Block Editor",
- onClick: () => {
- openBlockEditor({
- initialContent: getFocusValue() as string,
- onSave: setFocusValue,
- });
- },
- },
-
- {
- title: "Upload File",
- onClick: async () => {
- const files = await triggerSelectFiles();
-
- if (files.error) return toast.error(files.error.message);
-
- const file = files.value[0];
-
- const toastId = toast.loading("Uploading file...");
- const { data, error } = await uploadFile(file);
- if (error)
- return toast.error("Upload failed!", {
- id: toastId,
- description: error.message,
- });
-
- setFocusValue(data.url);
- return toast.success("File uploaded!", { id: toastId });
- },
- },
-
- {
- separator: true,
- },
- {
- title: "Copy Cell Value",
- shortcut: KEY_BINDING.copy.toString(),
- onClick: () => {
- copyCallback(state);
- },
- },
- {
- title: "Paste",
- shortcut: KEY_BINDING.paste.toString(),
- onClick: () => {
- pasteCallback(state);
- },
- },
- {
- separator: true,
- },
- {
- title: "Copy Row As",
- sub: [
- {
- title: "Copy as Excel",
- onClick: () => {
- if (state.getSelectedRowCount() > 0) {
- window.navigator.clipboard.writeText(
- exportRowsToExcel(state.getSelectedRowsArray())
- );
- }
- },
- },
- {
- title: "Copy as INSERT SQL",
- onClick: () => {
- const headers = state
- .getHeaders()
- .map((column) => column?.name ?? "");
-
- if (state.getSelectedRowCount() > 0) {
- window.navigator.clipboard.writeText(
- exportRowsToSqlInsert(
- tableName ?? "UnknownTable",
- headers,
- state.getSelectedRowsArray()
- )
- );
- }
- },
- },
- ],
- },
- { separator: true },
- {
- title: "Insert row",
- icon: LucidePlus,
- onClick: () => {
- data.insertNewRow();
- },
- },
- {
- title: "Delete selected row(s)",
- icon: LucideTrash2,
- onClick: () => {
- data.getSelectedRowIndex().forEach((index) => {
- data.removeRow(index);
- });
- },
- },
- ])(event);
- },
- [data, tableName, copyCallback, pasteCallback, openBlockEditor]
- );
-
- const onKeyDown = useCallback(
- (state: OptimizeTableState, e: React.KeyboardEvent) => {
- if (state.isInEditMode()) return;
-
- if (KEY_BINDING.copy.match(e as React.KeyboardEvent)) {
- copyCallback(state);
- } else if (
- KEY_BINDING.paste.match(e as React.KeyboardEvent)
- ) {
- pasteCallback(state);
- } else if (e.key === "ArrowRight") {
- const focus = state.getFocus();
- if (focus && focus.x + 1 < state.getHeaderCount()) {
- state.setFocus(focus.y, focus.x + 1);
- state.scrollToFocusCell("right", "top");
- }
- } else if (e.key === "ArrowLeft") {
- const focus = state.getFocus();
- if (focus && focus.x - 1 >= 0) {
- state.setFocus(focus.y, focus.x - 1);
- state.scrollToFocusCell("left", "top");
- }
- } else if (e.key === "ArrowUp") {
- const focus = state.getFocus();
- if (focus && focus.y - 1 >= 0) {
- state.setFocus(focus.y - 1, focus.x);
- state.scrollToFocusCell("left", "top");
- }
- } else if (e.key === "ArrowDown") {
- const focus = state.getFocus();
- if (focus && focus.y + 1 < state.getRowsCount()) {
- state.setFocus(focus.y + 1, focus.x);
- state.scrollToFocusCell("left", "bottom");
- }
- } else if (e.key === "Tab") {
- const focus = state.getFocus();
- if (focus) {
- const colCount = state.getHeaderCount();
- const n = focus.y * colCount + focus.x + 1;
- const x = n % colCount;
- const y = Math.floor(n / colCount);
- if (y >= state.getRowsCount()) return;
- state.setFocus(y, x);
- state.scrollToFocusCell(x === 0 ? "left" : "right", "bottom");
- }
- } else if (e.key === "Enter") {
- state.enterEditMode();
- }
-
- e.preventDefault();
- },
- [copyCallback, pasteCallback]
- );
-
- return (
-
- );
-}
+import GenericCell from "@gui/components/table-cell/GenericCell";
+import NumberCell from "@gui/components/table-cell/NumberCell";
+import TextCell from "@gui/components/table-cell/TextCell";
+import OptimizeTable, {
+ OptimizeTableCellRenderProps,
+ OptimizeTableHeaderWithIndexProps,
+} from "@gui/components/table-optimized";
+import OptimizeTableState from "@gui/components/table-optimized/OptimizeTableState";
+import {
+ exportRowsToExcel,
+ exportRowsToSqlInsert,
+} from "@gui/lib/export-helper";
+import { KEY_BINDING } from "@gui/lib/key-matcher";
+import { openContextMenuFromEvent } from "@gui/messages/open-context-menu";
+import {
+ LucideChevronDown,
+ LucidePin,
+ LucidePlus,
+ LucideSortAsc,
+ LucideSortDesc,
+ LucideTrash2,
+} from "lucide-react";
+import React, { PropsWithChildren, useCallback, useState } from "react";
+import {
+ ColumnSortOption,
+ DatabaseValue,
+ TableColumnDataType,
+} from "@gui/drivers/base-driver";
+import { useBlockEditor } from "@gui/contexts/block-editor-provider";
+import parseSafeJson from "@gui/lib/json-safe";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuTrigger,
+ DropdownMenuItem,
+ DropdownMenuSeparator,
+} from "./ui/dropdown-menu";
+import { triggerSelectFiles, uploadFile } from "@gui/lib/file-upload";
+import { toast } from "sonner";
+import BigNumberCell from "./table-cell/BigNumberCell";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+
+interface ResultTableProps {
+ data: OptimizeTableState;
+ tableName?: string;
+ onSortColumnChange?: (columns: ColumnSortOption[]) => void;
+ sortColumns?: ColumnSortOption[];
+}
+
+function isBlockNoteString(value: DatabaseValue): boolean {
+ if (typeof value !== "string") return false;
+ if (!(value.startsWith("{") && value.endsWith("}"))) return false;
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const parsedJson = parseSafeJson(value, null);
+ if (!parsedJson) return false;
+
+ return parsedJson?.format === "BLOCK_NOTE";
+}
+
+function Header({
+ children,
+ header,
+}: PropsWithChildren<{ header: OptimizeTableHeaderWithIndexProps }>) {
+ const [open, setOpen] = useState(false);
+
+ return (
+
+
+ {
+ setOpen(true);
+ }}
+ >
+ {header.icon ?
{header.icon}
: null}
+
{header.displayName}
+
+
+
+
+ {children}
+
+
+ );
+}
+
+export default function ResultTable({
+ data,
+ tableName,
+ onSortColumnChange,
+}: ResultTableProps) {
+ const [stickyHeaderIndex, setStickHeaderIndex] = useState();
+ const { openBlockEditor } = useBlockEditor();
+ const { databaseDriver } = useDatabaseDriver();
+
+ console.log("henlooooo");
+
+ const renderHeader = useCallback(
+ (header: OptimizeTableHeaderWithIndexProps) => {
+ return (
+
+ {
+ setStickHeaderIndex(
+ header.index === stickyHeaderIndex ? undefined : header.index
+ );
+ }}
+ >
+
+ Pin Header
+
+
+ {
+ if (onSortColumnChange) {
+ onSortColumnChange([{ columnName: header.name, by: "ASC" }]);
+ }
+ }}
+ >
+
+ Sort A → Z
+
+ {
+ if (onSortColumnChange) {
+ onSortColumnChange([{ columnName: header.name, by: "DESC" }]);
+ }
+ }}
+ >
+
+ Sort Z → A
+
+
+ );
+ },
+ [stickyHeaderIndex, tableName, onSortColumnChange]
+ );
+
+ const renderCell = useCallback(
+ ({ y, x, state, header }: OptimizeTableCellRenderProps) => {
+ const isFocus = state.hasFocus(y, x);
+ const editMode = isFocus && state.isInEditMode();
+
+ if (header.dataType === TableColumnDataType.TEXT) {
+ const value = state.getValue(y, x) as DatabaseValue;
+ let editor: "input" | "blocknote" = "input"; // this is default editor
+
+ if (isBlockNoteString(value)) {
+ editor = "blocknote";
+ }
+
+ return (
+ }
+ focus={isFocus}
+ isChanged={state.hasCellChange(y, x)}
+ onChange={(newValue) => {
+ state.changeValue(y, x, newValue);
+ }}
+ />
+ );
+ } else if (header.dataType === TableColumnDataType.REAL) {
+ return (
+ }
+ focus={isFocus}
+ isChanged={state.hasCellChange(y, x)}
+ onChange={(newValue) => {
+ state.changeValue(y, x, newValue);
+ }}
+ />
+ );
+ } else if (header.dataType === TableColumnDataType.INTEGER) {
+ if (databaseDriver.supportBigInt()) {
+ return (
+ }
+ focus={isFocus}
+ isChanged={state.hasCellChange(y, x)}
+ onChange={(newValue) => {
+ state.changeValue(y, x, newValue);
+ }}
+ />
+ );
+ } else {
+ return (
+ }
+ focus={isFocus}
+ isChanged={state.hasCellChange(y, x)}
+ onChange={(newValue) => {
+ state.changeValue(y, x, newValue);
+ }}
+ />
+ );
+ }
+ }
+
+ return ;
+ },
+ [databaseDriver]
+ );
+
+ const onHeaderContextMenu = useCallback((e: React.MouseEvent) => {
+ e.preventDefault();
+ e.stopPropagation();
+ }, []);
+
+ const copyCallback = useCallback((state: OptimizeTableState) => {
+ const focus = state.getFocus();
+ if (focus) {
+ const y = focus.y;
+ const x = focus.x;
+ window.navigator.clipboard.writeText(state.getValue(y, x) as string);
+ }
+ }, []);
+
+ const pasteCallback = useCallback((state: OptimizeTableState) => {
+ const focus = state.getFocus();
+ if (focus) {
+ const y = focus.y;
+ const x = focus.x;
+ window.navigator.clipboard.readText().then((pasteValue) => {
+ state.changeValue(y, x, pasteValue);
+ });
+ }
+ }, []);
+
+ const onCellContextMenu = useCallback(
+ ({
+ state,
+ event,
+ }: {
+ state: OptimizeTableState;
+ event: React.MouseEvent;
+ }) => {
+ const randomUUID = crypto.randomUUID();
+ const timestamp = Math.floor(Date.now() / 1000).toString();
+ const hasFocus = !!state.getFocus();
+
+ function setFocusValue(newValue: unknown) {
+ const focusCell = state.getFocus();
+ if (focusCell) {
+ state.changeValue(focusCell.y, focusCell.x, newValue);
+ }
+ }
+
+ function getFocusValue() {
+ const focusCell = state.getFocus();
+ if (focusCell) {
+ return state.getValue(focusCell.y, focusCell.x);
+ }
+
+ return undefined;
+ }
+
+ openContextMenuFromEvent([
+ {
+ title: "Insert Value",
+ disabled: !hasFocus,
+ subWidth: 200,
+ sub: [
+ {
+ title: NULL
,
+ onClick: () => {
+ setFocusValue(null);
+ },
+ },
+ {
+ title: DEFAULT
,
+ onClick: () => {
+ setFocusValue(undefined);
+ },
+ },
+ { separator: true },
+ {
+ title: (
+
+ Unix Timestamp
+ {timestamp}
+
+ ),
+ onClick: () => {
+ setFocusValue(timestamp);
+ },
+ },
+ { separator: true },
+ {
+ title: (
+
+ UUID
+ {randomUUID}
+
+ ),
+ onClick: () => {
+ setFocusValue(randomUUID);
+ },
+ },
+ ],
+ },
+ {
+ title: "Edit with Block Editor",
+ onClick: () => {
+ openBlockEditor({
+ initialContent: getFocusValue() as string,
+ onSave: setFocusValue,
+ });
+ },
+ },
+
+ {
+ title: "Upload File",
+ onClick: async () => {
+ const files = await triggerSelectFiles();
+
+ if (files.error) return toast.error(files.error.message);
+
+ const file = files.value[0];
+ if (!file) return;
+
+ const toastId = toast.loading("Uploading file...");
+ const { data, error } = await uploadFile(file);
+ if (error)
+ return toast.error("Upload failed!", {
+ id: toastId,
+ description: error.message,
+ });
+
+ setFocusValue(data.url);
+ return toast.success("File uploaded!", { id: toastId });
+ },
+ },
+
+ {
+ separator: true,
+ },
+ {
+ title: "Copy Cell Value",
+ shortcut: KEY_BINDING.copy.toString(),
+ onClick: () => {
+ copyCallback(state);
+ },
+ },
+ {
+ title: "Paste",
+ shortcut: KEY_BINDING.paste.toString(),
+ onClick: () => {
+ pasteCallback(state);
+ },
+ },
+ {
+ separator: true,
+ },
+ {
+ title: "Copy Row As",
+ sub: [
+ {
+ title: "Copy as Excel",
+ onClick: () => {
+ if (state.getSelectedRowCount() > 0) {
+ window.navigator.clipboard.writeText(
+ exportRowsToExcel(state.getSelectedRowsArray())
+ );
+ }
+ },
+ },
+ {
+ title: "Copy as INSERT SQL",
+ onClick: () => {
+ const headers = state
+ .getHeaders()
+ .map((column) => column?.name ?? "");
+
+ if (state.getSelectedRowCount() > 0) {
+ window.navigator.clipboard.writeText(
+ exportRowsToSqlInsert(
+ tableName ?? "UnknownTable",
+ headers,
+ state.getSelectedRowsArray()
+ )
+ );
+ }
+ },
+ },
+ ],
+ },
+ { separator: true },
+ {
+ title: "Insert row",
+ icon: LucidePlus,
+ onClick: () => {
+ data.insertNewRow();
+ },
+ },
+ {
+ title: "Delete selected row(s)",
+ icon: LucideTrash2,
+ onClick: () => {
+ data.getSelectedRowIndex().forEach((index) => {
+ data.removeRow(index);
+ });
+ },
+ },
+ ])(event);
+ },
+ [data, tableName, copyCallback, pasteCallback, openBlockEditor]
+ );
+
+ const onKeyDown = useCallback(
+ (state: OptimizeTableState, e: React.KeyboardEvent) => {
+ if (state.isInEditMode()) return;
+
+ if (KEY_BINDING.copy.match(e as React.KeyboardEvent)) {
+ copyCallback(state);
+ } else if (
+ KEY_BINDING.paste.match(e as React.KeyboardEvent)
+ ) {
+ pasteCallback(state);
+ } else if (e.key === "ArrowRight") {
+ const focus = state.getFocus();
+ if (focus && focus.x + 1 < state.getHeaderCount()) {
+ state.setFocus(focus.y, focus.x + 1);
+ state.scrollToFocusCell("right", "top");
+ }
+ } else if (e.key === "ArrowLeft") {
+ const focus = state.getFocus();
+ if (focus && focus.x - 1 >= 0) {
+ state.setFocus(focus.y, focus.x - 1);
+ state.scrollToFocusCell("left", "top");
+ }
+ } else if (e.key === "ArrowUp") {
+ const focus = state.getFocus();
+ if (focus && focus.y - 1 >= 0) {
+ state.setFocus(focus.y - 1, focus.x);
+ state.scrollToFocusCell("left", "top");
+ }
+ } else if (e.key === "ArrowDown") {
+ const focus = state.getFocus();
+ if (focus && focus.y + 1 < state.getRowsCount()) {
+ state.setFocus(focus.y + 1, focus.x);
+ state.scrollToFocusCell("left", "bottom");
+ }
+ } else if (e.key === "Tab") {
+ const focus = state.getFocus();
+ if (focus) {
+ const colCount = state.getHeaderCount();
+ const n = focus.y * colCount + focus.x + 1;
+ const x = n % colCount;
+ const y = Math.floor(n / colCount);
+ if (y >= state.getRowsCount()) return;
+ state.setFocus(y, x);
+ state.scrollToFocusCell(x === 0 ? "left" : "right", "bottom");
+ }
+ } else if (e.key === "Enter") {
+ state.enterEditMode();
+ }
+
+ e.preventDefault();
+ },
+ [copyCallback, pasteCallback]
+ );
+
+ console.log("Herer");
+
+ return (
+
+ );
+}
diff --git a/src/components/schema-editor/column-check-popup.tsx b/gui/src/components/schema-editor/column-check-popup.tsx
similarity index 92%
rename from src/components/schema-editor/column-check-popup.tsx
rename to gui/src/components/schema-editor/column-check-popup.tsx
index ac64d5e7..05642151 100644
--- a/src/components/schema-editor/column-check-popup.tsx
+++ b/gui/src/components/schema-editor/column-check-popup.tsx
@@ -1,62 +1,62 @@
-import { DatabaseTableColumnConstraint } from "@/drivers/base-driver";
-import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
-import { LucideCheck } from "lucide-react";
-import { Button } from "../ui/button";
-import { ColumnChangeEvent } from "./schema-editor-column-list";
-import { Textarea } from "../ui/textarea";
-
-export default function ColumnCheckPopup({
- constraint,
- disabled,
- onChange,
-}: Readonly<{
- constraint: DatabaseTableColumnConstraint;
- disabled: boolean;
- onChange: ColumnChangeEvent;
-}>) {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-}
+import { DatabaseTableColumnConstraint } from "@gui/drivers/base-driver";
+import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
+import { LucideCheck } from "lucide-react";
+import { Button } from "../ui/button";
+import { ColumnChangeEvent } from "./schema-editor-column-list";
+import { Textarea } from "../ui/textarea";
+
+export default function ColumnCheckPopup({
+ constraint,
+ disabled,
+ onChange,
+}: Readonly<{
+ constraint: DatabaseTableColumnConstraint;
+ disabled: boolean;
+ onChange: ColumnChangeEvent;
+}>) {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/column-conflict-clause.tsx b/gui/src/components/schema-editor/column-conflict-clause.tsx
similarity index 89%
rename from src/components/schema-editor/column-conflict-clause.tsx
rename to gui/src/components/schema-editor/column-conflict-clause.tsx
index d83e5894..5045f557 100644
--- a/src/components/schema-editor/column-conflict-clause.tsx
+++ b/gui/src/components/schema-editor/column-conflict-clause.tsx
@@ -1,33 +1,33 @@
-import { DatabaseColumnConflict } from "@/drivers/base-driver";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-
-export default function ConflictClauseOptions({
- value,
- onChange,
- disabled,
-}: Readonly<{
- value?: DatabaseColumnConflict;
- onChange?: (v: DatabaseColumnConflict) => void;
- disabled?: boolean;
-}>) {
- return (
-
- );
-}
+import { DatabaseColumnConflict } from "@gui/drivers/base-driver";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "../ui/select";
+
+export default function ConflictClauseOptions({
+ value,
+ onChange,
+ disabled,
+}: Readonly<{
+ value?: DatabaseColumnConflict;
+ onChange?: (v: DatabaseColumnConflict) => void;
+ disabled?: boolean;
+}>) {
+ return (
+
+ );
+}
diff --git a/src/components/schema-editor/column-default-value-input.tsx b/gui/src/components/schema-editor/column-default-value-input.tsx
similarity index 91%
rename from src/components/schema-editor/column-default-value-input.tsx
rename to gui/src/components/schema-editor/column-default-value-input.tsx
index dfc0d7bd..30cd4305 100644
--- a/src/components/schema-editor/column-default-value-input.tsx
+++ b/gui/src/components/schema-editor/column-default-value-input.tsx
@@ -1,186 +1,186 @@
-import { Checkbox } from "@/components/ui/checkbox";
-import { Label } from "@/components/ui/label";
-import {
- Popover,
- PopoverTrigger,
- PopoverContent,
-} from "@/components/ui/popover";
-import { ChevronsUpDown } from "lucide-react";
-import { ChangeEvent, useCallback, useMemo } from "react";
-import { Input } from "../ui/input";
-import { DatabaseTableColumnConstraint } from "@/drivers/base-driver";
-
-export default function ColumnDefaultValueInput({
- constraint,
- disabled,
- onChange,
-}: Readonly<{
- constraint?: DatabaseTableColumnConstraint;
- disabled?: boolean;
- onChange: (constraint: DatabaseTableColumnConstraint) => void;
-}>) {
- const display = useMemo(() => {
- if (
- constraint?.defaultValue !== undefined &&
- constraint?.defaultValue !== null
- ) {
- return constraint.defaultValue.toString();
- } else if (constraint?.defaultExpression !== undefined) {
- return constraint?.defaultExpression;
- } else if (constraint?.autoIncrement) {
- return Auto Increment;
- }
-
- return No Default;
- }, [constraint]);
-
- const onAutoIncrementChange = useCallback(
- (checked: boolean) => {
- if (checked) {
- onChange({
- defaultExpression: undefined,
- defaultValue: undefined,
- autoIncrement: checked,
- });
- }
- },
- [onChange]
- );
-
- const onDefaultValueChange = useCallback(
- (checked: boolean) => {
- if (checked) {
- onChange({
- defaultExpression: undefined,
- defaultValue: undefined,
- autoIncrement: undefined,
- });
- }
- },
- [onChange]
- );
-
- const onCustomValueCheckedChange = useCallback(
- (checked: boolean) => {
- if (checked) {
- onChange({
- autoIncrement: undefined,
- defaultExpression: undefined,
- defaultValue: "",
- });
- }
- },
- [onChange]
- );
-
- const onCustomValueChange = useCallback(
- (e: ChangeEvent) => {
- onChange({
- autoIncrement: undefined,
- defaultExpression: undefined,
- defaultValue: e.currentTarget.value,
- });
- },
- [onChange]
- );
-
- const onExpressionCheckedChange = useCallback(
- (checked: boolean) => {
- if (checked) {
- onChange({
- autoIncrement: undefined,
- defaultExpression: "",
- defaultValue: undefined,
- });
- }
- },
- [onChange]
- );
-
- const onExpressionValueChange = useCallback(
- (e: ChangeEvent) => {
- onChange({
- autoIncrement: undefined,
- defaultExpression: e.currentTarget.value,
- defaultValue: undefined,
- });
- },
- [onChange]
- );
-
- const noDefaultValue =
- constraint?.defaultValue === undefined &&
- constraint?.defaultExpression === undefined &&
- !constraint?.autoIncrement;
-
- return (
-
-
-
-
- {display || "EMPTY STRING"}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
+import { Checkbox } from "@gui/components/ui/checkbox";
+import { Label } from "@gui/components/ui/label";
+import {
+ Popover,
+ PopoverTrigger,
+ PopoverContent,
+} from "@gui/components/ui/popover";
+import { ChevronsUpDown } from "lucide-react";
+import { ChangeEvent, useCallback, useMemo } from "react";
+import { Input } from "../ui/input";
+import { DatabaseTableColumnConstraint } from "@gui/drivers/base-driver";
+
+export default function ColumnDefaultValueInput({
+ constraint,
+ disabled,
+ onChange,
+}: Readonly<{
+ constraint?: DatabaseTableColumnConstraint;
+ disabled?: boolean;
+ onChange: (constraint: DatabaseTableColumnConstraint) => void;
+}>) {
+ const display = useMemo(() => {
+ if (
+ constraint?.defaultValue !== undefined &&
+ constraint?.defaultValue !== null
+ ) {
+ return constraint.defaultValue.toString();
+ } else if (constraint?.defaultExpression !== undefined) {
+ return constraint?.defaultExpression;
+ } else if (constraint?.autoIncrement) {
+ return Auto Increment;
+ }
+
+ return No Default;
+ }, [constraint]);
+
+ const onAutoIncrementChange = useCallback(
+ (checked: boolean) => {
+ if (checked) {
+ onChange({
+ defaultExpression: undefined,
+ defaultValue: undefined,
+ autoIncrement: checked,
+ });
+ }
+ },
+ [onChange]
+ );
+
+ const onDefaultValueChange = useCallback(
+ (checked: boolean) => {
+ if (checked) {
+ onChange({
+ defaultExpression: undefined,
+ defaultValue: undefined,
+ autoIncrement: undefined,
+ });
+ }
+ },
+ [onChange]
+ );
+
+ const onCustomValueCheckedChange = useCallback(
+ (checked: boolean) => {
+ if (checked) {
+ onChange({
+ autoIncrement: undefined,
+ defaultExpression: undefined,
+ defaultValue: "",
+ });
+ }
+ },
+ [onChange]
+ );
+
+ const onCustomValueChange = useCallback(
+ (e: ChangeEvent) => {
+ onChange({
+ autoIncrement: undefined,
+ defaultExpression: undefined,
+ defaultValue: e.currentTarget.value,
+ });
+ },
+ [onChange]
+ );
+
+ const onExpressionCheckedChange = useCallback(
+ (checked: boolean) => {
+ if (checked) {
+ onChange({
+ autoIncrement: undefined,
+ defaultExpression: "",
+ defaultValue: undefined,
+ });
+ }
+ },
+ [onChange]
+ );
+
+ const onExpressionValueChange = useCallback(
+ (e: ChangeEvent) => {
+ onChange({
+ autoIncrement: undefined,
+ defaultExpression: e.currentTarget.value,
+ defaultValue: undefined,
+ });
+ },
+ [onChange]
+ );
+
+ const noDefaultValue =
+ constraint?.defaultValue === undefined &&
+ constraint?.defaultExpression === undefined &&
+ !constraint?.autoIncrement;
+
+ return (
+
+
+
+
+ {display || "EMPTY STRING"}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/column-fk-popup.tsx b/gui/src/components/schema-editor/column-fk-popup.tsx
similarity index 94%
rename from src/components/schema-editor/column-fk-popup.tsx
rename to gui/src/components/schema-editor/column-fk-popup.tsx
index 3b3cfa8b..68406cd4 100644
--- a/src/components/schema-editor/column-fk-popup.tsx
+++ b/gui/src/components/schema-editor/column-fk-popup.tsx
@@ -1,91 +1,91 @@
-import { DatabaseForeignKeyClause } from "@/drivers/base-driver";
-import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
-import { LucideArrowUpRight } from "lucide-react";
-import { Button } from "../ui/button";
-import { ColumnChangeEvent } from "./schema-editor-column-list";
-import TableColumnCombobox from "../table-combobox/TableColumnCombobox";
-import TableCombobox from "../table-combobox/TableCombobox";
-import { Label } from "../ui/label";
-import { Separator } from "../ui/separator";
-
-export default function ColumnForeignKeyPopup({
- constraint,
- disabled,
- onChange,
-}: Readonly<{
- constraint: DatabaseForeignKeyClause;
- disabled: boolean;
- onChange: ColumnChangeEvent;
-}>) {
- return (
-
-
-
-
-
-
-
-
-
Foreign Key
-
-
-
-
-
-
{
- onChange({
- constraint: {
- foreignKey: {
- ...constraint,
- foreignTableName: newTable,
- },
- },
- });
- }}
- />
-
-
- {constraint.foreignTableName && (
-
-
-
{
- onChange({
- constraint: {
- foreignKey: {
- ...constraint,
- foreignColumns: [colName],
- },
- },
- });
- }}
- tableName={constraint.foreignTableName}
- />
-
- )}
-
-
{
- onChange({
- constraint: {
- foreignKey: undefined,
- },
- });
- }}
- >
- Remove Constraint
-
-
-
-
- );
-}
+import { DatabaseForeignKeyClause } from "@gui/drivers/base-driver";
+import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
+import { LucideArrowUpRight } from "lucide-react";
+import { Button } from "../ui/button";
+import { ColumnChangeEvent } from "./schema-editor-column-list";
+import TableColumnCombobox from "../table-combobox/TableColumnCombobox";
+import TableCombobox from "../table-combobox/TableCombobox";
+import { Label } from "../ui/label";
+import { Separator } from "../ui/separator";
+
+export default function ColumnForeignKeyPopup({
+ constraint,
+ disabled,
+ onChange,
+}: Readonly<{
+ constraint: DatabaseForeignKeyClause;
+ disabled: boolean;
+ onChange: ColumnChangeEvent;
+}>) {
+ return (
+
+
+
+
+
+
+
+
+
Foreign Key
+
+
+
+
+
+
{
+ onChange({
+ constraint: {
+ foreignKey: {
+ ...constraint,
+ foreignTableName: newTable,
+ },
+ },
+ });
+ }}
+ />
+
+
+ {constraint.foreignTableName && (
+
+
+
{
+ onChange({
+ constraint: {
+ foreignKey: {
+ ...constraint,
+ foreignColumns: [colName],
+ },
+ },
+ });
+ }}
+ tableName={constraint.foreignTableName}
+ />
+
+ )}
+
+
{
+ onChange({
+ constraint: {
+ foreignKey: undefined,
+ },
+ });
+ }}
+ >
+ Remove Constraint
+
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/column-generate-popup.tsx b/gui/src/components/schema-editor/column-generate-popup.tsx
similarity index 93%
rename from src/components/schema-editor/column-generate-popup.tsx
rename to gui/src/components/schema-editor/column-generate-popup.tsx
index 0c5b4008..90471856 100644
--- a/src/components/schema-editor/column-generate-popup.tsx
+++ b/gui/src/components/schema-editor/column-generate-popup.tsx
@@ -1,89 +1,89 @@
-import { DatabaseTableColumnConstraint } from "@/drivers/base-driver";
-import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
-import { LucideSigma } from "lucide-react";
-import { Button } from "../ui/button";
-import { ColumnChangeEvent } from "./schema-editor-column-list";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-import { Textarea } from "../ui/textarea";
-
-export default function ColumnGeneratingPopup({
- constraint,
- disabled,
- onChange,
-}: Readonly<{
- constraint: DatabaseTableColumnConstraint;
- disabled: boolean;
- onChange: ColumnChangeEvent;
-}>) {
- return (
-
-
-
-
-
-
-
-
-
Generating Function
-
-
-
-
- );
-}
+import { DatabaseTableColumnConstraint } from "@gui/drivers/base-driver";
+import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
+import { LucideSigma } from "lucide-react";
+import { Button } from "../ui/button";
+import { ColumnChangeEvent } from "./schema-editor-column-list";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "../ui/select";
+import { Textarea } from "../ui/textarea";
+
+export default function ColumnGeneratingPopup({
+ constraint,
+ disabled,
+ onChange,
+}: Readonly<{
+ constraint: DatabaseTableColumnConstraint;
+ disabled: boolean;
+ onChange: ColumnChangeEvent;
+}>) {
+ return (
+
+
+
+
+
+
+
+
+
Generating Function
+
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/column-pk-popup.tsx b/gui/src/components/schema-editor/column-pk-popup.tsx
similarity index 93%
rename from src/components/schema-editor/column-pk-popup.tsx
rename to gui/src/components/schema-editor/column-pk-popup.tsx
index 1e794e47..66a2328e 100644
--- a/src/components/schema-editor/column-pk-popup.tsx
+++ b/gui/src/components/schema-editor/column-pk-popup.tsx
@@ -1,85 +1,88 @@
-import { DatabaseTableColumnConstraint, SqlOrder } from "@/drivers/base-driver";
-import { LucideKeyRound } from "lucide-react";
-import { Button } from "../ui/button";
-import ConflictClauseOptions from "./column-conflict-clause";
-import { ColumnChangeEvent } from "./schema-editor-column-list";
-import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-
-export default function ColumnPrimaryKeyPopup({
- constraint,
- disabled,
- onChange,
-}: Readonly<{
- constraint: DatabaseTableColumnConstraint;
- disabled: boolean;
- onChange: ColumnChangeEvent;
-}>) {
- return (
-
-
-
-
-
-
-
-
-
Primary Key
-
-
{
- onChange({
- constraint: {
- primaryKeyConflict: v,
- },
- });
- }}
- />
- {
- onChange({
- constraint: {
- primaryKey: undefined,
- primaryKeyConflict: undefined,
- primaryKeyOrder: undefined,
- },
- });
- }}
- >
- Remove Constraint
-
-
-
-
- );
-}
+import {
+ DatabaseTableColumnConstraint,
+ SqlOrder,
+} from "@gui/drivers/base-driver";
+import { LucideKeyRound } from "lucide-react";
+import { Button } from "../ui/button";
+import ConflictClauseOptions from "./column-conflict-clause";
+import { ColumnChangeEvent } from "./schema-editor-column-list";
+import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "../ui/select";
+
+export default function ColumnPrimaryKeyPopup({
+ constraint,
+ disabled,
+ onChange,
+}: Readonly<{
+ constraint: DatabaseTableColumnConstraint;
+ disabled: boolean;
+ onChange: ColumnChangeEvent;
+}>) {
+ return (
+
+
+
+
+
+
+
+
+
Primary Key
+
+
{
+ onChange({
+ constraint: {
+ primaryKeyConflict: v,
+ },
+ });
+ }}
+ />
+ {
+ onChange({
+ constraint: {
+ primaryKey: undefined,
+ primaryKeyConflict: undefined,
+ primaryKeyOrder: undefined,
+ },
+ });
+ }}
+ >
+ Remove Constraint
+
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/column-unique-popup.tsx b/gui/src/components/schema-editor/column-unique-popup.tsx
similarity index 92%
rename from src/components/schema-editor/column-unique-popup.tsx
rename to gui/src/components/schema-editor/column-unique-popup.tsx
index 9dbea241..9ae8e408 100644
--- a/src/components/schema-editor/column-unique-popup.tsx
+++ b/gui/src/components/schema-editor/column-unique-popup.tsx
@@ -1,58 +1,58 @@
-import { DatabaseTableColumnConstraint } from "@/drivers/base-driver";
-import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
-import { LucideStar } from "lucide-react";
-import { Button } from "../ui/button";
-import ConflictClauseOptions from "./column-conflict-clause";
-import { ColumnChangeEvent } from "./schema-editor-column-list";
-
-export default function ColumnUniquePopup({
- constraint,
- disabled,
- onChange,
-}: Readonly<{
- constraint: DatabaseTableColumnConstraint;
- disabled: boolean;
- onChange: ColumnChangeEvent;
-}>) {
- return (
-
-
-
-
-
-
-
-
-
Unique
-
{
- onChange({
- constraint: {
- uniqueConflict: v,
- },
- });
- }}
- />
- {
- onChange({
- constraint: {
- unique: undefined,
- uniqueConflict: undefined,
- },
- });
- }}
- >
- Remove Constraint
-
-
-
-
- );
-}
+import { DatabaseTableColumnConstraint } from "@gui/drivers/base-driver";
+import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
+import { LucideStar } from "lucide-react";
+import { Button } from "../ui/button";
+import ConflictClauseOptions from "./column-conflict-clause";
+import { ColumnChangeEvent } from "./schema-editor-column-list";
+
+export default function ColumnUniquePopup({
+ constraint,
+ disabled,
+ onChange,
+}: Readonly<{
+ constraint: DatabaseTableColumnConstraint;
+ disabled: boolean;
+ onChange: ColumnChangeEvent;
+}>) {
+ return (
+
+
+
+
+
+
+
+
+
Unique
+
{
+ onChange({
+ constraint: {
+ uniqueConflict: v,
+ },
+ });
+ }}
+ />
+ {
+ onChange({
+ constraint: {
+ unique: undefined,
+ uniqueConflict: undefined,
+ },
+ });
+ }}
+ >
+ Remove Constraint
+
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/index.tsx b/gui/src/components/schema-editor/index.tsx
similarity index 92%
rename from src/components/schema-editor/index.tsx
rename to gui/src/components/schema-editor/index.tsx
index 4788329b..61b2b49b 100644
--- a/src/components/schema-editor/index.tsx
+++ b/gui/src/components/schema-editor/index.tsx
@@ -1,150 +1,150 @@
-import { LucidePlus, LucideShieldPlus } from "lucide-react";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "../ui/dropdown-menu";
-import { Separator } from "../ui/separator";
-import { Dispatch, SetStateAction, useCallback } from "react";
-import { Button } from "../ui/button";
-import SchemaEditorColumnList from "./schema-editor-column-list";
-import { Input } from "../ui/input";
-import { checkSchemaChange } from "@/lib/sql-generate.schema";
-import {
- DatabaseTableColumn,
- DatabaseTableColumnConstraint,
-} from "@/drivers/base-driver";
-import SchemaEditorConstraintList from "./schema-editor-constraint-list";
-
-export interface DatabaseTableColumnChange {
- old: DatabaseTableColumn | null;
- new: DatabaseTableColumn | null;
-}
-
-export interface DatabaseTableConstraintChange {
- old: DatabaseTableColumnConstraint | null;
- new: DatabaseTableColumnConstraint | null;
-}
-
-export interface DatabaseTableSchemaChange {
- name: {
- old?: string;
- new?: string;
- };
- columns: DatabaseTableColumnChange[];
- constraints?: DatabaseTableConstraintChange[];
- createScript?: string;
-}
-
-interface Props {
- onSave: () => void;
- onDiscard: () => void;
- value: DatabaseTableSchemaChange;
- onChange: Dispatch>;
-}
-
-export default function SchemaEditor({
- value,
- onChange,
- onSave,
- onDiscard,
-}: Readonly) {
- const onAddColumn = useCallback(() => {
- const newColumn =
- value.columns.length === 0
- ? {
- name: "id",
- type: "INTEGER",
- constraint: {
- primaryKey: true,
- },
- }
- : {
- name: "column",
- type: "TEXT",
- constraint: {},
- };
-
- onChange({
- ...value,
- columns: [
- ...value.columns,
- {
- old: null,
- new: newColumn,
- },
- ],
- });
- }, [value, onChange]);
-
- const hasChange = checkSchemaChange(value);
-
- return (
-
-
-
-
- Save
-
-
- Discard Change
-
-
-
-
-
-
-
-
- Add Column
-
-
-
-
-
- Add Constraint (coming soon)
-
-
-
- Primary Key
- Unique
- Check Constraint
- Foreign Key
-
-
-
-
-
-
Name
-
{
- onChange({
- ...value,
- name: {
- ...value.name,
- new: e.currentTarget.value,
- },
- });
- }}
- className="w-[200px]"
- />
-
-
-
-
-
- {value.constraints && value.constraints.length > 0 && (
-
- )}
-
-
- );
-}
+import { LucidePlus, LucideShieldPlus } from "lucide-react";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "../ui/dropdown-menu";
+import { Separator } from "../ui/separator";
+import { Dispatch, SetStateAction, useCallback } from "react";
+import { Button } from "../ui/button";
+import SchemaEditorColumnList from "./schema-editor-column-list";
+import { Input } from "../ui/input";
+import { checkSchemaChange } from "@gui/lib/sql-generate.schema";
+import {
+ DatabaseTableColumn,
+ DatabaseTableColumnConstraint,
+} from "@gui/drivers/base-driver";
+import SchemaEditorConstraintList from "./schema-editor-constraint-list";
+
+export interface DatabaseTableColumnChange {
+ old: DatabaseTableColumn | null;
+ new: DatabaseTableColumn | null;
+}
+
+export interface DatabaseTableConstraintChange {
+ old: DatabaseTableColumnConstraint | null;
+ new: DatabaseTableColumnConstraint | null;
+}
+
+export interface DatabaseTableSchemaChange {
+ name: {
+ old?: string;
+ new?: string;
+ };
+ columns: DatabaseTableColumnChange[];
+ constraints?: DatabaseTableConstraintChange[];
+ createScript?: string;
+}
+
+interface Props {
+ onSave: () => void;
+ onDiscard: () => void;
+ value: DatabaseTableSchemaChange;
+ onChange: Dispatch>;
+}
+
+export default function SchemaEditor({
+ value,
+ onChange,
+ onSave,
+ onDiscard,
+}: Readonly) {
+ const onAddColumn = useCallback(() => {
+ const newColumn =
+ value.columns.length === 0
+ ? {
+ name: "id",
+ type: "INTEGER",
+ constraint: {
+ primaryKey: true,
+ },
+ }
+ : {
+ name: "column",
+ type: "TEXT",
+ constraint: {},
+ };
+
+ onChange({
+ ...value,
+ columns: [
+ ...value.columns,
+ {
+ old: null,
+ new: newColumn,
+ },
+ ],
+ });
+ }, [value, onChange]);
+
+ const hasChange = checkSchemaChange(value);
+
+ return (
+
+
+
+
+ Save
+
+
+ Discard Change
+
+
+
+
+
+
+
+
+ Add Column
+
+
+
+
+
+ Add Constraint (coming soon)
+
+
+
+ Primary Key
+ Unique
+ Check Constraint
+ Foreign Key
+
+
+
+
+
+
Name
+
{
+ onChange({
+ ...value,
+ name: {
+ ...value.name,
+ new: e.currentTarget.value,
+ },
+ });
+ }}
+ className="w-[200px]"
+ />
+
+
+
+
+
+ {value.constraints && value.constraints.length > 0 && (
+
+ )}
+
+
+ );
+}
diff --git a/src/components/schema-editor/schema-editor-column-list.tsx b/gui/src/components/schema-editor/schema-editor-column-list.tsx
similarity index 91%
rename from src/components/schema-editor/schema-editor-column-list.tsx
rename to gui/src/components/schema-editor/schema-editor-column-list.tsx
index 9a5611bd..46a8361f 100644
--- a/src/components/schema-editor/schema-editor-column-list.tsx
+++ b/gui/src/components/schema-editor/schema-editor-column-list.tsx
@@ -1,321 +1,323 @@
-import { DatabaseTableColumnChange, DatabaseTableSchemaChange } from ".";
-import { Dispatch, SetStateAction, useCallback } from "react";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuLabel,
- DropdownMenuSeparator,
- DropdownMenuTrigger,
-} from "../ui/dropdown-menu";
-import { LucidePlus, LucideTrash2 } from "lucide-react";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-import { convertSqliteType } from "@/lib/sql-helper";
-import { Checkbox } from "@/components/ui/checkbox";
-import ColumnDefaultValueInput from "./column-default-value-input";
-import { checkSchemaColumnChange } from "@/lib/sql-generate.schema";
-import {
- DatabaseTableColumn,
- DatabaseTableColumnConstraint,
- TableColumnDataType,
-} from "@/drivers/base-driver";
-import { cn } from "@/lib/utils";
-import ColumnPrimaryKeyPopup from "./column-pk-popup";
-import ColumnUniquePopup from "./column-unique-popup";
-import ColumnForeignKeyPopup from "./column-fk-popup";
-import ColumnGeneratingPopup from "./column-generate-popup";
-import ColumnCheckPopup from "./column-check-popup";
-
-export type ColumnChangeEvent = (
- newValue: Partial | null
-) => void;
-
-function changeColumnOnIndex(
- idx: number,
- value: Partial | null,
- onChange: Dispatch>
-) {
- onChange((prev) => {
- if (prev) {
- const columns = [...(prev?.columns ?? [])];
- if (columns[idx]?.new) {
- columns[idx].new =
- value === null
- ? null
- : {
- ...(columns[idx].new as DatabaseTableColumn),
- ...value,
- constraint: value?.constraint
- ? {
- ...columns[idx].new?.constraint,
- ...value?.constraint,
- }
- : columns[idx].new?.constraint,
- };
-
- if (!columns[idx].new && !columns[idx].old) {
- // remove the column
- return {
- ...prev,
- columns: columns.filter((_, colIdx) => colIdx !== idx),
- };
- }
-
- return {
- ...prev,
- columns,
- };
- }
- }
- return prev;
- });
-}
-
-function ColumnItem({
- value,
- idx,
- onChange,
-}: {
- value: DatabaseTableColumnChange;
- idx: number;
- onChange: Dispatch>;
-}) {
- const disabled = !!value.old;
-
- const change = useCallback(
- (newValue: Partial | null) => {
- changeColumnOnIndex(idx, newValue, onChange);
- },
- [idx, onChange]
- );
-
- const column = value.new || value.old;
- if (!column) return null;
-
- const normalizeType = convertSqliteType(column.type);
- let type = "TEXT";
-
- if (normalizeType === TableColumnDataType.INTEGER) type = "INTEGER";
- if (normalizeType === TableColumnDataType.REAL) type = "REAL";
- if (normalizeType === TableColumnDataType.BLOB) type = "BLOB";
-
- let highlightClassName = "";
- if (value.new === null) {
- highlightClassName = "bg-red-400 dark:bg-red-800";
- } else if (value.old === null) {
- highlightClassName = "bg-green-500 dark:bg-green-800";
- } else if (checkSchemaColumnChange(value)) {
- highlightClassName = "bg-yellow-400";
- }
-
- return (
-
- |
-
- change({ name: e.currentTarget.value })}
- className="p-2 text-sm outline-none bg-background w-[150px]"
- spellCheck={false}
- />
- |
-
-
- |
-
-
- change({ constraint })
- }
- constraint={column.constraint}
- disabled={disabled}
- />
- |
-
-
- change({ constraint: { notNull: !nullable } })
- }
- />
- |
-
-
- {column.constraint?.primaryKey && (
-
- )}
-
- {column.constraint?.unique && (
-
- )}
-
- {column.constraint?.checkExpression !== undefined && (
-
- )}
-
- {column.constraint?.generatedExpression !== undefined && (
-
- )}
-
- {column.constraint?.foreignKey && (
-
- )}
-
-
-
-
-
-
-
-
- Constraint
-
- {
- change({ constraint: { primaryKey: true } });
- }}
- >
- Primary Key
-
- {
- change({ constraint: { unique: true } });
- }}
- >
- Unique
-
- {
- change({
- constraint: {
- checkExpression: "",
- },
- });
- }}
- >
- Check Constraint
-
- {
- change({
- constraint: {
- foreignKey: {},
- },
- });
- }}
- >
- Foreign Key
-
- {
- change({
- constraint: {
- generatedType: "VIRTUAL",
- generatedExpression: "",
- },
- });
- }}
- >
- Virtuality
-
-
-
-
- |
-
- {
- change(null);
- }}
- >
-
-
- |
-
- );
-}
-
-export default function SchemaEditorColumnList({
- columns,
- onChange,
-}: Readonly<{
- columns: DatabaseTableColumnChange[];
- onChange: Dispatch>;
-}>) {
- const headerStyle = "text-xs p-2 text-left bg-secondary border";
-
- return (
-
-
-
-
- |
- Name |
- Type |
- Default |
- Null |
- Constraint |
- |
-
-
-
- {columns.map((col, idx) => (
-
- ))}
-
-
-
- );
-}
+import { DatabaseTableColumnChange, DatabaseTableSchemaChange } from ".";
+import { Dispatch, SetStateAction, useCallback } from "react";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuTrigger,
+} from "../ui/dropdown-menu";
+import { LucidePlus, LucideTrash2 } from "lucide-react";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "../ui/select";
+import { convertSqliteType } from "@gui/sqlite/sql-helper";
+import { Checkbox } from "@gui/components/ui/checkbox";
+import ColumnDefaultValueInput from "./column-default-value-input";
+import { checkSchemaColumnChange } from "@gui/lib/sql-generate.schema";
+import {
+ DatabaseTableColumn,
+ DatabaseTableColumnConstraint,
+ TableColumnDataType,
+} from "@gui/drivers/base-driver";
+import { cn } from "@gui/lib/utils";
+import ColumnPrimaryKeyPopup from "./column-pk-popup";
+import ColumnUniquePopup from "./column-unique-popup";
+import ColumnForeignKeyPopup from "./column-fk-popup";
+import ColumnGeneratingPopup from "./column-generate-popup";
+import ColumnCheckPopup from "./column-check-popup";
+
+export type ColumnChangeEvent = (
+ newValue: Partial | null
+) => void;
+
+function changeColumnOnIndex(
+ idx: number,
+ value: Partial | null,
+ onChange: Dispatch>
+) {
+ onChange((prev) => {
+ if (prev) {
+ const columns = [...(prev?.columns ?? [])];
+ const currentCell = columns[idx] as DatabaseTableColumnChange;
+
+ if (currentCell.new) {
+ currentCell.new =
+ value === null
+ ? null
+ : {
+ ...currentCell.new,
+ ...value,
+ constraint: value?.constraint
+ ? {
+ ...currentCell.new?.constraint,
+ ...value?.constraint,
+ }
+ : currentCell.new?.constraint,
+ };
+
+ if (!currentCell.new && !currentCell.old) {
+ // remove the column
+ return {
+ ...prev,
+ columns: columns.filter((_, colIdx) => colIdx !== idx),
+ };
+ }
+
+ return {
+ ...prev,
+ columns,
+ };
+ }
+ }
+ return prev;
+ });
+}
+
+function ColumnItem({
+ value,
+ idx,
+ onChange,
+}: {
+ value: DatabaseTableColumnChange;
+ idx: number;
+ onChange: Dispatch>;
+}) {
+ const disabled = !!value.old;
+
+ const change = useCallback(
+ (newValue: Partial | null) => {
+ changeColumnOnIndex(idx, newValue, onChange);
+ },
+ [idx, onChange]
+ );
+
+ const column = value.new || value.old;
+ if (!column) return null;
+
+ const normalizeType = convertSqliteType(column.type);
+ let type = "TEXT";
+
+ if (normalizeType === TableColumnDataType.INTEGER) type = "INTEGER";
+ if (normalizeType === TableColumnDataType.REAL) type = "REAL";
+ if (normalizeType === TableColumnDataType.BLOB) type = "BLOB";
+
+ let highlightClassName = "";
+ if (value.new === null) {
+ highlightClassName = "bg-red-400 dark:bg-red-800";
+ } else if (value.old === null) {
+ highlightClassName = "bg-green-500 dark:bg-green-800";
+ } else if (checkSchemaColumnChange(value)) {
+ highlightClassName = "bg-yellow-400";
+ }
+
+ return (
+
+ |
+
+ change({ name: e.currentTarget.value })}
+ className="p-2 text-sm outline-none bg-background w-[150px]"
+ spellCheck={false}
+ />
+ |
+
+
+ |
+
+
+ change({ constraint })
+ }
+ constraint={column.constraint}
+ disabled={disabled}
+ />
+ |
+
+
+ change({ constraint: { notNull: !nullable } })
+ }
+ />
+ |
+
+
+ {column.constraint?.primaryKey && (
+
+ )}
+
+ {column.constraint?.unique && (
+
+ )}
+
+ {column.constraint?.checkExpression !== undefined && (
+
+ )}
+
+ {column.constraint?.generatedExpression !== undefined && (
+
+ )}
+
+ {column.constraint?.foreignKey && (
+
+ )}
+
+
+
+
+
+
+
+
+ Constraint
+
+ {
+ change({ constraint: { primaryKey: true } });
+ }}
+ >
+ Primary Key
+
+ {
+ change({ constraint: { unique: true } });
+ }}
+ >
+ Unique
+
+ {
+ change({
+ constraint: {
+ checkExpression: "",
+ },
+ });
+ }}
+ >
+ Check Constraint
+
+ {
+ change({
+ constraint: {
+ foreignKey: {},
+ },
+ });
+ }}
+ >
+ Foreign Key
+
+ {
+ change({
+ constraint: {
+ generatedType: "VIRTUAL",
+ generatedExpression: "",
+ },
+ });
+ }}
+ >
+ Virtuality
+
+
+
+
+ |
+
+ {
+ change(null);
+ }}
+ >
+
+
+ |
+
+ );
+}
+
+export default function SchemaEditorColumnList({
+ columns,
+ onChange,
+}: Readonly<{
+ columns: DatabaseTableColumnChange[];
+ onChange: Dispatch>;
+}>) {
+ const headerStyle = "text-xs p-2 text-left bg-secondary border";
+
+ return (
+
+
+
+
+ |
+ Name |
+ Type |
+ Default |
+ Null |
+ Constraint |
+ |
+
+
+
+ {columns.map((col, idx) => (
+
+ ))}
+
+
+
+ );
+}
diff --git a/src/components/schema-editor/schema-editor-constraint-list.tsx b/gui/src/components/schema-editor/schema-editor-constraint-list.tsx
similarity index 93%
rename from src/components/schema-editor/schema-editor-constraint-list.tsx
rename to gui/src/components/schema-editor/schema-editor-constraint-list.tsx
index ea2a4f38..1832462c 100644
--- a/src/components/schema-editor/schema-editor-constraint-list.tsx
+++ b/gui/src/components/schema-editor/schema-editor-constraint-list.tsx
@@ -1,178 +1,178 @@
-import { DatabaseTableColumnConstraint } from "@/drivers/base-driver";
-import { cn } from "@/lib/utils";
-import {
- LucideArrowUpRight,
- LucideCheck,
- LucideFingerprint,
- LucideKeySquare,
- LucideMoveHorizontal,
-} from "lucide-react";
-import { DatabaseTableConstraintChange } from ".";
-import TableCombobox from "../table-combobox/TableCombobox";
-
-function ColumnCheck({
- constraint,
-}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
- return (
-
-
- Check
- |
-
-
- |
-
- );
-}
-
-function ColumnForeignKey({
- constraint,
-}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
- return (
-
-
-
- Foreign Key
- |
-
- {}}
- value={constraint.foreignKey?.foreignTableName}
- />
- |
-
-
- {(constraint.foreignKey?.foreignColumns ?? []).map(
- (columnName, idx) => {
- const thisColumnName = (constraint.foreignKey?.columns ?? [])[
- idx
- ];
-
- return (
-
- {thisColumnName}{" "}
-
- {columnName}
-
- );
- }
- )}
-
- |
-
- );
-}
-
-function ColumnPrimaryKey({
- constraint,
-}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
- return (
-
-
-
- Primary Key
- |
-
-
- {(constraint.primaryColumns ?? []).map((columnName, idx) => {
- return (
-
- {columnName}
-
- );
- })}
-
- |
-
- );
-}
-
-function ColumnUnique({
- constraint,
-}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
- return (
-
-
-
- Unique
- |
-
-
- {(constraint.uniqueColumns ?? []).map((columnName, idx) => {
- return (
-
- {columnName}
-
- );
- })}
-
- |
-
- );
-}
-
-function ColumnItem({
- constraint,
-}: Readonly<{ constraint: DatabaseTableConstraintChange }>) {
- const currentConstraint = constraint.new ?? constraint.old;
-
- if (!currentConstraint) return null;
-
- if (currentConstraint.foreignKey) {
- return ;
- }
-
- if (currentConstraint.primaryKey) {
- return ;
- }
-
- if (currentConstraint.unique) {
- return ;
- }
-
- if (currentConstraint.checkExpression !== undefined) {
- return ;
- }
-
- return (
-
- |
- |
- |
-
- );
-}
-
-export default function SchemaEditorConstraintList({
- constraints,
-}: Readonly<{ constraints: DatabaseTableConstraintChange[] }>) {
- const headerClassName = "text-xs p-2 text-left bg-secondary border";
-
- return (
-
-
-
-
- Constraint |
- |
- |
-
-
-
- {constraints.map((constraint, idx) => {
- return ;
- })}
-
-
-
- );
-}
+import { DatabaseTableColumnConstraint } from "@gui/drivers/base-driver";
+import { cn, noop } from "@gui/lib/utils";
+import {
+ LucideArrowUpRight,
+ LucideCheck,
+ LucideFingerprint,
+ LucideKeySquare,
+ LucideMoveHorizontal,
+} from "lucide-react";
+import { DatabaseTableConstraintChange } from ".";
+import TableCombobox from "../table-combobox/TableCombobox";
+
+function ColumnCheck({
+ constraint,
+}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
+ return (
+
+
+ Check
+ |
+
+
+ |
+
+ );
+}
+
+function ColumnForeignKey({
+ constraint,
+}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
+ return (
+
+
+
+ Foreign Key
+ |
+
+
+ |
+
+
+ {(constraint.foreignKey?.foreignColumns ?? []).map(
+ (columnName, idx) => {
+ const thisColumnName = (constraint.foreignKey?.columns ?? [])[
+ idx
+ ];
+
+ return (
+
+ {thisColumnName}{" "}
+
+ {columnName}
+
+ );
+ }
+ )}
+
+ |
+
+ );
+}
+
+function ColumnPrimaryKey({
+ constraint,
+}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
+ return (
+
+
+
+ Primary Key
+ |
+
+
+ {(constraint.primaryColumns ?? []).map((columnName, idx) => {
+ return (
+
+ {columnName}
+
+ );
+ })}
+
+ |
+
+ );
+}
+
+function ColumnUnique({
+ constraint,
+}: Readonly<{ constraint: DatabaseTableColumnConstraint }>) {
+ return (
+
+
+
+ Unique
+ |
+
+
+ {(constraint.uniqueColumns ?? []).map((columnName, idx) => {
+ return (
+
+ {columnName}
+
+ );
+ })}
+
+ |
+
+ );
+}
+
+function ColumnItem({
+ constraint,
+}: Readonly<{ constraint: DatabaseTableConstraintChange }>) {
+ const currentConstraint = constraint.new ?? constraint.old;
+
+ if (!currentConstraint) return null;
+
+ if (currentConstraint.foreignKey) {
+ return ;
+ }
+
+ if (currentConstraint.primaryKey) {
+ return ;
+ }
+
+ if (currentConstraint.unique) {
+ return ;
+ }
+
+ if (currentConstraint.checkExpression !== undefined) {
+ return ;
+ }
+
+ return (
+
+ |
+ |
+ |
+
+ );
+}
+
+export default function SchemaEditorConstraintList({
+ constraints,
+}: Readonly<{ constraints: DatabaseTableConstraintChange[] }>) {
+ const headerClassName = "text-xs p-2 text-left bg-secondary border";
+
+ return (
+
+
+
+
+ Constraint |
+ |
+ |
+
+
+
+ {constraints.map((constraint, idx) => {
+ return ;
+ })}
+
+
+
+ );
+}
diff --git a/src/components/schema-sidebar-list.tsx b/gui/src/components/schema-sidebar-list.tsx
similarity index 91%
rename from src/components/schema-sidebar-list.tsx
rename to gui/src/components/schema-sidebar-list.tsx
index 426706cf..8bca73d3 100644
--- a/src/components/schema-sidebar-list.tsx
+++ b/gui/src/components/schema-sidebar-list.tsx
@@ -1,229 +1,229 @@
-import { ScrollArea } from "./ui/scroll-area";
-import { buttonVariants } from "./ui/button";
-import { cn } from "@/lib/utils";
-import { LucideCog, LucideIcon, LucideView, Table2 } from "lucide-react";
-import {
- OpenContextMenuList,
- openContextMenuFromEvent,
-} from "@/messages/openContextMenu";
-import { useSchema } from "@/context/SchemaProvider";
-import { useCallback, useEffect, useMemo, useState } from "react";
-import { openTab } from "@/messages/open-tab";
-import { DatabaseSchemaItem } from "@/drivers/base-driver";
-
-interface SchemaListProps {
- search: string;
-}
-
-type DatabaseSchemaTreeNode = {
- node: DatabaseSchemaItem;
- sub: DatabaseSchemaItem[];
-};
-
-interface SchemaViewItemProps {
- item: DatabaseSchemaItem;
- highlight?: string;
- icon: LucideIcon;
- iconClassName?: string;
- title: string;
- selected: boolean;
- onClick: () => void;
- onContextMenu: React.MouseEventHandler;
- indentation?: boolean;
-}
-
-function SchemaViewItem({
- icon: Icon,
- iconClassName,
- title,
- onClick,
- highlight,
- selected,
- onContextMenu,
- indentation,
- item,
-}: Readonly) {
- const regex = new RegExp(
- "(" + (highlight ?? "").replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ")",
- "i"
- );
-
- const splitedText = title.split(regex);
-
- return (
- {
- onContextMenu(e);
- onClick();
- }}
- onDoubleClick={() => {
- if (item.type === "table" || item.type === "view") {
- openTab({
- type: "table",
- tableName: title,
- });
- } else if (item.type === "trigger") {
- openTab({
- type: "trigger",
- name: item.name,
- });
- }
- }}
- className={cn(
- buttonVariants({
- variant: selected ? "default" : "ghost",
- size: "sm",
- }),
- "justify-start",
- "cursor-pointer"
- )}
- >
- {indentation && (
-
- )}
-
-
- {splitedText.map((text, idx) => {
- return text.toLowerCase() === (highlight ?? "").toLowerCase() ? (
-
- {text}
-
- ) : (
- {text}
- );
- })}
-
-
- );
-}
-
-export default function SchemaList({ search }: Readonly) {
- const [selectedIndex, setSelectedIndex] = useState(-1);
- const { refresh, schema } = useSchema();
-
- useEffect(() => {
- setSelectedIndex(-1);
- }, [setSelectedIndex, search]);
-
- const prepareContextMenu = useCallback(
- (item?: DatabaseSchemaItem) => {
- const selectedName = item?.name;
- const isTable = item?.type === "table";
-
- return [
- {
- title: "Copy Name",
- disabled: !selectedName,
- onClick: () => {
- window.navigator.clipboard.writeText(selectedName ?? "");
- },
- },
- { separator: true },
- {
- title: "Create New Table",
- onClick: () => {
- openTab({
- type: "schema",
- });
- },
- },
- isTable
- ? {
- title: "Edit Table",
- onClick: () => {
- openTab({
- tableName: item?.name,
- type: "schema",
- });
- },
- }
- : undefined,
- { separator: true },
- { title: "Refresh", onClick: () => refresh() },
- ].filter(Boolean) as OpenContextMenuList;
- },
- [refresh]
- );
-
- const filteredSchema = useMemo(() => {
- // Build the tree first then we can flat it
- let tree: DatabaseSchemaTreeNode[] = [];
- const treeHash: Record = {};
-
- for (const item of schema) {
- if (item.type === "table" || item.type === "view") {
- const node = { node: item, sub: [] };
- treeHash[item.name] = node;
- tree.push(node);
- }
- }
-
- for (const item of schema) {
- if (item.type === "trigger" && item.tableName) {
- if (treeHash[item.tableName]) {
- treeHash[item.tableName].sub.push(item);
- }
- }
- }
-
- tree = tree.filter((s) => {
- const foundName =
- s.node.name.toLowerCase().indexOf(search.toLowerCase()) >= 0;
- const foundInChildren =
- s.sub.filter(
- (c) => c.name.toLowerCase().indexOf(search.toLowerCase()) >= 0
- ).length > 0;
- return foundName || foundInChildren;
- });
-
- return tree.map((r) => [r.node, ...r.sub]).flat();
- }, [schema, search]);
-
- return (
-
- openContextMenuFromEvent(
- prepareContextMenu(
- selectedIndex && schema[selectedIndex]
- ? schema[selectedIndex]
- : undefined
- )
- )(e)
- }
- >
-
- {filteredSchema.map((item, schemaIndex) => {
- let icon = Table2;
- let iconClassName = "text-blue-600 dark:text-blue-300";
- if (item.type === "trigger") {
- icon = LucideCog;
- iconClassName = "text-purple-500";
- } else if (item.type === "view") {
- icon = LucideView;
- iconClassName = "text-green-600 dark:text-green-300";
- }
-
- return (
- {
- openContextMenuFromEvent(prepareContextMenu(item))(e);
- e.stopPropagation();
- }}
- key={item.name}
- title={item.name}
- iconClassName={iconClassName}
- icon={icon}
- indentation={item.type === "trigger"}
- selected={schemaIndex === selectedIndex}
- onClick={() => setSelectedIndex(schemaIndex)}
- />
- );
- })}
-
-
- );
-}
+import { ScrollArea } from "./ui/scroll-area";
+import { buttonVariants } from "./ui/button";
+import { cn } from "@gui/lib/utils";
+import { LucideCog, LucideIcon, LucideView, Table2 } from "lucide-react";
+import {
+ OpenContextMenuList,
+ openContextMenuFromEvent,
+} from "@gui/messages/open-context-menu";
+import { useCallback, useEffect, useMemo, useState } from "react";
+import { openTab } from "@gui/messages/open-tab";
+import { DatabaseSchemaItem } from "@gui/drivers/base-driver";
+import { useSchema } from "@gui/contexts/schema-provider";
+
+interface SchemaListProps {
+ search: string;
+}
+
+type DatabaseSchemaTreeNode = {
+ node: DatabaseSchemaItem;
+ sub: DatabaseSchemaItem[];
+};
+
+interface SchemaViewItemProps {
+ item: DatabaseSchemaItem;
+ highlight?: string;
+ icon: LucideIcon;
+ iconClassName?: string;
+ title: string;
+ selected: boolean;
+ onClick: () => void;
+ onContextMenu: React.MouseEventHandler;
+ indentation?: boolean;
+}
+
+function SchemaViewItem({
+ icon: Icon,
+ iconClassName,
+ title,
+ onClick,
+ highlight,
+ selected,
+ onContextMenu,
+ indentation,
+ item,
+}: Readonly) {
+ const regex = new RegExp(
+ "(" + (highlight ?? "").replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ")",
+ "i"
+ );
+
+ const splitedText = title.split(regex);
+
+ return (
+ {
+ onContextMenu(e);
+ onClick();
+ }}
+ onDoubleClick={() => {
+ if (item.type === "table" || item.type === "view") {
+ openTab({
+ type: "table",
+ tableName: title,
+ });
+ } else if (item.type === "trigger") {
+ openTab({
+ type: "trigger",
+ name: item.name,
+ });
+ }
+ }}
+ className={cn(
+ buttonVariants({
+ variant: selected ? "default" : "ghost",
+ size: "sm",
+ }),
+ "justify-start",
+ "cursor-pointer"
+ )}
+ >
+ {indentation && (
+
+ )}
+
+
+ {splitedText.map((text, idx) => {
+ return text.toLowerCase() === (highlight ?? "").toLowerCase() ? (
+
+ {text}
+
+ ) : (
+ {text}
+ );
+ })}
+
+
+ );
+}
+
+export default function SchemaList({ search }: Readonly) {
+ const [selectedIndex, setSelectedIndex] = useState(-1);
+ const { refresh, schema } = useSchema();
+
+ useEffect(() => {
+ setSelectedIndex(-1);
+ }, [setSelectedIndex, search]);
+
+ const prepareContextMenu = useCallback(
+ (item?: DatabaseSchemaItem) => {
+ const selectedName = item?.name;
+ const isTable = item?.type === "table";
+
+ return [
+ {
+ title: "Copy Name",
+ disabled: !selectedName,
+ onClick: () => {
+ window.navigator.clipboard.writeText(selectedName ?? "");
+ },
+ },
+ { separator: true },
+ {
+ title: "Create New Table",
+ onClick: () => {
+ openTab({
+ type: "schema",
+ });
+ },
+ },
+ isTable
+ ? {
+ title: "Edit Table",
+ onClick: () => {
+ openTab({
+ tableName: item?.name,
+ type: "schema",
+ });
+ },
+ }
+ : undefined,
+ { separator: true },
+ { title: "Refresh", onClick: () => refresh() },
+ ].filter(Boolean) as OpenContextMenuList;
+ },
+ [refresh]
+ );
+
+ const filteredSchema = useMemo(() => {
+ // Build the tree first then we can flat it
+ let tree: DatabaseSchemaTreeNode[] = [];
+ const treeHash: Record = {};
+
+ for (const item of schema) {
+ if (item.type === "table" || item.type === "view") {
+ const node = { node: item, sub: [] };
+ treeHash[item.name] = node;
+ tree.push(node);
+ }
+ }
+
+ for (const item of schema) {
+ if (item.type === "trigger" && item.tableName) {
+ if (treeHash[item.tableName]) {
+ treeHash[item.tableName]?.sub.push(item);
+ }
+ }
+ }
+
+ tree = tree.filter((s) => {
+ const foundName =
+ s.node.name.toLowerCase().indexOf(search.toLowerCase()) >= 0;
+ const foundInChildren =
+ s.sub.filter(
+ (c) => c.name.toLowerCase().indexOf(search.toLowerCase()) >= 0
+ ).length > 0;
+ return foundName || foundInChildren;
+ });
+
+ return tree.map((r) => [r.node, ...r.sub]).flat();
+ }, [schema, search]);
+
+ return (
+
+ openContextMenuFromEvent(
+ prepareContextMenu(
+ selectedIndex && schema[selectedIndex]
+ ? schema[selectedIndex]
+ : undefined
+ )
+ )(e)
+ }
+ >
+
+ {filteredSchema.map((item, schemaIndex) => {
+ let icon = Table2;
+ let iconClassName = "text-blue-600 dark:text-blue-300";
+ if (item.type === "trigger") {
+ icon = LucideCog;
+ iconClassName = "text-purple-500";
+ } else if (item.type === "view") {
+ icon = LucideView;
+ iconClassName = "text-green-600 dark:text-green-300";
+ }
+
+ return (
+ {
+ openContextMenuFromEvent(prepareContextMenu(item))(e);
+ e.stopPropagation();
+ }}
+ key={item.name}
+ title={item.name}
+ iconClassName={iconClassName}
+ icon={icon}
+ indentation={item.type === "trigger"}
+ selected={schemaIndex === selectedIndex}
+ onClick={() => setSelectedIndex(schemaIndex)}
+ />
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/schema-sidebar.tsx b/gui/src/components/schema-sidebar.tsx
similarity index 85%
rename from src/components/schema-sidebar.tsx
rename to gui/src/components/schema-sidebar.tsx
index b13b9711..b31c1317 100644
--- a/src/components/schema-sidebar.tsx
+++ b/gui/src/components/schema-sidebar.tsx
@@ -1,77 +1,78 @@
-import { LucidePlus, LucideSearch } from "lucide-react";
-import { useCallback, useState } from "react";
-import SchemaList from "./schema-sidebar-list";
-import ListButtonItem from "./list-button-item";
-import { Separator } from "./ui/separator";
-import Link from "next/link";
-import { openTab } from "@/messages/open-tab";
-
-export default function SchemaView() {
- const [search, setSearch] = useState("");
-
- const onNewTable = useCallback(() => {
- openTab({
- type: "schema",
- });
- }, []);
-
- return (
-
-
-
-
-
-
-
{
- setSearch(e.currentTarget.value);
- }}
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
LibStudio Studio is open-source GUI for serverless
- database. We are new and need your feedback
-
- -
-
- Request New Features
-
-
- -
-
- Report Bugs
-
-
-
-
-
-
- );
-}
+import { LucidePlus, LucideSearch } from "lucide-react";
+import { useCallback, useState } from "react";
+import SchemaList from "./schema-sidebar-list";
+import ListButtonItem from "./list-button-item";
+import { Separator } from "./ui/separator";
+import { openTab } from "@gui/messages/open-tab";
+
+export default function SchemaView() {
+ const [search, setSearch] = useState("");
+
+ const onNewTable = useCallback(() => {
+ openTab({
+ type: "schema",
+ });
+ }, []);
+
+ return (
+
+
+
+
+
+
+
{
+ setSearch(e.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
LibStudio Studio is open-source GUI for serverless
+ database. We are new and need your feedback
+
+
+
+
+ );
+}
diff --git a/src/components/sidebar-tab.tsx b/gui/src/components/sidebar-tab.tsx
similarity index 80%
rename from src/components/sidebar-tab.tsx
rename to gui/src/components/sidebar-tab.tsx
index be9fd401..0f7e6a2b 100644
--- a/src/components/sidebar-tab.tsx
+++ b/gui/src/components/sidebar-tab.tsx
@@ -1,123 +1,121 @@
-import { useConnectionConfig } from "@/context/connection-config-provider";
-import { useTheme } from "@/context/theme-provider";
-import { cn } from "@/lib/utils";
-import {
- LucideArrowLeft,
- LucideIcon,
- LucideMoon,
- LucideSun,
-} from "lucide-react";
-import Link from "next/link";
-import { ReactElement, useState } from "react";
-
-export interface SidebarTabItem {
- key: string;
- icon: LucideIcon;
- name: string;
- content: ReactElement;
-}
-
-interface SidebarTabProps {
- tabs: SidebarTabItem[];
-}
-
-export default function SidebarTab({ tabs }: Readonly) {
- const [selectedIndex, setSelectedIndex] = useState(0);
- const { theme, toggleTheme } = useTheme();
- const [loadedIndex, setLoadedIndex] = useState(() => {
- const a = new Array(tabs.length).fill(false);
- a[0] = true;
- return a;
- });
-
- const { config } = useConnectionConfig();
- const color = config.label;
-
- let bgColor = "bg-blue-500 dark:bg-blue-700";
- let textColor = "text-white";
-
- if (color === "red") {
- bgColor = "bg-red-500 dark:bg-red-700";
- } else if (color === "yellow") {
- bgColor = "bg-yellow-400 dark:bg-yellow-500";
- textColor = "text-black";
- } else if (color === "green") {
- bgColor = "bg-green-500 dark:bg-green-600";
- } else if (color === "gray") {
- bgColor = "bg-gray-500 dark:bg-gray-800";
- }
-
- return (
-
-
- {tabs.map(({ key, name, icon: Icon }, idx) => {
- return (
-
{
- if (!loadedIndex[idx]) {
- loadedIndex[idx] = true;
- setLoadedIndex([...loadedIndex]);
- }
-
- if (idx !== selectedIndex) {
- setSelectedIndex(idx);
- }
- }}
- className={
- idx === selectedIndex
- ? "p-2 bg-background cursor-pointer"
- : cn("p-2 cursor cursor-pointer", textColor)
- }
- >
-
-
- );
- })}
-
-
-
-
-
-
-
-
-
-
toggleTheme()}
- >
- {theme === "dark" ? (
-
- ) : (
-
- )}
-
-
-
- {tabs.map((tab, tabIndex) => {
- const selected = selectedIndex === tabIndex;
-
- return (
-
- {loadedIndex[tabIndex] && tab.content}
-
- );
- })}
-
-
- );
-}
+import { useConfig } from "@gui/contexts/config-provider";
+import { useTheme } from "@gui/contexts/theme-provider";
+import { cn } from "@gui/lib/utils";
+import {
+ LucideArrowLeft,
+ LucideIcon,
+ LucideMoon,
+ LucideSun,
+} from "lucide-react";
+import { ReactElement, useState } from "react";
+
+export interface SidebarTabItem {
+ key: string;
+ icon: LucideIcon;
+ name: string;
+ content: ReactElement;
+}
+
+interface SidebarTabProps {
+ tabs: SidebarTabItem[];
+}
+
+export default function SidebarTab({ tabs }: Readonly) {
+ const { onBack } = useConfig();
+ const [selectedIndex, setSelectedIndex] = useState(0);
+ const { theme, toggleTheme } = useTheme();
+ const [loadedIndex, setLoadedIndex] = useState(() => {
+ const a: boolean[] = new Array(tabs.length).fill(false);
+ a[0] = true;
+ return a;
+ });
+
+ const config = useConfig();
+ const color = config.color;
+
+ let bgColor = "bg-blue-500 dark:bg-blue-700";
+ let textColor = "text-white";
+
+ if (color === "red") {
+ bgColor = "bg-red-500 dark:bg-red-700";
+ } else if (color === "yellow") {
+ bgColor = "bg-yellow-400 dark:bg-yellow-500";
+ textColor = "text-black";
+ } else if (color === "green") {
+ bgColor = "bg-green-500 dark:bg-green-600";
+ } else if (color === "gray") {
+ bgColor = "bg-gray-500 dark:bg-gray-800";
+ }
+
+ return (
+
+
+ {tabs.map(({ key, name, icon: Icon }, idx) => {
+ return (
+
{
+ if (!loadedIndex[idx]) {
+ loadedIndex[idx] = true;
+ setLoadedIndex([...loadedIndex]);
+ }
+
+ if (idx !== selectedIndex) {
+ setSelectedIndex(idx);
+ }
+ }}
+ className={
+ idx === selectedIndex
+ ? "p-2 bg-background cursor-pointer"
+ : cn("p-2 cursor cursor-pointer", textColor)
+ }
+ >
+
+
+ );
+ })}
+
+
+
+
+
+
+
+
toggleTheme()}
+ >
+ {theme === "dark" ? (
+
+ ) : (
+
+ )}
+
+
+
+ {tabs.map((tab, tabIndex) => {
+ const selected = selectedIndex === tabIndex;
+
+ return (
+
+ {loadedIndex[tabIndex] && tab.content}
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/sidebar/setting-sidebar.tsx b/gui/src/components/sidebar/setting-sidebar.tsx
similarity index 88%
rename from src/components/sidebar/setting-sidebar.tsx
rename to gui/src/components/sidebar/setting-sidebar.tsx
index 11c8bd54..f333e565 100644
--- a/src/components/sidebar/setting-sidebar.tsx
+++ b/gui/src/components/sidebar/setting-sidebar.tsx
@@ -1,7 +1,7 @@
"use client";
import { LucideUser } from "lucide-react";
import ListButtonItem from "../list-button-item";
-import { openTab } from "@/messages/open-tab";
+import { openTab } from "@gui/messages/open-tab";
export default function SettingSidebar() {
return (
diff --git a/src/components/sortable-tab.tsx b/gui/src/components/sortable-tab.tsx
similarity index 90%
rename from src/components/sortable-tab.tsx
rename to gui/src/components/sortable-tab.tsx
index 962f4b36..7827c6f0 100644
--- a/src/components/sortable-tab.tsx
+++ b/gui/src/components/sortable-tab.tsx
@@ -1,8 +1,7 @@
import { LucideIcon, LucideX } from "lucide-react";
import { useSortable } from "@dnd-kit/sortable";
-import styles from "./sortable-tab.module.css";
import { WindowTabItemProps } from "./windows-tab";
-import { cn } from "@/lib/utils";
+import { cn } from "@gui/lib/utils";
import { forwardRef } from "react";
import { ButtonProps } from "./ui/button";
@@ -28,7 +27,7 @@ export const WindowTabItemButton = forwardRef<
const className = cn(
"h-9 flex items-center text-left text-xs font-semibold px-2 w-max-[150px]",
- styles.tab,
+ "libsql-window-tab",
selected
? "border-x border-t bg-background border-b-background rounded-t"
: "border-b border-t border-t-secondary border-x-secondary opacity-65 hover:opacity-100"
@@ -41,11 +40,11 @@ export const WindowTabItemButton = forwardRef<
diff --git a/src/components/sql-editor/index.tsx b/gui/src/components/sql-editor/index.tsx
similarity index 93%
rename from src/components/sql-editor/index.tsx
rename to gui/src/components/sql-editor/index.tsx
index 238b523c..3b6199d5 100644
--- a/src/components/sql-editor/index.tsx
+++ b/gui/src/components/sql-editor/index.tsx
@@ -1,88 +1,88 @@
-import CodeMirror, {
- EditorView,
- ReactCodeMirrorRef,
-} from "@uiw/react-codemirror";
-import { sql, SQLite } from "@codemirror/lang-sql";
-import { forwardRef, KeyboardEventHandler, useMemo } from "react";
-
-import { defaultKeymap } from "@codemirror/commands";
-import { keymap } from "@codemirror/view";
-import { KEY_BINDING } from "@/lib/key-matcher";
-import useCodeEditorTheme from "./use-editor-theme";
-
-interface SqlEditorProps {
- value: string;
- readOnly?: boolean;
- onChange?: (value: string) => void;
- schema?: Record;
- onKeyDown?: KeyboardEventHandler;
- onCursorChange?: (
- pos: number,
- lineNumber: number,
- columnNumber: number
- ) => void;
-}
-
-const SqlEditor = forwardRef(
- function SqlEditor(
- {
- value,
- onChange,
- schema,
- onKeyDown,
- onCursorChange,
- readOnly,
- }: SqlEditorProps,
- ref
- ) {
- const theme = useCodeEditorTheme();
-
- const keyExtensions = useMemo(() => {
- return keymap.of([
- {
- key: KEY_BINDING.run.toCodeMirrorKey(),
- preventDefault: true,
- run: () => true,
- },
- ...defaultKeymap,
- ]);
- }, []);
-
- return (
- {
- const pos = state.state.selection.main.head;
- const line = state.state.doc.lineAt(pos);
- const lineNumber = line.number;
- const columnNumber = pos - line.from;
- if (onCursorChange) onCursorChange(pos, lineNumber, columnNumber);
- }),
- ]}
- />
- );
- }
-);
-
-export default SqlEditor;
+import CodeMirror, {
+ EditorView,
+ ReactCodeMirrorRef,
+} from "@uiw/react-codemirror";
+import { sql, SQLite } from "@codemirror/lang-sql";
+import { forwardRef, KeyboardEventHandler, useMemo } from "react";
+
+import { defaultKeymap } from "@codemirror/commands";
+import { keymap } from "@codemirror/view";
+import { KEY_BINDING } from "@gui/lib/key-matcher";
+import useCodeEditorTheme from "./use-editor-theme";
+
+interface SqlEditorProps {
+ value: string;
+ readOnly?: boolean;
+ onChange?: (value: string) => void;
+ schema?: Record;
+ onKeyDown?: KeyboardEventHandler;
+ onCursorChange?: (
+ pos: number,
+ lineNumber: number,
+ columnNumber: number
+ ) => void;
+}
+
+const SqlEditor = forwardRef(
+ function SqlEditor(
+ {
+ value,
+ onChange,
+ schema,
+ onKeyDown,
+ onCursorChange,
+ readOnly,
+ }: SqlEditorProps,
+ ref
+ ) {
+ const theme = useCodeEditorTheme();
+
+ const keyExtensions = useMemo(() => {
+ return keymap.of([
+ {
+ key: KEY_BINDING.run.toCodeMirrorKey(),
+ preventDefault: true,
+ run: () => true,
+ },
+ ...defaultKeymap,
+ ]);
+ }, []);
+
+ return (
+ {
+ const pos = state.state.selection.main.head;
+ const line = state.state.doc.lineAt(pos);
+ const lineNumber = line.number;
+ const columnNumber = pos - line.from;
+ if (onCursorChange) onCursorChange(pos, lineNumber, columnNumber);
+ }),
+ ]}
+ />
+ );
+ }
+);
+
+export default SqlEditor;
diff --git a/src/components/sql-editor/use-editor-theme.tsx b/gui/src/components/sql-editor/use-editor-theme.tsx
similarity index 95%
rename from src/components/sql-editor/use-editor-theme.tsx
rename to gui/src/components/sql-editor/use-editor-theme.tsx
index 8bdf55e8..c303f27d 100644
--- a/src/components/sql-editor/use-editor-theme.tsx
+++ b/gui/src/components/sql-editor/use-editor-theme.tsx
@@ -1,71 +1,71 @@
-import { useTheme } from "@/context/theme-provider";
-import { tags as t } from "@lezer/highlight";
-import { createTheme } from "@uiw/codemirror-themes";
-import { useMemo } from "react";
-
-export default function useCodeEditorTheme() {
- const { theme } = useTheme();
-
- return useMemo(() => {
- if (theme === "light") {
- return createTheme({
- theme: "light",
- settings: {
- background: "#FFFFFF",
- foreground: "#000000",
- caret: "#FBAC52",
- selection: "#FFD420",
- selectionMatch: "#FFD420",
- gutterBackground: "#fff",
- gutterForeground: "#4D4D4C",
- gutterBorder: "transparent",
- lineHighlight: "#00000012",
- fontFamily:
- 'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',
- },
- styles: [
- { tag: [t.meta, t.comment], color: "#804000" },
- { tag: [t.keyword, t.strong], color: "#0000FF" },
- { tag: [t.number], color: "#FF0080" },
- { tag: [t.string], color: "#e17055" },
- { tag: [t.variableName], color: "#006600" },
- { tag: [t.escape], color: "#33CC33" },
- { tag: [t.tagName], color: "#1C02FF" },
- { tag: [t.heading], color: "#0C07FF" },
- { tag: [t.quote], color: "#000000" },
- { tag: [t.list], color: "#B90690" },
- { tag: [t.documentMeta], color: "#888888" },
- { tag: [t.function(t.variableName)], color: "#0000A2" },
- { tag: [t.definition(t.typeName), t.typeName], color: "#6D79DE" },
- ],
- });
- } else {
- return createTheme({
- theme: "dark",
- settings: {
- background: "var(--background)",
- foreground: "#9cdcfe",
- caret: "#c6c6c6",
- selection: "#6199ff2f",
- selectionMatch: "#72a1ff59",
- lineHighlight: "#ffffff0f",
- gutterBackground: "var(--background)",
- gutterForeground: "#838383",
- gutterActiveForeground: "#fff",
- fontFamily:
- 'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',
- },
- styles: [
- { tag: [t.number], color: "#fbc531" },
- { tag: t.keyword, color: "#3498db" },
- { tag: t.comment, color: "#27ae60" },
- { tag: t.definition(t.typeName), color: "#27ae60" },
- { tag: t.typeName, color: "#194a7b" },
- { tag: t.tagName, color: "#008a02" },
- { tag: t.variableName, color: "#1a00db" },
- { tag: t.string, color: "#e67e22" },
- ],
- });
- }
- }, [theme]);
-}
+import { useTheme } from "@gui/contexts/theme-provider";
+import { tags as t } from "@lezer/highlight";
+import { createTheme } from "@uiw/codemirror-themes";
+import { useMemo } from "react";
+
+export default function useCodeEditorTheme() {
+ const { theme } = useTheme();
+
+ return useMemo(() => {
+ if (theme === "light") {
+ return createTheme({
+ theme: "light",
+ settings: {
+ background: "#FFFFFF",
+ foreground: "#000000",
+ caret: "#FBAC52",
+ selection: "#FFD420",
+ selectionMatch: "#FFD420",
+ gutterBackground: "#fff",
+ gutterForeground: "#4D4D4C",
+ gutterBorder: "transparent",
+ lineHighlight: "#00000012",
+ fontFamily:
+ 'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',
+ },
+ styles: [
+ { tag: [t.meta, t.comment], color: "#804000" },
+ { tag: [t.keyword, t.strong], color: "#0000FF" },
+ { tag: [t.number], color: "#FF0080" },
+ { tag: [t.string], color: "#e17055" },
+ { tag: [t.variableName], color: "#006600" },
+ { tag: [t.escape], color: "#33CC33" },
+ { tag: [t.tagName], color: "#1C02FF" },
+ { tag: [t.heading], color: "#0C07FF" },
+ { tag: [t.quote], color: "#000000" },
+ { tag: [t.list], color: "#B90690" },
+ { tag: [t.documentMeta], color: "#888888" },
+ { tag: [t.function(t.variableName)], color: "#0000A2" },
+ { tag: [t.definition(t.typeName), t.typeName], color: "#6D79DE" },
+ ],
+ });
+ } else {
+ return createTheme({
+ theme: "dark",
+ settings: {
+ background: "var(--background)",
+ foreground: "#9cdcfe",
+ caret: "#c6c6c6",
+ selection: "#6199ff2f",
+ selectionMatch: "#72a1ff59",
+ lineHighlight: "#ffffff0f",
+ gutterBackground: "var(--background)",
+ gutterForeground: "#838383",
+ gutterActiveForeground: "#fff",
+ fontFamily:
+ 'Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace',
+ },
+ styles: [
+ { tag: [t.number], color: "#fbc531" },
+ { tag: t.keyword, color: "#3498db" },
+ { tag: t.comment, color: "#27ae60" },
+ { tag: t.definition(t.typeName), color: "#27ae60" },
+ { tag: t.typeName, color: "#194a7b" },
+ { tag: t.tagName, color: "#008a02" },
+ { tag: t.variableName, color: "#1a00db" },
+ { tag: t.string, color: "#e67e22" },
+ ],
+ });
+ }
+ }, [theme]);
+}
diff --git a/src/components/table-cell/BigNumberCell.tsx b/gui/src/components/table-cell/BigNumberCell.tsx
similarity index 95%
rename from src/components/table-cell/BigNumberCell.tsx
rename to gui/src/components/table-cell/BigNumberCell.tsx
index 57482667..8dc407d5 100644
--- a/src/components/table-cell/BigNumberCell.tsx
+++ b/gui/src/components/table-cell/BigNumberCell.tsx
@@ -1,23 +1,23 @@
-import createEditableCell from "./createEditableCell";
-
-const BigNumberCell = createEditableCell({
- align: "right",
- toString: (v) => {
- if (v === null) return null;
- if (v === undefined) return undefined;
- return v.toString();
- },
- toValue: (v) => {
- if (v === null) return null;
- if (v === undefined) return undefined;
- if (v === "") return null;
-
- try {
- return BigInt(v);
- } catch {
- return null;
- }
- },
-});
-
-export default BigNumberCell;
+import createEditableCell from "./createEditableCell";
+
+const BigNumberCell = createEditableCell({
+ align: "right",
+ toString: (v) => {
+ if (v === null) return null;
+ if (v === undefined) return undefined;
+ return v.toString();
+ },
+ toValue: (v) => {
+ if (v === null) return null;
+ if (v === undefined) return undefined;
+ if (v === "") return null;
+
+ try {
+ return BigInt(v);
+ } catch {
+ return null;
+ }
+ },
+});
+
+export default BigNumberCell;
diff --git a/src/components/table-cell/GenericCell.tsx b/gui/src/components/table-cell/GenericCell.tsx
similarity index 86%
rename from src/components/table-cell/GenericCell.tsx
rename to gui/src/components/table-cell/GenericCell.tsx
index abc11c38..17eaf3d9 100644
--- a/src/components/table-cell/GenericCell.tsx
+++ b/gui/src/components/table-cell/GenericCell.tsx
@@ -1,109 +1,108 @@
-import { useMemo } from "react";
-import styles from "./styles.module.css";
-import { isLinkString } from "@/lib/validation";
-import DisplayLinkCell from "./display-link-cell";
-import { cn } from "@/lib/utils";
-
-interface TableCellProps {
- align?: "left" | "right";
- value: T;
- focus?: boolean;
- isChanged?: boolean;
- onFocus?: () => void;
- onDoubleClick?: () => void;
-}
-
-export default function GenericCell({
- value,
- onFocus,
- isChanged,
- focus,
- align,
- onDoubleClick,
-}: TableCellProps) {
- const className = [
- styles.cell,
- focus ? styles.focus : null,
- "pl-2 pr-2",
- isChanged ? styles.change : null,
- ]
- .filter(Boolean)
- .join(" ");
-
- const isAlignRight = align === "right";
-
- const textBaseStyle = cn("text-gray-500", isAlignRight ? "float-right" : "");
-
- const content = useMemo(() => {
- if (value === null) {
- return NULL;
- }
-
- if (value === undefined) {
- return DEFAULT;
- }
-
- if (typeof value === "string") {
- if (isLinkString(value)) {
- return ;
- }
-
- return (
-
- {value}
-
- );
- }
-
- if (typeof value === "number" || typeof value === "bigint") {
- return (
-
- {value.toString()}
-
- );
- }
-
- if (value instanceof ArrayBuffer) {
- const sliceByte = value.slice(0, 64);
- const base64Text = btoa(
- new Uint8Array(sliceByte).reduce(
- (data, byte) => data + String.fromCharCode(byte),
- ""
- )
- );
-
- return (
-
-
-
- blob
-
-
-
{base64Text}
-
- );
- }
-
- return {value.toString()};
- }, [value, textBaseStyle, isChanged]);
-
- return (
-
- {content}
-
- );
-}
+import { useMemo } from "react";
+import { isLinkString } from "@gui/lib/validation";
+import DisplayLinkCell from "./display-link-cell";
+import { cn } from "@gui/lib/utils";
+
+interface TableCellProps {
+ align?: "left" | "right";
+ value: T;
+ focus?: boolean;
+ isChanged?: boolean;
+ onFocus?: () => void;
+ onDoubleClick?: () => void;
+}
+
+export default function GenericCell({
+ value,
+ onFocus,
+ isChanged,
+ focus,
+ align,
+ onDoubleClick,
+}: TableCellProps) {
+ const className = [
+ "libsql-cell",
+ focus ? "libsql-focus" : null,
+ "pl-2 pr-2",
+ isChanged ? "libsql-change" : null,
+ ]
+ .filter(Boolean)
+ .join(" ");
+
+ const isAlignRight = align === "right";
+
+ const textBaseStyle = cn("text-gray-500", isAlignRight ? "float-right" : "");
+
+ const content = useMemo(() => {
+ if (value === null) {
+ return NULL;
+ }
+
+ if (value === undefined) {
+ return DEFAULT;
+ }
+
+ if (typeof value === "string") {
+ if (isLinkString(value)) {
+ return ;
+ }
+
+ return (
+
+ {value}
+
+ );
+ }
+
+ if (typeof value === "number" || typeof value === "bigint") {
+ return (
+
+ {value.toString()}
+
+ );
+ }
+
+ if (value instanceof ArrayBuffer) {
+ const sliceByte = value.slice(0, 64);
+ const base64Text = btoa(
+ new Uint8Array(sliceByte).reduce(
+ (data, byte) => data + String.fromCharCode(byte),
+ ""
+ )
+ );
+
+ return (
+
+
+
+ blob
+
+
+
{base64Text}
+
+ );
+ }
+
+ return {value.toString()};
+ }, [value, textBaseStyle, isChanged]);
+
+ return (
+
+ {content}
+
+ );
+}
diff --git a/src/components/table-cell/NumberCell.tsx b/gui/src/components/table-cell/NumberCell.tsx
similarity index 95%
rename from src/components/table-cell/NumberCell.tsx
rename to gui/src/components/table-cell/NumberCell.tsx
index 19ab0231..2c35a9e3 100644
--- a/src/components/table-cell/NumberCell.tsx
+++ b/gui/src/components/table-cell/NumberCell.tsx
@@ -1,23 +1,23 @@
-import createEditableCell from "./createEditableCell";
-
-const NumberCell = createEditableCell({
- align: "right",
- toString: (v) => {
- if (v === null) return null;
- if (v === undefined) return undefined;
- return v.toString();
- },
- toValue: (v) => {
- if (v === null) return null;
- if (v === undefined) return undefined;
- if (v === "") return null;
-
- const parsedNumber = Number(v);
- if (Number.isFinite(parsedNumber)) {
- return parsedNumber;
- }
- return null;
- },
-});
-
-export default NumberCell;
+import createEditableCell from "./createEditableCell";
+
+const NumberCell = createEditableCell({
+ align: "right",
+ toString: (v) => {
+ if (v === null) return null;
+ if (v === undefined) return undefined;
+ return v.toString();
+ },
+ toValue: (v) => {
+ if (v === null) return null;
+ if (v === undefined) return undefined;
+ if (v === "") return null;
+
+ const parsedNumber = Number(v);
+ if (Number.isFinite(parsedNumber)) {
+ return parsedNumber;
+ }
+ return null;
+ },
+});
+
+export default NumberCell;
diff --git a/src/components/table-cell/TextCell.tsx b/gui/src/components/table-cell/TextCell.tsx
similarity index 95%
rename from src/components/table-cell/TextCell.tsx
rename to gui/src/components/table-cell/TextCell.tsx
index aa78aa5d..22ce3313 100644
--- a/src/components/table-cell/TextCell.tsx
+++ b/gui/src/components/table-cell/TextCell.tsx
@@ -1,8 +1,8 @@
-import createEditableCell from "./createEditableCell";
-
-const TextCell = createEditableCell({
- toString: (v) => v,
- toValue: (v) => v,
-});
-
-export default TextCell;
+import createEditableCell from "./createEditableCell";
+
+const TextCell = createEditableCell({
+ toString: (v) => v,
+ toValue: (v) => v,
+});
+
+export default TextCell;
diff --git a/src/components/table-cell/createEditableCell.tsx b/gui/src/components/table-cell/createEditableCell.tsx
similarity index 90%
rename from src/components/table-cell/createEditableCell.tsx
rename to gui/src/components/table-cell/createEditableCell.tsx
index 2ad3638a..cd845428 100644
--- a/src/components/table-cell/createEditableCell.tsx
+++ b/gui/src/components/table-cell/createEditableCell.tsx
@@ -1,221 +1,220 @@
-import { useState, useEffect, useCallback, useRef } from "react";
-import GenericCell from "./GenericCell";
-import styles from "./styles.module.css";
-import { DatabaseValue } from "@/drivers/base-driver";
-import { useBlockEditor } from "@/context/block-editor-provider";
-import OptimizeTableState from "../table-optimized/OptimizeTableState";
-
-export interface TableEditableCell {
- value: DatabaseValue;
- isChanged?: boolean;
- focus?: boolean;
- editMode?: boolean;
- state: OptimizeTableState;
- onChange?: (newValue: DatabaseValue) => void;
- editor?: "input" | "blocknote";
-}
-
-interface TabeEditableCellProps {
- toString: (v: DatabaseValue) => DatabaseValue;
- toValue: (v: DatabaseValue) => DatabaseValue;
- align?: "left" | "right";
-}
-
-function InputCellEditor({
- value,
- align,
- discardChange,
- applyChange,
- onChange,
- state,
-}: Readonly<{
- align?: "left" | "right";
- applyChange: (v: DatabaseValue, shouldExit?: boolean) => void;
- discardChange: () => void;
- value: DatabaseValue;
- onChange: (v: string) => void;
- state: OptimizeTableState;
-}>) {
- const inputRef = useRef(null);
- const shouldExit = useRef(true);
-
- useEffect(() => {
- if (inputRef.current) {
- inputRef.current.select();
- inputRef.current.focus();
- }
- }, [inputRef]);
-
- return (
- {
- applyChange(value, shouldExit.current);
- }}
- onChange={(e) => {
- onChange(e.currentTarget.value);
- }}
- onKeyDown={(e) => {
- if (e.key === "Enter") {
- applyChange(value);
- e.stopPropagation();
- } else if (e.key === "Escape") {
- discardChange();
- } else if (e.key === "Tab") {
- // Enter the next cell
- const focus = state.getFocus();
- if (focus) {
- const colCount = state.getHeaderCount();
- const n = focus.y * colCount + focus.x + 1;
- const x = n % colCount;
- const y = Math.floor(n / colCount);
- if (y >= state.getRowsCount()) return;
-
- shouldExit.current = false;
- applyChange(value, false);
-
- state.setFocus(y, x);
- state.scrollToFocusCell(x === 0 ? "left" : "right", "bottom");
- e.preventDefault();
- e.stopPropagation();
- }
- }
- }}
- type="text"
- className={
- align === "right"
- ? "bg-background w-full h-full outline-none pl-2 pr-2 border-0 text-right"
- : "bg-background w-full h-full outline-none pl-2 pr-2 border-0"
- }
- value={value ?? ""}
- />
- );
-}
-
-function BlockEditCellEditor({
- value,
- discardChange,
- applyChange,
- onChange,
-}: Readonly<{
- align?: "left" | "right";
- applyChange: (v: DatabaseValue) => void;
- discardChange: () => void;
- value: DatabaseValue;
- onChange: (v: string) => void;
-}>) {
- const { openBlockEditor, closeBlockEditor } = useBlockEditor();
-
- useEffect(() => {
- openBlockEditor({
- initialContent: value ?? "",
- onSave: (v) => {
- onChange(v);
- applyChange(v);
- },
- onCancel: discardChange,
- });
-
- return () => {
- closeBlockEditor();
- };
- }, [
- value,
- openBlockEditor,
- closeBlockEditor,
- applyChange,
- discardChange,
- onChange,
- ]);
-
- return null;
-}
-
-export default function createEditableCell({
- toString,
- toValue,
- align,
-}: TabeEditableCellProps): React.FC> {
- return function GenericEditableCell({
- value,
- isChanged,
- focus,
- onChange,
- state,
- editMode,
- editor,
- }: TableEditableCell) {
- const [editValue, setEditValue] = useState>(
- toString(value)
- );
-
- useEffect(() => {
- setEditValue(toString(value));
- }, [value]);
-
- const applyChange = useCallback(
- (v: DatabaseValue, shouldExitEdit: boolean = true) => {
- if (onChange) onChange(toValue(v));
- if (shouldExitEdit) {
- state.exitEditMode();
- }
- },
- [onChange, state]
- );
-
- const discardChange = useCallback(() => {
- setEditValue(toString(value));
- state.exitEditMode();
- }, [setEditValue, state, value]);
-
- const className = [
- styles.cell,
- focus ? styles.focus : null,
- isChanged ? styles.change : null,
- ]
- .filter(Boolean)
- .join(" ");
-
- if (editMode) {
- if (editor === "blocknote") {
- return (
-
-
-
- );
- } else {
- return (
-
-
-
- );
- }
- }
-
- return (
- {
- state.enterEditMode();
- }}
- />
- );
- };
-}
+import { useState, useEffect, useCallback, useRef } from "react";
+import GenericCell from "./GenericCell";
+import { DatabaseValue } from "@gui/drivers/base-driver";
+import { useBlockEditor } from "@gui/contexts/block-editor-provider";
+import OptimizeTableState from "../table-optimized/OptimizeTableState";
+
+export interface TableEditableCell {
+ value: DatabaseValue;
+ isChanged?: boolean;
+ focus?: boolean;
+ editMode?: boolean;
+ state: OptimizeTableState;
+ onChange?: (newValue: DatabaseValue) => void;
+ editor?: "input" | "blocknote";
+}
+
+interface TabeEditableCellProps {
+ toString: (v: DatabaseValue) => DatabaseValue;
+ toValue: (v: DatabaseValue) => DatabaseValue;
+ align?: "left" | "right";
+}
+
+function InputCellEditor({
+ value,
+ align,
+ discardChange,
+ applyChange,
+ onChange,
+ state,
+}: Readonly<{
+ align?: "left" | "right";
+ applyChange: (v: DatabaseValue, shouldExit?: boolean) => void;
+ discardChange: () => void;
+ value: DatabaseValue;
+ onChange: (v: string) => void;
+ state: OptimizeTableState;
+}>) {
+ const inputRef = useRef(null);
+ const shouldExit = useRef(true);
+
+ useEffect(() => {
+ if (inputRef.current) {
+ inputRef.current.select();
+ inputRef.current.focus();
+ }
+ }, [inputRef]);
+
+ return (
+ {
+ applyChange(value, shouldExit.current);
+ }}
+ onChange={(e) => {
+ onChange(e.currentTarget.value);
+ }}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ applyChange(value);
+ e.stopPropagation();
+ } else if (e.key === "Escape") {
+ discardChange();
+ } else if (e.key === "Tab") {
+ // Enter the next cell
+ const focus = state.getFocus();
+ if (focus) {
+ const colCount = state.getHeaderCount();
+ const n = focus.y * colCount + focus.x + 1;
+ const x = n % colCount;
+ const y = Math.floor(n / colCount);
+ if (y >= state.getRowsCount()) return;
+
+ shouldExit.current = false;
+ applyChange(value, false);
+
+ state.setFocus(y, x);
+ state.scrollToFocusCell(x === 0 ? "left" : "right", "bottom");
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ }
+ }}
+ type="text"
+ className={
+ align === "right"
+ ? "bg-background w-full h-full outline-none pl-2 pr-2 border-0 text-right"
+ : "bg-background w-full h-full outline-none pl-2 pr-2 border-0"
+ }
+ value={value ?? ""}
+ />
+ );
+}
+
+function BlockEditCellEditor({
+ value,
+ discardChange,
+ applyChange,
+ onChange,
+}: Readonly<{
+ align?: "left" | "right";
+ applyChange: (v: DatabaseValue) => void;
+ discardChange: () => void;
+ value: DatabaseValue;
+ onChange: (v: string) => void;
+}>) {
+ const { openBlockEditor, closeBlockEditor } = useBlockEditor();
+
+ useEffect(() => {
+ openBlockEditor({
+ initialContent: value ?? "",
+ onSave: (v) => {
+ onChange(v);
+ applyChange(v);
+ },
+ onCancel: discardChange,
+ });
+
+ return () => {
+ closeBlockEditor();
+ };
+ }, [
+ value,
+ openBlockEditor,
+ closeBlockEditor,
+ applyChange,
+ discardChange,
+ onChange,
+ ]);
+
+ return null;
+}
+
+export default function createEditableCell({
+ toString,
+ toValue,
+ align,
+}: TabeEditableCellProps): React.FC> {
+ return function GenericEditableCell({
+ value,
+ isChanged,
+ focus,
+ onChange,
+ state,
+ editMode,
+ editor,
+ }: TableEditableCell) {
+ const [editValue, setEditValue] = useState>(
+ toString(value)
+ );
+
+ useEffect(() => {
+ setEditValue(toString(value));
+ }, [value]);
+
+ const applyChange = useCallback(
+ (v: DatabaseValue, shouldExitEdit = true) => {
+ if (onChange) onChange(toValue(v));
+ if (shouldExitEdit) {
+ state.exitEditMode();
+ }
+ },
+ [onChange, state]
+ );
+
+ const discardChange = useCallback(() => {
+ setEditValue(toString(value));
+ state.exitEditMode();
+ }, [setEditValue, state, value]);
+
+ const className = [
+ "libsql-cell",
+ focus ? "libsql-focus" : null,
+ isChanged ? "libsql-change" : null,
+ ]
+ .filter(Boolean)
+ .join(" ");
+
+ if (editMode) {
+ if (editor === "blocknote") {
+ return (
+
+
+
+ );
+ } else {
+ return (
+
+
+
+ );
+ }
+ }
+
+ return (
+ {
+ state.enterEditMode();
+ }}
+ />
+ );
+ };
+}
diff --git a/src/components/table-cell/display-link-cell.tsx b/gui/src/components/table-cell/display-link-cell.tsx
similarity index 88%
rename from src/components/table-cell/display-link-cell.tsx
rename to gui/src/components/table-cell/display-link-cell.tsx
index 731d241e..74267c6f 100644
--- a/src/components/table-cell/display-link-cell.tsx
+++ b/gui/src/components/table-cell/display-link-cell.tsx
@@ -1,4 +1,3 @@
-import Link from "next/link";
import {
HoverCard,
HoverCardContent,
@@ -38,9 +37,14 @@ export default function DisplayLinkCell({ link }: { link: string }) {
diff --git a/src/components/table-cell/styles.module.css b/gui/src/components/table-cell/styles.module.css
similarity index 92%
rename from src/components/table-cell/styles.module.css
rename to gui/src/components/table-cell/styles.module.css
index d6514401..7bf2808a 100644
--- a/src/components/table-cell/styles.module.css
+++ b/gui/src/components/table-cell/styles.module.css
@@ -1,17 +1,17 @@
-.cell {
- line-height: 34px;
- height: 35px;
- border: 1px solid transparent;
-}
-
-.focus {
- border: 1px solid #e00;
-}
-
-:global(.dark) .change {
- @apply bg-yellow-500;
-}
-
-.change {
- @apply bg-yellow-200;
-}
+.cell {
+ line-height: 34px;
+ height: 35px;
+ border: 1px solid transparent;
+}
+
+.focus {
+ border: 1px solid #e00;
+}
+
+:global(.dark) .change {
+ @apply bg-yellow-500;
+}
+
+.change {
+ @apply bg-yellow-200;
+}
diff --git a/src/components/table-combobox/TableColumnCombobox.tsx b/gui/src/components/table-combobox/TableColumnCombobox.tsx
similarity index 90%
rename from src/components/table-combobox/TableColumnCombobox.tsx
rename to gui/src/components/table-combobox/TableColumnCombobox.tsx
index 76ca5823..5a328f13 100644
--- a/src/components/table-combobox/TableColumnCombobox.tsx
+++ b/gui/src/components/table-combobox/TableColumnCombobox.tsx
@@ -1,86 +1,86 @@
-import { Popover, PopoverTrigger } from "@radix-ui/react-popover";
-import { useEffect, useState } from "react";
-import { Button } from "../ui/button";
-import { Check, ChevronsUpDown } from "lucide-react";
-import { PopoverContent } from "../ui/popover";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import {
- Command,
- CommandEmpty,
- CommandGroup,
- CommandInput,
- CommandItem,
-} from "../ui/command";
-import { cn } from "@/lib/utils";
-import { DatabaseTableSchema } from "@/drivers/base-driver";
-
-export default function TableColumnCombobox({
- value,
- tableName,
- onChange,
- disabled,
-}: Readonly<{
- tableName: string;
- value?: string;
- onChange: (value: string) => void;
- disabled?: boolean;
-}>) {
- const { databaseDriver } = useDatabaseDriver();
- const [open, setOpen] = useState(false);
- const [schema, setSchema] = useState();
-
- useEffect(() => {
- if (tableName) {
- databaseDriver
- .tableSchema(tableName)
- .then(setSchema)
- .catch(() => {
- setSchema({
- tableName,
- columns: [],
- pk: [],
- autoIncrement: false,
- constraints: [],
- });
- });
- }
- }, [tableName, databaseDriver]);
-
- return (
-
-
-
- {value ?? "No column selected"}
-
-
-
-
-
-
-
- No column found.
-
- {schema?.columns.map((column) => (
- {
- onChange(column.name);
- setOpen(false);
- }}
- >
-
- {column.name}
-
- ))}
-
-
-
-
- );
-}
+import { Popover, PopoverTrigger } from "@radix-ui/react-popover";
+import { useEffect, useState } from "react";
+import { Button } from "../ui/button";
+import { Check, ChevronsUpDown } from "lucide-react";
+import { PopoverContent } from "../ui/popover";
+import {
+ Command,
+ CommandEmpty,
+ CommandGroup,
+ CommandInput,
+ CommandItem,
+} from "../ui/command";
+import { cn } from "./../../lib/utils";
+import type { DatabaseTableSchema } from "@gui/drivers/base-driver";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+
+export default function TableColumnCombobox({
+ value,
+ tableName,
+ onChange,
+ disabled,
+}: Readonly<{
+ tableName: string;
+ value?: string;
+ onChange: (value: string) => void;
+ disabled?: boolean;
+}>) {
+ const { databaseDriver } = useDatabaseDriver();
+ const [open, setOpen] = useState(false);
+ const [schema, setSchema] = useState();
+
+ useEffect(() => {
+ if (tableName) {
+ databaseDriver
+ .tableSchema(tableName)
+ .then(setSchema)
+ .catch(() => {
+ setSchema({
+ tableName,
+ columns: [],
+ pk: [],
+ autoIncrement: false,
+ constraints: [],
+ });
+ });
+ }
+ }, [tableName, databaseDriver]);
+
+ return (
+
+
+
+ {value ?? "No column selected"}
+
+
+
+
+
+
+
+ No column found.
+
+ {schema?.columns.map((column) => (
+ {
+ onChange(column.name);
+ setOpen(false);
+ }}
+ >
+
+ {column.name}
+
+ ))}
+
+
+
+
+ );
+}
diff --git a/src/components/table-combobox/TableCombobox.tsx b/gui/src/components/table-combobox/TableCombobox.tsx
similarity index 96%
rename from src/components/table-combobox/TableCombobox.tsx
rename to gui/src/components/table-combobox/TableCombobox.tsx
index 9d2e3392..6e5e90c1 100644
--- a/src/components/table-combobox/TableCombobox.tsx
+++ b/gui/src/components/table-combobox/TableCombobox.tsx
@@ -8,10 +8,10 @@ import {
CommandInput,
CommandItem,
} from "../ui/command";
-import { cn } from "@/lib/utils";
-import { useSchema } from "@/context/SchemaProvider";
+import { cn } from "@gui/lib/utils";
import { useState } from "react";
import { Separator } from "../ui/separator";
+import { useSchema } from "@gui/contexts/schema-provider";
export default function TableCombobox({
value,
diff --git a/src/components/table-optimized/OptimizeTableState.tsx b/gui/src/components/table-optimized/OptimizeTableState.tsx
similarity index 89%
rename from src/components/table-optimized/OptimizeTableState.tsx
rename to gui/src/components/table-optimized/OptimizeTableState.tsx
index 7a97c631..8577dddc 100644
--- a/src/components/table-optimized/OptimizeTableState.tsx
+++ b/gui/src/components/table-optimized/OptimizeTableState.tsx
@@ -1,443 +1,456 @@
-import { selectArrayFromIndexList } from "@/lib/export-helper";
-import { OptimizeTableHeaderProps } from ".";
-import { LucideKey } from "lucide-react";
-import {
- DatabaseResultSet,
- DatabaseTableSchema,
- TableColumnDataType,
-} from "@/drivers/base-driver";
-
-export interface OptimizeTableRowValue {
- raw: Record;
- change?: Record;
- changeKey?: number;
- isNewRow?: boolean;
- isRemoved?: boolean;
-}
-
-type TableChangeEventCallback = (state: OptimizeTableState) => void;
-
-export default class OptimizeTableState {
- protected focus: [number, number] | null = null;
- protected selectedRows = new Set();
- protected data: OptimizeTableRowValue[] = [];
- protected headers: OptimizeTableHeaderProps[] = [];
- protected headerWidth: number[] = [];
- protected editMode: boolean = false;
- protected readOnlyMode: boolean = false;
- protected container: HTMLDivElement | null = null;
-
- protected changeCallback: TableChangeEventCallback[] = [];
- protected changeDebounceTimerId: NodeJS.Timeout | null = null;
-
- protected changeCounter = 1;
- protected changeLogs: Record = {};
-
- static createFromResult(
- dataResult: DatabaseResultSet,
- schemaResult?: DatabaseTableSchema
- ) {
- return new OptimizeTableState(
- dataResult.headers.map((header) => {
- let initialSize = 150;
- const headerName = header.name;
- const dataType = header.type;
-
- if (
- dataType === TableColumnDataType.INTEGER ||
- dataType === TableColumnDataType.REAL
- ) {
- initialSize = 100;
- } else if (dataType === TableColumnDataType.TEXT) {
- // Use 100 first rows to determine the good initial size
- let maxSize = 0;
- for (let i = 0; i < Math.min(dataResult.rows.length, 100); i++) {
- maxSize = Math.max(
- (dataResult.rows[i][headerName ?? ""]?.toString() ?? "").length
- );
- }
-
- initialSize = Math.max(150, Math.min(500, maxSize * 8));
- }
-
- return {
- initialSize,
- name: headerName ?? "",
- displayName: header.displayName,
- resizable: true,
- dataType,
- icon: schemaResult?.pk.includes(headerName ?? "") ? (
-
- ) : undefined,
- };
- }),
- dataResult.rows.map((r) => ({ ...r }))
- );
- }
-
- constructor(
- headers: OptimizeTableHeaderProps[],
- data: Record[]
- ) {
- this.headers = headers;
- this.data = data.map((row) => ({
- raw: row,
- }));
- this.headerWidth = headers.map((h) => h.initialSize);
- }
-
- setReadOnlyMode(readOnly: boolean) {
- this.readOnlyMode = readOnly;
- }
-
- setContainer(div: HTMLDivElement | null) {
- this.container = div;
- }
-
- // ------------------------------------------------
- // Event Handlers
- // ------------------------------------------------
- addChangeListener(cb: TableChangeEventCallback) {
- this.changeCallback.push(cb);
- }
-
- removeChangeListener(cb: TableChangeEventCallback) {
- this.changeCallback = this.changeCallback.filter((c) => c !== cb);
- }
-
- protected broadcastChange(instant?: boolean) {
- if (instant) {
- if (this.changeDebounceTimerId) clearTimeout(this.changeDebounceTimerId);
- this.changeCallback.reverse().forEach((cb) => cb(this));
- }
-
- if (this.changeDebounceTimerId) return false;
- this.changeDebounceTimerId = setTimeout(() => {
- this.changeDebounceTimerId = null;
- this.changeCallback.reverse().forEach((cb) => cb(this));
- }, 5);
- }
-
- // ------------------------------------------------
- // Handle headers and data
- // ------------------------------------------------
- getHeaders() {
- return this.headers;
- }
-
- getValue(y: number, x: number): unknown {
- const rowChange = this.data[y]?.change;
- if (rowChange) {
- return this.headers[x].name in rowChange
- ? rowChange[this.headers[x].name]
- : this.getOriginalValue(y, x);
- }
- return this.getOriginalValue(y, x);
- }
-
- hasCellChange(y: number, x: number) {
- const changeLog = this.data[y]?.change;
- if (!changeLog) return false;
- return this.headers[x].name in changeLog;
- }
-
- getOriginalValue(y: number, x: number): unknown {
- return this.data[y]?.raw[this.headers[x].name];
- }
-
- changeValue(y: number, x: number, newValue: unknown) {
- const oldValue = this.getOriginalValue(y, x);
-
- const row = this.data[y];
- const headerName = this.headers[x].name;
-
- if (oldValue === newValue) {
- const rowChange = row.change;
- if (rowChange && headerName in rowChange) {
- delete rowChange[headerName];
- if (Object.entries(rowChange).length === 0) {
- if (row.changeKey) {
- delete this.changeLogs[row.changeKey];
- delete row["changeKey"];
- }
- delete row["change"];
- }
- }
- } else {
- const rowChange = row.change;
- if (rowChange) {
- rowChange[headerName] = newValue;
- } else {
- row.changeKey = ++this.changeCounter;
- row.change = { [headerName]: newValue };
- this.changeLogs[row.changeKey] = row;
- }
- }
-
- this.broadcastChange();
- }
-
- getChangedRows() {
- return Object.values(this.changeLogs);
- }
-
- getRowsCount() {
- return this.data.length;
- }
-
- getHeaderCount() {
- return this.headers.length;
- }
-
- disardAllChange() {
- const newRows: OptimizeTableRowValue[] = [];
-
- for (const row of Object.values(this.changeLogs)) {
- if (row.isNewRow) {
- newRows.push(row);
- delete row.change;
- delete row.changeKey;
- delete row.isNewRow;
- } else {
- delete row.change;
- delete row.changeKey;
- delete row.isRemoved;
- }
- }
-
- // Remove all new rows
- this.data = this.data.filter((row) => !newRows.includes(row));
- this.changeLogs = {};
-
- this.broadcastChange(true);
- }
-
- applyChanges(
- updatedRows: {
- row: OptimizeTableRowValue;
- updated: Record;
- }[]
- ) {
- const rowChanges = this.getChangedRows();
- const removedRows = rowChanges.filter((row) => row.isRemoved);
-
- for (const row of rowChanges) {
- const updated = updatedRows.find((updateRow) => updateRow.row === row);
- row.raw = { ...row.raw, ...row.change, ...updated?.updated };
- delete row.changeKey;
- delete row.change;
- delete row.isNewRow;
- delete row.isRemoved;
- }
-
- if (removedRows.length > 0) {
- this.data = this.data.filter((row) => !removedRows.includes(row));
- }
-
- this.changeLogs = {};
- this.broadcastChange();
- }
-
- insertNewRow(index: number = -1) {
- if (index === -1) {
- const focus = this.getFocus();
- if (focus) index = focus.y;
- }
-
- if (index < 0) index = 0;
-
- const newRow = {
- isNewRow: true,
- raw: {},
- change: {},
- changeKey: ++this.changeCounter,
- };
-
- this.data.splice(index, 0, newRow);
- this.changeLogs[newRow.changeKey] = newRow;
- this.broadcastChange();
- }
-
- isNewRow(index: number) {
- return !!this.data[index]?.isNewRow;
- }
-
- removeRow(index: number = -1) {
- if (index === -1) {
- // Remove the row at focus
- const focus = this.getFocus();
- if (focus) index = focus.y;
- }
-
- const row = this.data[index];
-
- if (row) {
- if (row.isNewRow && row.changeKey) {
- delete this.changeLogs[row.changeKey];
- this.data = this.data.filter((dataRow) => dataRow != row);
- } else {
- row.isRemoved = true;
- if (!row.changeKey) {
- row.change = {};
- row.changeKey = ++this.changeCounter;
- this.changeLogs[row.changeKey] = row;
- }
- }
- }
-
- this.broadcastChange();
- }
-
- isRemovedRow(index: number) {
- return !!this.data[index]?.isRemoved;
- }
-
- // ------------------------------------------------
- // Handle focus logic
- // ------------------------------------------------
- getFocus(): { x: number; y: number } | null {
- return this.focus
- ? {
- x: this.focus[1],
- y: this.focus[0],
- }
- : null;
- }
-
- hasFocus(y: number, x: number): boolean {
- if (!this.focus) return false;
- return this.focus[0] === y && this.focus[1] === x;
- }
-
- setFocus(y: number, x: number) {
- this.focus = [y, x];
- this.broadcastChange();
- }
-
- isInEditMode() {
- return this.editMode;
- }
-
- enterEditMode() {
- if (this.readOnlyMode) return;
- this.editMode = true;
- this.broadcastChange();
- }
-
- exitEditMode() {
- this.editMode = false;
-
- if (this.container) {
- this.container.focus();
- }
-
- this.broadcastChange();
- }
-
- clearFocus() {
- this.focus = null;
- this.broadcastChange();
- }
-
- setHeaderWidth(idx: number, newWidth: number) {
- return (this.headerWidth[idx] = newWidth);
- }
-
- getHeaderWidth() {
- return this.headerWidth;
- }
-
- scrollToFocusCell(horizontal: "left" | "right", vertical: "top" | "bottom") {
- if (this.container && this.focus) {
- const cellX = this.focus[1];
- const cellY = this.focus[0];
- let cellLeft = 0;
- let cellRight = 0;
- const cellTop = (cellY + 1) * 38;
- const cellBottom = cellTop + 38;
-
- for (let i = 0; i < cellX; i++) {
- cellLeft += this.headerWidth[i];
- }
- cellRight = cellLeft + this.headerWidth[cellX];
-
- const width = this.container.clientWidth;
- const height = this.container.clientHeight;
- const containerLeft = this.container.scrollLeft;
- const containerRight = containerLeft + this.container.clientWidth;
- const containerTop = this.container.scrollTop;
- const containerBottom = containerTop + height;
-
- if (horizontal === "right") {
- if (cellRight > containerRight) {
- this.container.scrollLeft = Math.max(0, cellRight - width);
- }
- } else {
- if (cellLeft < containerLeft) {
- this.container.scrollLeft = cellLeft;
- }
- }
-
- if (vertical === "bottom") {
- if (cellBottom > containerBottom) {
- this.container.scrollTop = Math.max(0, cellBottom - height);
- }
- } else {
- if (cellTop - 38 < containerTop) {
- this.container.scrollTop = Math.max(0, cellTop - 38);
- }
- }
- }
- }
-
- // ------------------------------------------------
- // Handle select row logic
- // ------------------------------------------------
- clearSelect() {
- this.selectedRows.clear();
- this.broadcastChange();
- }
-
- getSelectedRowCount() {
- return this.selectedRows.size;
- }
-
- getSelectedRowsArray(): unknown[][] {
- return selectArrayFromIndexList(this.data, this.getSelectedRowIndex()).map(
- (row) => this.headers.map((header) => row.raw[header.name])
- );
- }
-
- getSelectedRowIndex() {
- return Array.from(this.selectedRows.values());
- }
-
- selectRow(y: number, toggle?: boolean) {
- if (toggle) {
- if (this.selectedRows.has(y)) {
- this.selectedRows.delete(y);
- } else {
- this.selectedRows.add(y);
- }
- } else {
- this.selectedRows.add(y);
- }
- this.broadcastChange();
- }
-
- selectRange(y1: number, y2: number) {
- const maxY = Math.max(y1, y2);
- const minY = Math.min(y1, y2);
-
- this.selectedRows.clear();
- for (let i = minY; i <= maxY; i++) {
- this.selectedRows.add(i);
- }
-
- this.broadcastChange();
- }
-
- isRowSelected(y: number) {
- return this.selectedRows.has(y);
- }
-}
+import { selectArrayFromIndexList } from "@gui/lib/export-helper";
+import { OptimizeTableHeaderProps } from ".";
+import { LucideKey } from "lucide-react";
+import {
+ DatabaseResultSet,
+ DatabaseTableSchema,
+ TableColumnDataType,
+} from "@gui/drivers/base-driver";
+
+export interface OptimizeTableRowValue {
+ raw: Record;
+ change?: Record;
+ changeKey?: number;
+ isNewRow?: boolean;
+ isRemoved?: boolean;
+}
+
+type TableChangeEventCallback = (state: OptimizeTableState) => void;
+
+export default class OptimizeTableState {
+ protected focus: [number, number] | null = null;
+ protected selectedRows = new Set();
+ protected data: OptimizeTableRowValue[] = [];
+ protected headers: OptimizeTableHeaderProps[] = [];
+ protected headerWidth: number[] = [];
+ protected editMode = false;
+ protected readOnlyMode = false;
+ protected container: HTMLDivElement | null = null;
+
+ protected changeCallback: TableChangeEventCallback[] = [];
+ protected changeDebounceTimerId: NodeJS.Timeout | null = null;
+
+ protected changeCounter = 1;
+ protected changeLogs: Record = {};
+
+ static createFromResult(
+ dataResult: DatabaseResultSet,
+ schemaResult?: DatabaseTableSchema
+ ) {
+ return new OptimizeTableState(
+ dataResult.headers.map((header) => {
+ let initialSize = 150;
+ const headerName = header.name;
+ const dataType = header.type;
+
+ if (
+ dataType === TableColumnDataType.INTEGER ||
+ dataType === TableColumnDataType.REAL
+ ) {
+ initialSize = 100;
+ } else if (dataType === TableColumnDataType.TEXT) {
+ // Use 100 first rows to determine the good initial size
+ let maxSize = 0;
+ for (let i = 0; i < Math.min(dataResult.rows.length, 100); i++) {
+ const currentCell = dataResult.rows[i];
+ if (currentCell) {
+ maxSize = Math.max(
+ (currentCell[headerName ?? ""]?.toString() ?? "").length
+ );
+ }
+ }
+
+ initialSize = Math.max(150, Math.min(500, maxSize * 8));
+ }
+
+ return {
+ initialSize,
+ name: headerName ?? "",
+ displayName: header.displayName,
+ resizable: true,
+ dataType,
+ icon: schemaResult?.pk.includes(headerName ?? "") ? (
+
+ ) : undefined,
+ };
+ }),
+ dataResult.rows.map((r) => ({ ...r }))
+ );
+ }
+
+ constructor(
+ headers: OptimizeTableHeaderProps[],
+ data: Record[]
+ ) {
+ this.headers = headers;
+ this.data = data.map((row) => ({
+ raw: row,
+ }));
+ this.headerWidth = headers.map((h) => h.initialSize);
+ }
+
+ setReadOnlyMode(readOnly: boolean) {
+ this.readOnlyMode = readOnly;
+ }
+
+ setContainer(div: HTMLDivElement | null) {
+ this.container = div;
+ }
+
+ // ------------------------------------------------
+ // Event Handlers
+ // ------------------------------------------------
+ addChangeListener(cb: TableChangeEventCallback) {
+ this.changeCallback.push(cb);
+ }
+
+ removeChangeListener(cb: TableChangeEventCallback) {
+ this.changeCallback = this.changeCallback.filter((c) => c !== cb);
+ }
+
+ protected broadcastChange(instant?: boolean) {
+ if (instant) {
+ if (this.changeDebounceTimerId) clearTimeout(this.changeDebounceTimerId);
+ this.changeCallback.reverse().forEach((cb) => cb(this));
+ }
+
+ if (this.changeDebounceTimerId) return false;
+ this.changeDebounceTimerId = setTimeout(() => {
+ this.changeDebounceTimerId = null;
+ this.changeCallback.reverse().forEach((cb) => cb(this));
+ }, 5);
+
+ return true;
+ }
+
+ // ------------------------------------------------
+ // Handle headers and data
+ // ------------------------------------------------
+ getHeaders() {
+ return this.headers;
+ }
+
+ getValue(y: number, x: number): unknown {
+ const rowChange = this.data[y]?.change;
+ if (rowChange) {
+ const currentHeaderName = this.headers[x]?.name ?? "";
+ if (currentHeaderName in rowChange) {
+ return rowChange[currentHeaderName];
+ }
+
+ return this.getOriginalValue(y, x);
+ }
+ return this.getOriginalValue(y, x);
+ }
+
+ hasCellChange(y: number, x: number) {
+ const changeLog = this.data[y]?.change;
+ if (!changeLog) return false;
+
+ const currentHeaderName = this.headers[x]?.name ?? "";
+ return currentHeaderName in changeLog;
+ }
+
+ getOriginalValue(y: number, x: number): unknown {
+ const currentHeaderName = this.headers[x]?.name ?? "";
+ return this.data[y]?.raw[currentHeaderName];
+ }
+
+ changeValue(y: number, x: number, newValue: unknown) {
+ const oldValue = this.getOriginalValue(y, x);
+
+ const row = this.data[y];
+ const headerName = this.headers[x]?.name ?? "";
+
+ if (!row) return;
+
+ if (oldValue === newValue) {
+ const rowChange = row.change;
+ if (rowChange && headerName in rowChange) {
+ delete rowChange[headerName];
+ if (Object.entries(rowChange).length === 0) {
+ if (row.changeKey) {
+ delete this.changeLogs[row.changeKey];
+ delete row.changeKey;
+ }
+ delete row.change;
+ }
+ }
+ } else {
+ const rowChange = row.change;
+ if (rowChange) {
+ rowChange[headerName] = newValue;
+ } else {
+ row.changeKey = ++this.changeCounter;
+ row.change = { [headerName]: newValue };
+ this.changeLogs[row.changeKey] = row;
+ }
+ }
+
+ this.broadcastChange();
+ }
+
+ getChangedRows() {
+ return Object.values(this.changeLogs);
+ }
+
+ getRowsCount() {
+ return this.data.length;
+ }
+
+ getHeaderCount() {
+ return this.headers.length;
+ }
+
+ disardAllChange() {
+ const newRows: OptimizeTableRowValue[] = [];
+
+ for (const row of Object.values(this.changeLogs)) {
+ if (row.isNewRow) {
+ newRows.push(row);
+ delete row.change;
+ delete row.changeKey;
+ delete row.isNewRow;
+ } else {
+ delete row.change;
+ delete row.changeKey;
+ delete row.isRemoved;
+ }
+ }
+
+ // Remove all new rows
+ this.data = this.data.filter((row) => !newRows.includes(row));
+ this.changeLogs = {};
+
+ this.broadcastChange(true);
+ }
+
+ applyChanges(
+ updatedRows: {
+ row: OptimizeTableRowValue;
+ updated: Record;
+ }[]
+ ) {
+ const rowChanges = this.getChangedRows();
+ const removedRows = rowChanges.filter((row) => row.isRemoved);
+
+ for (const row of rowChanges) {
+ const updated = updatedRows.find((updateRow) => updateRow.row === row);
+ row.raw = { ...row.raw, ...row.change, ...updated?.updated };
+ delete row.changeKey;
+ delete row.change;
+ delete row.isNewRow;
+ delete row.isRemoved;
+ }
+
+ if (removedRows.length > 0) {
+ this.data = this.data.filter((row) => !removedRows.includes(row));
+ }
+
+ this.changeLogs = {};
+ this.broadcastChange();
+ }
+
+ insertNewRow(index = -1) {
+ if (index === -1) {
+ const focus = this.getFocus();
+ if (focus) index = focus.y;
+ }
+
+ if (index < 0) index = 0;
+
+ const newRow = {
+ isNewRow: true,
+ raw: {},
+ change: {},
+ changeKey: ++this.changeCounter,
+ };
+
+ this.data.splice(index, 0, newRow);
+ this.changeLogs[newRow.changeKey] = newRow;
+ this.broadcastChange();
+ }
+
+ isNewRow(index: number) {
+ return !!this.data[index]?.isNewRow;
+ }
+
+ removeRow(index = -1) {
+ if (index === -1) {
+ // Remove the row at focus
+ const focus = this.getFocus();
+ if (focus) index = focus.y;
+ }
+
+ const row = this.data[index];
+
+ if (row) {
+ if (row.isNewRow && row.changeKey) {
+ delete this.changeLogs[row.changeKey];
+ this.data = this.data.filter((dataRow) => dataRow != row);
+ } else {
+ row.isRemoved = true;
+ if (!row.changeKey) {
+ row.change = {};
+ row.changeKey = ++this.changeCounter;
+ this.changeLogs[row.changeKey] = row;
+ }
+ }
+ }
+
+ this.broadcastChange();
+ }
+
+ isRemovedRow(index: number) {
+ return !!this.data[index]?.isRemoved;
+ }
+
+ // ------------------------------------------------
+ // Handle focus logic
+ // ------------------------------------------------
+ getFocus(): { x: number; y: number } | null {
+ return this.focus
+ ? {
+ x: this.focus[1],
+ y: this.focus[0],
+ }
+ : null;
+ }
+
+ hasFocus(y: number, x: number): boolean {
+ if (!this.focus) return false;
+ return this.focus[0] === y && this.focus[1] === x;
+ }
+
+ setFocus(y: number, x: number) {
+ this.focus = [y, x];
+ this.broadcastChange();
+ }
+
+ isInEditMode() {
+ return this.editMode;
+ }
+
+ enterEditMode() {
+ if (this.readOnlyMode) return;
+ this.editMode = true;
+ this.broadcastChange();
+ }
+
+ exitEditMode() {
+ this.editMode = false;
+
+ if (this.container) {
+ this.container.focus();
+ }
+
+ this.broadcastChange();
+ }
+
+ clearFocus() {
+ this.focus = null;
+ this.broadcastChange();
+ }
+
+ setHeaderWidth(idx: number, newWidth: number) {
+ return (this.headerWidth[idx] = newWidth);
+ }
+
+ getHeaderWidth() {
+ return this.headerWidth;
+ }
+
+ scrollToFocusCell(horizontal: "left" | "right", vertical: "top" | "bottom") {
+ if (this.container && this.focus) {
+ const cellX = this.focus[1];
+ const cellY = this.focus[0];
+ let cellLeft = 0;
+ let cellRight = 0;
+ const cellTop = (cellY + 1) * 38;
+ const cellBottom = cellTop + 38;
+
+ for (let i = 0; i < cellX; i++) {
+ cellLeft += this.headerWidth[i] ?? 0;
+ }
+ cellRight = cellLeft + (this.headerWidth[cellX] ?? 0);
+
+ const width = this.container.clientWidth;
+ const height = this.container.clientHeight;
+ const containerLeft = this.container.scrollLeft;
+ const containerRight = containerLeft + this.container.clientWidth;
+ const containerTop = this.container.scrollTop;
+ const containerBottom = containerTop + height;
+
+ if (horizontal === "right") {
+ if (cellRight > containerRight) {
+ this.container.scrollLeft = Math.max(0, cellRight - width);
+ }
+ } else {
+ if (cellLeft < containerLeft) {
+ this.container.scrollLeft = cellLeft;
+ }
+ }
+
+ if (vertical === "bottom") {
+ if (cellBottom > containerBottom) {
+ this.container.scrollTop = Math.max(0, cellBottom - height);
+ }
+ } else {
+ if (cellTop - 38 < containerTop) {
+ this.container.scrollTop = Math.max(0, cellTop - 38);
+ }
+ }
+ }
+ }
+
+ // ------------------------------------------------
+ // Handle select row logic
+ // ------------------------------------------------
+ clearSelect() {
+ this.selectedRows.clear();
+ this.broadcastChange();
+ }
+
+ getSelectedRowCount() {
+ return this.selectedRows.size;
+ }
+
+ getSelectedRowsArray(): unknown[][] {
+ return selectArrayFromIndexList(this.data, this.getSelectedRowIndex()).map(
+ (row) => this.headers.map((header) => row.raw[header.name])
+ );
+ }
+
+ getSelectedRowIndex() {
+ return Array.from(this.selectedRows.values());
+ }
+
+ selectRow(y: number, toggle?: boolean) {
+ if (toggle) {
+ if (this.selectedRows.has(y)) {
+ this.selectedRows.delete(y);
+ } else {
+ this.selectedRows.add(y);
+ }
+ } else {
+ this.selectedRows.add(y);
+ }
+ this.broadcastChange();
+ }
+
+ selectRange(y1: number, y2: number) {
+ const maxY = Math.max(y1, y2);
+ const minY = Math.min(y1, y2);
+
+ this.selectedRows.clear();
+ for (let i = minY; i <= maxY; i++) {
+ this.selectedRows.add(i);
+ }
+
+ this.broadcastChange();
+ }
+
+ isRowSelected(y: number) {
+ return this.selectedRows.has(y);
+ }
+}
diff --git a/src/components/table-optimized/TableFakeBodyPadding.tsx b/gui/src/components/table-optimized/TableFakeBodyPadding.tsx
similarity index 95%
rename from src/components/table-optimized/TableFakeBodyPadding.tsx
rename to gui/src/components/table-optimized/TableFakeBodyPadding.tsx
index bc5163ca..380bd54d 100644
--- a/src/components/table-optimized/TableFakeBodyPadding.tsx
+++ b/gui/src/components/table-optimized/TableFakeBodyPadding.tsx
@@ -1,4 +1,4 @@
-import { PropsWithChildren } from 'react';
+import { PropsWithChildren } from "react";
export default function TableFakeBodyPadding({
children,
diff --git a/src/components/table-optimized/TableFakeRowPadding.tsx b/gui/src/components/table-optimized/TableFakeRowPadding.tsx
similarity index 100%
rename from src/components/table-optimized/TableFakeRowPadding.tsx
rename to gui/src/components/table-optimized/TableFakeRowPadding.tsx
diff --git a/src/components/table-optimized/TableHeader.tsx b/gui/src/components/table-optimized/TableHeader.tsx
similarity index 79%
rename from src/components/table-optimized/TableHeader.tsx
rename to gui/src/components/table-optimized/TableHeader.tsx
index c292f01b..4871ac64 100644
--- a/src/components/table-optimized/TableHeader.tsx
+++ b/gui/src/components/table-optimized/TableHeader.tsx
@@ -1,8 +1,7 @@
-import React, { ReactElement } from "react";
-import { OptimizeTableHeaderWithIndexProps } from ".";
+import React, { type ReactElement } from "react";
+import type { OptimizeTableHeaderWithIndexProps } from ".";
import TableHeaderResizeHandler from "./TableHeaderResizeHandler";
-import styles from "./styles.module.css";
-import { cn } from "@/lib/utils";
+import { cn } from "./../../lib/utils";
export default function TableHeader({
idx,
@@ -23,7 +22,7 @@ export default function TableHeader({
) => ReactElement;
}) {
const className = cn(
- sticky ? styles.stickyColumn : undefined,
+ sticky ? "sticky left-0 z-20" : undefined,
"dark:bg-gray-900 bg-gray-100"
);
diff --git a/src/components/table-optimized/TableHeaderList.tsx b/gui/src/components/table-optimized/TableHeaderList.tsx
similarity index 100%
rename from src/components/table-optimized/TableHeaderList.tsx
rename to gui/src/components/table-optimized/TableHeaderList.tsx
diff --git a/src/components/table-optimized/TableHeaderResizeHandler.tsx b/gui/src/components/table-optimized/TableHeaderResizeHandler.tsx
similarity index 97%
rename from src/components/table-optimized/TableHeaderResizeHandler.tsx
rename to gui/src/components/table-optimized/TableHeaderResizeHandler.tsx
index 6e434ae7..918c9fb1 100644
--- a/src/components/table-optimized/TableHeaderResizeHandler.tsx
+++ b/gui/src/components/table-optimized/TableHeaderResizeHandler.tsx
@@ -1,5 +1,4 @@
import { useRef, useState, useEffect } from "react";
-import styles from "./styles.module.css";
export default function TableHeaderResizeHandler({
idx,
@@ -89,7 +88,7 @@ export default function TableHeaderResizeHandler({
return (
setResizing(true)}
>
diff --git a/src/components/table-optimized/helper.ts b/gui/src/components/table-optimized/helper.ts
similarity index 96%
rename from src/components/table-optimized/helper.ts
rename to gui/src/components/table-optimized/helper.ts
index fd9391dc..d68fd4ed 100644
--- a/src/components/table-optimized/helper.ts
+++ b/gui/src/components/table-optimized/helper.ts
@@ -38,7 +38,7 @@ export function getVisibleCellRange(
currentColStart = i - 1;
}
- currentColAccumulateSize += headerSizes[i];
+ currentColAccumulateSize += headerSizes[i] ?? 0;
if (currentColAccumulateSize >= visibleXEnd && currentColEnd < 0) {
currentColEnd = i;
diff --git a/src/components/table-optimized/index.tsx b/gui/src/components/table-optimized/index.tsx
similarity index 87%
rename from src/components/table-optimized/index.tsx
rename to gui/src/components/table-optimized/index.tsx
index 7a0a1fda..4f1a2495 100644
--- a/src/components/table-optimized/index.tsx
+++ b/gui/src/components/table-optimized/index.tsx
@@ -1,4 +1,5 @@
"use client";
+
import React, {
useState,
ReactElement,
@@ -7,14 +8,13 @@ import React, {
useCallback,
useEffect,
} from "react";
-import styles from "./styles.module.css";
import useTableVisibilityRecalculation from "./useTableVisibilityRecalculation";
import TableFakeBodyPadding from "./TableFakeBodyPadding";
import TableFakeRowPadding from "./TableFakeRowPadding";
import TableHeaderList from "./TableHeaderList";
import OptimizeTableState from "./OptimizeTableState";
-import { TableColumnDataType } from "@/drivers/base-driver";
-import { cn } from "@/lib/utils";
+import { TableColumnDataType } from "@gui/drivers/base-driver";
+import { cn } from "@gui/lib/utils";
export interface OptimizeTableHeaderProps {
name: string;
@@ -129,14 +129,19 @@ function renderCellList({
onHeaderContextMenu,
}: RenderCellListProps) {
const headerSizes = internalState.getHeaderWidth();
- const headersWithIndex = headerIndex.map((idx) => headers[idx]);
+ const headersWithIndex = headerIndex.map(
+ (idx) => headers[idx]
+ ) as OptimizeTableHeaderWithIndexProps[];
const templateSizes = headersWithIndex
.map((header) => headerSizes[header.index] + "px")
.join(" ");
const onHeaderSizeWithRemap = (idx: number, newWidth: number) => {
- onHeaderResize(headerSizes[headersWithIndex[idx].index], newWidth);
+ onHeaderResize(
+ headerSizes[headersWithIndex[idx]?.index ?? 0] ?? 150,
+ newWidth
+ );
};
const handleCellClicked = (y: number, x: number) => {
@@ -154,6 +159,7 @@ function renderCellList({
const windowArray = new Array(rowEnd - rowStart)
.fill(false)
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
.map(() => new Array(headers.length).fill(false));
const cells = windowArray.map((row, rowIndex) => {
@@ -162,11 +168,11 @@ function renderCellList({
let rowClass = undefined;
if (internalState.isRemovedRow(absoluteRowIndex)) {
- rowClass = styles.removedRow;
+ rowClass = "libsql-removed-row";
} else if (internalState.isNewRow(absoluteRowIndex)) {
- rowClass = styles.newRow;
+ rowClass = "libsql-new-row";
} else if (internalState.isRowSelected(absoluteRowIndex)) {
- rowClass = styles.selectedRow;
+ rowClass = "libsql-selected-row";
}
return (
@@ -177,19 +183,22 @@ function renderCellList({
>
{hasSticky && (
-
- {renderCell({
- y: absoluteRowIndex,
- x: headersWithIndex[0].index,
- state: internalState,
- header: headers[headersWithIndex[0].index],
- })}
+
+ {headersWithIndex[0] &&
+ renderCell({
+ y: absoluteRowIndex,
+ x: headersWithIndex[0].index,
+ state: internalState,
+ header: headers[
+ headersWithIndex[0].index
+ ] as OptimizeTableHeaderWithIndexProps,
+ })}
|
)}
@@ -203,6 +212,7 @@ function renderCellList({
const actualIndex = cellIndex + colStart;
const header = headersWithIndex[actualIndex];
+ if (!header) return null;
if (header.sticky) return null;
return (
@@ -210,12 +220,14 @@ function renderCellList({
key={actualIndex}
onMouseDown={handleCellClicked(absoluteRowIndex, header.index)}
>
-
+
{renderCell({
y: absoluteRowIndex,
x: header.index,
state: internalState,
- header: headers[header.index],
+ header: headers[
+ header.index
+ ] as OptimizeTableHeaderWithIndexProps,
})}
@@ -346,7 +358,7 @@ export default function OptimizeTable({
style={{
outline: "none",
}}
- className={styles.tableContainer}
+ className={"libsql-table"}
onContextMenu={(e) => {
if (onContextMenu) onContextMenu({ state: internalState, event: e });
e.preventDefault();
diff --git a/src/components/table-optimized/useTableVisibilityRecalculation.ts b/gui/src/components/table-optimized/useTableVisibilityRecalculation.ts
similarity index 93%
rename from src/components/table-optimized/useTableVisibilityRecalculation.ts
rename to gui/src/components/table-optimized/useTableVisibilityRecalculation.ts
index bf4656b9..f82c7476 100644
--- a/src/components/table-optimized/useTableVisibilityRecalculation.ts
+++ b/gui/src/components/table-optimized/useTableVisibilityRecalculation.ts
@@ -1,7 +1,7 @@
import { useCallback, useEffect, useState } from "react";
import { getVisibleCellRange } from "./helper";
import { OptimizeTableHeaderWithIndexProps } from ".";
-import useElementResize from "@/hooks/useElementResize";
+import useElementResize from "@gui/hooks/useElementResize";
import OptimizeTableState from "./OptimizeTableState";
export default function useTableVisibilityRecalculation({
@@ -37,7 +37,7 @@ export default function useTableVisibilityRecalculation({
setVisibleDebounce(
getVisibleCellRange(
e,
- headers.map((header) => headerSizes[header.index]),
+ headers.map((header) => headerSizes[header.index]) as number[],
totalRowCount,
rowHeight,
renderAhead
diff --git a/src/components/tabs/query-tab.tsx b/gui/src/components/tabs/query-tab.tsx
similarity index 81%
rename from src/components/tabs/query-tab.tsx
rename to gui/src/components/tabs/query-tab.tsx
index b3679122..536e9431 100644
--- a/src/components/tabs/query-tab.tsx
+++ b/gui/src/components/tabs/query-tab.tsx
@@ -1,129 +1,129 @@
-import { useRef, useState } from "react";
-import { identify } from "sql-query-identifier";
-import { LucidePlay } from "lucide-react";
-import SqlEditor from "@/components/sql-editor";
-import {
- ResizablePanelGroup,
- ResizablePanel,
- ResizableHandle,
-} from "@/components/ui/resizable";
-import { Separator } from "@/components/ui/separator";
-import { Button } from "@/components/ui/button";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import ResultTable from "@/components/query-result-table";
-import { useAutoComplete } from "@/context/AutoCompleteProvider";
-import { MultipleQueryProgress, multipleQuery } from "@/lib/multiple-query";
-import QueryProgressLog from "../query-progress-log";
-import OptimizeTableState from "../table-optimized/OptimizeTableState";
-import { KEY_BINDING } from "@/lib/key-matcher";
-import { ReactCodeMirrorRef } from "@uiw/react-codemirror";
-import { selectStatementFromPosition } from "@/lib/sql-helper";
-
-export default function QueryWindow() {
- const { schema } = useAutoComplete();
- const { databaseDriver } = useDatabaseDriver();
- const [code, setCode] = useState("");
- const [data, setData] = useState
();
- const [progress, setProgress] = useState();
- const editorRef = useRef(null);
- const [lineNumber, setLineNumber] = useState(0);
- const [columnNumber, setColumnNumber] = useState(0);
-
- const onRunClicked = (all = false) => {
- const statements = identify(code, {
- dialect: "sqlite",
- strict: false,
- });
-
- let finalStatements: string[] = [];
-
- const editor = editorRef.current;
-
- if (all) {
- finalStatements = statements.map((s) => s.text);
- } else if (editor && editor.view) {
- const position = editor.view.state.selection.main.head;
- const statement = selectStatementFromPosition(statements, position);
-
- if (statement) {
- finalStatements = [statement.text];
- }
- }
-
- if (finalStatements.length > 0) {
- // Reset the result and make a new query
- setData(undefined);
- setProgress(undefined);
-
- multipleQuery(databaseDriver, finalStatements, (currentProgrss) => {
- setProgress(currentProgrss);
- })
- .then(({ last }) => {
- if (last) {
- const state = OptimizeTableState.createFromResult(last);
- state.setReadOnlyMode(true);
- setData(state);
- }
- })
- .catch(console.error);
- }
- };
-
- return (
-
-
-
-
- {
- setLineNumber(line);
- setColumnNumber(col);
- }}
- onKeyDown={(e) => {
- if (KEY_BINDING.run.match(e)) {
- onRunClicked();
- e.preventDefault();
- }
- }}
- />
-
-
-
-
-
onRunClicked()}>
-
- Run Current{" "}
-
- {KEY_BINDING.run.toString()}
-
-
-
-
onRunClicked(true)}>
-
- Run All
-
-
-
-
Ln {lineNumber}
-
Col {columnNumber + 1}
-
-
-
-
-
-
-
- {data && }
- {!data && progress && (
-
-
-
- )}
-
-
- );
-}
+import { useRef, useState } from "react";
+import { identify } from "sql-query-identifier";
+import { LucidePlay } from "lucide-react";
+import SqlEditor from "@gui/components/sql-editor";
+import {
+ ResizablePanelGroup,
+ ResizablePanel,
+ ResizableHandle,
+} from "@gui/components/ui/resizable";
+import { Separator } from "@gui/components/ui/separator";
+import { Button } from "@gui/components/ui/button";
+import ResultTable from "@gui/components/query-result-table";
+import { KEY_BINDING } from "@gui/lib/key-matcher";
+import { ReactCodeMirrorRef } from "@uiw/react-codemirror";
+import { selectStatementFromPosition } from "@gui/sqlite/sql-helper";
+import QueryProgressLog from "../query-progress-log";
+import { useAutoComplete } from "@gui/contexts/auto-complete-provider";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+import OptimizeTableState from "../table-optimized/OptimizeTableState";
+import { MultipleQueryProgress, multipleQuery } from "@gui/lib/multiple-query";
+
+export default function QueryWindow() {
+ const { schema } = useAutoComplete();
+ const { databaseDriver } = useDatabaseDriver();
+ const [code, setCode] = useState("");
+ const [data, setData] = useState();
+ const [progress, setProgress] = useState();
+ const editorRef = useRef(null);
+ const [lineNumber, setLineNumber] = useState(0);
+ const [columnNumber, setColumnNumber] = useState(0);
+
+ const onRunClicked = (all = false) => {
+ const statements = identify(code, {
+ dialect: "sqlite",
+ strict: false,
+ });
+
+ let finalStatements: string[] = [];
+
+ const editor = editorRef.current;
+
+ if (all) {
+ finalStatements = statements.map((s) => s.text);
+ } else if (editor?.view) {
+ const position = editor.view.state.selection.main.head;
+ const statement = selectStatementFromPosition(statements, position);
+
+ if (statement) {
+ finalStatements = [statement.text];
+ }
+ }
+
+ if (finalStatements.length > 0) {
+ // Reset the result and make a new query
+ setData(undefined);
+ setProgress(undefined);
+
+ multipleQuery(databaseDriver, finalStatements, (currentProgrss) => {
+ setProgress(currentProgrss);
+ })
+ .then(({ last }) => {
+ if (last) {
+ const state = OptimizeTableState.createFromResult(last);
+ state.setReadOnlyMode(true);
+ setData(state);
+ }
+ })
+ .catch(console.error);
+ }
+ };
+
+ return (
+
+
+
+
+ {
+ setLineNumber(line);
+ setColumnNumber(col);
+ }}
+ onKeyDown={(e) => {
+ if (KEY_BINDING.run.match(e)) {
+ onRunClicked();
+ e.preventDefault();
+ }
+ }}
+ />
+
+
+
+
+
onRunClicked()}>
+
+ Run Current{" "}
+
+ {KEY_BINDING.run.toString()}
+
+
+
+
onRunClicked(true)}>
+
+ Run All
+
+
+
+
Ln {lineNumber}
+
Col {columnNumber + 1}
+
+
+
+
+
+
+
+ {data && }
+ {!data && progress && (
+
+
+
+ )}
+
+
+ );
+}
diff --git a/src/components/tabs/schema-editor-tab.tsx b/gui/src/components/tabs/schema-editor-tab.tsx
similarity index 85%
rename from src/components/tabs/schema-editor-tab.tsx
rename to gui/src/components/tabs/schema-editor-tab.tsx
index 9e787bac..30c4ca5c 100644
--- a/src/components/tabs/schema-editor-tab.tsx
+++ b/gui/src/components/tabs/schema-editor-tab.tsx
@@ -1,189 +1,189 @@
-import OpacityLoading from "@/components/loading-opacity";
-import { useTabsContext } from "@/components/windows-tab";
-import SqlEditor from "@/components/sql-editor";
-import SchemaEditor, {
- DatabaseTableSchemaChange,
-} from "@/components/schema-editor";
-import {
- AlertDialog,
- AlertDialogCancel,
- AlertDialogContent,
- AlertDialogFooter,
-} from "@/components/ui/alert-dialog";
-import { Button } from "@/components/ui/button";
-import {
- ResizableHandle,
- ResizablePanel,
- ResizablePanelGroup,
-} from "@/components/ui/resizable";
-import { Separator } from "@/components/ui/separator";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import generateSqlSchemaChange from "@/lib/sql-generate.schema";
-import { LucideLoader, LucideSave, LucideTableProperties } from "lucide-react";
-import { useCallback, useEffect, useMemo, useState } from "react";
-import { useSchema } from "../../context/SchemaProvider";
-import CodePreview from "../code-preview";
-
-interface SchemaEditorTabProps {
- tableName?: string;
-}
-
-const EMPTY_SCHEMA: DatabaseTableSchemaChange = {
- name: {
- old: "",
- new: "",
- },
- columns: [],
- createScript: "",
-};
-
-export default function SchemaEditorTab({
- tableName,
-}: Readonly) {
- const { databaseDriver } = useDatabaseDriver();
- const { refresh: refreshSchema } = useSchema();
- const [schema, setSchema] = useState(EMPTY_SCHEMA);
- const [loading, setLoading] = useState(!!tableName);
- const [isSaving, setIsSaving] = useState(false);
- const [isExecuting, setIsExecuting] = useState(false);
- const { replaceCurrentTab } = useTabsContext();
-
- const fetchTable = useCallback(
- async (name: string) => {
- databaseDriver
- .tableSchema(name)
- .then((schema) => {
- setSchema({
- name: {
- old: schema.tableName,
- new: schema.tableName,
- },
- columns: schema.columns.map((col) => ({
- old: col,
- new: structuredClone(col),
- })),
- constraints: (schema.constraints ?? []).map((con) => ({
- old: con,
- new: structuredClone(con),
- })),
- createScript: schema.createScript,
- });
- })
- .catch(console.error)
- .finally(() => setLoading(false));
- },
- [databaseDriver, setSchema]
- );
-
- useEffect(() => {
- if (tableName) {
- fetchTable(tableName).then().catch(console.error);
- }
- }, [fetchTable, tableName]);
-
- const previewScript = useMemo(() => {
- return generateSqlSchemaChange(schema);
- }, [schema]);
-
- const onSaveToggle = useCallback(
- () => setIsSaving((prev) => !prev),
- [setIsSaving]
- );
-
- const onSave = useCallback(() => {
- setIsExecuting(true);
- databaseDriver
- .transaction(previewScript)
- .then(() => {
- if (schema.name.new !== schema.name.old) {
- refreshSchema();
- replaceCurrentTab({
- component: ,
- key: "_schema_" + schema.name.new,
- title: "Edit " + schema.name.new,
- icon: LucideTableProperties,
- });
- } else if (schema.name.old) {
- fetchTable(schema.name?.new || schema.name?.old || "").then(() =>
- setIsSaving(false)
- );
- }
- })
- .catch((err) => alert((err as Error).message))
- .finally(() => {
- setIsExecuting(false);
- });
- }, [
- databaseDriver,
- schema,
- fetchTable,
- previewScript,
- replaceCurrentTab,
- refreshSchema,
- ]);
-
- const onDiscard = useCallback(() => {
- setSchema((prev) => {
- return {
- name: { ...prev.name, new: prev.name.old },
- columns: prev.columns
- .map((col) => ({
- old: col.old,
- new: structuredClone(col.old),
- }))
- .filter((col) => col.old),
- };
- });
- }, [setSchema]);
-
- if (loading) {
- return (
-
-
-
- );
- }
-
- return (
- <>
-
-
- Are you sure you want to run this change?
-
-
- Cancel
-
- {isExecuting ? (
-
- ) : (
-
- )}
- Continue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- );
-}
+import OpacityLoading from "@gui/components/loading-opacity";
+import { useTabsContext } from "@gui/components/windows-tab";
+import SqlEditor from "@gui/components/sql-editor";
+import SchemaEditor, {
+ DatabaseTableSchemaChange,
+} from "@gui/components/schema-editor";
+import {
+ AlertDialog,
+ AlertDialogCancel,
+ AlertDialogContent,
+ AlertDialogFooter,
+} from "@gui/components/ui/alert-dialog";
+import { Button } from "@gui/components/ui/button";
+import {
+ ResizableHandle,
+ ResizablePanel,
+ ResizablePanelGroup,
+} from "@gui/components/ui/resizable";
+import { Separator } from "@gui/components/ui/separator";
+import generateSqlSchemaChange from "@gui/lib/sql-generate.schema";
+import { LucideLoader, LucideSave, LucideTableProperties } from "lucide-react";
+import { useCallback, useEffect, useMemo, useState } from "react";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+import CodePreview from "../code-preview";
+import { useSchema } from "@gui/contexts/schema-provider";
+
+interface SchemaEditorTabProps {
+ tableName?: string;
+}
+
+const EMPTY_SCHEMA: DatabaseTableSchemaChange = {
+ name: {
+ old: "",
+ new: "",
+ },
+ columns: [],
+ createScript: "",
+};
+
+export default function SchemaEditorTab({
+ tableName,
+}: Readonly) {
+ const { databaseDriver } = useDatabaseDriver();
+ const { refresh: refreshSchema } = useSchema();
+ const [schema, setSchema] = useState(EMPTY_SCHEMA);
+ const [loading, setLoading] = useState(!!tableName);
+ const [isSaving, setIsSaving] = useState(false);
+ const [isExecuting, setIsExecuting] = useState(false);
+ const { replaceCurrentTab } = useTabsContext();
+
+ const fetchTable = useCallback(
+ async (name: string) => {
+ databaseDriver
+ .tableSchema(name)
+ .then((schema) => {
+ setSchema({
+ name: {
+ old: schema.tableName,
+ new: schema.tableName,
+ },
+ columns: schema.columns.map((col) => ({
+ old: col,
+ new: structuredClone(col),
+ })),
+ constraints: (schema.constraints ?? []).map((con) => ({
+ old: con,
+ new: structuredClone(con),
+ })),
+ createScript: schema.createScript,
+ });
+ })
+ .catch(console.error)
+ .finally(() => setLoading(false));
+ },
+ [databaseDriver, setSchema]
+ );
+
+ useEffect(() => {
+ if (tableName) {
+ fetchTable(tableName).then().catch(console.error);
+ }
+ }, [fetchTable, tableName]);
+
+ const previewScript = useMemo(() => {
+ return generateSqlSchemaChange(schema);
+ }, [schema]);
+
+ const onSaveToggle = useCallback(
+ () => setIsSaving((prev) => !prev),
+ [setIsSaving]
+ );
+
+ const onSave = useCallback(() => {
+ setIsExecuting(true);
+ databaseDriver
+ .transaction(previewScript)
+ .then(() => {
+ if (schema.name.new !== schema.name.old) {
+ refreshSchema();
+ replaceCurrentTab({
+ component: ,
+ key: "_schema_" + schema.name.new,
+ title: "Edit " + schema.name.new,
+ icon: LucideTableProperties,
+ });
+ } else if (schema.name.old) {
+ fetchTable(schema.name?.new || schema.name?.old || "").then(() =>
+ setIsSaving(false)
+ );
+ }
+ })
+ .catch((err) => alert((err as Error).message))
+ .finally(() => {
+ setIsExecuting(false);
+ });
+ }, [
+ databaseDriver,
+ schema,
+ fetchTable,
+ previewScript,
+ replaceCurrentTab,
+ refreshSchema,
+ ]);
+
+ const onDiscard = useCallback(() => {
+ setSchema((prev) => {
+ return {
+ name: { ...prev.name, new: prev.name.old },
+ columns: prev.columns
+ .map((col) => ({
+ old: col.old,
+ new: structuredClone(col.old),
+ }))
+ .filter((col) => col.old),
+ };
+ });
+ }, [setSchema]);
+
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+ <>
+
+
+ Are you sure you want to run this change?
+
+
+ Cancel
+
+ {isExecuting ? (
+
+ ) : (
+
+ )}
+ Continue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/components/tabs/table-data-tab.tsx b/gui/src/components/tabs/table-data-tab.tsx
similarity index 90%
rename from src/components/tabs/table-data-tab.tsx
rename to gui/src/components/tabs/table-data-tab.tsx
index 9af4f3d8..08846c99 100644
--- a/src/components/tabs/table-data-tab.tsx
+++ b/gui/src/components/tabs/table-data-tab.tsx
@@ -1,328 +1,331 @@
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import { useCallback, useEffect, useState } from "react";
-import ResultTable from "@/components/query-result-table";
-import { Button } from "@/components/ui/button";
-import {
- LucideArrowLeft,
- LucideArrowRight,
- LucideDelete,
- LucideFilter,
- LucideLoader,
- LucidePlus,
- LucideRefreshCcw,
- LucideSaveAll,
-} from "lucide-react";
-import { Separator } from "@/components/ui/separator";
-import {
- Tooltip,
- TooltipContent,
- TooltipTrigger,
-} from "@/components/ui/tooltip";
-import { useAutoComplete } from "@/context/AutoCompleteProvider";
-import OpacityLoading from "../loading-opacity";
-import OptimizeTableState from "../table-optimized/OptimizeTableState";
-import { commitChange } from "@/lib/sql-execute-helper";
-import {
- AlertDialog,
- AlertDialogAction,
- AlertDialogContent,
- AlertDialogDescription,
- AlertDialogFooter,
-} from "../ui/alert-dialog";
-import { ColumnSortOption, DatabaseTableSchema } from "@/drivers/base-driver";
-
-interface TableDataContentProps {
- tableName: string;
-}
-
-export default function TableDataWindow({ tableName }: TableDataContentProps) {
- const { updateTableSchema } = useAutoComplete();
- const { databaseDriver } = useDatabaseDriver();
- const [error, setError] = useState();
- const [executeError, setExecuteError] = useState(null);
-
- const [loading, setLoading] = useState(false);
- const [data, setData] = useState();
- const [tableSchema, setTableSchema] = useState();
- const [sortColumns, setSortColumns] = useState([]);
- const [changeNumber, setChangeNumber] = useState(0);
-
- const [where, setWhere] = useState("");
- const [whereInput, setWhereInput] = useState("");
-
- const [offset, setOffset] = useState("0");
- const [limit, setLimit] = useState("50");
-
- const [finalOffset, setFinalOffset] = useState(0);
- const [finalLimit, setFinalLimit] = useState(50);
- const [isExecuting, setIsExecuting] = useState(false);
-
- const [revision, setRevision] = useState(1);
- const [lastQueryTimestamp, setLastQueryTimestamp] = useState(0);
-
- useEffect(() => {
- const fetchData = async () => {
- setLoading(true);
-
- try {
- const { data: dataResult, schema: schemaResult } =
- await databaseDriver.selectTable(tableName, {
- whereRaw: where,
- limit: finalLimit,
- offset: finalOffset,
- orderBy: sortColumns,
- });
-
- setData(OptimizeTableState.createFromResult(dataResult, schemaResult));
- setTableSchema(schemaResult);
- updateTableSchema(tableName, schemaResult.columns);
- setLastQueryTimestamp(Date.now());
- setChangeNumber(0);
- setError(undefined);
- } catch (e) {
- setError((e as Error).toString());
- } finally {
- setLoading(false);
- }
- };
-
- fetchData().then().catch(console.error);
- }, [
- databaseDriver,
- tableName,
- sortColumns,
- updateTableSchema,
- where,
- finalOffset,
- finalLimit,
- revision,
- ]);
-
- useEffect(() => {
- if (data) {
- const callback = (state: OptimizeTableState) => {
- setChangeNumber(state.getChangedRows().length);
- };
- data.addChangeListener(callback);
- return () => data.removeChangeListener(callback);
- }
- }, [data]);
-
- const onCommit = useCallback(() => {
- if (!tableSchema) return;
- if (!data) return;
-
- setIsExecuting(true);
-
- commitChange({ driver: databaseDriver, tableName, tableSchema, data })
- .then(({ errorMessage }) => {
- if (errorMessage) setExecuteError(errorMessage);
- })
- .catch(console.error)
- .finally(() => setIsExecuting(false));
- }, [databaseDriver, tableName, tableSchema, data, setExecuteError]);
-
- const onDiscard = useCallback(() => {
- if (data) {
- data.disardAllChange();
- }
- }, [data]);
-
- const onNewRow = useCallback(() => {
- if (data) {
- data.insertNewRow();
- }
- }, [data]);
-
- const onRemoveRow = useCallback(() => {
- if (data) {
- data.getSelectedRowIndex().forEach((index) => {
- data.removeRow(index);
- });
- }
- }, [data]);
-
- return (
-
- {executeError && (
-
-
- {executeError}
-
- setExecuteError(null)}>
- Continue
-
-
-
-
- )}
-
-
-
- {isExecuting ? (
-
- ) : (
-
- )}
- Commit
- {!!changeNumber && (
-
- {changeNumber}
-
- )}
-
-
-
- Discard Change
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
setRevision((prev) => prev + 1)}
- disabled={loading}
- >
-
-
-
-
-
-
-
-
-
setWhereInput(e.currentTarget.value)}
- onKeyDown={(e) => {
- if (e.key === "Enter") {
- setWhere(e.currentTarget.value);
- }
- }}
- className="bg-inherit p-1 pl-2 pr-2 outline-none text-sm font-mono h-full flex-grow"
- />
-
-
-
-
-
-
-
-
{
- setFinalOffset(finalOffset - finalLimit);
- setOffset((finalOffset - finalLimit).toString());
- }}
- >
-
-
-
-
-
-
- setLimit(e.currentTarget.value)}
- onBlur={(e) => {
- try {
- const finalValue = parseInt(e.currentTarget.value);
- if (finalValue !== finalLimit) {
- setFinalLimit(finalValue);
- }
- } catch (e) {
- setLimit(finalLimit.toString());
- }
- }}
- style={{ width: 50 }}
- className="p-1 pl-2 pr-2 bg-gray-100 dark:bg-gray-800 rounded text-xs h-full"
- alt="Limit"
- />
-
- Limit
-
-
-
-
- setOffset(e.currentTarget.value)}
- onBlur={(e) => {
- try {
- const finalValue = parseInt(e.currentTarget.value);
- if (finalValue !== finalOffset) {
- setFinalOffset(finalValue);
- }
- } catch (e) {
- setOffset(finalOffset.toString());
- }
- }}
- style={{ width: 50 }}
- className="p-1 pl-2 pr-2 bg-gray-100 dark:bg-gray-800 rounded text-xs h-full"
- alt="Offset"
- />
-
- Offset
-
-
-
-
- {
- setFinalOffset(finalOffset + finalLimit);
- setOffset((finalOffset + finalLimit).toString());
- }}
- />
-
-
-
-
-
- {loading &&
}
- {error && (
-
- )}
- {data && !error ? (
-
- ) : null}
-
-
- );
-}
+import { useCallback, useEffect, useState } from "react";
+import ResultTable from "@gui/components/query-result-table";
+import { Button } from "@gui/components/ui/button";
+import {
+ LucideArrowLeft,
+ LucideArrowRight,
+ LucideDelete,
+ LucideFilter,
+ LucideLoader,
+ LucidePlus,
+ LucideRefreshCcw,
+ LucideSaveAll,
+} from "lucide-react";
+import { Separator } from "@gui/components/ui/separator";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from "@gui/components/ui/tooltip";
+import { commitChange } from "@gui/lib/sql-execute-helper";
+import {
+ AlertDialog,
+ AlertDialogAction,
+ AlertDialogContent,
+ AlertDialogDescription,
+ AlertDialogFooter,
+} from "@gui/components/ui/alert-dialog";
+import {
+ ColumnSortOption,
+ DatabaseTableSchema,
+} from "@gui/drivers/base-driver";
+import { useAutoComplete } from "@gui/contexts/auto-complete-provider";
+import OpacityLoading from "../loading-opacity";
+import OptimizeTableState from "../table-optimized/OptimizeTableState";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+
+interface TableDataContentProps {
+ tableName: string;
+}
+
+export default function TableDataWindow({ tableName }: TableDataContentProps) {
+ const { updateTableSchema } = useAutoComplete();
+ const { databaseDriver } = useDatabaseDriver();
+ const [error, setError] = useState();
+ const [executeError, setExecuteError] = useState(null);
+
+ const [loading, setLoading] = useState(false);
+ const [data, setData] = useState();
+ const [tableSchema, setTableSchema] = useState();
+ const [sortColumns, setSortColumns] = useState([]);
+ const [changeNumber, setChangeNumber] = useState(0);
+
+ const [where, setWhere] = useState("");
+ const [whereInput, setWhereInput] = useState("");
+
+ const [offset, setOffset] = useState("0");
+ const [limit, setLimit] = useState("50");
+
+ const [finalOffset, setFinalOffset] = useState(0);
+ const [finalLimit, setFinalLimit] = useState(50);
+ const [isExecuting, setIsExecuting] = useState(false);
+
+ const [revision, setRevision] = useState(1);
+ const [lastQueryTimestamp, setLastQueryTimestamp] = useState(0);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ setLoading(true);
+
+ try {
+ const { data: dataResult, schema: schemaResult } =
+ await databaseDriver.selectTable(tableName, {
+ whereRaw: where,
+ limit: finalLimit,
+ offset: finalOffset,
+ orderBy: sortColumns,
+ });
+
+ setData(OptimizeTableState.createFromResult(dataResult, schemaResult));
+ setTableSchema(schemaResult);
+ updateTableSchema(tableName, schemaResult.columns);
+ setLastQueryTimestamp(Date.now());
+ setChangeNumber(0);
+ setError(undefined);
+ } catch (e) {
+ setError((e as Error).toString());
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchData().then().catch(console.error);
+ }, [
+ databaseDriver,
+ tableName,
+ sortColumns,
+ updateTableSchema,
+ where,
+ finalOffset,
+ finalLimit,
+ revision,
+ ]);
+
+ useEffect(() => {
+ if (data) {
+ const callback = (state: OptimizeTableState) => {
+ setChangeNumber(state.getChangedRows().length);
+ };
+ data.addChangeListener(callback);
+ return () => data.removeChangeListener(callback);
+ }
+ }, [data]);
+
+ const onCommit = useCallback(() => {
+ if (!tableSchema) return;
+ if (!data) return;
+
+ setIsExecuting(true);
+
+ commitChange({ driver: databaseDriver, tableName, tableSchema, data })
+ .then(({ errorMessage }) => {
+ if (errorMessage) setExecuteError(errorMessage);
+ })
+ .catch(console.error)
+ .finally(() => setIsExecuting(false));
+ }, [databaseDriver, tableName, tableSchema, data, setExecuteError]);
+
+ const onDiscard = useCallback(() => {
+ if (data) {
+ data.disardAllChange();
+ }
+ }, [data]);
+
+ const onNewRow = useCallback(() => {
+ if (data) {
+ data.insertNewRow();
+ }
+ }, [data]);
+
+ const onRemoveRow = useCallback(() => {
+ if (data) {
+ data.getSelectedRowIndex().forEach((index) => {
+ data.removeRow(index);
+ });
+ }
+ }, [data]);
+
+ return (
+
+ {executeError && (
+
+
+ {executeError}
+
+ setExecuteError(null)}>
+ Continue
+
+
+
+
+ )}
+
+
+
+ {isExecuting ? (
+
+ ) : (
+
+ )}
+ Commit
+ {!!changeNumber && (
+
+ {changeNumber}
+
+ )}
+
+
+
+ Discard Change
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
setRevision((prev) => prev + 1)}
+ disabled={loading}
+ >
+
+
+
+
+
+
+
+
+
setWhereInput(e.currentTarget.value)}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ setWhere(e.currentTarget.value);
+ }
+ }}
+ className="bg-inherit p-1 pl-2 pr-2 outline-none text-sm font-mono h-full grow"
+ />
+
+
+
+
+
+
+
+
{
+ setFinalOffset(finalOffset - finalLimit);
+ setOffset((finalOffset - finalLimit).toString());
+ }}
+ >
+
+
+
+
+
+
+ setLimit(e.currentTarget.value)}
+ onBlur={(e) => {
+ try {
+ const finalValue = parseInt(e.currentTarget.value);
+ if (finalValue !== finalLimit) {
+ setFinalLimit(finalValue);
+ }
+ } catch (e) {
+ setLimit(finalLimit.toString());
+ }
+ }}
+ style={{ width: 50 }}
+ className="p-1 pl-2 pr-2 bg-gray-100 dark:bg-gray-800 rounded text-xs h-full"
+ alt="Limit"
+ />
+
+ Limit
+
+
+
+
+ setOffset(e.currentTarget.value)}
+ onBlur={(e) => {
+ try {
+ const finalValue = parseInt(e.currentTarget.value);
+ if (finalValue !== finalOffset) {
+ setFinalOffset(finalValue);
+ }
+ } catch (e) {
+ setOffset(finalOffset.toString());
+ }
+ }}
+ style={{ width: 50 }}
+ className="p-1 pl-2 pr-2 bg-gray-100 dark:bg-gray-800 rounded text-xs h-full"
+ alt="Offset"
+ />
+
+ Offset
+
+
+
+
+ {
+ setFinalOffset(finalOffset + finalLimit);
+ setOffset((finalOffset + finalLimit).toString());
+ }}
+ />
+
+
+
+
+
+ {loading &&
}
+ {error && (
+
+ )}
+ {data && !error ? (
+
+ ) : null}
+
+
+ );
+}
diff --git a/src/components/tabs/trigger-tab.tsx b/gui/src/components/tabs/trigger-tab.tsx
similarity index 86%
rename from src/components/tabs/trigger-tab.tsx
rename to gui/src/components/tabs/trigger-tab.tsx
index f701e71c..4e70bb0e 100644
--- a/src/components/tabs/trigger-tab.tsx
+++ b/gui/src/components/tabs/trigger-tab.tsx
@@ -1,74 +1,75 @@
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import { DatabaseTriggerSchema } from "@/drivers/base-driver";
-import { useEffect, useState } from "react";
-import { Input } from "../ui/input";
-import SqlEditor from "../sql-editor";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-import TableCombobox from "../table-combobox/TableCombobox";
-
-export default function TriggerTab({ name }: { name: string }) {
- const { databaseDriver } = useDatabaseDriver();
- const [trigger, setTrigger] = useState();
- const [error, setError] = useState();
-
- useEffect(() => {
- databaseDriver
- .trigger(name)
- .then(setTrigger)
- .catch((e: Error) => {
- setError(e.message);
- });
- }, [databaseDriver, name]);
-
- if (error) {
- return {error}
;
- }
-
- return (
-
-
-
Trigger Name
-
-
-
-
-
-
-
-
-
-
{}} />
-
-
-
-
- );
-}
+import { DatabaseTriggerSchema } from "@gui/drivers/base-driver";
+import { useEffect, useState } from "react";
+import { Input } from "@gui/components/ui/input";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@gui/components/ui/select";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+import SqlEditor from "../sql-editor";
+import TableCombobox from "../table-combobox/TableCombobox";
+import { noop } from "@gui/lib/utils";
+
+export default function TriggerTab({ name }: { name: string }) {
+ const { databaseDriver } = useDatabaseDriver();
+ const [trigger, setTrigger] = useState();
+ const [error, setError] = useState();
+
+ useEffect(() => {
+ databaseDriver
+ .trigger(name)
+ .then(setTrigger)
+ .catch((e: Error) => {
+ setError(e.message);
+ });
+ }, [databaseDriver, name]);
+
+ if (error) {
+ return {error}
;
+ }
+
+ return (
+
+
+
Trigger Name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/tabs/users-tabs.tsx b/gui/src/components/tabs/users-tabs.tsx
similarity index 90%
rename from src/components/tabs/users-tabs.tsx
rename to gui/src/components/tabs/users-tabs.tsx
index b4d837ab..76428fc6 100644
--- a/src/components/tabs/users-tabs.tsx
+++ b/gui/src/components/tabs/users-tabs.tsx
@@ -1,156 +1,156 @@
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import { ApiRole, ApiUserRole } from "@/lib/api/api-database-response";
-import { useCallback, useEffect, useState } from "react";
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "../ui/select";
-import { Avatar, AvatarFallback } from "../ui/avatar";
-import { Input } from "../ui/input";
-import { Button } from "../ui/button";
-import { LucideTrash } from "lucide-react";
-
-function RoleSelect({
- roles,
- value,
- onChange,
-}: Readonly<{
- roles: ApiRole[];
- value?: string;
- onChange?: (value: string) => void;
-}>) {
- return (
-
- );
-}
-
-export default function UsersTab() {
- const { collaborationDriver } = useDatabaseDriver();
-
- const [roleList, setRoleList] = useState([]);
- const [userRoleList, setUserRoleList] = useState([]);
-
- const [userId, setUserId] = useState("");
- const [roleId, setRoleId] = useState();
-
- const refetch = useCallback(() => {
- if (collaborationDriver) {
- collaborationDriver.getUsers().then(setUserRoleList).catch(console.error);
- collaborationDriver.getRoles().then(setRoleList).catch(console.error);
- }
- }, [collaborationDriver]);
-
- useEffect(() => {
- refetch();
- }, [refetch]);
-
- const onAddUser = useCallback(() => {
- if (roleId && userId && collaborationDriver) {
- collaborationDriver
- .assignUser(userId, roleId)
- .then(() => {
- refetch();
- setRoleId(undefined);
- setUserId("");
- })
- .catch(console.error);
- }
- }, [userId, roleId, collaborationDriver, refetch]);
-
- const onDeleteUser = useCallback(
- (userId: string) => {
- if (collaborationDriver && userId) {
- collaborationDriver
- .deleteUser(userId)
- .then(refetch)
- .catch(console.error);
- }
- },
- [collaborationDriver, refetch]
- );
-
- const onRoleChange = useCallback(
- (userId: string, newRoleId: string) => {
- if (collaborationDriver) {
- collaborationDriver.assignUser(userId, newRoleId).then(refetch).catch();
- }
- },
- [collaborationDriver, refetch]
- );
-
- return (
-
-
{`Users & Permission`}
-
-
-
-
- setUserId(e.currentTarget.value)}
- />
-
-
-
-
-
-
- Add User
-
-
-
-
- {userRoleList.map((user) => {
- return (
-
-
-
- {user.name.substring(0, 2).toUpperCase()}
-
-
-
-
{user.name}
-
- Created by {user.assignedBy.name} on{" "}
- {new Date(user.createdAt).toDateString()}
-
-
-
- onRoleChange(user.id, newRoleId)}
- />
-
-
- onDeleteUser(user.id)}
- >
-
-
-
-
- );
- })}
-
-
- );
-}
+import { useCallback, useEffect, useState } from "react";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@gui/components/ui/select";
+import { Avatar, AvatarFallback } from "@gui/components/ui/avatar";
+import { Input } from "@gui/components/ui/input";
+import { Button } from "@gui/components/ui/button";
+import { LucideTrash } from "lucide-react";
+import { useDatabaseDriver } from "@gui/contexts/driver-provider";
+import { ApiRole, ApiUserRole } from "@gui/lib/api-database-response";
+
+function RoleSelect({
+ roles,
+ value,
+ onChange,
+}: Readonly<{
+ roles: ApiRole[];
+ value?: string;
+ onChange?: (value: string) => void;
+}>) {
+ return (
+
+ );
+}
+
+export default function UsersTab() {
+ const { collaborationDriver } = useDatabaseDriver();
+
+ const [roleList, setRoleList] = useState([]);
+ const [userRoleList, setUserRoleList] = useState([]);
+
+ const [userId, setUserId] = useState("");
+ const [roleId, setRoleId] = useState();
+
+ const refetch = useCallback(() => {
+ if (collaborationDriver) {
+ collaborationDriver.getUsers().then(setUserRoleList).catch(console.error);
+ collaborationDriver.getRoles().then(setRoleList).catch(console.error);
+ }
+ }, [collaborationDriver]);
+
+ useEffect(() => {
+ refetch();
+ }, [refetch]);
+
+ const onAddUser = useCallback(() => {
+ if (roleId && userId && collaborationDriver) {
+ collaborationDriver
+ .assignUser(userId, roleId)
+ .then(() => {
+ refetch();
+ setRoleId(undefined);
+ setUserId("");
+ })
+ .catch(console.error);
+ }
+ }, [userId, roleId, collaborationDriver, refetch]);
+
+ const onDeleteUser = useCallback(
+ (userId: string) => {
+ if (collaborationDriver && userId) {
+ collaborationDriver
+ .deleteUser(userId)
+ .then(refetch)
+ .catch(console.error);
+ }
+ },
+ [collaborationDriver, refetch]
+ );
+
+ const onRoleChange = useCallback(
+ (userId: string, newRoleId: string) => {
+ if (collaborationDriver) {
+ collaborationDriver.assignUser(userId, newRoleId).then(refetch).catch();
+ }
+ },
+ [collaborationDriver, refetch]
+ );
+
+ return (
+
+
{`Users & Permission`}
+
+
+
+
+ setUserId(e.currentTarget.value)}
+ />
+
+
+
+
+
+
+ Add User
+
+
+
+
+ {userRoleList.map((user) => {
+ return (
+
+
+
+ {user.name.substring(0, 2).toUpperCase()}
+
+
+
+
{user.name}
+
+ Created by {user.assignedBy.name} on{" "}
+ {new Date(user.createdAt).toDateString()}
+
+
+
+ onRoleChange(user.id, newRoleId)}
+ />
+
+
+ onDeleteUser(user.id)}
+ >
+
+
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/ui/alert-dialog.tsx b/gui/src/components/ui/alert-dialog.tsx
similarity index 87%
rename from src/components/ui/alert-dialog.tsx
rename to gui/src/components/ui/alert-dialog.tsx
index 57760f2e..b1d5fbcc 100644
--- a/src/components/ui/alert-dialog.tsx
+++ b/gui/src/components/ui/alert-dialog.tsx
@@ -1,16 +1,16 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"
+import * as React from "react";
+import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
-import { cn } from "@/lib/utils"
-import { buttonVariants } from "@/components/ui/button"
+import { cn } from "@gui/lib/utils";
+import { buttonVariants } from "@gui/components/ui/button";
-const AlertDialog = AlertDialogPrimitive.Root
+const AlertDialog = AlertDialogPrimitive.Root;
-const AlertDialogTrigger = AlertDialogPrimitive.Trigger
+const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
-const AlertDialogPortal = AlertDialogPrimitive.Portal
+const AlertDialogPortal = AlertDialogPrimitive.Portal;
const AlertDialogOverlay = React.forwardRef<
React.ElementRef,
@@ -24,8 +24,8 @@ const AlertDialogOverlay = React.forwardRef<
{...props}
ref={ref}
/>
-))
-AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName
+));
+AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
const AlertDialogContent = React.forwardRef<
React.ElementRef,
@@ -42,8 +42,8 @@ const AlertDialogContent = React.forwardRef<
{...props}
/>
-))
-AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName
+));
+AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
const AlertDialogHeader = ({
className,
@@ -56,8 +56,8 @@ const AlertDialogHeader = ({
)}
{...props}
/>
-)
-AlertDialogHeader.displayName = "AlertDialogHeader"
+);
+AlertDialogHeader.displayName = "AlertDialogHeader";
const AlertDialogFooter = ({
className,
@@ -70,8 +70,8 @@ const AlertDialogFooter = ({
)}
{...props}
/>
-)
-AlertDialogFooter.displayName = "AlertDialogFooter"
+);
+AlertDialogFooter.displayName = "AlertDialogFooter";
const AlertDialogTitle = React.forwardRef<
React.ElementRef,
@@ -82,8 +82,8 @@ const AlertDialogTitle = React.forwardRef<
className={cn("text-lg font-semibold", className)}
{...props}
/>
-))
-AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName
+));
+AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
const AlertDialogDescription = React.forwardRef<
React.ElementRef,
@@ -94,9 +94,9 @@ const AlertDialogDescription = React.forwardRef<
className={cn("text-sm text-muted-foreground", className)}
{...props}
/>
-))
+));
AlertDialogDescription.displayName =
- AlertDialogPrimitive.Description.displayName
+ AlertDialogPrimitive.Description.displayName;
const AlertDialogAction = React.forwardRef<
React.ElementRef,
@@ -107,8 +107,8 @@ const AlertDialogAction = React.forwardRef<
className={cn(buttonVariants(), className)}
{...props}
/>
-))
-AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName
+));
+AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
const AlertDialogCancel = React.forwardRef<
React.ElementRef,
@@ -123,8 +123,8 @@ const AlertDialogCancel = React.forwardRef<
)}
{...props}
/>
-))
-AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName
+));
+AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
export {
AlertDialog,
@@ -138,4 +138,4 @@ export {
AlertDialogDescription,
AlertDialogAction,
AlertDialogCancel,
-}
+};
diff --git a/src/components/ui/avatar.tsx b/gui/src/components/ui/avatar.tsx
similarity index 77%
rename from src/components/ui/avatar.tsx
rename to gui/src/components/ui/avatar.tsx
index 51e507ba..55e309a7 100644
--- a/src/components/ui/avatar.tsx
+++ b/gui/src/components/ui/avatar.tsx
@@ -1,9 +1,9 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as AvatarPrimitive from "@radix-ui/react-avatar"
+import * as React from "react";
+import * as AvatarPrimitive from "@radix-ui/react-avatar";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const Avatar = React.forwardRef<
React.ElementRef,
@@ -17,8 +17,8 @@ const Avatar = React.forwardRef<
)}
{...props}
/>
-))
-Avatar.displayName = AvatarPrimitive.Root.displayName
+));
+Avatar.displayName = AvatarPrimitive.Root.displayName;
const AvatarImage = React.forwardRef<
React.ElementRef,
@@ -29,8 +29,8 @@ const AvatarImage = React.forwardRef<
className={cn("aspect-square h-full w-full", className)}
{...props}
/>
-))
-AvatarImage.displayName = AvatarPrimitive.Image.displayName
+));
+AvatarImage.displayName = AvatarPrimitive.Image.displayName;
const AvatarFallback = React.forwardRef<
React.ElementRef,
@@ -44,7 +44,7 @@ const AvatarFallback = React.forwardRef<
)}
{...props}
/>
-))
-AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName
+));
+AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
-export { Avatar, AvatarImage, AvatarFallback }
+export { Avatar, AvatarImage, AvatarFallback };
diff --git a/src/components/ui/button.tsx b/gui/src/components/ui/button.tsx
similarity index 85%
rename from src/components/ui/button.tsx
rename to gui/src/components/ui/button.tsx
index 0270f644..ff374bf1 100644
--- a/src/components/ui/button.tsx
+++ b/gui/src/components/ui/button.tsx
@@ -1,8 +1,8 @@
-import * as React from "react"
-import { Slot } from "@radix-ui/react-slot"
-import { cva, type VariantProps } from "class-variance-authority"
+import * as React from "react";
+import { Slot } from "@radix-ui/react-slot";
+import { cva, type VariantProps } from "class-variance-authority";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const buttonVariants = cva(
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
@@ -32,26 +32,26 @@ const buttonVariants = cva(
size: "default",
},
}
-)
+);
export interface ButtonProps
extends React.ButtonHTMLAttributes,
VariantProps {
- asChild?: boolean
+ asChild?: boolean;
}
const Button = React.forwardRef(
({ className, variant, size, asChild = false, ...props }, ref) => {
- const Comp = asChild ? Slot : "button"
+ const Comp = asChild ? Slot : "button";
return (
- )
+ );
}
-)
-Button.displayName = "Button"
+);
+Button.displayName = "Button";
-export { Button, buttonVariants }
+export { Button, buttonVariants };
diff --git a/src/components/ui/card.tsx b/gui/src/components/ui/card.tsx
similarity index 77%
rename from src/components/ui/card.tsx
rename to gui/src/components/ui/card.tsx
index 77e9fb78..5be8f509 100644
--- a/src/components/ui/card.tsx
+++ b/gui/src/components/ui/card.tsx
@@ -1,6 +1,6 @@
-import * as React from "react"
+import * as React from "react";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const Card = React.forwardRef<
HTMLDivElement,
@@ -14,8 +14,8 @@ const Card = React.forwardRef<
)}
{...props}
/>
-))
-Card.displayName = "Card"
+));
+Card.displayName = "Card";
const CardHeader = React.forwardRef<
HTMLDivElement,
@@ -26,8 +26,8 @@ const CardHeader = React.forwardRef<
className={cn("flex flex-col space-y-1.5 p-6", className)}
{...props}
/>
-))
-CardHeader.displayName = "CardHeader"
+));
+CardHeader.displayName = "CardHeader";
const CardTitle = React.forwardRef<
HTMLParagraphElement,
@@ -38,8 +38,8 @@ const CardTitle = React.forwardRef<
className={cn("font-semibold leading-none tracking-tight", className)}
{...props}
/>
-))
-CardTitle.displayName = "CardTitle"
+));
+CardTitle.displayName = "CardTitle";
const CardDescription = React.forwardRef<
HTMLParagraphElement,
@@ -50,16 +50,16 @@ const CardDescription = React.forwardRef<
className={cn("text-sm text-muted-foreground", className)}
{...props}
/>
-))
-CardDescription.displayName = "CardDescription"
+));
+CardDescription.displayName = "CardDescription";
const CardContent = React.forwardRef<
HTMLDivElement,
React.HTMLAttributes
>(({ className, ...props }, ref) => (
-))
-CardContent.displayName = "CardContent"
+));
+CardContent.displayName = "CardContent";
const CardFooter = React.forwardRef<
HTMLDivElement,
@@ -70,7 +70,14 @@ const CardFooter = React.forwardRef<
className={cn("flex items-center p-6 pt-0", className)}
{...props}
/>
-))
-CardFooter.displayName = "CardFooter"
+));
+CardFooter.displayName = "CardFooter";
-export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
+export {
+ Card,
+ CardHeader,
+ CardFooter,
+ CardTitle,
+ CardDescription,
+ CardContent,
+};
diff --git a/src/components/ui/checkbox.tsx b/gui/src/components/ui/checkbox.tsx
similarity index 73%
rename from src/components/ui/checkbox.tsx
rename to gui/src/components/ui/checkbox.tsx
index 7d2b3c3b..a36398dc 100644
--- a/src/components/ui/checkbox.tsx
+++ b/gui/src/components/ui/checkbox.tsx
@@ -1,10 +1,10 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
-import { CheckIcon } from "@radix-ui/react-icons"
+import * as React from "react";
+import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
+import { CheckIcon } from "@radix-ui/react-icons";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const Checkbox = React.forwardRef<
React.ElementRef,
@@ -24,7 +24,7 @@ const Checkbox = React.forwardRef<
-))
-Checkbox.displayName = CheckboxPrimitive.Root.displayName
+));
+Checkbox.displayName = CheckboxPrimitive.Root.displayName;
-export { Checkbox }
+export { Checkbox };
diff --git a/gui/src/components/ui/command.tsx b/gui/src/components/ui/command.tsx
new file mode 100644
index 00000000..79e23679
--- /dev/null
+++ b/gui/src/components/ui/command.tsx
@@ -0,0 +1,156 @@
+"use client";
+
+import * as React from "react";
+import { type DialogProps } from "@radix-ui/react-dialog";
+import { MagnifyingGlassIcon } from "@radix-ui/react-icons";
+import { Command as CommandPrimitive } from "cmdk";
+
+import { cn } from "@gui/lib/utils";
+import { Dialog, DialogContent } from "@gui/components/ui/dialog";
+
+const Command = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+Command.displayName = CommandPrimitive.displayName;
+
+interface CommandDialogProps extends DialogProps {}
+
+const CommandDialog = ({ children, ...props }: CommandDialogProps) => {
+ return (
+
+ );
+};
+
+const CommandInput = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+ // eslint-disable-next-line react/no-unknown-property
+
+
+
+
+));
+
+CommandInput.displayName = CommandPrimitive.Input.displayName;
+
+const CommandList = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+CommandList.displayName = CommandPrimitive.List.displayName;
+
+const CommandEmpty = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>((props, ref) => (
+
+));
+
+CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
+
+const CommandGroup = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+CommandGroup.displayName = CommandPrimitive.Group.displayName;
+
+const CommandSeparator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
+
+const CommandItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+CommandItem.displayName = CommandPrimitive.Item.displayName;
+
+const CommandShortcut = ({
+ className,
+ ...props
+}: React.HTMLAttributes) => {
+ return (
+
+ );
+};
+CommandShortcut.displayName = "CommandShortcut";
+
+export {
+ Command,
+ CommandDialog,
+ CommandInput,
+ CommandList,
+ CommandEmpty,
+ CommandGroup,
+ CommandItem,
+ CommandShortcut,
+ CommandSeparator,
+};
diff --git a/src/components/ui/context-menu.tsx b/gui/src/components/ui/context-menu.tsx
similarity index 89%
rename from src/components/ui/context-menu.tsx
rename to gui/src/components/ui/context-menu.tsx
index 654810ac..9470919c 100644
--- a/src/components/ui/context-menu.tsx
+++ b/gui/src/components/ui/context-menu.tsx
@@ -1,31 +1,31 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"
+import * as React from "react";
+import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
import {
CheckIcon,
ChevronRightIcon,
DotFilledIcon,
-} from "@radix-ui/react-icons"
+} from "@radix-ui/react-icons";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const ContextMenu = ContextMenuPrimitive.Root
+const ContextMenu = ContextMenuPrimitive.Root;
-const ContextMenuTrigger = ContextMenuPrimitive.Trigger
+const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
-const ContextMenuGroup = ContextMenuPrimitive.Group
+const ContextMenuGroup = ContextMenuPrimitive.Group;
-const ContextMenuPortal = ContextMenuPrimitive.Portal
+const ContextMenuPortal = ContextMenuPrimitive.Portal;
-const ContextMenuSub = ContextMenuPrimitive.Sub
+const ContextMenuSub = ContextMenuPrimitive.Sub;
-const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup
+const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
const ContextMenuSubTrigger = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, children, ...props }, ref) => (
-))
-ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName
+));
+ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
const ContextMenuSubContent = React.forwardRef<
React.ElementRef,
@@ -55,8 +55,8 @@ const ContextMenuSubContent = React.forwardRef<
)}
{...props}
/>
-))
-ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName
+));
+ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
const ContextMenuContent = React.forwardRef<
React.ElementRef,
@@ -72,13 +72,13 @@ const ContextMenuContent = React.forwardRef<
{...props}
/>
-))
-ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName
+));
+ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
const ContextMenuItem = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, ...props }, ref) => (
-))
-ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName
+));
+ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
const ContextMenuCheckboxItem = React.forwardRef<
React.ElementRef,
@@ -113,9 +113,9 @@ const ContextMenuCheckboxItem = React.forwardRef<
{children}
-))
+));
ContextMenuCheckboxItem.displayName =
- ContextMenuPrimitive.CheckboxItem.displayName
+ ContextMenuPrimitive.CheckboxItem.displayName;
const ContextMenuRadioItem = React.forwardRef<
React.ElementRef,
@@ -136,13 +136,13 @@ const ContextMenuRadioItem = React.forwardRef<
{children}
-))
-ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName
+));
+ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
const ContextMenuLabel = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, ...props }, ref) => (
-))
-ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName
+));
+ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
const ContextMenuSeparator = React.forwardRef<
React.ElementRef,
@@ -166,8 +166,8 @@ const ContextMenuSeparator = React.forwardRef<
className={cn("-mx-1 my-1 h-px bg-border", className)}
{...props}
/>
-))
-ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName
+));
+ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
const ContextMenuShortcut = ({
className,
@@ -181,9 +181,9 @@ const ContextMenuShortcut = ({
)}
{...props}
/>
- )
-}
-ContextMenuShortcut.displayName = "ContextMenuShortcut"
+ );
+};
+ContextMenuShortcut.displayName = "ContextMenuShortcut";
export {
ContextMenu,
@@ -201,4 +201,4 @@ export {
ContextMenuSubContent,
ContextMenuSubTrigger,
ContextMenuRadioGroup,
-}
+};
diff --git a/src/components/ui/dialog.tsx b/gui/src/components/ui/dialog.tsx
similarity index 82%
rename from src/components/ui/dialog.tsx
rename to gui/src/components/ui/dialog.tsx
index 95b0d38a..a3877769 100644
--- a/src/components/ui/dialog.tsx
+++ b/gui/src/components/ui/dialog.tsx
@@ -1,18 +1,18 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as DialogPrimitive from "@radix-ui/react-dialog"
-import { Cross2Icon } from "@radix-ui/react-icons"
+import * as React from "react";
+import * as DialogPrimitive from "@radix-ui/react-dialog";
+import { Cross2Icon } from "@radix-ui/react-icons";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const Dialog = DialogPrimitive.Root
+const Dialog = DialogPrimitive.Root;
-const DialogTrigger = DialogPrimitive.Trigger
+const DialogTrigger = DialogPrimitive.Trigger;
-const DialogPortal = DialogPrimitive.Portal
+const DialogPortal = DialogPrimitive.Portal;
-const DialogClose = DialogPrimitive.Close
+const DialogClose = DialogPrimitive.Close;
const DialogOverlay = React.forwardRef<
React.ElementRef,
@@ -26,8 +26,8 @@ const DialogOverlay = React.forwardRef<
)}
{...props}
/>
-))
-DialogOverlay.displayName = DialogPrimitive.Overlay.displayName
+));
+DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
const DialogContent = React.forwardRef<
React.ElementRef,
@@ -50,8 +50,8 @@ const DialogContent = React.forwardRef<
-))
-DialogContent.displayName = DialogPrimitive.Content.displayName
+));
+DialogContent.displayName = DialogPrimitive.Content.displayName;
const DialogHeader = ({
className,
@@ -64,8 +64,8 @@ const DialogHeader = ({
)}
{...props}
/>
-)
-DialogHeader.displayName = "DialogHeader"
+);
+DialogHeader.displayName = "DialogHeader";
const DialogFooter = ({
className,
@@ -78,8 +78,8 @@ const DialogFooter = ({
)}
{...props}
/>
-)
-DialogFooter.displayName = "DialogFooter"
+);
+DialogFooter.displayName = "DialogFooter";
const DialogTitle = React.forwardRef<
React.ElementRef,
@@ -93,8 +93,8 @@ const DialogTitle = React.forwardRef<
)}
{...props}
/>
-))
-DialogTitle.displayName = DialogPrimitive.Title.displayName
+));
+DialogTitle.displayName = DialogPrimitive.Title.displayName;
const DialogDescription = React.forwardRef<
React.ElementRef,
@@ -105,8 +105,8 @@ const DialogDescription = React.forwardRef<
className={cn("text-sm text-muted-foreground", className)}
{...props}
/>
-))
-DialogDescription.displayName = DialogPrimitive.Description.displayName
+));
+DialogDescription.displayName = DialogPrimitive.Description.displayName;
export {
Dialog,
@@ -119,4 +119,4 @@ export {
DialogFooter,
DialogTitle,
DialogDescription,
-}
+};
diff --git a/src/components/ui/dropdown-menu.tsx b/gui/src/components/ui/dropdown-menu.tsx
similarity index 88%
rename from src/components/ui/dropdown-menu.tsx
rename to gui/src/components/ui/dropdown-menu.tsx
index 242b07a6..b48db35a 100644
--- a/src/components/ui/dropdown-menu.tsx
+++ b/gui/src/components/ui/dropdown-menu.tsx
@@ -1,31 +1,31 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
+import * as React from "react";
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
import {
CheckIcon,
ChevronRightIcon,
DotFilledIcon,
-} from "@radix-ui/react-icons"
+} from "@radix-ui/react-icons";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const DropdownMenu = DropdownMenuPrimitive.Root
+const DropdownMenu = DropdownMenuPrimitive.Root;
-const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
+const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
-const DropdownMenuGroup = DropdownMenuPrimitive.Group
+const DropdownMenuGroup = DropdownMenuPrimitive.Group;
-const DropdownMenuPortal = DropdownMenuPrimitive.Portal
+const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
-const DropdownMenuSub = DropdownMenuPrimitive.Sub
+const DropdownMenuSub = DropdownMenuPrimitive.Sub;
-const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
+const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
const DropdownMenuSubTrigger = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, children, ...props }, ref) => (
-))
+));
DropdownMenuSubTrigger.displayName =
- DropdownMenuPrimitive.SubTrigger.displayName
+ DropdownMenuPrimitive.SubTrigger.displayName;
const DropdownMenuSubContent = React.forwardRef<
React.ElementRef,
@@ -56,9 +56,9 @@ const DropdownMenuSubContent = React.forwardRef<
)}
{...props}
/>
-))
+));
DropdownMenuSubContent.displayName =
- DropdownMenuPrimitive.SubContent.displayName
+ DropdownMenuPrimitive.SubContent.displayName;
const DropdownMenuContent = React.forwardRef<
React.ElementRef,
@@ -76,13 +76,13 @@ const DropdownMenuContent = React.forwardRef<
{...props}
/>
-))
-DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
+));
+DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
const DropdownMenuItem = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, ...props }, ref) => (
-))
-DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
+));
+DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
const DropdownMenuCheckboxItem = React.forwardRef<
React.ElementRef,
@@ -117,9 +117,9 @@ const DropdownMenuCheckboxItem = React.forwardRef<
{children}
-))
+));
DropdownMenuCheckboxItem.displayName =
- DropdownMenuPrimitive.CheckboxItem.displayName
+ DropdownMenuPrimitive.CheckboxItem.displayName;
const DropdownMenuRadioItem = React.forwardRef<
React.ElementRef,
@@ -140,13 +140,13 @@ const DropdownMenuRadioItem = React.forwardRef<
{children}
-))
-DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
+));
+DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
const DropdownMenuLabel = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, ...props }, ref) => (
-))
-DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
+));
+DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
const DropdownMenuSeparator = React.forwardRef<
React.ElementRef,
@@ -170,8 +170,8 @@ const DropdownMenuSeparator = React.forwardRef<
className={cn("-mx-1 my-1 h-px bg-muted", className)}
{...props}
/>
-))
-DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
+));
+DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
const DropdownMenuShortcut = ({
className,
@@ -182,9 +182,9 @@ const DropdownMenuShortcut = ({
className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
{...props}
/>
- )
-}
-DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
+ );
+};
+DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
export {
DropdownMenu,
@@ -202,4 +202,4 @@ export {
DropdownMenuSubContent,
DropdownMenuSubTrigger,
DropdownMenuRadioGroup,
-}
+};
diff --git a/src/components/ui/hover-card.tsx b/gui/src/components/ui/hover-card.tsx
similarity index 79%
rename from src/components/ui/hover-card.tsx
rename to gui/src/components/ui/hover-card.tsx
index e54d91cf..0cefff30 100644
--- a/src/components/ui/hover-card.tsx
+++ b/gui/src/components/ui/hover-card.tsx
@@ -1,13 +1,13 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as HoverCardPrimitive from "@radix-ui/react-hover-card"
+import * as React from "react";
+import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const HoverCard = HoverCardPrimitive.Root
+const HoverCard = HoverCardPrimitive.Root;
-const HoverCardTrigger = HoverCardPrimitive.Trigger
+const HoverCardTrigger = HoverCardPrimitive.Trigger;
const HoverCardContent = React.forwardRef<
React.ElementRef,
@@ -23,7 +23,7 @@ const HoverCardContent = React.forwardRef<
)}
{...props}
/>
-))
-HoverCardContent.displayName = HoverCardPrimitive.Content.displayName
+));
+HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
-export { HoverCard, HoverCardTrigger, HoverCardContent }
+export { HoverCard, HoverCardTrigger, HoverCardContent };
diff --git a/src/components/ui/input.tsx b/gui/src/components/ui/input.tsx
similarity index 84%
rename from src/components/ui/input.tsx
rename to gui/src/components/ui/input.tsx
index a92b8e0e..9568172b 100644
--- a/src/components/ui/input.tsx
+++ b/gui/src/components/ui/input.tsx
@@ -1,6 +1,6 @@
-import * as React from "react"
+import * as React from "react";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
export interface InputProps
extends React.InputHTMLAttributes {}
@@ -17,9 +17,9 @@ const Input = React.forwardRef(
ref={ref}
{...props}
/>
- )
+ );
}
-)
-Input.displayName = "Input"
+);
+Input.displayName = "Input";
-export { Input }
+export { Input };
diff --git a/src/components/ui/label.tsx b/gui/src/components/ui/label.tsx
similarity index 71%
rename from src/components/ui/label.tsx
rename to gui/src/components/ui/label.tsx
index 53418217..4f4612fa 100644
--- a/src/components/ui/label.tsx
+++ b/gui/src/components/ui/label.tsx
@@ -1,14 +1,14 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as LabelPrimitive from "@radix-ui/react-label"
-import { cva, type VariantProps } from "class-variance-authority"
+import * as React from "react";
+import * as LabelPrimitive from "@radix-ui/react-label";
+import { cva, type VariantProps } from "class-variance-authority";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const labelVariants = cva(
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
-)
+);
const Label = React.forwardRef<
React.ElementRef,
@@ -20,7 +20,7 @@ const Label = React.forwardRef<
className={cn(labelVariants(), className)}
{...props}
/>
-))
-Label.displayName = LabelPrimitive.Root.displayName
+));
+Label.displayName = LabelPrimitive.Root.displayName;
-export { Label }
+export { Label };
diff --git a/src/components/ui/menubar.tsx b/gui/src/components/ui/menubar.tsx
similarity index 90%
rename from src/components/ui/menubar.tsx
rename to gui/src/components/ui/menubar.tsx
index 010145cd..9d353b6f 100644
--- a/src/components/ui/menubar.tsx
+++ b/gui/src/components/ui/menubar.tsx
@@ -1,24 +1,24 @@
-"use client"
+"use client";
-import * as React from "react"
+import * as React from "react";
import {
CheckIcon,
ChevronRightIcon,
DotFilledIcon,
-} from "@radix-ui/react-icons"
-import * as MenubarPrimitive from "@radix-ui/react-menubar"
+} from "@radix-ui/react-icons";
+import * as MenubarPrimitive from "@radix-ui/react-menubar";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const MenubarMenu = MenubarPrimitive.Menu
+const MenubarMenu = MenubarPrimitive.Menu;
-const MenubarGroup = MenubarPrimitive.Group
+const MenubarGroup = MenubarPrimitive.Group;
-const MenubarPortal = MenubarPrimitive.Portal
+const MenubarPortal = MenubarPrimitive.Portal;
-const MenubarSub = MenubarPrimitive.Sub
+const MenubarSub = MenubarPrimitive.Sub;
-const MenubarRadioGroup = MenubarPrimitive.RadioGroup
+const MenubarRadioGroup = MenubarPrimitive.RadioGroup;
const Menubar = React.forwardRef<
React.ElementRef,
@@ -32,8 +32,8 @@ const Menubar = React.forwardRef<
)}
{...props}
/>
-))
-Menubar.displayName = MenubarPrimitive.Root.displayName
+));
+Menubar.displayName = MenubarPrimitive.Root.displayName;
const MenubarTrigger = React.forwardRef<
React.ElementRef,
@@ -47,13 +47,13 @@ const MenubarTrigger = React.forwardRef<
)}
{...props}
/>
-))
-MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName
+));
+MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
const MenubarSubTrigger = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, children, ...props }, ref) => (
-))
-MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName
+));
+MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
const MenubarSubContent = React.forwardRef<
React.ElementRef,
@@ -83,8 +83,8 @@ const MenubarSubContent = React.forwardRef<
)}
{...props}
/>
-))
-MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName
+));
+MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
const MenubarContent = React.forwardRef<
React.ElementRef,
@@ -108,13 +108,13 @@ const MenubarContent = React.forwardRef<
/>
)
-)
-MenubarContent.displayName = MenubarPrimitive.Content.displayName
+);
+MenubarContent.displayName = MenubarPrimitive.Content.displayName;
const MenubarItem = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, ...props }, ref) => (
-))
-MenubarItem.displayName = MenubarPrimitive.Item.displayName
+));
+MenubarItem.displayName = MenubarPrimitive.Item.displayName;
const MenubarCheckboxItem = React.forwardRef<
React.ElementRef,
@@ -149,8 +149,8 @@ const MenubarCheckboxItem = React.forwardRef<
{children}
-))
-MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName
+));
+MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
const MenubarRadioItem = React.forwardRef<
React.ElementRef,
@@ -171,13 +171,13 @@ const MenubarRadioItem = React.forwardRef<
{children}
-))
-MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName
+));
+MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
const MenubarLabel = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef & {
- inset?: boolean
+ inset?: boolean;
}
>(({ className, inset, ...props }, ref) => (
-))
-MenubarLabel.displayName = MenubarPrimitive.Label.displayName
+));
+MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
const MenubarSeparator = React.forwardRef<
React.ElementRef,
@@ -201,8 +201,8 @@ const MenubarSeparator = React.forwardRef<
className={cn("-mx-1 my-1 h-px bg-muted", className)}
{...props}
/>
-))
-MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName
+));
+MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
const MenubarShortcut = ({
className,
@@ -216,9 +216,9 @@ const MenubarShortcut = ({
)}
{...props}
/>
- )
-}
-MenubarShortcut.displayname = "MenubarShortcut"
+ );
+};
+MenubarShortcut.displayname = "MenubarShortcut";
export {
Menubar,
@@ -237,4 +237,4 @@ export {
MenubarGroup,
MenubarSub,
MenubarShortcut,
-}
+};
diff --git a/src/components/ui/navigation-menu.tsx b/gui/src/components/ui/navigation-menu.tsx
similarity index 90%
rename from src/components/ui/navigation-menu.tsx
rename to gui/src/components/ui/navigation-menu.tsx
index 5841fb39..8515b067 100644
--- a/src/components/ui/navigation-menu.tsx
+++ b/gui/src/components/ui/navigation-menu.tsx
@@ -1,9 +1,9 @@
-import * as React from "react"
-import { ChevronDownIcon } from "@radix-ui/react-icons"
-import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
-import { cva } from "class-variance-authority"
+import * as React from "react";
+import { ChevronDownIcon } from "@radix-ui/react-icons";
+import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
+import { cva } from "class-variance-authority";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const NavigationMenu = React.forwardRef<
React.ElementRef,
@@ -20,8 +20,8 @@ const NavigationMenu = React.forwardRef<
{children}
-))
-NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
+));
+NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
const NavigationMenuList = React.forwardRef<
React.ElementRef,
@@ -35,14 +35,14 @@ const NavigationMenuList = React.forwardRef<
)}
{...props}
/>
-))
-NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
+));
+NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
-const NavigationMenuItem = NavigationMenuPrimitive.Item
+const NavigationMenuItem = NavigationMenuPrimitive.Item;
const navigationMenuTriggerStyle = cva(
"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
-)
+);
const NavigationMenuTrigger = React.forwardRef<
React.ElementRef,
@@ -59,8 +59,8 @@ const NavigationMenuTrigger = React.forwardRef<
aria-hidden="true"
/>
-))
-NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
+));
+NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
const NavigationMenuContent = React.forwardRef<
React.ElementRef,
@@ -74,10 +74,10 @@ const NavigationMenuContent = React.forwardRef<
)}
{...props}
/>
-))
-NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
+));
+NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
-const NavigationMenuLink = NavigationMenuPrimitive.Link
+const NavigationMenuLink = NavigationMenuPrimitive.Link;
const NavigationMenuViewport = React.forwardRef<
React.ElementRef,
@@ -93,9 +93,9 @@ const NavigationMenuViewport = React.forwardRef<
{...props}
/>
-))
+));
NavigationMenuViewport.displayName =
- NavigationMenuPrimitive.Viewport.displayName
+ NavigationMenuPrimitive.Viewport.displayName;
const NavigationMenuIndicator = React.forwardRef<
React.ElementRef,
@@ -111,9 +111,9 @@ const NavigationMenuIndicator = React.forwardRef<
>
-))
+));
NavigationMenuIndicator.displayName =
- NavigationMenuPrimitive.Indicator.displayName
+ NavigationMenuPrimitive.Indicator.displayName;
export {
navigationMenuTriggerStyle,
@@ -125,4 +125,4 @@ export {
NavigationMenuLink,
NavigationMenuIndicator,
NavigationMenuViewport,
-}
+};
diff --git a/src/components/ui/popover.tsx b/gui/src/components/ui/popover.tsx
similarity index 78%
rename from src/components/ui/popover.tsx
rename to gui/src/components/ui/popover.tsx
index 29c7bd2a..648a837f 100644
--- a/src/components/ui/popover.tsx
+++ b/gui/src/components/ui/popover.tsx
@@ -1,15 +1,15 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as PopoverPrimitive from "@radix-ui/react-popover"
+import * as React from "react";
+import * as PopoverPrimitive from "@radix-ui/react-popover";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const Popover = PopoverPrimitive.Root
+const Popover = PopoverPrimitive.Root;
-const PopoverTrigger = PopoverPrimitive.Trigger
+const PopoverTrigger = PopoverPrimitive.Trigger;
-const PopoverAnchor = PopoverPrimitive.Anchor
+const PopoverAnchor = PopoverPrimitive.Anchor;
const PopoverContent = React.forwardRef<
React.ElementRef,
@@ -27,7 +27,7 @@ const PopoverContent = React.forwardRef<
{...props}
/>
-))
-PopoverContent.displayName = PopoverPrimitive.Content.displayName
+));
+PopoverContent.displayName = PopoverPrimitive.Content.displayName;
-export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }
+export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
diff --git a/src/components/ui/radio-group.tsx b/gui/src/components/ui/radio-group.tsx
similarity index 82%
rename from src/components/ui/radio-group.tsx
rename to gui/src/components/ui/radio-group.tsx
index cf016735..ca247af5 100644
--- a/src/components/ui/radio-group.tsx
+++ b/gui/src/components/ui/radio-group.tsx
@@ -1,10 +1,10 @@
-"use client"
+"use client";
-import * as React from "react"
-import { CheckIcon } from "@radix-ui/react-icons"
-import * as RadioGroupPrimitive from "@radix-ui/react-radio-group"
+import * as React from "react";
+import { CheckIcon } from "@radix-ui/react-icons";
+import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const RadioGroup = React.forwardRef<
React.ElementRef,
@@ -16,9 +16,9 @@ const RadioGroup = React.forwardRef<
{...props}
ref={ref}
/>
- )
-})
-RadioGroup.displayName = RadioGroupPrimitive.Root.displayName
+ );
+});
+RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
const RadioGroupItem = React.forwardRef<
React.ElementRef,
@@ -37,8 +37,8 @@ const RadioGroupItem = React.forwardRef<
- )
-})
-RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName
+ );
+});
+RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
-export { RadioGroup, RadioGroupItem }
+export { RadioGroup, RadioGroupItem };
diff --git a/src/components/ui/resizable.tsx b/gui/src/components/ui/resizable.tsx
similarity index 81%
rename from src/components/ui/resizable.tsx
rename to gui/src/components/ui/resizable.tsx
index 5942eb05..1d53351c 100644
--- a/src/components/ui/resizable.tsx
+++ b/gui/src/components/ui/resizable.tsx
@@ -1,9 +1,9 @@
-"use client"
+"use client";
-import { DragHandleDots2Icon } from "@radix-ui/react-icons"
-import * as ResizablePrimitive from "react-resizable-panels"
+import { DragHandleDots2Icon } from "@radix-ui/react-icons";
+import * as ResizablePrimitive from "react-resizable-panels";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const ResizablePanelGroup = ({
className,
@@ -16,16 +16,16 @@ const ResizablePanelGroup = ({
)}
{...props}
/>
-)
+);
-const ResizablePanel = ResizablePrimitive.Panel
+const ResizablePanel = ResizablePrimitive.Panel;
const ResizableHandle = ({
withHandle,
className,
...props
}: React.ComponentProps & {
- withHandle?: boolean
+ withHandle?: boolean;
}) => (
)}
-)
+);
-export { ResizablePanelGroup, ResizablePanel, ResizableHandle }
+export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
diff --git a/src/components/ui/scroll-area.tsx b/gui/src/components/ui/scroll-area.tsx
similarity index 87%
rename from src/components/ui/scroll-area.tsx
rename to gui/src/components/ui/scroll-area.tsx
index 0b4a48d8..fbfc141e 100644
--- a/src/components/ui/scroll-area.tsx
+++ b/gui/src/components/ui/scroll-area.tsx
@@ -1,9 +1,9 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"
+import * as React from "react";
+import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const ScrollArea = React.forwardRef<
React.ElementRef,
@@ -20,8 +20,8 @@ const ScrollArea = React.forwardRef<
-))
-ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName
+));
+ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
const ScrollBar = React.forwardRef<
React.ElementRef,
@@ -42,7 +42,7 @@ const ScrollBar = React.forwardRef<
>
-))
-ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName
+));
+ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
-export { ScrollArea, ScrollBar }
+export { ScrollArea, ScrollBar };
diff --git a/src/components/ui/select.tsx b/gui/src/components/ui/select.tsx
similarity index 88%
rename from src/components/ui/select.tsx
rename to gui/src/components/ui/select.tsx
index ac2a8f2b..e6992ddb 100644
--- a/src/components/ui/select.tsx
+++ b/gui/src/components/ui/select.tsx
@@ -1,21 +1,21 @@
-"use client"
+"use client";
-import * as React from "react"
+import * as React from "react";
import {
CaretSortIcon,
CheckIcon,
ChevronDownIcon,
ChevronUpIcon,
-} from "@radix-ui/react-icons"
-import * as SelectPrimitive from "@radix-ui/react-select"
+} from "@radix-ui/react-icons";
+import * as SelectPrimitive from "@radix-ui/react-select";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const Select = SelectPrimitive.Root
+const Select = SelectPrimitive.Root;
-const SelectGroup = SelectPrimitive.Group
+const SelectGroup = SelectPrimitive.Group;
-const SelectValue = SelectPrimitive.Value
+const SelectValue = SelectPrimitive.Value;
const SelectTrigger = React.forwardRef<
React.ElementRef,
@@ -34,8 +34,8 @@ const SelectTrigger = React.forwardRef<
-))
-SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
+));
+SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
const SelectScrollUpButton = React.forwardRef<
React.ElementRef,
@@ -51,8 +51,8 @@ const SelectScrollUpButton = React.forwardRef<
>
-))
-SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName
+));
+SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
const SelectScrollDownButton = React.forwardRef<
React.ElementRef,
@@ -68,9 +68,9 @@ const SelectScrollDownButton = React.forwardRef<
>
-))
+));
SelectScrollDownButton.displayName =
- SelectPrimitive.ScrollDownButton.displayName
+ SelectPrimitive.ScrollDownButton.displayName;
const SelectContent = React.forwardRef<
React.ElementRef,
@@ -101,8 +101,8 @@ const SelectContent = React.forwardRef<
-))
-SelectContent.displayName = SelectPrimitive.Content.displayName
+));
+SelectContent.displayName = SelectPrimitive.Content.displayName;
const SelectLabel = React.forwardRef<
React.ElementRef,
@@ -113,8 +113,8 @@ const SelectLabel = React.forwardRef<
className={cn("px-2 py-1.5 text-sm font-semibold", className)}
{...props}
/>
-))
-SelectLabel.displayName = SelectPrimitive.Label.displayName
+));
+SelectLabel.displayName = SelectPrimitive.Label.displayName;
const SelectItem = React.forwardRef<
React.ElementRef,
@@ -135,8 +135,8 @@ const SelectItem = React.forwardRef<
{children}
-))
-SelectItem.displayName = SelectPrimitive.Item.displayName
+));
+SelectItem.displayName = SelectPrimitive.Item.displayName;
const SelectSeparator = React.forwardRef<
React.ElementRef,
@@ -147,8 +147,8 @@ const SelectSeparator = React.forwardRef<
className={cn("-mx-1 my-1 h-px bg-muted", className)}
{...props}
/>
-))
-SelectSeparator.displayName = SelectPrimitive.Separator.displayName
+));
+SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
export {
Select,
@@ -161,4 +161,4 @@ export {
SelectSeparator,
SelectScrollUpButton,
SelectScrollDownButton,
-}
+};
diff --git a/src/components/ui/separator.tsx b/gui/src/components/ui/separator.tsx
similarity index 70%
rename from src/components/ui/separator.tsx
rename to gui/src/components/ui/separator.tsx
index 12d81c4a..4eb2223f 100644
--- a/src/components/ui/separator.tsx
+++ b/gui/src/components/ui/separator.tsx
@@ -1,9 +1,9 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as SeparatorPrimitive from "@radix-ui/react-separator"
+import * as React from "react";
+import * as SeparatorPrimitive from "@radix-ui/react-separator";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const Separator = React.forwardRef<
React.ElementRef,
@@ -25,7 +25,7 @@ const Separator = React.forwardRef<
{...props}
/>
)
-)
-Separator.displayName = SeparatorPrimitive.Root.displayName
+);
+Separator.displayName = SeparatorPrimitive.Root.displayName;
-export { Separator }
+export { Separator };
diff --git a/src/components/ui/sheet.tsx b/gui/src/components/ui/sheet.tsx
similarity index 97%
rename from src/components/ui/sheet.tsx
rename to gui/src/components/ui/sheet.tsx
index afac705d..7d130374 100644
--- a/src/components/ui/sheet.tsx
+++ b/gui/src/components/ui/sheet.tsx
@@ -5,7 +5,7 @@ import * as SheetPrimitive from "@radix-ui/react-dialog";
import { Cross2Icon } from "@radix-ui/react-icons";
import { cva, type VariantProps } from "class-variance-authority";
-import { cn } from "@/lib/utils";
+import { cn } from "@gui/lib/utils";
const Sheet = SheetPrimitive.Root;
@@ -22,7 +22,7 @@ const SheetOverlay = React.forwardRef<
@@ -99,7 +99,7 @@ const SheetFooter = ({
diff --git a/src/components/ui/sonner.tsx b/gui/src/components/ui/sonner.tsx
similarity index 94%
rename from src/components/ui/sonner.tsx
rename to gui/src/components/ui/sonner.tsx
index d9ca71fc..082d06a2 100644
--- a/src/components/ui/sonner.tsx
+++ b/gui/src/components/ui/sonner.tsx
@@ -1,6 +1,6 @@
"use client";
-import { useTheme } from "@/context/theme-provider";
+import { useTheme } from "@gui/contexts/theme-provider";
import { Toaster as Sonner } from "sonner";
type ToasterProps = React.ComponentProps;
diff --git a/src/components/ui/textarea.tsx b/gui/src/components/ui/textarea.tsx
similarity index 81%
rename from src/components/ui/textarea.tsx
rename to gui/src/components/ui/textarea.tsx
index d1258e47..4976ae58 100644
--- a/src/components/ui/textarea.tsx
+++ b/gui/src/components/ui/textarea.tsx
@@ -1,6 +1,6 @@
-import * as React from "react"
+import * as React from "react";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
export interface TextareaProps
extends React.TextareaHTMLAttributes {}
@@ -16,9 +16,9 @@ const Textarea = React.forwardRef(
ref={ref}
{...props}
/>
- )
+ );
}
-)
-Textarea.displayName = "Textarea"
+);
+Textarea.displayName = "Textarea";
-export { Textarea }
+export { Textarea };
diff --git a/src/components/ui/toggle-group.tsx b/gui/src/components/ui/toggle-group.tsx
similarity index 77%
rename from src/components/ui/toggle-group.tsx
rename to gui/src/components/ui/toggle-group.tsx
index 6cadb522..f42bbe08 100644
--- a/src/components/ui/toggle-group.tsx
+++ b/gui/src/components/ui/toggle-group.tsx
@@ -1,18 +1,18 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group"
-import { VariantProps } from "class-variance-authority"
+import * as React from "react";
+import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
+import { VariantProps } from "class-variance-authority";
-import { cn } from "@/lib/utils"
-import { toggleVariants } from "@/components/ui/toggle"
+import { cn } from "@gui/lib/utils";
+import { toggleVariants } from "@gui/components/ui/toggle";
const ToggleGroupContext = React.createContext<
VariantProps
>({
size: "default",
variant: "default",
-})
+});
const ToggleGroup = React.forwardRef<
React.ElementRef,
@@ -28,16 +28,16 @@ const ToggleGroup = React.forwardRef<
{children}
-))
+));
-ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName
+ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
const ToggleGroupItem = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef &
VariantProps
>(({ className, children, variant, size, ...props }, ref) => {
- const context = React.useContext(ToggleGroupContext)
+ const context = React.useContext(ToggleGroupContext);
return (
{children}
- )
-})
+ );
+});
-ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName
+ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
-export { ToggleGroup, ToggleGroupItem }
+export { ToggleGroup, ToggleGroupItem };
diff --git a/src/components/ui/toggle.tsx b/gui/src/components/ui/toggle.tsx
similarity index 82%
rename from src/components/ui/toggle.tsx
rename to gui/src/components/ui/toggle.tsx
index c50c2733..9830d374 100644
--- a/src/components/ui/toggle.tsx
+++ b/gui/src/components/ui/toggle.tsx
@@ -1,10 +1,10 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as TogglePrimitive from "@radix-ui/react-toggle"
-import { cva, type VariantProps } from "class-variance-authority"
+import * as React from "react";
+import * as TogglePrimitive from "@radix-ui/react-toggle";
+import { cva, type VariantProps } from "class-variance-authority";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
const toggleVariants = cva(
"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
@@ -26,7 +26,7 @@ const toggleVariants = cva(
size: "default",
},
}
-)
+);
const Toggle = React.forwardRef<
React.ElementRef,
@@ -38,8 +38,8 @@ const Toggle = React.forwardRef<
className={cn(toggleVariants({ variant, size, className }))}
{...props}
/>
-))
+));
-Toggle.displayName = TogglePrimitive.Root.displayName
+Toggle.displayName = TogglePrimitive.Root.displayName;
-export { Toggle, toggleVariants }
+export { Toggle, toggleVariants };
diff --git a/src/components/ui/tooltip.tsx b/gui/src/components/ui/tooltip.tsx
similarity index 74%
rename from src/components/ui/tooltip.tsx
rename to gui/src/components/ui/tooltip.tsx
index 9e748210..f45948ac 100644
--- a/src/components/ui/tooltip.tsx
+++ b/gui/src/components/ui/tooltip.tsx
@@ -1,15 +1,15 @@
-"use client"
+"use client";
-import * as React from "react"
-import * as TooltipPrimitive from "@radix-ui/react-tooltip"
+import * as React from "react";
+import * as TooltipPrimitive from "@radix-ui/react-tooltip";
-import { cn } from "@/lib/utils"
+import { cn } from "@gui/lib/utils";
-const TooltipProvider = TooltipPrimitive.Provider
+const TooltipProvider = TooltipPrimitive.Provider;
-const Tooltip = TooltipPrimitive.Root
+const Tooltip = TooltipPrimitive.Root;
-const TooltipTrigger = TooltipPrimitive.Trigger
+const TooltipTrigger = TooltipPrimitive.Trigger;
const TooltipContent = React.forwardRef<
React.ElementRef,
@@ -24,7 +24,7 @@ const TooltipContent = React.forwardRef<
)}
{...props}
/>
-))
-TooltipContent.displayName = TooltipPrimitive.Content.displayName
+));
+TooltipContent.displayName = TooltipPrimitive.Content.displayName;
-export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
+export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
diff --git a/src/components/windows-tab.tsx b/gui/src/components/windows-tab.tsx
similarity index 86%
rename from src/components/windows-tab.tsx
rename to gui/src/components/windows-tab.tsx
index f9f88a26..c1a345f6 100644
--- a/src/components/windows-tab.tsx
+++ b/gui/src/components/windows-tab.tsx
@@ -1,175 +1,177 @@
-import { LucideIcon, LucidePlus } from "lucide-react";
-import {
- createContext,
- useCallback,
- useContext,
- useMemo,
- useState,
-} from "react";
-import {
- DndContext,
- closestCenter,
- PointerSensor,
- useSensor,
- useSensors,
- DragEndEvent,
- DragOverlay,
- DragStartEvent,
-} from "@dnd-kit/core";
-import {
- arrayMove,
- SortableContext,
- verticalListSortingStrategy,
-} from "@dnd-kit/sortable";
-import { SortableTab, WindowTabItemButton } from "./sortable-tab";
-import { openTab } from "@/messages/open-tab";
-
-export interface WindowTabItemProps {
- component: JSX.Element;
- icon: LucideIcon;
- title: string;
- key: string;
-}
-
-interface WindowTabsProps {
- tabs: WindowTabItemProps[];
- selected: number;
- onSelectChange: (selectedIndex: number) => void;
- onTabsChange: (value: WindowTabItemProps[]) => void;
-}
-
-const WindowTabsContext = createContext<{
- replaceCurrentTab: (tab: WindowTabItemProps) => void;
-}>({
- replaceCurrentTab: () => {
- throw new Error("Not implemented");
- },
-});
-
-export function useTabsContext() {
- return useContext(WindowTabsContext);
-}
-
-export default function WindowTabs({
- tabs,
- selected,
- onSelectChange,
- onTabsChange,
-}: WindowTabsProps) {
- const [dragTab, setDragTag] = useState(null);
-
- const pointerSensor = useSensor(PointerSensor, {
- activationConstraint: {
- distance: 8,
- },
- });
-
- const sensors = useSensors(pointerSensor);
-
- const replaceCurrentTab = useCallback(
- (tab: WindowTabItemProps) => {
- if (tabs[selected]) {
- tabs[selected] = tab;
- onTabsChange([...tabs]);
- }
- },
- [tabs, selected, onTabsChange]
- );
-
- const contextValue = useMemo(
- () => ({ replaceCurrentTab }),
- [replaceCurrentTab]
- );
-
- const handleDragStart = useCallback(
- (event: DragStartEvent) => {
- const { active } = event;
- const activeIndex = tabs.findIndex((tab) => tab.key === active.id);
- setDragTag(tabs[activeIndex]);
- },
- [tabs, setDragTag]
- );
-
- const handleDragEnd = useCallback(
- (event: DragEndEvent) => {
- const { active, over } = event;
- if (active.id !== over?.id) {
- const selectedTab = tabs[selected];
- const oldIndex = tabs.findIndex((tab) => tab.key === active.id);
- const newIndex = tabs.findIndex((tab) => tab.key === over?.id);
- const newTabs = arrayMove(tabs, oldIndex, newIndex);
- onTabsChange(newTabs);
-
- const selectedIndex = newTabs.findIndex(
- (tab) => tab.key === selectedTab.key
- );
- onSelectChange(selectedIndex);
- }
- setDragTag(null);
- },
- [setDragTag, onTabsChange, tabs, onSelectChange, selected]
- );
-
- return (
-
-
-
-
-
-
{
- openTab({ type: "query" });
- }}
- >
-
-
-
tab.key)}
- strategy={verticalListSortingStrategy}
- >
- {tabs.map((tab, idx) => (
- onSelectChange(idx)}
- onClose={() =>
- onTabsChange(tabs.filter((t) => t.key !== tab.key))
- }
- />
- ))}
-
-
-
-
-
- {tabs.map((tab, tabIndex) => (
-
- {tab.component}
-
- ))}
-
-
-
- {dragTab ? (
-
-
-
- ) : null}
-
-
-
- );
-}
+import { type LucideIcon, LucidePlus } from "lucide-react";
+import {
+ createContext,
+ useCallback,
+ useContext,
+ useMemo,
+ useState,
+} from "react";
+import {
+ DndContext,
+ closestCenter,
+ PointerSensor,
+ useSensor,
+ useSensors,
+ type DragEndEvent,
+ DragOverlay,
+ type DragStartEvent,
+} from "@dnd-kit/core";
+import {
+ arrayMove,
+ SortableContext,
+ verticalListSortingStrategy,
+} from "@dnd-kit/sortable";
+import { SortableTab, WindowTabItemButton } from "./sortable-tab";
+import { openTab } from "@gui/messages/open-tab";
+
+export interface WindowTabItemProps {
+ component: JSX.Element;
+ icon: LucideIcon;
+ title: string;
+ key: string;
+}
+
+interface WindowTabsProps {
+ tabs: WindowTabItemProps[];
+ selected: number;
+ onSelectChange: (selectedIndex: number) => void;
+ onTabsChange: (value: WindowTabItemProps[]) => void;
+}
+
+const WindowTabsContext = createContext<{
+ replaceCurrentTab: (tab: WindowTabItemProps) => void;
+}>({
+ replaceCurrentTab: () => {
+ throw new Error("Not implemented");
+ },
+});
+
+export function useTabsContext() {
+ return useContext(WindowTabsContext);
+}
+
+export default function WindowTabs({
+ tabs,
+ selected,
+ onSelectChange,
+ onTabsChange,
+}: WindowTabsProps) {
+ const [dragTab, setDragTag] = useState(null);
+
+ const pointerSensor = useSensor(PointerSensor, {
+ activationConstraint: {
+ distance: 8,
+ },
+ });
+
+ const sensors = useSensors(pointerSensor);
+
+ const replaceCurrentTab = useCallback(
+ (tab: WindowTabItemProps) => {
+ if (tabs[selected]) {
+ tabs[selected] = tab;
+ onTabsChange([...tabs]);
+ }
+ },
+ [tabs, selected, onTabsChange]
+ );
+
+ const contextValue = useMemo(
+ () => ({ replaceCurrentTab }),
+ [replaceCurrentTab]
+ );
+
+ const handleDragStart = useCallback(
+ (event: DragStartEvent) => {
+ const { active } = event;
+ const activeIndex = tabs.findIndex((tab) => tab.key === active.id);
+ setDragTag(tabs[activeIndex] ?? null);
+ },
+ [tabs, setDragTag]
+ );
+
+ const handleDragEnd = useCallback(
+ (event: DragEndEvent) => {
+ const { active, over } = event;
+ if (active.id !== over?.id) {
+ const selectedTab = tabs[selected];
+ const oldIndex = tabs.findIndex((tab) => tab.key === active.id);
+ const newIndex = tabs.findIndex((tab) => tab.key === over?.id);
+ const newTabs = arrayMove(tabs, oldIndex, newIndex);
+ onTabsChange(newTabs);
+
+ const selectedIndex = newTabs.findIndex(
+ (tab) => tab.key === selectedTab?.key
+ );
+ onSelectChange(selectedIndex);
+ }
+ setDragTag(null);
+ },
+ [setDragTag, onTabsChange, tabs, onSelectChange, selected]
+ );
+
+ return (
+
+
+
+
+
+
{
+ openTab({ type: "query" });
+ }}
+ >
+
+
+
tab.key)}
+ strategy={verticalListSortingStrategy}
+ >
+ {tabs.map((tab, idx) => (
+ {
+ onSelectChange(idx);
+ }}
+ onClose={() => {
+ onTabsChange(tabs.filter((t) => t.key !== tab.key));
+ }}
+ />
+ ))}
+
+
+
+
+
+ {tabs.map((tab, tabIndex) => (
+
+ {tab.component}
+
+ ))}
+
+
+
+ {dragTab ? (
+
+
+
+ ) : null}
+
+
+
+ );
+}
diff --git a/src/context/AutoCompleteProvider.tsx b/gui/src/contexts/auto-complete-provider.tsx
similarity index 77%
rename from src/context/AutoCompleteProvider.tsx
rename to gui/src/contexts/auto-complete-provider.tsx
index 21d58208..ad28cbfd 100644
--- a/src/context/AutoCompleteProvider.tsx
+++ b/gui/src/contexts/auto-complete-provider.tsx
@@ -1,75 +1,78 @@
-import { DatabaseTableColumn } from "@/drivers/base-driver";
-import {
- PropsWithChildren,
- createContext,
- useCallback,
- useContext,
- useMemo,
- useState,
-} from "react";
-
-const AutoCompleteContext = createContext<{
- updateTableList: (tables: string[]) => void;
- updateTableSchema: (
- tableName: string,
- columns: DatabaseTableColumn[]
- ) => void;
- schema: Record;
-}>({
- schema: {},
- updateTableList: () => {
- throw new Error("Not implemented");
- },
- updateTableSchema: () => {
- throw new Error("Not implemented");
- },
-});
-
-export function useAutoComplete() {
- return useContext(AutoCompleteContext);
-}
-
-export function AutoCompleteProvider({ children }: PropsWithChildren) {
- const [internalSchema, setInternalSchema] = useState<
- Record
- >({});
-
- const updateTableSchema = useCallback(
- (tableName: string, columns: DatabaseTableColumn[]) => {
- setInternalSchema((prev) => {
- return {
- ...prev,
- [tableName]: columns,
- };
- });
- },
- [setInternalSchema]
- );
-
- const updateTableList = useCallback(
- (tableName: string[]) => {
- setInternalSchema(
- tableName.reduce((acc, name) => {
- acc[name] = [];
- return acc;
- }, {} as Record)
- );
- },
- [setInternalSchema]
- );
-
- const schema = useMemo(() => {
- return Object.entries(internalSchema).reduce((acc, [key, columns]) => {
- acc[key] = columns.map((col) => col.name);
- return acc;
- }, {} as Record);
- }, [internalSchema]);
-
- return (
-
- {children}
-
- );
-}
+import { DatabaseTableColumn } from "@gui/drivers/base-driver";
+import {
+ PropsWithChildren,
+ createContext,
+ useCallback,
+ useContext,
+ useMemo,
+ useState,
+} from "react";
+
+const AutoCompleteContext = createContext<{
+ updateTableList: (tables: string[]) => void;
+ updateTableSchema: (
+ tableName: string,
+ columns: DatabaseTableColumn[]
+ ) => void;
+ schema: Record;
+}>({
+ schema: {},
+ updateTableList: () => {
+ throw new Error("Not implemented");
+ },
+ updateTableSchema: () => {
+ throw new Error("Not implemented");
+ },
+});
+
+export function useAutoComplete() {
+ return useContext(AutoCompleteContext);
+}
+
+export function AutoCompleteProvider({ children }: PropsWithChildren) {
+ const [internalSchema, setInternalSchema] = useState<
+ Record
+ >({});
+
+ const updateTableSchema = useCallback(
+ (tableName: string, columns: DatabaseTableColumn[]) => {
+ setInternalSchema((prev) => {
+ return {
+ ...prev,
+ [tableName]: columns,
+ };
+ });
+ },
+ [setInternalSchema]
+ );
+
+ const updateTableList = useCallback(
+ (tableName: string[]) => {
+ setInternalSchema(
+ tableName.reduce>((acc, name) => {
+ acc[name] = [];
+ return acc;
+ }, {})
+ );
+ },
+ [setInternalSchema]
+ );
+
+ const schema = useMemo(() => {
+ return Object.entries(internalSchema).reduce>(
+ (acc, [key, columns]) => {
+ acc[key] = columns.map((col) => col.name);
+ return acc;
+ },
+ {}
+ );
+ }, [internalSchema]);
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/context/block-editor-provider.tsx b/gui/src/contexts/block-editor-provider.tsx
similarity index 86%
rename from src/context/block-editor-provider.tsx
rename to gui/src/contexts/block-editor-provider.tsx
index dca96819..1ec48b56 100644
--- a/src/context/block-editor-provider.tsx
+++ b/gui/src/contexts/block-editor-provider.tsx
@@ -1,13 +1,13 @@
import {
- Block,
- BlockContent,
+ type Block,
+ type BlockContent,
BlockEditorSheet,
-} from "@/components/block-editor";
-import parseSafeJson from "@/lib/json-safe";
-import { noop } from "@/lib/utils";
+} from "../components/block-editor";
+import parseSafeJson from "@gui/lib/json-safe";
+import { noop } from "@gui/lib/utils";
import {
Fragment,
- PropsWithChildren,
+ type PropsWithChildren,
createContext,
useCallback,
useContext,
@@ -55,7 +55,7 @@ export function BlockEditorProvider({ children }: PropsWithChildren) {
({ initialContent, onSave, onCancel = noop }) => {
const parsedInitialContent = parseSafeJson>(
initialContent,
- { format: "BLOCK_NOTE", content: undefined },
+ { format: "BLOCK_NOTE", content: undefined }
);
setConfigs({
@@ -72,7 +72,7 @@ export function BlockEditorProvider({ children }: PropsWithChildren) {
setOpen(true);
},
- [closeBlockEditor],
+ [closeBlockEditor]
);
const value = useMemo(
@@ -80,7 +80,7 @@ export function BlockEditorProvider({ children }: PropsWithChildren) {
openBlockEditor,
closeBlockEditor,
}),
- [openBlockEditor, closeBlockEditor],
+ [openBlockEditor, closeBlockEditor]
);
return (
diff --git a/gui/src/contexts/config-provider.tsx b/gui/src/contexts/config-provider.tsx
new file mode 100644
index 00000000..19f2738a
--- /dev/null
+++ b/gui/src/contexts/config-provider.tsx
@@ -0,0 +1,33 @@
+import type { PropsWithChildren } from "react";
+import { createContext, useContext, useMemo } from "react";
+
+interface ConfigContextProps {
+ color: string;
+ name: string;
+ onBack: () => void;
+}
+
+const ConfigContext = createContext({
+ name: "",
+ color: "",
+ onBack: () => {
+ throw new Error("Not implemented");
+ },
+});
+
+export function useConfig() {
+ return useContext(ConfigContext);
+}
+
+export function ConfigProvider({
+ children,
+ color,
+ name,
+ onBack,
+}: PropsWithChildren) {
+ const memo = useMemo(() => ({ color, name, onBack }), [name, color, onBack]);
+
+ return (
+ {children}
+ );
+}
diff --git a/gui/src/contexts/driver-provider.tsx b/gui/src/contexts/driver-provider.tsx
new file mode 100644
index 00000000..b5f36b82
--- /dev/null
+++ b/gui/src/contexts/driver-provider.tsx
@@ -0,0 +1,31 @@
+import type { BaseDriver } from "@gui/drivers/base-driver";
+import type { CollaborationDriver } from "@gui/drivers/collaboration-driver";
+import { type PropsWithChildren, createContext, useContext } from "react";
+
+const DriverContext = createContext<{
+ databaseDriver: BaseDriver;
+ collaborationDriver?: CollaborationDriver;
+}>({
+ databaseDriver: {} as unknown as BaseDriver,
+});
+
+export function useDatabaseDriver() {
+ return useContext(DriverContext);
+}
+
+export function DriverProvider({
+ children,
+ driver,
+ collaborationDriver,
+}: PropsWithChildren<{
+ driver: BaseDriver;
+ collaborationDriver?: CollaborationDriver;
+}>) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/context/SchemaProvider.tsx b/gui/src/contexts/schema-provider.tsx
similarity index 85%
rename from src/context/SchemaProvider.tsx
rename to gui/src/contexts/schema-provider.tsx
index e8a767da..f632e01e 100644
--- a/src/context/SchemaProvider.tsx
+++ b/gui/src/contexts/schema-provider.tsx
@@ -1,79 +1,83 @@
-import { useAutoComplete } from "@/context/AutoCompleteProvider";
-import { useDatabaseDriver } from "@/context/DatabaseDriverProvider";
-import {
- PropsWithChildren,
- createContext,
- useCallback,
- useContext,
- useEffect,
- useMemo,
- useState,
-} from "react";
-import ConnectingDialog from "../components/connection-dialog";
-import { DatabaseSchemaItem } from "@/drivers/base-driver";
-
-const SchemaContext = createContext<{
- schema: DatabaseSchemaItem[];
- refresh: () => void;
-}>({
- schema: [],
- refresh: () => {
- throw new Error("Not implemented");
- },
-});
-
-export function useSchema() {
- return useContext(SchemaContext);
-}
-
-export function SchemaProvider({ children }: Readonly) {
- const { updateTableList } = useAutoComplete();
- const [error, setError] = useState();
- const [schemaItems, setSchemaItems] = useState([]);
- const [loading, setLoading] = useState(true);
- const { databaseDriver } = useDatabaseDriver();
-
- const fetchSchema = useCallback(
- (refresh?: boolean) => {
- if (refresh) {
- setLoading(true);
- }
-
- databaseDriver
- .schemas()
- .then((tableList) => {
- const sortedTableList = [...tableList];
- sortedTableList.sort((a, b) => {
- return a.name.localeCompare(b.name);
- });
-
- setSchemaItems(sortedTableList);
- updateTableList(tableList.map((table) => table.name));
-
- setError(undefined);
- setLoading(false);
- })
- .catch((e) => {
- setError(e.message);
- setLoading(false);
- });
- },
- [databaseDriver, updateTableList, setError]
- );
-
- useEffect(() => {
- fetchSchema(true);
- }, [fetchSchema]);
-
- const props = useMemo(() => {
- return { schema: schemaItems, refresh: fetchSchema };
- }, [schemaItems, fetchSchema]);
-
- if (error || loading) {
- return ;
- }
-
- return (
- {children}
- );
-}
+import {
+ PropsWithChildren,
+ createContext,
+ useCallback,
+ useContext,
+ useEffect,
+ useMemo,
+ useState,
+} from "react";
+import ConnectingDialog from "../components/connection-dialog";
+import { DatabaseSchemaItem } from "@gui/drivers/base-driver";
+import { useDatabaseDriver } from "./driver-provider";
+import { useAutoComplete } from "./auto-complete-provider";
+
+const SchemaContext = createContext<{
+ schema: DatabaseSchemaItem[];
+ refresh: () => void;
+}>({
+ schema: [],
+ refresh: () => {
+ throw new Error("Not implemented");
+ },
+});
+
+export function useSchema() {
+ return useContext(SchemaContext);
+}
+
+export function SchemaProvider({ children }: Readonly) {
+ const { updateTableList } = useAutoComplete();
+ const [error, setError] = useState();
+ const [schemaItems, setSchemaItems] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const { databaseDriver } = useDatabaseDriver();
+
+ const fetchSchema = useCallback(
+ (refresh?: boolean) => {
+ if (refresh) {
+ setLoading(true);
+ }
+
+ databaseDriver
+ .schemas()
+ .then((tableList) => {
+ const sortedTableList = [...tableList];
+ sortedTableList.sort((a, b) => {
+ return a.name.localeCompare(b.name);
+ });
+
+ setSchemaItems(sortedTableList);
+ updateTableList(tableList.map((table) => table.name));
+
+ setError(undefined);
+ setLoading(false);
+ })
+ .catch((e) => {
+ setError(e.message);
+ setLoading(false);
+ });
+ },
+ [databaseDriver, updateTableList, setError]
+ );
+
+ useEffect(() => {
+ fetchSchema(true);
+ }, [fetchSchema]);
+
+ const props = useMemo(() => {
+ return { schema: schemaItems, refresh: fetchSchema };
+ }, [schemaItems, fetchSchema]);
+
+ if (error || loading) {
+ return ;
+ }
+
+ return (
+ {children}
+ );
+}
+
+// function useAutoComplete(): { updateTableList: any } {
+// return { updateTableList: () => console.log("Not implemented") };
+// }
diff --git a/src/context/theme-provider.tsx b/gui/src/contexts/theme-provider.tsx
similarity index 95%
rename from src/context/theme-provider.tsx
rename to gui/src/contexts/theme-provider.tsx
index 33c32ae4..9302404a 100644
--- a/src/context/theme-provider.tsx
+++ b/gui/src/contexts/theme-provider.tsx
@@ -1,54 +1,55 @@
-"use client";
-import { setCookie } from "cookies-next";
-import {
- PropsWithChildren,
- createContext,
- useCallback,
- useContext,
- useEffect,
- useMemo,
- useState,
-} from "react";
-
-type ThemeType = "dark" | "light";
-
-const ThemeContext = createContext<{
- theme: ThemeType;
- toggleTheme: (theme?: string) => void;
-}>({
- theme: "dark",
- toggleTheme: () => {
- throw new Error("Not implemented");
- },
-});
-
-export function useTheme() {
- return useContext(ThemeContext);
-}
-
-export default function ThemeProvider({
- children,
- defaultTheme,
-}: PropsWithChildren<{ defaultTheme: ThemeType }>) {
- const [theme, setTheme] = useState(defaultTheme);
-
- const toggleTheme = useCallback(() => {
- const newTheme = theme === "dark" ? "light" : "dark";
- setCookie("theme", newTheme);
- setTheme(newTheme);
- }, [setTheme, theme]);
-
- useEffect(() => {
- if (theme === "light") {
- window.document.body.classList.remove("dark");
- } else {
- window.document.body.classList.add("dark");
- }
- }, [theme]);
-
- const value = useMemo(() => ({ toggleTheme, theme }), [toggleTheme, theme]);
-
- return (
- {children}
- );
-}
+"use client";
+
+import { setCookie } from "cookies-next";
+import {
+ PropsWithChildren,
+ createContext,
+ useCallback,
+ useContext,
+ useEffect,
+ useMemo,
+ useState,
+} from "react";
+
+type ThemeType = "dark" | "light";
+
+const ThemeContext = createContext<{
+ theme: ThemeType;
+ toggleTheme: (theme?: string) => void;
+}>({
+ theme: "dark",
+ toggleTheme: () => {
+ throw new Error("Not implemented");
+ },
+});
+
+export function useTheme() {
+ return useContext(ThemeContext);
+}
+
+export default function ThemeProvider({
+ children,
+ defaultTheme,
+}: PropsWithChildren<{ defaultTheme: ThemeType }>) {
+ const [theme, setTheme] = useState(defaultTheme);
+
+ const toggleTheme = useCallback(() => {
+ const newTheme = theme === "dark" ? "light" : "dark";
+ setCookie("theme", newTheme);
+ setTheme(newTheme);
+ }, [setTheme, theme]);
+
+ useEffect(() => {
+ if (theme === "light") {
+ window.document.body.classList.remove("dark");
+ } else {
+ window.document.body.classList.add("dark");
+ }
+ }, [theme]);
+
+ const value = useMemo(() => ({ toggleTheme, theme }), [toggleTheme, theme]);
+
+ return (
+ {children}
+ );
+}
diff --git a/src/drivers/base-driver.ts b/gui/src/drivers/base-driver.ts
similarity index 91%
rename from src/drivers/base-driver.ts
rename to gui/src/drivers/base-driver.ts
index b44c7605..284604aa 100644
--- a/src/drivers/base-driver.ts
+++ b/gui/src/drivers/base-driver.ts
@@ -1,181 +1,196 @@
-import { InStatement } from "@libsql/client/web";
-
-export enum TableColumnDataType {
- TEXT = 1,
- INTEGER = 2,
- REAL = 3,
- BLOB = 4,
-}
-
-export type SqlOrder = "ASC" | "DESC";
-export type DatabaseRow = Record;
-
-export interface DatabaseHeader {
- name: string;
- displayName: string;
- originalType: string | null;
- type: TableColumnDataType;
-}
-export interface DatabaseResultSet {
- rows: DatabaseRow[];
- headers: DatabaseHeader[];
- rowsAffected: number;
- lastInsertRowid?: number;
-}
-
-export interface ColumnSortOption {
- columnName: string;
- by: SqlOrder;
-}
-
-export interface SelectFromTableOptions {
- whereRaw?: string;
- limit: number;
- offset: number;
- orderBy?: ColumnSortOption[];
-}
-
-export type DatabaseValue = T | undefined | null;
-
-export interface DatabaseSchemaItem {
- type: "table" | "trigger" | "view";
- name: string;
- tableName?: string;
-}
-
-export interface DatabaseTableColumn {
- name: string;
- type: string;
- pk?: boolean;
- constraint?: DatabaseTableColumnConstraint;
-}
-
-export type DatabaseColumnConflict =
- | "ROLLBACK"
- | "ABORT"
- | "FAIL"
- | "IGNORE"
- | "REPLACE";
-
-export type DatabaseForeignKeyAction =
- | "SET_NULL"
- | "SET_DEFAULT"
- | "CASCADE"
- | "RESTRICT"
- | "NO_ACTION";
-
-export interface DatabaseForeignKeyClause {
- foreignTableName?: string;
- foreignColumns?: string[];
- columns?: string[];
- onUpdate?: DatabaseForeignKeyAction;
- onDelete?: DatabaseForeignKeyAction;
-}
-
-export interface DatabaseTableColumnConstraint {
- name?: string;
-
- primaryKey?: boolean;
- primaryColumns?: string[];
- primaryKeyOrder?: SqlOrder;
- primaryKeyConflict?: DatabaseColumnConflict;
- autoIncrement?: boolean;
-
- notNull?: boolean;
- notNullConflict?: DatabaseColumnConflict;
-
- unique?: boolean;
- uniqueColumns?: string[];
- uniqueConflict?: DatabaseColumnConflict;
-
- checkExpression?: string;
-
- defaultValue?: unknown;
- defaultExpression?: string;
-
- collate?: string;
-
- generatedExpression?: string;
- generatedType?: "STORED" | "VIRTUAL";
-
- foreignKey?: DatabaseForeignKeyClause;
-}
-
-export interface DatabaseTableSchema {
- columns: DatabaseTableColumn[];
- pk: string[];
- autoIncrement: boolean;
- tableName?: string;
- constraints?: DatabaseTableColumnConstraint[];
- createScript?: string;
-}
-
-export type TriggerWhen = "BEFORE" | "AFTER" | "INSTEAD_OF";
-
-export type TriggerOperation = "INSERT" | "UPDATE" | "DELETE";
-
-export interface DatabaseTriggerSchema {
- name: string;
- operation: TriggerOperation;
- when: TriggerWhen;
- tableName: string;
- columnNames?: string[];
- whenExpression: string;
- statement: string;
-}
-
-interface DatabaseTableOperationInsert {
- operation: "INSERT";
- values: Record;
- autoIncrementPkColumn?: string;
-}
-
-interface DatabaseTableOperationUpdate {
- operation: "UPDATE" | "DELETE";
- values: Record;
- where: Record;
-}
-
-interface DatabaseTableOperationDelete {
- operation: "DELETE";
- where: Record;
-}
-
-export type DatabaseTableOperation =
- | DatabaseTableOperationInsert
- | DatabaseTableOperationUpdate
- | DatabaseTableOperationDelete;
-
-export interface DatabaseTableOperationReslt {
- lastId?: number;
- record?: Record;
-}
-
-export abstract class BaseDriver {
- // Flags
- abstract supportBigInt(): boolean;
-
- // Methods
- abstract close(): void;
-
- abstract query(stmt: InStatement): Promise;
- abstract transaction(stmts: InStatement[]): Promise;
-
- abstract schemas(): Promise;
- abstract tableSchema(tableName: string): Promise;
- abstract trigger(name: string): Promise;
-
- abstract selectTable(
- tableName: string,
- options: SelectFromTableOptions
- ): Promise<{ data: DatabaseResultSet; schema: DatabaseTableSchema }>;
-
- abstract updateTableData(
- tableName: string,
- ops: DatabaseTableOperation[],
-
- // Using table scheam to determine and throw error
- // if the operation is unsafe
- validateSchema?: DatabaseTableSchema
- ): Promise;
-}
+export type InValue =
+ | null
+ | string
+ | number
+ | bigint
+ | ArrayBuffer
+ | boolean
+ | Uint8Array
+ | Date;
+
+export type Statement =
+ | string
+ | {
+ sql: string;
+ args: InValue[] | Record;
+ };
+
+export enum TableColumnDataType {
+ TEXT = 1,
+ INTEGER = 2,
+ REAL = 3,
+ BLOB = 4,
+}
+
+export type SqlOrder = "ASC" | "DESC";
+export type DatabaseRow = Record;
+
+export interface DatabaseHeader {
+ name: string;
+ displayName: string;
+ originalType: string | null;
+ type: TableColumnDataType;
+}
+export interface DatabaseResultSet {
+ rows: DatabaseRow[];
+ headers: DatabaseHeader[];
+ rowsAffected: number;
+ lastInsertRowid?: number;
+}
+
+export interface ColumnSortOption {
+ columnName: string;
+ by: SqlOrder;
+}
+
+export interface SelectFromTableOptions {
+ whereRaw?: string;
+ limit: number;
+ offset: number;
+ orderBy?: ColumnSortOption[];
+}
+
+export type DatabaseValue = T | undefined | null;
+
+export interface DatabaseSchemaItem {
+ type: "table" | "trigger" | "view";
+ name: string;
+ tableName?: string;
+}
+
+export interface DatabaseTableColumn {
+ name: string;
+ type: string;
+ pk?: boolean;
+ constraint?: DatabaseTableColumnConstraint;
+}
+
+export type DatabaseColumnConflict =
+ | "ROLLBACK"
+ | "ABORT"
+ | "FAIL"
+ | "IGNORE"
+ | "REPLACE";
+
+export type DatabaseForeignKeyAction =
+ | "SET_NULL"
+ | "SET_DEFAULT"
+ | "CASCADE"
+ | "RESTRICT"
+ | "NO_ACTION";
+
+export interface DatabaseForeignKeyClause {
+ foreignTableName?: string;
+ foreignColumns?: string[];
+ columns?: string[];
+ onUpdate?: DatabaseForeignKeyAction;
+ onDelete?: DatabaseForeignKeyAction;
+}
+
+export interface DatabaseTableColumnConstraint {
+ name?: string;
+
+ primaryKey?: boolean;
+ primaryColumns?: string[];
+ primaryKeyOrder?: SqlOrder;
+ primaryKeyConflict?: DatabaseColumnConflict;
+ autoIncrement?: boolean;
+
+ notNull?: boolean;
+ notNullConflict?: DatabaseColumnConflict;
+
+ unique?: boolean;
+ uniqueColumns?: string[];
+ uniqueConflict?: DatabaseColumnConflict;
+
+ checkExpression?: string;
+
+ defaultValue?: unknown;
+ defaultExpression?: string;
+
+ collate?: string;
+
+ generatedExpression?: string;
+ generatedType?: "STORED" | "VIRTUAL";
+
+ foreignKey?: DatabaseForeignKeyClause;
+}
+
+export interface DatabaseTableSchema {
+ columns: DatabaseTableColumn[];
+ pk: string[];
+ autoIncrement: boolean;
+ tableName?: string;
+ constraints?: DatabaseTableColumnConstraint[];
+ createScript?: string;
+}
+
+export type TriggerWhen = "BEFORE" | "AFTER" | "INSTEAD_OF";
+
+export type TriggerOperation = "INSERT" | "UPDATE" | "DELETE";
+
+export interface DatabaseTriggerSchema {
+ name: string;
+ operation: TriggerOperation;
+ when: TriggerWhen;
+ tableName: string;
+ columnNames?: string[];
+ whenExpression: string;
+ statement: string;
+}
+
+interface DatabaseTableOperationInsert {
+ operation: "INSERT";
+ values: Record;
+ autoIncrementPkColumn?: string;
+}
+
+interface DatabaseTableOperationUpdate {
+ operation: "UPDATE" | "DELETE";
+ values: Record;
+ where: Record;
+}
+
+interface DatabaseTableOperationDelete {
+ operation: "DELETE";
+ where: Record;
+}
+
+export type DatabaseTableOperation =
+ | DatabaseTableOperationInsert
+ | DatabaseTableOperationUpdate
+ | DatabaseTableOperationDelete;
+
+export interface DatabaseTableOperationReslt {
+ lastId?: number;
+ record?: Record;
+}
+
+export abstract class BaseDriver {
+ // Flags
+ abstract supportBigInt(): boolean;
+
+ // Methods
+ abstract close(): void;
+
+ abstract query(stmt: Statement): Promise;
+ abstract transaction(stmts: Statement[]): Promise;
+
+ abstract schemas(): Promise;
+ abstract tableSchema(tableName: string): Promise;
+ abstract trigger(name: string): Promise;
+
+ abstract selectTable(
+ tableName: string,
+ options: SelectFromTableOptions
+ ): Promise<{ data: DatabaseResultSet; schema: DatabaseTableSchema }>;
+
+ abstract updateTableData(
+ tableName: string,
+ ops: DatabaseTableOperation[],
+
+ // Using table scheam to determine and throw error
+ // if the operation is unsafe
+ validateSchema?: DatabaseTableSchema
+ ): Promise;
+}
diff --git a/gui/src/drivers/collaboration-driver.ts b/gui/src/drivers/collaboration-driver.ts
new file mode 100644
index 00000000..be55267e
--- /dev/null
+++ b/gui/src/drivers/collaboration-driver.ts
@@ -0,0 +1,8 @@
+import { ApiRole, ApiUserRole } from "@gui/lib/api-database-response";
+
+export abstract class CollaborationDriver {
+ abstract getRoles(): Promise;
+ abstract getUsers(): Promise;
+ abstract assignUser(userId: string, roleId: string): Promise;
+ abstract deleteUser(userId: string): Promise;
+}
diff --git a/src/drivers/sqlite-base-driver.ts b/gui/src/drivers/sqlite-base-driver.ts
similarity index 81%
rename from src/drivers/sqlite-base-driver.ts
rename to gui/src/drivers/sqlite-base-driver.ts
index a1c0804e..b8f67ef0 100644
--- a/src/drivers/sqlite-base-driver.ts
+++ b/gui/src/drivers/sqlite-base-driver.ts
@@ -1,6 +1,5 @@
-import { InStatement } from "@libsql/client";
-import {
- BaseDriver,
+import type {
+ Statement,
DatabaseResultSet,
DatabaseSchemaItem,
DatabaseTableColumn,
@@ -10,35 +9,40 @@ import {
DatabaseTriggerSchema,
SelectFromTableOptions,
} from "./base-driver";
+import { BaseDriver } from "./base-driver";
+
import {
escapeSqlValue,
generateInsertStatement,
generateDeleteStatement,
generateUpdateStatement,
generateSelectOneWithConditionStatement,
-} from "@/lib/sql-helper";
-import { parseCreateTableScript } from "@/lib/sql-parse-table";
-import { validateOperation } from "@/lib/validation";
-import { parseCreateTriggerScript } from "@/lib/sql-parse-trigger";
+} from "./../sqlite/sql-helper";
+
+import { parseCreateTableScript } from "./../sqlite/sql-parse-table";
+import { parseCreateTriggerScript } from "./../sqlite/sql-parse-trigger";
+import { validateOperation } from "./../lib/validation";
-export default abstract class SqliteLikeBaseDriver extends BaseDriver {
+export abstract class SqliteLikeBaseDriver extends BaseDriver {
protected escapeId(id: string) {
return `"${id.replace(/"/g, '""')}"`;
}
- abstract query(stmt: InStatement): Promise;
- abstract transaction(stmts: InStatement[]): Promise;
+ abstract override query(stmt: Statement): Promise;
+ abstract override transaction(
+ stmts: Statement[]
+ ): Promise;
async schemas(): Promise {
const result = await this.query("SELECT * FROM sqlite_schema;");
const tmp: DatabaseSchemaItem[] = [];
- const rows = result.rows as {
+ const rows = result.rows as Array<{
type: string;
name: string;
tbl_name: string;
sql: string;
- }[];
+ }>;
for (const row of rows) {
if (row.type === "table") {
@@ -60,10 +64,10 @@ export default abstract class SqliteLikeBaseDriver extends BaseDriver {
)};`
);
- const triggerRow = result.rows[0];
+ const triggerRow = result.rows[0] as { sql: string } | undefined;
if (!triggerRow) throw new Error("Trigger does not exist");
- return parseCreateTriggerScript(triggerRow.sql as string);
+ return parseCreateTriggerScript(triggerRow.sql);
}
close(): void {
@@ -77,9 +81,15 @@ export default abstract class SqliteLikeBaseDriver extends BaseDriver {
const binding = [tableName];
const result = await this.query({ sql, args: binding });
- const columns: DatabaseTableColumn[] = result.rows.map((row) => ({
- name: row.name?.toString() ?? "",
- type: row.type?.toString() ?? "",
+ const rows = result.rows as Array<{
+ name: string;
+ type: string;
+ pk: number;
+ }>;
+
+ const columns: DatabaseTableColumn[] = rows.map((row) => ({
+ name: row.name,
+ type: row.type,
pk: !!row.pk,
}));
@@ -115,9 +125,10 @@ export default abstract class SqliteLikeBaseDriver extends BaseDriver {
const result = await this.query(sql);
try {
- const def = result.rows.find((row) => row.type === "table");
+ const rows = result.rows as Array<{ type: string; sql: string }>;
+ const def = rows.find((row) => row.type === "table");
if (def) {
- const createScript = def.sql as string;
+ const createScript = def.sql;
return { ...parseCreateTableScript(createScript), createScript };
}
} catch (e) {
@@ -177,9 +188,8 @@ export default abstract class SqliteLikeBaseDriver extends BaseDriver {
return generateInsertStatement(tableName, op.values);
if (op.operation === "DELETE")
return generateDeleteStatement(tableName, op.where);
- if (op.operation === "UPDATE")
- return generateUpdateStatement(tableName, op.where, op.values);
- return "";
+
+ return generateUpdateStatement(tableName, op.where, op.values);
});
const result = await this.transaction(sqls);
@@ -190,6 +200,11 @@ export default abstract class SqliteLikeBaseDriver extends BaseDriver {
const r = result[i];
const op = ops[i];
+ if (!r || !op) {
+ tmp.push({});
+ continue;
+ }
+
if (op.operation === "UPDATE") {
const selectStatement = generateSelectOneWithConditionStatement(
tableName,
@@ -219,10 +234,10 @@ export default abstract class SqliteLikeBaseDriver extends BaseDriver {
});
}
- tmp.push({});
- } else {
tmp.push({});
}
+
+ tmp.push({});
}
return tmp;
diff --git a/src/hooks/useElementResize.ts b/gui/src/hooks/useElementResize.ts
similarity index 96%
rename from src/hooks/useElementResize.ts
rename to gui/src/hooks/useElementResize.ts
index c11022b6..867f317f 100644
--- a/src/hooks/useElementResize.ts
+++ b/gui/src/hooks/useElementResize.ts
@@ -1,25 +1,25 @@
-import { useEffect } from "react";
-
-export default function useElementResize(
- callback: (element: T) => void,
- ref: React.RefObject
-) {
- useEffect(() => {
- if (ref.current) {
- callback(ref.current);
- }
- }, [ref, callback]);
-
- useEffect(() => {
- if (ref.current) {
- const resizeObserver = new ResizeObserver((entries) => {
- for (const entry of entries) {
- callback(entry.target as T);
- }
- });
-
- resizeObserver.observe(ref.current);
- return () => resizeObserver.disconnect();
- }
- }, [ref, callback]);
-}
+import { useEffect } from "react";
+
+export default function useElementResize(
+ callback: (element: T) => void,
+ ref: React.RefObject
+) {
+ useEffect(() => {
+ if (ref.current) {
+ callback(ref.current);
+ }
+ }, [ref, callback]);
+
+ useEffect(() => {
+ if (ref.current) {
+ const resizeObserver = new ResizeObserver((entries) => {
+ for (const entry of entries) {
+ callback(entry.target as T);
+ }
+ });
+
+ resizeObserver.observe(ref.current);
+ return () => resizeObserver.disconnect();
+ }
+ }, [ref, callback]);
+}
diff --git a/src/hooks/useMessageListener.ts b/gui/src/hooks/useMessageListener.ts
similarity index 66%
rename from src/hooks/useMessageListener.ts
rename to gui/src/hooks/useMessageListener.ts
index d1ad3492..74ffd5e7 100644
--- a/src/hooks/useMessageListener.ts
+++ b/gui/src/hooks/useMessageListener.ts
@@ -1,17 +1,17 @@
-import { useCallback, useEffect } from "react";
-
-export default function useMessageListener(
- channel: string,
- handleMessage: (obj?: T) => void,
- deps: unknown[] = []
-) {
- // eslint-disable-next-line react-hooks/exhaustive-deps
- const callback = useCallback(handleMessage, deps);
-
- useEffect(() => {
- if (window) {
- window.internalPubSub.addListener(channel, callback);
- return () => window.internalPubSub.removeListener(channel, callback);
- }
- }, [channel, callback]);
-}
+import { useCallback, useEffect } from "react";
+
+export default function useMessageListener(
+ channel: string,
+ handleMessage: (obj?: T) => void,
+ deps: unknown[] = []
+) {
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ const callback = useCallback(handleMessage, deps);
+
+ useEffect(() => {
+ window.internalPubSub.addListener(channel, callback);
+ return () => {
+ window.internalPubSub.removeListener(channel, callback);
+ };
+ }, [channel, callback]);
+}
diff --git a/src/components/table-optimized/styles.module.css b/gui/src/index.css
similarity index 53%
rename from src/components/table-optimized/styles.module.css
rename to gui/src/index.css
index 6aebda60..d12f3f54 100644
--- a/src/components/table-optimized/styles.module.css
+++ b/gui/src/index.css
@@ -1,4 +1,36 @@
-.tableContainer {
+@import url("@libsqlstudio/tailwind/css");
+
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+.libsql-window-tab .libsql-window-close {
+ visibility: hidden;
+}
+
+.libsql-window-tab:hover .libsql-window-close {
+ visibility: visible;
+}
+
+.libsql-cell {
+ line-height: 34px;
+ height: 35px;
+ border: 1px solid transparent;
+}
+
+.libsql-focus {
+ border: 1px solid #e00;
+}
+
+.dark .libsql-change {
+ @apply bg-yellow-500;
+}
+
+.libsql-change {
+ @apply bg-yellow-200;
+}
+
+.libsql-table {
width: 100%;
height: 100%;
overflow: auto;
@@ -7,7 +39,7 @@
user-select: none;
}
-.tableContainer table {
+.libsql-table table {
position: absolute;
display: grid;
border-collapse: collapse;
@@ -17,25 +49,25 @@
table-layout: fixed;
}
-.tableContainer tr,
-.tableContainer thead,
-.tableContainer tbody {
+.libsql-table tr,
+.libsql-table thead,
+.libsql-table tbody {
display: contents;
}
-.tableContainer td,
-.tableContainer th {
+.libsql-table td,
+.libsql-table th {
@apply border-b border-r;
overflow: hidden;
}
-.tableCellContent {
+.libsql-table-cell {
overflow: hidden;
flex-grow: 1;
white-space: nowrap;
}
-.tableContainer th {
+.libsql-table th {
position: sticky;
top: 0;
user-select: none;
@@ -48,13 +80,7 @@
z-index: 10;
}
-.tableHeaderIcon {
- margin-right: 5px;
- display: flex;
- align-items: center;
-}
-
-.resizer {
+.libsql-resizer {
position: absolute;
right: 0;
top: 0;
@@ -65,38 +91,27 @@
opacity: 0;
}
-.resizer:hover {
+.libsql-resizer:hover {
opacity: 0.5;
}
-:global(.dark) .selectedRow td {
+.dark .libsql-selected-row td {
@apply bg-gray-800;
}
-.selectedRow td {
+.libsql-selected-row td {
@apply bg-gray-100;
}
-.newRow td {
+.libsql-new-row td {
background-color: var(--color-table-row-new);
color: var(--color-text);
}
-:global(.dark) .removedRow td {
+.dark .libsql-removed-row td {
@apply bg-red-800;
}
-.removedRow td {
+.libsql-removed-row td {
@apply bg-red-200;
}
-
-.stickyColumn {
- position: sticky;
- left: 0;
- border-right: 5px solid var(--color-table-grid) !important;
- z-index: 1;
-}
-
-th.stickyColumn {
- z-index: 20;
-}
diff --git a/gui/src/index.tsx b/gui/src/index.tsx
new file mode 100644
index 00000000..018d8503
--- /dev/null
+++ b/gui/src/index.tsx
@@ -0,0 +1,10 @@
+export { Studio } from "./studio";
+export * from "./drivers/base-driver";
+export { CollaborationDriver } from "./drivers/collaboration-driver";
+export { SqliteLikeBaseDriver } from "./drivers/sqlite-base-driver";
+export {
+ convertSqliteType,
+ escapeIdentity,
+ escapeSqlValue,
+} from "./sqlite/sql-helper";
+export { default as parseSafeJson } from "./lib/json-safe";
diff --git a/src/lib/api/api-database-response.ts b/gui/src/lib/api-database-response.ts
similarity index 93%
rename from src/lib/api/api-database-response.ts
rename to gui/src/lib/api-database-response.ts
index 691b22e0..52d488cb 100644
--- a/src/lib/api/api-database-response.ts
+++ b/gui/src/lib/api-database-response.ts
@@ -1,25 +1,25 @@
-export interface ApiRole {
- id: string;
- name: string;
-}
-
-export interface ApiUser {
- id: string;
- name: string;
-}
-
-export interface ApiUserRole {
- id: string;
- name: string;
- role: ApiRole;
- createdAt: number;
- assignedBy: ApiUser;
-}
-
-export interface ApiRolesResponse {
- roles: ApiRole[];
-}
-
-export interface ApiUserListResponse {
- users: ApiUserRole[];
-}
+export interface ApiRole {
+ id: string;
+ name: string;
+}
+
+export interface ApiUser {
+ id: string;
+ name: string;
+}
+
+export interface ApiUserRole {
+ id: string;
+ name: string;
+ role: ApiRole;
+ createdAt: number;
+ assignedBy: ApiUser;
+}
+
+export interface ApiRolesResponse {
+ roles: ApiRole[];
+}
+
+export interface ApiUserListResponse {
+ users: ApiUserRole[];
+}
diff --git a/gui/src/lib/bit-operation.ts b/gui/src/lib/bit-operation.ts
new file mode 100644
index 00000000..cf81910d
--- /dev/null
+++ b/gui/src/lib/bit-operation.ts
@@ -0,0 +1,15 @@
+const byteToHex: string[] = [];
+
+for (let n = 0; n <= 0xff; ++n) {
+ const hexOctet = n.toString(16).padStart(2, "0");
+ byteToHex.push(hexOctet.toUpperCase());
+}
+
+// https://stackoverflow.com/questions/40031688/javascript-arraybuffer-to-hex
+export function hex(arrayBuffer: ArrayBuffer) {
+ const buff = new Uint8Array(arrayBuffer);
+ let hexOctets = "";
+
+ for (const b of buff) hexOctets += byteToHex[b];
+ return hexOctets;
+}
diff --git a/src/lib/export-helper.ts b/gui/src/lib/export-helper.ts
similarity index 83%
rename from src/lib/export-helper.ts
rename to gui/src/lib/export-helper.ts
index c7b98806..3b3c7bd6 100644
--- a/src/lib/export-helper.ts
+++ b/gui/src/lib/export-helper.ts
@@ -1,46 +1,46 @@
-import { escapeIdentity, escapeSqlValue } from "./sql-helper";
-
-export function selectArrayFromIndexList(
- data: Array,
- indexList: number[]
-): Array {
- return indexList.map((index) => data[index]);
-}
-
-export function exportRowsToSqlInsert(
- tableName: string,
- headers: string[],
- records: unknown[][]
-): string {
- const result: string[] = [];
-
- const headersPart = headers.map(escapeIdentity).join(", ");
-
- for (const record of records) {
- const valuePart = record.map(escapeSqlValue).join(", ");
- const line = `INSERT INTO ${escapeIdentity(
- tableName
- )}(${headersPart}) VALUES(${valuePart});`;
-
- result.push(line);
- }
-
- return result.join("\r\n");
-}
-
-function cellToExcelValue(value: unknown) {
- if (value === undefined) return "";
- if (value === null) return "NULL";
- return value.toString();
-}
-
-export function exportRowsToExcel(records: unknown[][]) {
- const result: string[] = [];
-
- for (const record of records) {
- const line = record.map(cellToExcelValue).join("\t");
- result.push(line);
- }
-
- return result.join("\r\n");
-}
+import { escapeIdentity, escapeSqlValue } from "@gui/sqlite/sql-helper";
+
+export function selectArrayFromIndexList(
+ data: T[],
+ indexList: number[]
+): T[] {
+ return indexList.map((index) => data[index]) as T[];
+}
+
+export function exportRowsToSqlInsert(
+ tableName: string,
+ headers: string[],
+ records: unknown[][]
+): string {
+ const result: string[] = [];
+
+ const headersPart = headers.map(escapeIdentity).join(", ");
+
+ for (const record of records) {
+ const valuePart = record.map(escapeSqlValue).join(", ");
+ const line = `INSERT INTO ${escapeIdentity(
+ tableName
+ )}(${headersPart}) VALUES(${valuePart});`;
+
+ result.push(line);
+ }
+
+ return result.join("\r\n");
+}
+
+function cellToExcelValue(value: unknown) {
+ if (value === undefined) return "";
+ if (value === null) return "NULL";
+ return value.toString();
+}
+
+export function exportRowsToExcel(records: unknown[][]) {
+ const result: string[] = [];
+
+ for (const record of records) {
+ const line = record.map(cellToExcelValue).join("\t");
+ result.push(line);
+ }
+
+ return result.join("\r\n");
+}
diff --git a/src/lib/file-upload.ts b/gui/src/lib/file-upload.ts
similarity index 96%
rename from src/lib/file-upload.ts
rename to gui/src/lib/file-upload.ts
index 4d3c168d..9556c2c7 100644
--- a/src/lib/file-upload.ts
+++ b/gui/src/lib/file-upload.ts
@@ -37,7 +37,7 @@ const DEFAULT_MAX_SIZE = 1024 * 1024 * 10; // 10MB
const DEFAULT_MAX_FILES = 1;
export const triggerSelectFiles = (
- options?: TriggerFileUploadOptions,
+ options?: TriggerFileUploadOptions
): Promise> => {
const {
maxSize = DEFAULT_MAX_SIZE,
@@ -63,17 +63,17 @@ export const triggerSelectFiles = (
// Check if the number of files exceeds the maximum limit
if (maxFiles && files.length > maxFiles) {
return reject(
- err("Too many files selected, maximum allowed is " + maxFiles),
+ err("Too many files selected, maximum allowed is " + maxFiles)
);
}
const invalidFileSizes = Array.from(files).some(
- (file) => file.size > maxSize,
+ (file) => file.size > maxSize
);
if (invalidFileSizes) {
return reject(
- err("Some file's size exceeds the maximum limit of " + maxSize),
+ err("Some file's size exceeds the maximum limit of " + maxSize)
);
}
diff --git a/gui/src/lib/internal-pubsub.ts b/gui/src/lib/internal-pubsub.ts
new file mode 100644
index 00000000..ec50eb65
--- /dev/null
+++ b/gui/src/lib/internal-pubsub.ts
@@ -0,0 +1,30 @@
+export default class InternalPubSub {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ protected listeners: Record void>> = {};
+
+ addListener(channel: string, callback: (obj: T) => void) {
+ const c = this.listeners[channel];
+ if (c) {
+ c.push(callback);
+ } else {
+ this.listeners[channel] = [callback];
+ }
+ }
+
+ removeListener(channel: string, callback: (obj: T) => void) {
+ const c = this.listeners[channel];
+ if (c) {
+ c.filter((c) => c !== callback);
+ if (c.length) {
+ delete this.listeners[channel];
+ }
+ }
+ }
+
+ send(channel: string, obj: T) {
+ const listeners = this.listeners[channel];
+ if (listeners) {
+ listeners.forEach((callback) => callback(obj));
+ }
+ }
+}
diff --git a/src/lib/json-safe.ts b/gui/src/lib/json-safe.ts
similarity index 76%
rename from src/lib/json-safe.ts
rename to gui/src/lib/json-safe.ts
index f28661cc..3adc2eb6 100644
--- a/src/lib/json-safe.ts
+++ b/gui/src/lib/json-safe.ts
@@ -1,12 +1,13 @@
-export default function parseSafeJson(
- str: string | null | undefined,
- defaultValue: T
-): T {
- if (!str) return defaultValue;
-
- try {
- return JSON.parse(str);
- } catch {
- return defaultValue;
- }
-}
+export default function parseSafeJson(
+ str: string | null | undefined,
+ defaultValue: T
+): T {
+ if (!str) return defaultValue;
+
+ try {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ return JSON.parse(str);
+ } catch {
+ return defaultValue;
+ }
+}
diff --git a/src/lib/key-matcher.ts b/gui/src/lib/key-matcher.ts
similarity index 100%
rename from src/lib/key-matcher.ts
rename to gui/src/lib/key-matcher.ts
diff --git a/src/lib/multiple-query.ts b/gui/src/lib/multiple-query.ts
similarity index 89%
rename from src/lib/multiple-query.ts
rename to gui/src/lib/multiple-query.ts
index a5996492..5d462be0 100644
--- a/src/lib/multiple-query.ts
+++ b/gui/src/lib/multiple-query.ts
@@ -1,77 +1,77 @@
-import { BaseDriver, DatabaseResultSet } from "@/drivers/base-driver";
-
-export interface MultipleQueryProgressItem {
- order: number;
- sql: string;
- start: number;
- end?: number;
- affectedRow?: number;
- error?: string;
-}
-
-export interface MultipleQueryProgress {
- logs: MultipleQueryProgressItem[];
- progress: number;
- total: number;
- error?: boolean;
-}
-
-export async function multipleQuery(
- driver: BaseDriver,
- statements: string[],
- onProgress?: (progress: MultipleQueryProgress) => void
-) {
- const logs: MultipleQueryProgressItem[] = [];
- const result: DatabaseResultSet[] = [];
- let lastResult: DatabaseResultSet | undefined;
-
- for (let i = 0; i < statements.length; i++) {
- const statement = statements[i];
-
- const log: MultipleQueryProgressItem = {
- order: i,
- sql: statement,
- start: Date.now(),
- };
-
- logs.push(log);
- if (onProgress) {
- onProgress({ logs, progress: i, total: statements.length });
- }
-
- try {
- const r = await driver.query(statement);
-
- log.end = Date.now();
- log.affectedRow = r.rowsAffected;
-
- if (r.headers.length > 0) {
- lastResult = r;
- result.push(r);
- }
-
- if (onProgress) {
- onProgress({ logs, progress: i + 1, total: statements.length });
- }
- } catch (e) {
- log.end = Date.now();
- log.error = (e as Error).toString();
-
- if (onProgress) {
- onProgress({
- logs,
- progress: i,
- total: statements.length,
- error: true,
- });
- }
-
- break;
- }
- }
-
- return {
- result,
- last: lastResult,
- };
-}
+import { BaseDriver, DatabaseResultSet } from "@gui/drivers/base-driver";
+
+export interface MultipleQueryProgressItem {
+ order: number;
+ sql: string;
+ start: number;
+ end?: number;
+ affectedRow?: number;
+ error?: string;
+}
+
+export interface MultipleQueryProgress {
+ logs: MultipleQueryProgressItem[];
+ progress: number;
+ total: number;
+ error?: boolean;
+}
+
+export async function multipleQuery(
+ driver: BaseDriver,
+ statements: string[],
+ onProgress?: (progress: MultipleQueryProgress) => void
+) {
+ const logs: MultipleQueryProgressItem[] = [];
+ const result: DatabaseResultSet[] = [];
+ let lastResult: DatabaseResultSet | undefined;
+
+ for (let i = 0; i < statements.length; i++) {
+ const statement = statements[i] as string;
+
+ const log: MultipleQueryProgressItem = {
+ order: i,
+ sql: statement,
+ start: Date.now(),
+ };
+
+ logs.push(log);
+ if (onProgress) {
+ onProgress({ logs, progress: i, total: statements.length });
+ }
+
+ try {
+ const r = await driver.query(statement);
+
+ log.end = Date.now();
+ log.affectedRow = r.rowsAffected;
+
+ if (r.headers.length > 0) {
+ lastResult = r;
+ result.push(r);
+ }
+
+ if (onProgress) {
+ onProgress({ logs, progress: i + 1, total: statements.length });
+ }
+ } catch (e) {
+ log.end = Date.now();
+ log.error = (e as Error).toString();
+
+ if (onProgress) {
+ onProgress({
+ logs,
+ progress: i,
+ total: statements.length,
+ error: true,
+ });
+ }
+
+ break;
+ }
+ }
+
+ return {
+ result,
+ last: lastResult,
+ };
+}
diff --git a/src/lib/sql-execute-helper.ts b/gui/src/lib/sql-execute-helper.ts
similarity index 81%
rename from src/lib/sql-execute-helper.ts
rename to gui/src/lib/sql-execute-helper.ts
index 05a48b23..cee2c89c 100644
--- a/src/lib/sql-execute-helper.ts
+++ b/gui/src/lib/sql-execute-helper.ts
@@ -1,103 +1,106 @@
-import OptimizeTableState, {
- OptimizeTableRowValue,
-} from "@/components/table-optimized/OptimizeTableState";
-import {
- BaseDriver,
- DatabaseTableOperation,
- DatabaseTableSchema,
-} from "@/drivers/base-driver";
-
-export interface ExecutePlan {
- row: OptimizeTableRowValue;
- plan: DatabaseTableOperation;
-}
-
-function generateTableChangePlan({
- tableSchema,
- data,
-}: {
- tableSchema: DatabaseTableSchema;
- data: OptimizeTableState;
-}): ExecutePlan[] {
- const rowChangeList = data.getChangedRows();
- const plans: ExecutePlan[] = [];
-
- for (const row of rowChangeList) {
- const rowChange = row.change;
- if (rowChange) {
- const pk = tableSchema.pk;
-
- const wherePrimaryKey = pk.reduce((condition, pkColumnName) => {
- condition[pkColumnName] = row.raw[pkColumnName];
- return condition;
- }, {} as Record);
-
- if (row.isNewRow) {
- plans.push({
- row,
- plan: {
- operation: "INSERT",
- values: rowChange,
- autoIncrementPkColumn: tableSchema.autoIncrement
- ? tableSchema.pk[0]
- : undefined,
- },
- });
- } else if (row.isRemoved) {
- plans.push({
- row,
- plan: { operation: "DELETE", where: wherePrimaryKey },
- });
- } else {
- plans.push({
- row,
- plan: {
- operation: "UPDATE",
- where: wherePrimaryKey,
- values: rowChange,
- },
- });
- }
- }
- }
-
- return plans;
-}
-
-export async function commitChange({
- driver,
- tableName,
- tableSchema,
- data,
-}: {
- driver: BaseDriver;
- tableName: string;
- tableSchema: DatabaseTableSchema;
- data: OptimizeTableState;
-}): Promise<{ errorMessage?: string }> {
- const plans = generateTableChangePlan({
- tableSchema,
- data,
- });
-
- try {
- const result = await driver.updateTableData(
- tableName,
- plans.map((p) => p.plan),
- tableSchema
- );
-
- data.applyChanges(
- plans.map((p, idx) => {
- return {
- row: p.row,
- updated: result[idx].record ?? {},
- };
- })
- );
- } catch (e) {
- return { errorMessage: (e as Error).message };
- }
-
- return {};
-}
+import OptimizeTableState, {
+ OptimizeTableRowValue,
+} from "@gui/components/table-optimized/OptimizeTableState";
+import {
+ BaseDriver,
+ DatabaseTableOperation,
+ DatabaseTableSchema,
+} from "@gui/drivers/base-driver";
+
+export interface ExecutePlan {
+ row: OptimizeTableRowValue;
+ plan: DatabaseTableOperation;
+}
+
+function generateTableChangePlan({
+ tableSchema,
+ data,
+}: {
+ tableSchema: DatabaseTableSchema;
+ data: OptimizeTableState;
+}): ExecutePlan[] {
+ const rowChangeList = data.getChangedRows();
+ const plans: ExecutePlan[] = [];
+
+ for (const row of rowChangeList) {
+ const rowChange = row.change;
+ if (rowChange) {
+ const pk = tableSchema.pk;
+
+ const wherePrimaryKey = pk.reduce>(
+ (condition, pkColumnName) => {
+ condition[pkColumnName] = row.raw[pkColumnName];
+ return condition;
+ },
+ {}
+ );
+
+ if (row.isNewRow) {
+ plans.push({
+ row,
+ plan: {
+ operation: "INSERT",
+ values: rowChange,
+ autoIncrementPkColumn: tableSchema.autoIncrement
+ ? tableSchema.pk[0]
+ : undefined,
+ },
+ });
+ } else if (row.isRemoved) {
+ plans.push({
+ row,
+ plan: { operation: "DELETE", where: wherePrimaryKey },
+ });
+ } else {
+ plans.push({
+ row,
+ plan: {
+ operation: "UPDATE",
+ where: wherePrimaryKey,
+ values: rowChange,
+ },
+ });
+ }
+ }
+ }
+
+ return plans;
+}
+
+export async function commitChange({
+ driver,
+ tableName,
+ tableSchema,
+ data,
+}: {
+ driver: BaseDriver;
+ tableName: string;
+ tableSchema: DatabaseTableSchema;
+ data: OptimizeTableState;
+}): Promise<{ errorMessage?: string }> {
+ const plans = generateTableChangePlan({
+ tableSchema,
+ data,
+ });
+
+ try {
+ const result = await driver.updateTableData(
+ tableName,
+ plans.map((p) => p.plan),
+ tableSchema
+ );
+
+ data.applyChanges(
+ plans.map((p, idx) => {
+ return {
+ row: p.row,
+ updated: result[idx]?.record ?? {},
+ };
+ })
+ );
+ } catch (e) {
+ return { errorMessage: (e as Error).message };
+ }
+
+ return {};
+}
diff --git a/src/lib/sql-generate.schema.ts b/gui/src/lib/sql-generate.schema.ts
similarity index 92%
rename from src/lib/sql-generate.schema.ts
rename to gui/src/lib/sql-generate.schema.ts
index cf036dd9..bf44415e 100644
--- a/src/lib/sql-generate.schema.ts
+++ b/gui/src/lib/sql-generate.schema.ts
@@ -1,160 +1,160 @@
-import {
- DatabaseTableColumnChange,
- DatabaseTableSchemaChange,
-} from "@/components/schema-editor";
-import { escapeIdentity, escapeSqlValue } from "./sql-helper";
-import deepEqual from "deep-equal";
-import { DatabaseTableColumn } from "@/drivers/base-driver";
-
-export function checkSchemaColumnChange(change: DatabaseTableColumnChange) {
- return !deepEqual(change.old, change.new);
-}
-
-export function checkSchemaChange(change: DatabaseTableSchemaChange) {
- if (change.name.new !== change.name.old) return true;
-
- for (const col of change.columns) {
- if (checkSchemaColumnChange(col)) {
- return true;
- }
- }
-
- return false;
-}
-
-function wrapParen(str: string) {
- if (str.length >= 2 && str.startsWith("(") && str.endsWith(")")) return str;
- return "(" + str + ")";
-}
-
-function geneateCreateColumn(col: DatabaseTableColumn): string {
- const tokens: string[] = [escapeIdentity(col.name), col.type];
-
- if (col.constraint?.primaryKey) {
- tokens.push(
- [
- "PRIMARY KEY",
- col.constraint.primaryKeyOrder,
- col.constraint.primaryKeyConflict
- ? `ON CONFLICT ${col.constraint.primaryKeyConflict}`
- : undefined,
- col.constraint.autoIncrement ? "AUTOINCREMENT" : undefined,
- ]
- .filter(Boolean)
- .join(" ")
- );
- }
-
- if (col.constraint?.unique) {
- tokens.push(
- [
- "UNIQUE",
- col.constraint.uniqueConflict
- ? `ON CONFLICT ${col.constraint.uniqueConflict}`
- : undefined,
- ]
- .filter(Boolean)
- .join(" ")
- );
- }
-
- if (col.constraint?.notNull) {
- tokens.push(
- [
- "NOT NULL",
- col.constraint.notNullConflict
- ? `ON CONFLICT ${col.constraint.notNullConflict}`
- : undefined,
- ]
- .filter(Boolean)
- .join(" ")
- );
- }
-
- if (col.constraint?.defaultValue) {
- tokens.push(
- ["DEFAULT", escapeSqlValue(col.constraint.defaultValue)].join(" ")
- );
- }
-
- if (col.constraint?.defaultExpression) {
- tokens.push(
- ["DEFAULT", wrapParen(col.constraint.defaultExpression)].join(" ")
- );
- }
-
- if (col.constraint?.generatedExpression) {
- tokens.push(
- [
- "GENERATED ALWAYS AS",
- wrapParen(col.constraint.generatedExpression),
- col.constraint.generatedType,
- ].join(" ")
- );
- }
-
- if (col.constraint?.checkExpression) {
- tokens.push("CHECK " + wrapParen(col.constraint.checkExpression));
- }
-
- const foreignTableName = col.constraint?.foreignKey?.foreignTableName;
- const foreignColumnName = (col.constraint?.foreignKey?.foreignColumns ?? [
- undefined,
- ])[0];
-
- if (foreignTableName && foreignColumnName) {
- tokens.push(
- [
- "REFERENCES",
- escapeIdentity(foreignTableName) +
- `(${escapeIdentity(foreignColumnName)})`,
- ].join(" ")
- );
- }
-
- return tokens.join(" ");
-}
-
-export default function generateSqlSchemaChange(
- change: DatabaseTableSchemaChange
-): string[] {
- const isCreateScript = !change.name.old;
-
- const lines = [];
-
- for (const col of change.columns) {
- if (col.new === null) lines.push(`DROP COLUMN ${col.old?.name}`);
- else if (col.old === null) {
- if (isCreateScript) {
- lines.push(geneateCreateColumn(col.new));
- } else {
- lines.push("ADD " + geneateCreateColumn(col.new));
- }
- } else {
- if (col.new.name !== col.old.name) {
- lines.push(
- `RENAME COLUMN ${escapeIdentity(col.old.name)} TO ${escapeIdentity(
- col.new.name
- )}`
- );
- }
- }
- }
-
- if (!isCreateScript) {
- if (change.name.new !== change.name.old) {
- lines.push("RENAME TO " + escapeIdentity(change.name.new ?? ""));
- }
- }
-
- if (isCreateScript) {
- return [
- `CREATE TABLE ${escapeIdentity(
- change.name.new || "no_table_name"
- )}(\n${lines.map((line) => " " + line).join(",\n")}\n)`,
- ];
- } else {
- const alter = `ALTER TABLE ${escapeIdentity(change.name.old ?? "")} `;
- return lines.map((line) => alter + line);
- }
-}
+import {
+ DatabaseTableColumnChange,
+ DatabaseTableSchemaChange,
+} from "@gui/components/schema-editor";
+import { escapeIdentity, escapeSqlValue } from "@gui/sqlite/sql-helper";
+import deepEqual from "deep-equal";
+import { DatabaseTableColumn } from "@gui/drivers/base-driver";
+
+export function checkSchemaColumnChange(change: DatabaseTableColumnChange) {
+ return !deepEqual(change.old, change.new);
+}
+
+export function checkSchemaChange(change: DatabaseTableSchemaChange) {
+ if (change.name.new !== change.name.old) return true;
+
+ for (const col of change.columns) {
+ if (checkSchemaColumnChange(col)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function wrapParen(str: string) {
+ if (str.length >= 2 && str.startsWith("(") && str.endsWith(")")) return str;
+ return "(" + str + ")";
+}
+
+function geneateCreateColumn(col: DatabaseTableColumn): string {
+ const tokens: string[] = [escapeIdentity(col.name), col.type];
+
+ if (col.constraint?.primaryKey) {
+ tokens.push(
+ [
+ "PRIMARY KEY",
+ col.constraint.primaryKeyOrder,
+ col.constraint.primaryKeyConflict
+ ? `ON CONFLICT ${col.constraint.primaryKeyConflict}`
+ : undefined,
+ col.constraint.autoIncrement ? "AUTOINCREMENT" : undefined,
+ ]
+ .filter(Boolean)
+ .join(" ")
+ );
+ }
+
+ if (col.constraint?.unique) {
+ tokens.push(
+ [
+ "UNIQUE",
+ col.constraint.uniqueConflict
+ ? `ON CONFLICT ${col.constraint.uniqueConflict}`
+ : undefined,
+ ]
+ .filter(Boolean)
+ .join(" ")
+ );
+ }
+
+ if (col.constraint?.notNull) {
+ tokens.push(
+ [
+ "NOT NULL",
+ col.constraint.notNullConflict
+ ? `ON CONFLICT ${col.constraint.notNullConflict}`
+ : undefined,
+ ]
+ .filter(Boolean)
+ .join(" ")
+ );
+ }
+
+ if (col.constraint?.defaultValue) {
+ tokens.push(
+ ["DEFAULT", escapeSqlValue(col.constraint.defaultValue)].join(" ")
+ );
+ }
+
+ if (col.constraint?.defaultExpression) {
+ tokens.push(
+ ["DEFAULT", wrapParen(col.constraint.defaultExpression)].join(" ")
+ );
+ }
+
+ if (col.constraint?.generatedExpression) {
+ tokens.push(
+ [
+ "GENERATED ALWAYS AS",
+ wrapParen(col.constraint.generatedExpression),
+ col.constraint.generatedType,
+ ].join(" ")
+ );
+ }
+
+ if (col.constraint?.checkExpression) {
+ tokens.push("CHECK " + wrapParen(col.constraint.checkExpression));
+ }
+
+ const foreignTableName = col.constraint?.foreignKey?.foreignTableName;
+ const foreignColumnName = (col.constraint?.foreignKey?.foreignColumns ?? [
+ undefined,
+ ])[0];
+
+ if (foreignTableName && foreignColumnName) {
+ tokens.push(
+ [
+ "REFERENCES",
+ escapeIdentity(foreignTableName) +
+ `(${escapeIdentity(foreignColumnName)})`,
+ ].join(" ")
+ );
+ }
+
+ return tokens.join(" ");
+}
+
+export default function generateSqlSchemaChange(
+ change: DatabaseTableSchemaChange
+): string[] {
+ const isCreateScript = !change.name.old;
+
+ const lines = [];
+
+ for (const col of change.columns) {
+ if (col.new === null) lines.push(`DROP COLUMN ${col.old?.name}`);
+ else if (col.old === null) {
+ if (isCreateScript) {
+ lines.push(geneateCreateColumn(col.new));
+ } else {
+ lines.push("ADD " + geneateCreateColumn(col.new));
+ }
+ } else {
+ if (col.new.name !== col.old.name) {
+ lines.push(
+ `RENAME COLUMN ${escapeIdentity(col.old.name)} TO ${escapeIdentity(
+ col.new.name
+ )}`
+ );
+ }
+ }
+ }
+
+ if (!isCreateScript) {
+ if (change.name.new !== change.name.old) {
+ lines.push("RENAME TO " + escapeIdentity(change.name.new ?? ""));
+ }
+ }
+
+ if (isCreateScript) {
+ return [
+ `CREATE TABLE ${escapeIdentity(
+ change.name.new || "no_table_name"
+ )}(\n${lines.map((line) => " " + line).join(",\n")}\n)`,
+ ];
+ } else {
+ const alter = `ALTER TABLE ${escapeIdentity(change.name.old ?? "")} `;
+ return lines.map((line) => alter + line);
+ }
+}
diff --git a/gui/src/lib/utils.ts b/gui/src/lib/utils.ts
new file mode 100644
index 00000000..4d2b1dce
--- /dev/null
+++ b/gui/src/lib/utils.ts
@@ -0,0 +1,89 @@
+import { type ClassValue, clsx } from "clsx";
+import { twMerge } from "tailwind-merge";
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs));
+}
+
+/**
+ * Funny workaround to make a scoped feature
+ */
+export function scoped(fn: () => T): T {
+ return fn();
+}
+
+/**
+ * Doesn't do anything :)
+ */
+// eslint-disable-next-line @typescript-eslint/no-empty-function
+export function noop() {}
+
+/**
+ * Join everything together into a string
+ *
+ * @example
+ * const result = concat("henlo", "-", "world")
+ * // "henlo-world"
+ */
+export function concat(...inputs: string[]) {
+ return inputs.join("");
+}
+
+export interface ApiErrorResponse {
+ message: string;
+ detailedMessage?: string;
+}
+
+/**
+ * Safely fetch data with a slightly typed response
+ *
+ * @example
+ *
+ * const { data, error } = await safeFetch(url)
+ * if (error) {
+ * console.log(error.message, error.detailedMessage)
+ * } else {
+ * console.log(data) // type User
+ * }
+ */
+export async function safeFetch(
+ url: string | URL,
+ init?: RequestInit
+): Promise<
+ | {
+ data: Success;
+ error: null;
+ response: Response;
+ }
+ | {
+ data: null;
+ error: ApiErrorResponse;
+ response: Response;
+ }
+> {
+ let response: Response = new Response();
+ try {
+ response = await fetch(url, init);
+ if (!response.ok) {
+ const json = await response.json();
+ return { data: null, error: json?.error || json, response };
+ } else {
+ const data = await response.json();
+ return { data, error: null, response };
+ }
+ } catch (e) {
+ if (e instanceof Error) {
+ return {
+ response,
+ data: null,
+ error: { message: "Something went wrong", detailedMessage: e.message },
+ };
+ }
+
+ return {
+ response,
+ data: null,
+ error: { message: "Unknown Error", detailedMessage: JSON.stringify(e) },
+ };
+ }
+}
diff --git a/src/lib/validation.test.ts b/gui/src/lib/validation.test.ts
similarity index 87%
rename from src/lib/validation.test.ts
rename to gui/src/lib/validation.test.ts
index 38448bdd..cbc7211e 100644
--- a/src/lib/validation.test.ts
+++ b/gui/src/lib/validation.test.ts
@@ -1,219 +1,205 @@
-import { validateConnectionEndpoint, validateOperation } from "./validation";
-
-describe("Operation Validation", () => {
- it("UPDATE with primary key SHOULD be valid operation", () => {
- const result = validateOperation(
- {
- operation: "UPDATE",
- values: {
- name: "Visal",
- },
- where: {
- id: 5,
- },
- },
- { autoIncrement: false, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(true);
- });
-
- it("UPDATE without primary key SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "UPDATE",
- values: {
- name: "Visal",
- },
- where: {
- id: 5,
- },
- },
- { autoIncrement: false, columns: [], pk: [""] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("UPDATE with row NULL as value for primary key SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "UPDATE",
- values: {
- name: "Visal",
- },
- where: {
- id: null,
- },
- },
- { autoIncrement: false, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("UPDATE with NULL as value for any one of primary key SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "UPDATE",
- values: {
- age: "67",
- },
- where: {
- id: 5,
- name: null,
- },
- },
- { autoIncrement: false, columns: [], pk: ["id", "name"] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("UPDATE primary key to NULL SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "UPDATE",
- values: {
- id: null,
- },
- where: {
- id: 5,
- },
- },
- { autoIncrement: false, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("DELETE row with primary key SHOULD be valid operation", () => {
- const result = validateOperation(
- {
- operation: "DELETE",
- where: {
- id: 5,
- },
- },
- { autoIncrement: false, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(true);
- });
-
- it("DELETE row without primary key SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "DELETE",
- where: {
- id: 5,
- },
- },
- { autoIncrement: false, columns: [], pk: [] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("DELETE row with NULL primary key SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "DELETE",
- where: {
- id: null,
- },
- },
- { autoIncrement: false, columns: [], pk: [] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("INSERT with primary key SHOULD be valid operation", () => {
- const result = validateOperation(
- {
- operation: "INSERT",
- values: {
- id: 5,
- name: "Visal",
- },
- },
- { autoIncrement: false, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(true);
- });
-
- it("INSERT with primary key with NULL value SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "INSERT",
- values: {
- id: null,
- name: "Visal",
- },
- },
- { autoIncrement: false, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("INSERT with auto increment primary key with NULL value SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "INSERT",
- values: {
- id: null,
- name: "Visal",
- },
- },
- { autoIncrement: true, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("INSERT with one of primary key with NULL value SHOULD NOT be valid operation", () => {
- const result = validateOperation(
- {
- operation: "INSERT",
- values: {
- id: 5,
- name: null,
- },
- },
- { autoIncrement: false, columns: [], pk: ["id", "name"] }
- );
-
- expect(result.valid).toBe(false);
- });
-
- it("INSERT with primary key with no value but it is auto increment primary key SHOULD be valid operation", () => {
- const result = validateOperation(
- {
- operation: "INSERT",
- values: {
- name: "Visal",
- },
- },
- { autoIncrement: true, columns: [], pk: ["id"] }
- );
-
- expect(result.valid).toBe(true);
- });
-});
-
-describe("Validate the connection endpoint", () => {
- it("wss:// is valid endpoint", () => {
- expect(validateConnectionEndpoint("wss://testing.example.com")[0]).toBe(
- true
- );
- });
-
- it("Non wss:// is not valid endpoint", () => {
- expect(validateConnectionEndpoint("https://testing.example.com")[0]).toBe(
- true
- );
- });
-});
+import { validateOperation } from "./validation";
+
+describe("Operation Validation", () => {
+ it("UPDATE with primary key SHOULD be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "UPDATE",
+ values: {
+ name: "Visal",
+ },
+ where: {
+ id: 5,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(true);
+ });
+
+ it("UPDATE without primary key SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "UPDATE",
+ values: {
+ name: "Visal",
+ },
+ where: {
+ id: 5,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: [""] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("UPDATE with row NULL as value for primary key SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "UPDATE",
+ values: {
+ name: "Visal",
+ },
+ where: {
+ id: null,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("UPDATE with NULL as value for any one of primary key SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "UPDATE",
+ values: {
+ age: "67",
+ },
+ where: {
+ id: 5,
+ name: null,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id", "name"] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("UPDATE primary key to NULL SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "UPDATE",
+ values: {
+ id: null,
+ },
+ where: {
+ id: 5,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("DELETE row with primary key SHOULD be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "DELETE",
+ where: {
+ id: 5,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(true);
+ });
+
+ it("DELETE row without primary key SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "DELETE",
+ where: {
+ id: 5,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: [] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("DELETE row with NULL primary key SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "DELETE",
+ where: {
+ id: null,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: [] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("INSERT with primary key SHOULD be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "INSERT",
+ values: {
+ id: 5,
+ name: "Visal",
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(true);
+ });
+
+ it("INSERT with primary key with NULL value SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "INSERT",
+ values: {
+ id: null,
+ name: "Visal",
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("INSERT with auto increment primary key with NULL value SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "INSERT",
+ values: {
+ id: null,
+ name: "Visal",
+ },
+ },
+ { autoIncrement: true, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("INSERT with one of primary key with NULL value SHOULD NOT be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "INSERT",
+ values: {
+ id: 5,
+ name: null,
+ },
+ },
+ { autoIncrement: false, columns: [], pk: ["id", "name"] }
+ );
+
+ expect(result.valid).toBe(false);
+ });
+
+ it("INSERT with primary key with no value but it is auto increment primary key SHOULD be valid operation", () => {
+ const result = validateOperation(
+ {
+ operation: "INSERT",
+ values: {
+ name: "Visal",
+ },
+ },
+ { autoIncrement: true, columns: [], pk: ["id"] }
+ );
+
+ expect(result.valid).toBe(true);
+ });
+});
diff --git a/src/lib/validation.ts b/gui/src/lib/validation.ts
similarity index 75%
rename from src/lib/validation.ts
rename to gui/src/lib/validation.ts
index fa531308..562709d5 100644
--- a/src/lib/validation.ts
+++ b/gui/src/lib/validation.ts
@@ -1,104 +1,79 @@
-import {
- DatabaseTableOperation,
- DatabaseTableSchema,
-} from "@/drivers/base-driver";
-
-export function validateOperation(
- op: DatabaseTableOperation,
- validateSchema: DatabaseTableSchema
-): { valid: boolean; reason?: string } {
- const operation = op.operation;
- const primaryKey = validateSchema.pk;
- const originalValue = op.operation !== "INSERT" ? op.where : {};
- const changeValue = op.operation !== "DELETE" ? op.values : {};
- const autoIncrement = validateSchema.autoIncrement;
-
- const hasAnyPrimaryKeyNull = primaryKey
- .map((pkColumnName) => originalValue[pkColumnName])
- .some((value) => value === null || value === undefined);
-
- const hasAnyUpdatePrimaryKeyNull = primaryKey
- .map((pkColumnName) =>
- changeValue[pkColumnName] === undefined
- ? originalValue[pkColumnName]
- : changeValue[pkColumnName]
- )
- .some((value) => value === null || value === undefined);
-
- if (primaryKey.length === 0) {
- return {
- valid: false,
- reason:
- "This table does not have any primary key. It is not safe to perform any update/delete/insert operation.",
- };
- }
-
- if (operation === "DELETE") {
- if (hasAnyPrimaryKeyNull)
- return {
- valid: false,
- reason: "It is not safe to remove row with NULL in primary key column",
- };
- } else if (operation === "UPDATE") {
- if (hasAnyPrimaryKeyNull) {
- return {
- valid: false,
- reason: "It is not safe to update row with NULL in primary key column",
- };
- } else if (hasAnyUpdatePrimaryKeyNull) {
- return {
- valid: false,
- reason: "It is not safe to update row to NULL in primary key column",
- };
- }
- } else {
- // If it is INSERT operation and also have auto increment
- if (autoIncrement && changeValue[primaryKey[0]] === null) {
- return {
- valid: false,
- reason: "It is not safe to insert row with NULL in primary key column",
- };
- } else if (!autoIncrement && hasAnyUpdatePrimaryKeyNull) {
- return {
- valid: false,
- reason: "It is not safe to insert row with NULL in primary key column",
- };
- }
- }
-
- return { valid: true };
-}
-
-export function validateConnectionEndpoint(
- endpoint: string
-): [boolean, string] {
- try {
- const url = new URL(endpoint);
-
- if (
- url.protocol !== "wss:" &&
- url.protocol !== "libsql:" &&
- url.protocol !== "ws:" &&
- url.protocol !== "http:" &&
- url.protocol !== "https:"
- ) {
- return [
- false,
- "We only support wss://, ws://, http://, https://, libsql:// at the moment.",
- ];
- }
-
- return [true, ""];
- } catch {
- return [false, "Your URL is not valid"];
- }
-}
-
-export function isLinkString(str: string) {
- if (str.length > 200) return false;
- try {
- return Boolean(new URL(str));
- } catch {
- return false;
- }
-}
+import type {
+ DatabaseTableOperation,
+ DatabaseTableSchema,
+} from "@gui/drivers/base-driver";
+
+export function validateOperation(
+ op: DatabaseTableOperation,
+ validateSchema: DatabaseTableSchema
+): { valid: boolean; reason?: string } {
+ const operation = op.operation;
+ const primaryKey = validateSchema.pk;
+ const originalValue = op.operation !== "INSERT" ? op.where : {};
+ const changeValue = op.operation !== "DELETE" ? op.values : {};
+ const autoIncrement = validateSchema.autoIncrement;
+
+ const hasAnyPrimaryKeyNull = primaryKey
+ .map((pkColumnName) => originalValue[pkColumnName])
+ .some((value) => value === null || value === undefined);
+
+ const hasAnyUpdatePrimaryKeyNull = primaryKey
+ .map((pkColumnName) =>
+ changeValue[pkColumnName] === undefined
+ ? originalValue[pkColumnName]
+ : changeValue[pkColumnName]
+ )
+ .some((value) => value === null || value === undefined);
+
+ if (primaryKey.length === 0) {
+ return {
+ valid: false,
+ reason:
+ "This table does not have any primary key. It is not safe to perform any update/delete/insert operation.",
+ };
+ }
+
+ if (operation === "DELETE") {
+ if (hasAnyPrimaryKeyNull)
+ return {
+ valid: false,
+ reason: "It is not safe to remove row with NULL in primary key column",
+ };
+ } else if (operation === "UPDATE") {
+ if (hasAnyPrimaryKeyNull) {
+ return {
+ valid: false,
+ reason: "It is not safe to update row with NULL in primary key column",
+ };
+ } else if (hasAnyUpdatePrimaryKeyNull) {
+ return {
+ valid: false,
+ reason: "It is not safe to update row to NULL in primary key column",
+ };
+ }
+ } else {
+ // If it is INSERT operation and also have auto increment
+ if (autoIncrement && primaryKey[0] && changeValue[primaryKey[0]] === null) {
+ return {
+ valid: false,
+ reason: "It is not safe to insert row with NULL in primary key column",
+ };
+ } else if (!autoIncrement && hasAnyUpdatePrimaryKeyNull) {
+ return {
+ valid: false,
+ reason: "It is not safe to insert row with NULL in primary key column",
+ };
+ }
+ }
+
+ return { valid: true };
+}
+
+export function isLinkString(str: string) {
+ if (str.length > 200) return false;
+ try {
+ return Boolean(new URL(str));
+ } catch {
+ return false;
+ }
+}
diff --git a/src/messages/const.ts b/gui/src/messages/const.ts
similarity index 96%
rename from src/messages/const.ts
rename to gui/src/messages/const.ts
index bcbacdb5..102fd06d 100644
--- a/src/messages/const.ts
+++ b/gui/src/messages/const.ts
@@ -1,4 +1,4 @@
-export enum MessageChannelName {
- OPEN_NEW_TAB = "OPEN_NEW_TAB",
- OPEN_CONTEXT_MENU = "OPEN_CONTEXT_MENU",
-}
+export enum MessageChannelName {
+ OPEN_NEW_TAB = "OPEN_NEW_TAB",
+ OPEN_CONTEXT_MENU = "OPEN_CONTEXT_MENU",
+}
diff --git a/src/messages/openContextMenu.tsx b/gui/src/messages/open-context-menu.tsx
similarity index 78%
rename from src/messages/openContextMenu.tsx
rename to gui/src/messages/open-context-menu.tsx
index ff546e57..57d2c646 100644
--- a/src/messages/openContextMenu.tsx
+++ b/gui/src/messages/open-context-menu.tsx
@@ -1,8 +1,7 @@
-import React from "react";
import { MessageChannelName } from "./const";
-import { LucideIcon } from "lucide-react";
+import type { LucideIcon } from "lucide-react";
-export type OpenContextMenuList = {
+export type OpenContextMenuList = Array<{
type?: "check";
checked?: boolean;
title?: string | JSX.Element;
@@ -14,7 +13,7 @@ export type OpenContextMenuList = {
sub?: OpenContextMenuList;
subWidth?: number;
icon?: LucideIcon;
-}[];
+}>;
export interface OpenContextMenuOptions {
contextMenu: OpenContextMenuList;
@@ -23,10 +22,7 @@ export interface OpenContextMenuOptions {
}
export function openContextMenu(options: OpenContextMenuOptions) {
- return window.internalPubSub.send(
- MessageChannelName.OPEN_CONTEXT_MENU,
- options
- );
+ window.internalPubSub.send(MessageChannelName.OPEN_CONTEXT_MENU, options);
}
export function openContextMenuFromEvent(contextMenu: OpenContextMenuList) {
diff --git a/src/messages/open-tab.tsx b/gui/src/messages/open-tab.tsx
similarity index 71%
rename from src/messages/open-tab.tsx
rename to gui/src/messages/open-tab.tsx
index 1364efbb..bff86b0e 100644
--- a/src/messages/open-tab.tsx
+++ b/gui/src/messages/open-tab.tsx
@@ -1,123 +1,120 @@
-import { WindowTabItemProps } from "@/components/windows-tab";
-import { MessageChannelName } from "./const";
-import { Dispatch, SetStateAction } from "react";
-import {
- LucideActivity,
- LucideCode,
- LucideTable,
- LucideTableProperties,
- LucideUser,
- LucideCog,
-} from "lucide-react";
-import QueryWindow from "@/components/tabs/query-tab";
-import SchemaEditorTab from "@/components/tabs/schema-editor-tab";
-import TableDataWindow from "@/components/tabs/table-data-tab";
-import UsersTab from "@/components/tabs/users-tabs";
-import TriggerTab from "@/components/tabs/trigger-tab";
-
-interface OpenTableTab {
- type: "table";
- tableName: string;
-}
-
-interface OpenQueryTab {
- type: "query";
- name?: string;
-}
-
-interface OpenTableSchemaTab {
- type: "schema";
- tableName?: string;
-}
-
-interface OpenUserTab {
- type: "user";
-}
-
-interface OpenTriggerTab {
- type: "trigger";
- tableName?: string;
- name?: string;
-}
-
-export type OpenTabsProps =
- | OpenTableTab
- | OpenQueryTab
- | OpenTableSchemaTab
- | OpenUserTab
- | OpenTriggerTab;
-
-export function openTab(props: OpenTabsProps) {
- return window.internalPubSub.send(MessageChannelName.OPEN_NEW_TAB, props);
-}
-
-function generateKeyFromTab(tab: OpenTabsProps) {
- if (tab.type === "query") return "query-" + window.crypto.randomUUID();
- if (tab.type === "table") return "table-" + tab.tableName;
- if (tab.type === "schema")
- return !tab.tableName ? "create-schema" : "schema-" + tab.tableName;
- if (tab.type === "user") return "user";
- if (tab.type === "trigger") return "trigger-" + tab.name;
- return "";
-}
-
-function generateIconFromTab(tab: OpenTabsProps) {
- if (tab.type === "query") return LucideCode;
- if (tab.type === "table") return LucideTable;
- if (tab.type === "schema") return LucideTableProperties;
- if (tab.type === "user") return LucideUser;
- if (tab.type === "trigger") return LucideCog;
- return LucideActivity;
-}
-
-let QUERY_COUNTER = 2;
-function generateTitle(tab: OpenTabsProps) {
- if (tab.type === "query") return "Query " + QUERY_COUNTER++;
- if (tab.type === "table") return tab.tableName;
- if (tab.type === "schema") return tab.tableName ? tab.tableName : "New Table";
- if (tab.type === "user") return "User & Permission";
- if (tab.type === "trigger") return tab.name ?? "";
- return "";
-}
-
-function generateComponent(tab: OpenTabsProps) {
- if (tab.type === "query") return ;
- if (tab.type === "table")
- return ;
- if (tab.type === "schema")
- return ;
- if (tab.type === "user") return ;
- if (tab.type === "trigger") return ;
- return ;
-}
-
-export function receiveOpenTabMessage({
- newTab,
- setTabs,
- setSelectedTabIndex,
-}: {
- newTab: OpenTabsProps;
- setTabs: Dispatch>;
- setSelectedTabIndex: Dispatch>;
-}) {
- setTabs((prev) => {
- const key = generateKeyFromTab(newTab);
- const foundIndex = prev.findIndex((tab) => tab.key === key);
-
- if (foundIndex >= 0) {
- setSelectedTabIndex(foundIndex);
- return prev;
- }
- setSelectedTabIndex(prev.length);
-
- return [
- ...prev,
- {
- icon: generateIconFromTab(newTab),
- title: generateTitle(newTab),
- key,
- component: generateComponent(newTab),
- },
- ];
- });
-}
+import type { WindowTabItemProps } from "@gui/components/windows-tab";
+import { MessageChannelName } from "./const";
+import type { Dispatch, SetStateAction } from "react";
+import {
+ LucideCode,
+ LucideTable,
+ LucideTableProperties,
+ LucideUser,
+ LucideCog,
+} from "lucide-react";
+import QueryWindow from "@gui/components/tabs/query-tab";
+import SchemaEditorTab from "@gui/components/tabs/schema-editor-tab";
+import TableDataWindow from "@gui/components/tabs/table-data-tab";
+import UsersTab from "@gui/components/tabs/users-tabs";
+import TriggerTab from "@gui/components/tabs/trigger-tab";
+
+interface OpenTableTab {
+ type: "table";
+ tableName: string;
+}
+
+interface OpenQueryTab {
+ type: "query";
+ name?: string;
+}
+
+interface OpenTableSchemaTab {
+ type: "schema";
+ tableName?: string;
+}
+
+interface OpenUserTab {
+ type: "user";
+}
+
+interface OpenTriggerTab {
+ type: "trigger";
+ tableName?: string;
+ name?: string;
+}
+
+export type OpenTabsProps =
+ | OpenTableTab
+ | OpenQueryTab
+ | OpenTableSchemaTab
+ | OpenUserTab
+ | OpenTriggerTab;
+
+export function openTab(props: OpenTabsProps) {
+ window.internalPubSub.send(MessageChannelName.OPEN_NEW_TAB, props);
+}
+
+function generateKeyFromTab(tab: OpenTabsProps) {
+ if (tab.type === "query") return "query-" + window.crypto.randomUUID();
+ if (tab.type === "table") return "table-" + tab.tableName;
+ if (tab.type === "schema")
+ return !tab.tableName ? "create-schema" : "schema-" + tab.tableName;
+ if (tab.type === "user") return "user";
+
+ return "trigger-" + (tab.name ?? "");
+}
+
+function generateIconFromTab(tab: OpenTabsProps) {
+ if (tab.type === "query") return LucideCode;
+ if (tab.type === "table") return LucideTable;
+ if (tab.type === "schema") return LucideTableProperties;
+ if (tab.type === "user") return LucideUser;
+
+ return LucideCog;
+}
+
+let QUERY_COUNTER = 2;
+function generateTitle(tab: OpenTabsProps) {
+ if (tab.type === "query") return "Query " + (QUERY_COUNTER++).toString();
+ if (tab.type === "table") return tab.tableName;
+ if (tab.type === "schema") return tab.tableName ? tab.tableName : "New Table";
+ if (tab.type === "user") return "User & Permission";
+ return tab.name ?? "";
+}
+
+function generateComponent(tab: OpenTabsProps) {
+ if (tab.type === "query") return ;
+ if (tab.type === "table")
+ return ;
+ if (tab.type === "schema")
+ return ;
+ if (tab.type === "user") return ;
+ return ;
+}
+
+export function receiveOpenTabMessage({
+ newTab,
+ setTabs,
+ setSelectedTabIndex,
+}: {
+ newTab: OpenTabsProps;
+ setTabs: Dispatch>;
+ setSelectedTabIndex: Dispatch>;
+}) {
+ setTabs((prev) => {
+ const key = generateKeyFromTab(newTab);
+ const foundIndex = prev.findIndex((tab) => tab.key === key);
+
+ if (foundIndex >= 0) {
+ setSelectedTabIndex(foundIndex);
+ return prev;
+ }
+ setSelectedTabIndex(prev.length);
+
+ return [
+ ...prev,
+ {
+ icon: generateIconFromTab(newTab),
+ title: generateTitle(newTab),
+ key,
+ component: generateComponent(newTab),
+ },
+ ];
+ });
+}
diff --git a/src/lib/sql-helper.test.ts b/gui/src/sqlite/sql-helper.test.ts
similarity index 81%
rename from src/lib/sql-helper.test.ts
rename to gui/src/sqlite/sql-helper.test.ts
index 5fe20f0e..ec6cf4f3 100644
--- a/src/lib/sql-helper.test.ts
+++ b/gui/src/sqlite/sql-helper.test.ts
@@ -1,167 +1,150 @@
-import { TableColumnDataType } from "@/drivers/base-driver";
-import { exportRowsToSqlInsert } from "./export-helper";
-import {
- convertSqliteType,
- escapeIdentity,
- escapeSqlBinary,
- escapeSqlString,
- escapeSqlValue,
- generateDeleteStatement,
- generateInsertStatement,
- generateUpdateStatement,
- selectStatementFromPosition,
- unescapeIdentity,
-} from "./sql-helper";
-import { identify } from "sql-query-identifier";
-
-describe("Escape SQL", () => {
- it("escape sql string", () => {
- expect(escapeSqlString("i'm testing")).toBe("'i''m testing'");
- expect(escapeSqlString("There are 'two' single quote")).toBe(
- "'There are ''two'' single quote'"
- );
- });
-
- it("escape sql identity", () => {
- expect(escapeIdentity(`col"name`)).toBe(`"col""name"`);
- });
-
- it("escape blob", () => {
- const buffer = new Uint8Array([
- 93, 65, 64, 42, 188, 75, 42, 118, 185, 113, 157, 145, 16, 23, 197, 146,
- ]).buffer;
-
- expect(escapeSqlValue(buffer)).toBe(`x'5D41402ABC4B2A76B9719D911017C592'`);
- expect(escapeSqlBinary(buffer)).toBe(`x'5D41402ABC4B2A76B9719D911017C592'`);
- });
-
- it("unescape identity", () => {
- expect(unescapeIdentity(`"users"`)).toBe("users");
- expect(unescapeIdentity(`"us""ers"`)).toBe(`us"ers`);
- expect(unescapeIdentity(`[users]`)).toBe(`users`);
- });
-});
-
-describe("Generate SQL Statement", () => {
- test("Generate export rows to SQL statements", () => {
- expect(
- exportRowsToSqlInsert(
- "users",
- ["id", "name", "age"],
- [
- [undefined, "Visal", 35],
- [2, "Turso", null],
- ]
- )
- ).toBe(
- [
- `INSERT INTO "users"("id", "name", "age") VALUES(DEFAULT, 'Visal', 35);`,
- `INSERT INTO "users"("id", "name", "age") VALUES(2, 'Turso', NULL);`,
- ].join("\r\n")
- );
- });
-
- it("Generate insert statement from object", () => {
- expect(
- generateInsertStatement("users", {
- name: "Visal",
- age: 50,
- title: "O'reilly",
- })
- ).toBe(
- `INSERT INTO "users"("name", "age", "title") VALUES('Visal', 50, 'O''reilly');`
- );
- });
-
- it("Generate update statement", () => {
- expect(
- generateUpdateStatement(
- "users",
- {
- id: 5,
- },
- { age: 50, title: "O'reilly" }
- )
- ).toBe(
- `UPDATE "users" SET "age" = 50, "title" = 'O''reilly' WHERE "id" = 5;`
- );
- });
-
- it("Generate delete statement", () => {
- expect(generateDeleteStatement("users", { id: 5 })).toBe(
- `DELETE FROM "users" WHERE "id" = 5;`
- );
- });
-});
-
-describe("Mapping sqlite column type to our table type", () => {
- const integerType = [
- "INT",
- "INTEGER",
- "TINYINT",
- "SMALLINT",
- "MEDIUMINT",
- "BIGINT",
- "UNSIGNED BIG INT",
- "INT2",
- "INT8",
- ];
-
- for (const type of integerType) {
- it(`${type} column type should be INTEGER`, () => {
- expect(convertSqliteType(type)).toBe(TableColumnDataType.INTEGER);
- });
- }
-
- const textType = [
- "CHARACTER(20)",
- "VARCHAR(255)",
- "VARYING CHARACTER(255)",
- "NCHAR(55)",
- "NATIVE CHARACTER(70)",
- "NVARCHAR(100)",
- "TEXT",
- "CLOB",
- ];
-
- for (const type of textType) {
- it(`${type} column type should be TEXT`, () =>
- expect(convertSqliteType(type)).toBe(TableColumnDataType.TEXT));
- }
-
- it("BLOB column type", () => {
- expect(convertSqliteType("BLOB")).toBe(TableColumnDataType.BLOB);
- });
-
- const realType = ["REAL", "DOUBLE", "DOUBLE PRECISION", "FLOAT"];
- for (const type of realType) {
- it(`${type} column should be REAL`, () =>
- expect(convertSqliteType(type)).toBe(TableColumnDataType.REAL));
- }
-});
-
-function ss(sql: string) {
- const pos = sql.indexOf("|");
- const statements = identify(sql.replace("|", ""));
- return selectStatementFromPosition(statements, pos);
-}
-
-describe("Select current query", () => {
- it("select current query", () => {
- expect(ss("select * from |t1; update t1 set name='visal';")?.text).toBe(
- "select * from t1;"
- );
-
- expect(ss("select * from t1|; update t1 set name='visal';")?.text).toBe(
- "select * from t1;"
- );
-
- expect(ss("select * from t1;| update t1 set name='visal';")?.text).toBe(
- "select * from t1;"
- );
-
- expect(ss("select * from t1; update| t1 set name='visal';")?.text).toBe(
- "update t1 set name='visal';"
- );
- });
-});
+import { TableColumnDataType } from "@gui/drivers/base-driver";
+import {
+ convertSqliteType,
+ escapeIdentity,
+ escapeSqlBinary,
+ escapeSqlString,
+ escapeSqlValue,
+ generateDeleteStatement,
+ generateInsertStatement,
+ generateUpdateStatement,
+ selectStatementFromPosition,
+ unescapeIdentity,
+} from "./sql-helper";
+import { identify } from "sql-query-identifier";
+
+describe("Escape SQL", () => {
+ it("escape sql string", () => {
+ expect(escapeSqlString("i'm testing")).toBe("'i''m testing'");
+ expect(escapeSqlString("There are 'two' single quote")).toBe(
+ "'There are ''two'' single quote'"
+ );
+ });
+
+ it("escape sql identity", () => {
+ expect(escapeIdentity(`col"name`)).toBe(`"col""name"`);
+ });
+
+ it("escape blob", () => {
+ const buffer = new Uint8Array([
+ 93, 65, 64, 42, 188, 75, 42, 118, 185, 113, 157, 145, 16, 23, 197, 146,
+ ]).buffer;
+
+ expect(escapeSqlValue(buffer)).toBe(`x'5D41402ABC4B2A76B9719D911017C592'`);
+ expect(escapeSqlBinary(buffer)).toBe(`x'5D41402ABC4B2A76B9719D911017C592'`);
+ });
+
+ it("unescape identity", () => {
+ expect(unescapeIdentity(`"users"`)).toBe("users");
+ expect(unescapeIdentity(`"us""ers"`)).toBe(`us"ers`);
+ expect(unescapeIdentity(`[users]`)).toBe(`users`);
+ });
+});
+
+describe("Generate SQL Statement", () => {
+ it("Generate insert statement from object", () => {
+ expect(
+ generateInsertStatement("users", {
+ name: "Visal",
+ age: 50,
+ title: "O'reilly",
+ })
+ ).toBe(
+ `INSERT INTO "users"("name", "age", "title") VALUES('Visal', 50, 'O''reilly');`
+ );
+ });
+
+ it("Generate update statement", () => {
+ expect(
+ generateUpdateStatement(
+ "users",
+ {
+ id: 5,
+ },
+ { age: 50, title: "O'reilly" }
+ )
+ ).toBe(
+ `UPDATE "users" SET "age" = 50, "title" = 'O''reilly' WHERE "id" = 5;`
+ );
+ });
+
+ it("Generate delete statement", () => {
+ expect(generateDeleteStatement("users", { id: 5 })).toBe(
+ `DELETE FROM "users" WHERE "id" = 5;`
+ );
+ });
+});
+
+describe("Mapping sqlite column type to our table type", () => {
+ const integerType = [
+ "INT",
+ "INTEGER",
+ "TINYINT",
+ "SMALLINT",
+ "MEDIUMINT",
+ "BIGINT",
+ "UNSIGNED BIG INT",
+ "INT2",
+ "INT8",
+ ];
+
+ for (const type of integerType) {
+ it(`${type} column type should be INTEGER`, () => {
+ expect(convertSqliteType(type)).toBe(TableColumnDataType.INTEGER);
+ });
+ }
+
+ const textType = [
+ "CHARACTER(20)",
+ "VARCHAR(255)",
+ "VARYING CHARACTER(255)",
+ "NCHAR(55)",
+ "NATIVE CHARACTER(70)",
+ "NVARCHAR(100)",
+ "TEXT",
+ "CLOB",
+ ];
+
+ for (const type of textType) {
+ it(`${type} column type should be TEXT`, () => {
+ expect(convertSqliteType(type)).toBe(TableColumnDataType.TEXT);
+ });
+ }
+
+ it("BLOB column type", () => {
+ expect(convertSqliteType("BLOB")).toBe(TableColumnDataType.BLOB);
+ });
+
+ const realType = ["REAL", "DOUBLE", "DOUBLE PRECISION", "FLOAT"];
+ for (const type of realType) {
+ it(`${type} column should be REAL`, () => {
+ expect(convertSqliteType(type)).toBe(TableColumnDataType.REAL);
+ });
+ }
+});
+
+function ss(sql: string) {
+ const pos = sql.indexOf("|");
+ const statements = identify(sql.replace("|", ""));
+ return selectStatementFromPosition(statements, pos);
+}
+
+describe("Select current query", () => {
+ it("select current query", () => {
+ expect(ss("select * from |t1; update t1 set name='visal';")?.text).toBe(
+ "select * from t1;"
+ );
+
+ expect(ss("select * from t1|; update t1 set name='visal';")?.text).toBe(
+ "select * from t1;"
+ );
+
+ expect(ss("select * from t1;| update t1 set name='visal';")?.text).toBe(
+ "select * from t1;"
+ );
+
+ expect(ss("select * from t1; update| t1 set name='visal';")?.text).toBe(
+ "update t1 set name='visal';"
+ );
+ });
+});
diff --git a/src/lib/sql-helper.ts b/gui/src/sqlite/sql-helper.ts
similarity index 78%
rename from src/lib/sql-helper.ts
rename to gui/src/sqlite/sql-helper.ts
index 584ddcba..6ff97968 100644
--- a/src/lib/sql-helper.ts
+++ b/gui/src/sqlite/sql-helper.ts
@@ -1,138 +1,139 @@
-import { TableColumnDataType } from "@/drivers/base-driver";
-import { hex } from "./bit-operation";
-import { IdentifyResult } from "sql-query-identifier/lib/defines";
-
-export function escapeIdentity(str: string) {
- return `"${str.replace(/"/g, `""`)}"`;
-}
-
-export function unescapeIdentity(str: string) {
- let r = str.replace(/^["`[]/g, "");
- r = r.replace(/["`\]]$/g, "");
- r = r.replace(/""/g, `"`);
- return r;
-}
-
-export function escapeSqlString(str: string) {
- return `'${str.replace(/'/g, `''`)}'`;
-}
-
-export function escapeSqlBinary(value: ArrayBuffer) {
- return `x'${hex(value)}'`;
-}
-
-export function escapeSqlValue(value: unknown) {
- if (value === undefined) return "DEFAULT";
- if (value === null) return "NULL";
- if (typeof value === "string") return escapeSqlString(value);
- if (typeof value === "number") return value.toString();
- if (typeof value === "bigint") return value.toString();
- if (value instanceof ArrayBuffer) return escapeSqlBinary(value);
- throw new Error(value + " is unrecongize type of value");
-}
-
-export function convertSqliteType(
- type: string | undefined
-): TableColumnDataType {
- // https://www.sqlite.org/datatype3.html
- if (type === undefined) return TableColumnDataType.BLOB;
-
- type = type.toUpperCase();
-
- if (type.indexOf("CHAR") >= 0) return TableColumnDataType.TEXT;
- if (type.indexOf("TEXT") >= 0) return TableColumnDataType.TEXT;
- if (type.indexOf("CLOB") >= 0) return TableColumnDataType.TEXT;
- if (type.indexOf("STRING") >= 0) return TableColumnDataType.TEXT;
-
- if (type.indexOf("INT") >= 0) return TableColumnDataType.INTEGER;
-
- if (type.indexOf("BLOB") >= 0) return TableColumnDataType.BLOB;
-
- if (
- type.indexOf("REAL") >= 0 ||
- type.indexOf("DOUBLE") >= 0 ||
- type.indexOf("FLOAT") >= 0
- )
- return TableColumnDataType.REAL;
-
- return TableColumnDataType.TEXT;
-}
-
-export function generateSelectOneWithConditionStatement(
- tableName: string,
- condition: Record
-) {
- const wherePart = Object.entries(condition)
- .map(
- ([columnName, value]) =>
- `${escapeIdentity(columnName)} = ${escapeSqlValue(value)}`
- )
- .join(" AND ");
-
- return `SELECT * FROM ${escapeIdentity(
- tableName
- )} WHERE ${wherePart} LIMIT 1 OFFSET 0;`;
-}
-
-export function generateInsertStatement(
- tableName: string,
- value: Record
-): string {
- const fieldPart: string[] = [];
- const valuePart: unknown[] = [];
-
- for (const entry of Object.entries(value)) {
- fieldPart.push(entry[0]);
- valuePart.push(entry[1]);
- }
- return `INSERT INTO ${escapeIdentity(tableName)}(${fieldPart
- .map(escapeIdentity)
- .join(", ")}) VALUES(${valuePart.map(escapeSqlValue).join(", ")});`;
-}
-
-export function generateDeleteStatement(
- tableName: string,
- where: Record
-) {
- const wherePart: string = Object.entries(where)
- .map(
- ([columnName, value]) =>
- `${escapeIdentity(columnName)} = ${escapeSqlValue(value)}`
- )
- .join(" AND ");
-
- return `DELETE FROM ${escapeIdentity(tableName)} WHERE ${wherePart};`;
-}
-
-export function generateUpdateStatement(
- tableName: string,
- where: Record,
- changeValue: Record
-): string {
- const setPart = Object.entries(changeValue)
- .map(([colName, value]) => {
- return `${escapeIdentity(colName)} = ${escapeSqlValue(value)}`;
- })
- .join(", ");
-
- const wherePart: string = Object.entries(where)
- .map(
- ([columnName, value]) =>
- `${escapeIdentity(columnName)} = ${escapeSqlValue(value)}`
- )
- .join(" AND ");
-
- return `UPDATE ${escapeIdentity(
- tableName
- )} SET ${setPart} WHERE ${wherePart};`;
-}
-
-export function selectStatementFromPosition(
- statements: IdentifyResult[],
- pos: number
-): IdentifyResult | undefined {
- for (const statement of statements) {
- if (statement.end + 1 >= pos) return statement;
- }
- return undefined;
-}
+import { TableColumnDataType } from "@gui/drivers/base-driver";
+import { hex } from "./../lib/bit-operation";
+import type { IdentifyResult } from "sql-query-identifier/lib/defines";
+
+export function escapeIdentity(str: string) {
+ return `"${str.replace(/"/g, `""`)}"`;
+}
+
+export function unescapeIdentity(str: string) {
+ let r = str.replace(/^["`[]/g, "");
+ r = r.replace(/["`\]]$/g, "");
+ r = r.replace(/""/g, `"`);
+ return r;
+}
+
+export function escapeSqlString(str: string) {
+ return `'${str.replace(/'/g, `''`)}'`;
+}
+
+export function escapeSqlBinary(value: ArrayBuffer) {
+ return `x'${hex(value)}'`;
+}
+
+export function escapeSqlValue(value: unknown) {
+ if (value === undefined) return "DEFAULT";
+ if (value === null) return "NULL";
+ if (typeof value === "string") return escapeSqlString(value);
+ if (typeof value === "number") return value.toString();
+ if (typeof value === "bigint") return value.toString();
+ if (value instanceof ArrayBuffer) return escapeSqlBinary(value);
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ throw new Error(value.toString() + " is unrecongize type of value");
+}
+
+export function convertSqliteType(
+ type: string | undefined
+): TableColumnDataType {
+ // https://www.sqlite.org/datatype3.html
+ if (type === undefined) return TableColumnDataType.BLOB;
+
+ type = type.toUpperCase();
+
+ if (type.includes("CHAR")) return TableColumnDataType.TEXT;
+ if (type.includes("TEXT")) return TableColumnDataType.TEXT;
+ if (type.includes("CLOB")) return TableColumnDataType.TEXT;
+ if (type.includes("STRING")) return TableColumnDataType.TEXT;
+
+ if (type.includes("INT")) return TableColumnDataType.INTEGER;
+
+ if (type.includes("BLOB")) return TableColumnDataType.BLOB;
+
+ if (
+ type.includes("REAL") ||
+ type.includes("DOUBLE") ||
+ type.includes("FLOAT")
+ )
+ return TableColumnDataType.REAL;
+
+ return TableColumnDataType.TEXT;
+}
+
+export function generateSelectOneWithConditionStatement(
+ tableName: string,
+ condition: Record
+) {
+ const wherePart = Object.entries(condition)
+ .map(
+ ([columnName, value]) =>
+ `${escapeIdentity(columnName)} = ${escapeSqlValue(value)}`
+ )
+ .join(" AND ");
+
+ return `SELECT * FROM ${escapeIdentity(
+ tableName
+ )} WHERE ${wherePart} LIMIT 1 OFFSET 0;`;
+}
+
+export function generateInsertStatement(
+ tableName: string,
+ value: Record
+): string {
+ const fieldPart: string[] = [];
+ const valuePart: unknown[] = [];
+
+ for (const entry of Object.entries(value)) {
+ fieldPart.push(entry[0]);
+ valuePart.push(entry[1]);
+ }
+ return `INSERT INTO ${escapeIdentity(tableName)}(${fieldPart
+ .map(escapeIdentity)
+ .join(", ")}) VALUES(${valuePart.map(escapeSqlValue).join(", ")});`;
+}
+
+export function generateDeleteStatement(
+ tableName: string,
+ where: Record
+) {
+ const wherePart: string = Object.entries(where)
+ .map(
+ ([columnName, value]) =>
+ `${escapeIdentity(columnName)} = ${escapeSqlValue(value)}`
+ )
+ .join(" AND ");
+
+ return `DELETE FROM ${escapeIdentity(tableName)} WHERE ${wherePart};`;
+}
+
+export function generateUpdateStatement(
+ tableName: string,
+ where: Record,
+ changeValue: Record
+): string {
+ const setPart = Object.entries(changeValue)
+ .map(([colName, value]) => {
+ return `${escapeIdentity(colName)} = ${escapeSqlValue(value)}`;
+ })
+ .join(", ");
+
+ const wherePart: string = Object.entries(where)
+ .map(
+ ([columnName, value]) =>
+ `${escapeIdentity(columnName)} = ${escapeSqlValue(value)}`
+ )
+ .join(" AND ");
+
+ return `UPDATE ${escapeIdentity(
+ tableName
+ )} SET ${setPart} WHERE ${wherePart};`;
+}
+
+export function selectStatementFromPosition(
+ statements: IdentifyResult[],
+ pos: number
+): IdentifyResult | undefined {
+ for (const statement of statements) {
+ if (statement.end + 1 >= pos) return statement;
+ }
+ return undefined;
+}
diff --git a/src/lib/sql-parse-table.test.ts b/gui/src/sqlite/sql-parse-table.test.ts
similarity index 95%
rename from src/lib/sql-parse-table.test.ts
rename to gui/src/sqlite/sql-parse-table.test.ts
index 5bfdd35c..92de604d 100644
--- a/src/lib/sql-parse-table.test.ts
+++ b/gui/src/sqlite/sql-parse-table.test.ts
@@ -1,207 +1,207 @@
-import {
- DatabaseTableColumnConstraint,
- DatabaseTableSchema,
-} from "@/drivers/base-driver";
-import {
- buildSyntaxCursor,
- parseColumnConstraint,
- parseCreateTableScript,
-} from "./sql-parse-table";
-
-// Parse column constraint
-function pcc(sql: string) {
- return parseColumnConstraint(buildSyntaxCursor(sql));
-}
-
-function p(sql: string) {
- return parseCreateTableScript(sql);
-}
-
-it("parse column constraint", () => {
- expect(
- pcc("constraint this_is_primary_key primary key autoincrement")
- ).toEqual({
- name: "this_is_primary_key",
- primaryKey: true,
- autoIncrement: true,
- } as DatabaseTableColumnConstraint);
-
- expect(pcc("primary key(first_name, last_name)")).toEqual({
- primaryKey: true,
- autoIncrement: false,
- primaryColumns: ["first_name", "last_name"],
- } as DatabaseTableColumnConstraint);
-
- expect(pcc("primary key on conflict rollback not null")).toEqual({
- primaryKey: true,
- autoIncrement: false,
- primaryKeyConflict: "ROLLBACK",
- notNull: true,
- } as DatabaseTableColumnConstraint);
-
- expect(pcc("not null primary key on conflict rollback")).toEqual({
- primaryKey: true,
- autoIncrement: false,
- primaryKeyConflict: "ROLLBACK",
- notNull: true,
- } as DatabaseTableColumnConstraint);
-
- expect(pcc("unique on conflict rollback")).toEqual({
- unique: true,
- uniqueConflict: "ROLLBACK",
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`default 'Visal'`)).toEqual({
- defaultValue: "Visal",
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`default -5`)).toEqual({
- defaultValue: -5,
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`default +5.5`)).toEqual({
- defaultValue: 5.5,
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`default 5.5`)).toEqual({
- defaultValue: 5.5,
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`default current_timestamp`)).toEqual({
- defaultExpression: "current_timestamp",
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`default (round(julianday('now'))`)).toEqual({
- defaultExpression: `(round(julianday('now'))`,
- } as DatabaseTableColumnConstraint);
-
- expect(
- pcc(`foreign key ("user_id") references "users" on delete cascade ("id")`)
- ).toEqual({
- foreignKey: {
- columns: ["user_id"],
- foreignTableName: "users",
- foreignColumns: ["id"],
- },
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`references "users" on delete cascade ("id")`)).toEqual({
- foreignKey: {
- foreignTableName: "users",
- foreignColumns: ["id"],
- },
- } as DatabaseTableColumnConstraint);
-
- expect(pcc(`generated always as (price * qty) virtual`)).toEqual({
- generatedExpression: "(price * qty)",
- generatedType: "VIRTUAL",
- } as DatabaseTableColumnConstraint);
-});
-
-it("parse create table", () => {
- const sql = `create table "invoice_detail"(
- id integer primary key autoincrement,
- product_id integer references product(id),
- price real not null,
- qty real,
- note varchar(255),
- total real generated always as (price * qty) virtual
- );`;
-
- expect(p(sql)).toEqual({
- tableName: "invoice_detail",
- pk: ["id"],
- autoIncrement: true,
- constraints: [],
- columns: [
- {
- name: "id",
- type: "integer",
- pk: true,
- constraint: {
- primaryKey: true,
- autoIncrement: true,
- },
- },
- {
- name: "product_id",
- type: "integer",
- constraint: {
- foreignKey: {
- foreignTableName: "product",
- foreignColumns: ["id"],
- },
- },
- },
- {
- name: "price",
- type: "real",
- constraint: {
- notNull: true,
- },
- },
- {
- name: "qty",
- type: "real",
- },
- {
- name: "note",
- type: "varchar(255)",
- },
- {
- name: "total",
- type: "real",
- constraint: {
- generatedExpression: "(price * qty)",
- generatedType: "VIRTUAL",
- },
- },
- ],
- } as DatabaseTableSchema);
-});
-
-it("parse create table with table constraints", () => {
- const sql = `create table "users"(
- first_name varchar,
- last_name varchar,
- category_id integer,
- primary key(first_name, last_name),
- foreign key(category_id) references category(id)
- );`;
-
- expect(p(sql)).toEqual({
- tableName: "users",
- pk: ["first_name", "last_name"],
- autoIncrement: false,
- constraints: [
- {
- primaryKey: true,
- autoIncrement: false,
- primaryColumns: ["first_name", "last_name"],
- },
- {
- foreignKey: {
- columns: ["category_id"],
- foreignColumns: ["id"],
- foreignTableName: "category",
- },
- },
- ],
- columns: [
- {
- name: "first_name",
- type: "varchar",
- pk: true,
- },
- {
- name: "last_name",
- type: "varchar",
- pk: true,
- },
- {
- name: "category_id",
- type: "integer",
- },
- ],
- } as DatabaseTableSchema);
-});
+import type {
+ DatabaseTableColumnConstraint,
+ DatabaseTableSchema,
+} from "@gui/drivers/base-driver";
+import {
+ buildSyntaxCursor,
+ parseColumnConstraint,
+ parseCreateTableScript,
+} from "./sql-parse-table";
+
+// Parse column constraint
+function pcc(sql: string) {
+ return parseColumnConstraint(buildSyntaxCursor(sql));
+}
+
+function p(sql: string) {
+ return parseCreateTableScript(sql);
+}
+
+it("parse column constraint", () => {
+ expect(
+ pcc("constraint this_is_primary_key primary key autoincrement")
+ ).toEqual({
+ name: "this_is_primary_key",
+ primaryKey: true,
+ autoIncrement: true,
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc("primary key(first_name, last_name)")).toEqual({
+ primaryKey: true,
+ autoIncrement: false,
+ primaryColumns: ["first_name", "last_name"],
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc("primary key on conflict rollback not null")).toEqual({
+ primaryKey: true,
+ autoIncrement: false,
+ primaryKeyConflict: "ROLLBACK",
+ notNull: true,
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc("not null primary key on conflict rollback")).toEqual({
+ primaryKey: true,
+ autoIncrement: false,
+ primaryKeyConflict: "ROLLBACK",
+ notNull: true,
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc("unique on conflict rollback")).toEqual({
+ unique: true,
+ uniqueConflict: "ROLLBACK",
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`default 'Visal'`)).toEqual({
+ defaultValue: "Visal",
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`default -5`)).toEqual({
+ defaultValue: -5,
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`default +5.5`)).toEqual({
+ defaultValue: 5.5,
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`default 5.5`)).toEqual({
+ defaultValue: 5.5,
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`default current_timestamp`)).toEqual({
+ defaultExpression: "current_timestamp",
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`default (round(julianday('now'))`)).toEqual({
+ defaultExpression: `(round(julianday('now'))`,
+ } as DatabaseTableColumnConstraint);
+
+ expect(
+ pcc(`foreign key ("user_id") references "users" on delete cascade ("id")`)
+ ).toEqual({
+ foreignKey: {
+ columns: ["user_id"],
+ foreignTableName: "users",
+ foreignColumns: ["id"],
+ },
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`references "users" on delete cascade ("id")`)).toEqual({
+ foreignKey: {
+ foreignTableName: "users",
+ foreignColumns: ["id"],
+ },
+ } as DatabaseTableColumnConstraint);
+
+ expect(pcc(`generated always as (price * qty) virtual`)).toEqual({
+ generatedExpression: "(price * qty)",
+ generatedType: "VIRTUAL",
+ } as DatabaseTableColumnConstraint);
+});
+
+it("parse create table", () => {
+ const sql = `create table "invoice_detail"(
+ id integer primary key autoincrement,
+ product_id integer references product(id),
+ price real not null,
+ qty real,
+ note varchar(255),
+ total real generated always as (price * qty) virtual
+ );`;
+
+ expect(p(sql)).toEqual({
+ tableName: "invoice_detail",
+ pk: ["id"],
+ autoIncrement: true,
+ constraints: [],
+ columns: [
+ {
+ name: "id",
+ type: "integer",
+ pk: true,
+ constraint: {
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ },
+ {
+ name: "product_id",
+ type: "integer",
+ constraint: {
+ foreignKey: {
+ foreignTableName: "product",
+ foreignColumns: ["id"],
+ },
+ },
+ },
+ {
+ name: "price",
+ type: "real",
+ constraint: {
+ notNull: true,
+ },
+ },
+ {
+ name: "qty",
+ type: "real",
+ },
+ {
+ name: "note",
+ type: "varchar(255)",
+ },
+ {
+ name: "total",
+ type: "real",
+ constraint: {
+ generatedExpression: "(price * qty)",
+ generatedType: "VIRTUAL",
+ },
+ },
+ ],
+ } as DatabaseTableSchema);
+});
+
+it("parse create table with table constraints", () => {
+ const sql = `create table "users"(
+ first_name varchar,
+ last_name varchar,
+ category_id integer,
+ primary key(first_name, last_name),
+ foreign key(category_id) references category(id)
+ );`;
+
+ expect(p(sql)).toEqual({
+ tableName: "users",
+ pk: ["first_name", "last_name"],
+ autoIncrement: false,
+ constraints: [
+ {
+ primaryKey: true,
+ autoIncrement: false,
+ primaryColumns: ["first_name", "last_name"],
+ },
+ {
+ foreignKey: {
+ columns: ["category_id"],
+ foreignColumns: ["id"],
+ foreignTableName: "category",
+ },
+ },
+ ],
+ columns: [
+ {
+ name: "first_name",
+ type: "varchar",
+ pk: true,
+ },
+ {
+ name: "last_name",
+ type: "varchar",
+ pk: true,
+ },
+ {
+ name: "category_id",
+ type: "integer",
+ },
+ ],
+ } as DatabaseTableSchema);
+});
diff --git a/src/lib/sql-parse-table.ts b/gui/src/sqlite/sql-parse-table.ts
similarity index 94%
rename from src/lib/sql-parse-table.ts
rename to gui/src/sqlite/sql-parse-table.ts
index 9e0d090a..1b913bd9 100644
--- a/src/lib/sql-parse-table.ts
+++ b/gui/src/sqlite/sql-parse-table.ts
@@ -1,484 +1,486 @@
-import { SQLite } from "@codemirror/lang-sql";
-import { SyntaxNode, TreeCursor } from "@lezer/common";
-import { unescapeIdentity } from "./sql-helper";
-import {
- DatabaseTableColumn,
- DatabaseColumnConflict,
- DatabaseTableColumnConstraint,
- DatabaseTableSchema,
- SqlOrder,
-} from "@/drivers/base-driver";
-
-export class Cursor {
- protected ptr: SyntaxNode | null;
- protected sql: string = "";
-
- constructor(ptr: TreeCursor, sql: string) {
- this.ptr = ptr.node;
- this.sql = sql;
- }
-
- expectKeyword(keyword: string) {
- const errorMessage = `Expect ${keyword} keywords, but not found`;
-
- if (!this.ptr) throw new Error(errorMessage);
- if (!this.matchKeyword(keyword)) throw new Error(errorMessage);
-
- this.ptr = this.ptr.nextSibling;
- }
-
- expectKeywordOptional(keyword: string) {
- if (this.ptr) {
- if (this.matchKeyword(keyword)) {
- this.next();
- }
- }
- }
-
- expectKeywordsOptional(keywords: string[]) {
- if (keywords.length === 0) return;
- if (this.matchKeyword(keywords[0])) {
- this.next();
- for (const k of keywords.slice(1)) {
- this.expectKeyword(k);
- }
- }
- }
-
- consumeIdentifier() {
- if (this.ptr) {
- const id = unescapeIdentity(this.read());
- this.next();
- return id;
- }
- return "";
- }
-
- readKeyword(): string {
- if (this.ptr && this.ptr.type.name === "Keyword") {
- const keyword = this.read();
- this.next();
- return keyword;
- }
- return "";
- }
-
- next() {
- this.ptr = this.ptr?.nextSibling ?? null;
- }
-
- matchKeyword(keyword: string) {
- if (this.ptr && this.ptr.type.name !== "Keyword") return false;
- return this.read().toUpperCase() === keyword.toUpperCase();
- }
-
- matchKeywords(keywords: string[]) {
- if (this.ptr && this.ptr.type.name !== "Keyword") return false;
- const currentValue = this.read().toUpperCase();
- return keywords.some((keyword) => keyword.toUpperCase() === currentValue);
- }
-
- match(keyword: string) {
- if (!this.ptr) return false;
- return this.read().toUpperCase() === keyword.toUpperCase();
- }
-
- read(): string {
- if (this.ptr?.node) {
- return this.sql.substring(this.ptr.node.from, this.ptr.node.to);
- }
- return "";
- }
-
- node(): SyntaxNode | undefined {
- return this.ptr?.node;
- }
-
- type(): string | undefined {
- return this.ptr?.type.name;
- }
-
- enterParens(): Cursor | null {
- if (this.ptr?.firstChild) {
- if (this.ptr.firstChild.name !== "(") return null;
- if (!this.ptr.firstChild.nextSibling) return null;
- return new Cursor(this.ptr.firstChild.nextSibling.cursor(), this.sql);
- }
-
- return null;
- }
-
- end() {
- return this.ptr === null;
- }
-}
-
-export function buildSyntaxCursor(sql: string): Cursor {
- const r = SQLite.language.parser.parse(sql).cursor();
- r.firstChild();
- r.firstChild();
-
- return new Cursor(r, sql);
-}
-
-function parseColumnDef(cursor: Cursor): DatabaseTableColumn | null {
- const columnName = cursor.consumeIdentifier();
- if (!columnName) return null;
-
- let dataType = cursor.read();
- cursor.next();
-
- // Handle case such as VARCHAR(255) where we need to read
- // something inside the parens
- if (cursor.type() === "Parens") {
- dataType += cursor.read();
- cursor.next();
- }
-
- const constraint = parseColumnConstraint(cursor);
-
- return {
- name: columnName,
- pk: constraint?.primaryKey,
- constraint,
- type: dataType,
- };
-}
-
-function parseConstraintConflict(
- cursor: Cursor
-): DatabaseColumnConflict | undefined {
- if (!cursor.matchKeyword("ON")) return;
- cursor.next();
-
- if (!cursor.matchKeyword("CONFLICT")) return;
- cursor.next();
-
- if (!cursor.end()) {
- const conflict = cursor.read().toUpperCase();
- cursor.next();
- return conflict as DatabaseColumnConflict;
- }
-}
-
-export function parseColumnList(columnPtr: Cursor) {
- const columns: string[] = [];
-
- while (!columnPtr.end()) {
- columns.push(columnPtr.consumeIdentifier());
-
- if (!columnPtr.match(",")) break;
- columnPtr.next();
- }
-
- return columns;
-}
-
-export function parseColumnConstraint(
- cursor: Cursor
-): DatabaseTableColumnConstraint | undefined {
- if (cursor.matchKeyword("CONSTRAINT")) {
- cursor.next();
- const constraintName = cursor.consumeIdentifier();
-
- return {
- ...parseColumnConstraint(cursor),
- name: constraintName,
- };
- } else if (cursor.matchKeyword("PRIMARY")) {
- let primaryKeyOrder: SqlOrder | undefined;
- let primaryColumns: string[] | undefined;
- let autoIncrement = false;
-
- cursor.next();
- if (!cursor.matchKeyword("KEY"))
- throw new Error("PRIMARY must follow by KEY");
-
- cursor.next();
-
- const parens = cursor.enterParens();
- if (parens) {
- primaryColumns = parseColumnList(parens);
- cursor.next();
- }
-
- if (cursor.matchKeyword("ASC")) {
- primaryKeyOrder = "ASC";
- cursor.next();
- } else if (cursor.matchKeyword("DESC")) {
- primaryKeyOrder = "DESC";
- cursor.next();
- }
-
- const conflict = parseConstraintConflict(cursor);
-
- if (cursor.matchKeyword("AUTOINCREMENT")) {
- autoIncrement = true;
- cursor.next();
- }
-
- return {
- primaryKey: true,
- primaryKeyOrder,
- primaryColumns,
- autoIncrement,
- primaryKeyConflict: conflict,
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.matchKeyword("NOT")) {
- cursor.next();
- if (!cursor.match("NULL")) throw new Error("NOT should follow by NULL");
- cursor.next();
-
- const conflict = parseConstraintConflict(cursor);
- return {
- notNull: true,
- notNullConflict: conflict,
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.matchKeyword("UNIQUE")) {
- let uniqueColumns: string[] | undefined;
-
- cursor.next();
-
- const parens = cursor.enterParens();
- if (parens) {
- uniqueColumns = parseColumnList(parens);
- cursor.next();
- }
-
- const conflict = parseConstraintConflict(cursor);
-
- return {
- unique: true,
- uniqueConflict: conflict,
- uniqueColumns,
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.matchKeyword("DEFAULT")) {
- let defaultValue: unknown;
- let defaultExpression: string | undefined;
-
- cursor.next();
-
- if (cursor.type() === "String") {
- defaultValue = cursor.read().slice(1, -1);
- cursor.next();
- } else if (cursor.type() === "Operator") {
- if (cursor.match("+")) {
- cursor.next();
- defaultValue = Number(cursor.read());
- cursor.next();
- } else if (cursor.match("-")) {
- cursor.next();
- defaultValue = -Number(cursor.read());
- cursor.next();
- }
- } else if (cursor.type() === "Number") {
- defaultValue = Number(cursor.read());
- cursor.next();
- } else if (cursor.type() === "Parens") {
- defaultExpression = cursor.read();
- } else if (
- cursor.match("current_timestamp") ||
- cursor.match("current_time") ||
- cursor.match("current_date") ||
- cursor.match("true") ||
- cursor.match("false") ||
- cursor.match("null")
- ) {
- defaultExpression = cursor.read();
- }
-
- return {
- defaultValue,
- defaultExpression,
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.matchKeyword("CHECK")) {
- cursor.next();
-
- const expr = cursor.read();
- cursor.next();
-
- return {
- checkExpression: expr,
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.matchKeyword("COLLATE")) {
- cursor.next();
-
- const collationName = cursor.read();
- cursor.next();
-
- return {
- collate: collationName,
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.matchKeyword("FOREIGN")) {
- cursor.next();
-
- if (!cursor.match("KEY")) throw new Error("FOREIGN should follow by KEY");
- cursor.next();
-
- const parens = cursor.enterParens();
-
- if (!parens) throw new Error("FOREIGN KEY should follow by column list");
-
- const columns = parseColumnList(parens);
- cursor.next();
- const refConstraint = parseColumnConstraint(cursor);
-
- return {
- foreignKey: {
- foreignTableName: refConstraint?.foreignKey?.foreignTableName ?? "",
- foreignColumns: refConstraint?.foreignKey?.foreignColumns ?? [],
- columns,
- },
- };
- } else if (cursor.matchKeyword("REFERENCES")) {
- cursor.next();
- const foreignTableName = cursor.consumeIdentifier();
- let foreignColumns: string[] = [];
-
- // Trying to find the parens by skipping all other rule
- // We may visit more rule in the future, but at the moment
- // it is too complex to handle all the rules.
- // We will just grab foreign key column first
- while (!cursor.end() && cursor.type() !== "Parens" && !cursor.match(",")) {
- cursor.next();
- }
-
- const columnPtr = cursor.enterParens();
-
- if (columnPtr) {
- foreignColumns = parseColumnList(columnPtr);
- }
-
- return {
- foreignKey: {
- foreignTableName,
- foreignColumns,
- },
- ...parseColumnConstraint(cursor),
- };
- } else if (cursor.match("GENERATED")) {
- cursor.next();
- if (!cursor.match("ALWAYS"))
- throw new Error("GENERATED should follow by ALWAYS");
-
- cursor.next();
- if (!cursor.match("AS"))
- throw new Error("GENERATED ALWAYS should follow by AS");
-
- cursor.next();
- const expr = cursor.read();
-
- cursor.next();
- const virtualColumnType = cursor.matchKeyword("STORED")
- ? "STORED"
- : "VIRTUAL";
-
- return {
- generatedType: virtualColumnType,
- generatedExpression: expr,
- ...parseColumnConstraint(cursor),
- };
- }
-
- return undefined;
-}
-
-function parseTableDefinition(cursor: Cursor): {
- columns: DatabaseTableColumn[];
- constraints: DatabaseTableColumnConstraint[];
-} {
- let moveNext = true;
- const columns: DatabaseTableColumn[] = [];
- const constraints: DatabaseTableColumnConstraint[] = [];
-
- while (moveNext) {
- moveNext = false;
-
- if (
- cursor.matchKeywords([
- "CONSTRAINT",
- "PRIMARY",
- "UNIQUE",
- "CHECK",
- "FOREIGN",
- ])
- ) {
- const constraint = parseColumnConstraint(cursor);
- if (constraint) {
- constraints.push(constraint);
- moveNext = true;
- }
- } else {
- const column = parseColumnDef(cursor);
- if (column) {
- columns.push(column);
- moveNext = true;
- }
- }
-
- while (cursor.read() !== "," && !cursor.end()) {
- cursor.next();
- }
-
- if (cursor.end()) break;
- cursor.next();
- }
-
- for (const constraint of constraints) {
- if (constraint.primaryKey && constraint.primaryColumns) {
- for (const pkColumn of constraint.primaryColumns) {
- const column = columns.find(
- (col) => pkColumn.toLowerCase() === col.name.toLowerCase()
- );
-
- if (column) {
- column.pk = true;
- }
- }
- }
- }
-
- return { columns, constraints };
-}
-
-// Our parser follows this spec
-// https://www.sqlite.org/lang_createtable.html
-export function parseCreateTableScript(sql: string): DatabaseTableSchema {
- const tree = SQLite.language.parser.parse(sql);
- const ptr = tree.cursor();
-
- ptr.firstChild();
- ptr.firstChild();
-
- const cursor = new Cursor(ptr, sql);
- cursor.expectKeyword("CREATE");
- cursor.expectKeywordOptional("TEMP");
- cursor.expectKeywordOptional("TEMPORARY");
- cursor.expectKeyword("TABLE");
- cursor.expectKeywordsOptional(["IF", "NOT", "EXIST"]);
- const tableName = cursor.consumeIdentifier();
-
- const defCursor = cursor.enterParens();
- const defs = defCursor
- ? parseTableDefinition(defCursor)
- : { columns: [], constraints: [] };
-
- const pk = defs.columns.filter((col) => col.pk).map((col) => col.name);
-
- const autoIncrement = defs.columns.some(
- (col) => !!col.constraint?.autoIncrement
- );
-
- return {
- tableName,
- ...defs,
- pk,
- autoIncrement,
- };
-}
+import { SQLite } from "@codemirror/lang-sql";
+import type { SyntaxNode, TreeCursor } from "@lezer/common";
+import type {
+ DatabaseTableColumn,
+ DatabaseColumnConflict,
+ DatabaseTableColumnConstraint,
+ DatabaseTableSchema,
+ SqlOrder,
+} from "@gui/drivers/base-driver";
+import { unescapeIdentity } from "./sql-helper";
+
+export class Cursor {
+ protected ptr: SyntaxNode | null;
+ protected sql = "";
+
+ constructor(ptr: TreeCursor, sql: string) {
+ this.ptr = ptr.node;
+ this.sql = sql;
+ }
+
+ expectKeyword(keyword: string) {
+ const errorMessage = `Expect ${keyword} keywords, but not found`;
+
+ if (!this.ptr) throw new Error(errorMessage);
+ if (!this.matchKeyword(keyword)) throw new Error(errorMessage);
+
+ this.ptr = this.ptr.nextSibling;
+ }
+
+ expectKeywordOptional(keyword: string) {
+ if (this.ptr) {
+ if (this.matchKeyword(keyword)) {
+ this.next();
+ }
+ }
+ }
+
+ expectKeywordsOptional(keywords: string[]) {
+ if (keywords.length === 0) return;
+ if (this.matchKeyword(keywords[0] ?? "")) {
+ this.next();
+ for (const k of keywords.slice(1)) {
+ this.expectKeyword(k);
+ }
+ }
+ }
+
+ consumeIdentifier() {
+ if (this.ptr) {
+ const id = unescapeIdentity(this.read());
+ this.next();
+ return id;
+ }
+ return "";
+ }
+
+ readKeyword(): string {
+ if (this.ptr && this.ptr.type.name === "Keyword") {
+ const keyword = this.read();
+ this.next();
+ return keyword;
+ }
+ return "";
+ }
+
+ next() {
+ this.ptr = this.ptr?.nextSibling ?? null;
+ }
+
+ matchKeyword(keyword: string) {
+ if (this.ptr && this.ptr.type.name !== "Keyword") return false;
+ return this.read().toUpperCase() === keyword.toUpperCase();
+ }
+
+ matchKeywords(keywords: string[]) {
+ if (this.ptr && this.ptr.type.name !== "Keyword") return false;
+ const currentValue = this.read().toUpperCase();
+ return keywords.some((keyword) => keyword.toUpperCase() === currentValue);
+ }
+
+ match(keyword: string) {
+ if (!this.ptr) return false;
+ return this.read().toUpperCase() === keyword.toUpperCase();
+ }
+
+ read(): string {
+ if (this.ptr?.node) {
+ return this.sql.substring(this.ptr.node.from, this.ptr.node.to);
+ }
+ return "";
+ }
+
+ node(): SyntaxNode | undefined {
+ return this.ptr?.node;
+ }
+
+ type(): string | undefined {
+ return this.ptr?.type.name;
+ }
+
+ enterParens(): Cursor | null {
+ if (this.ptr?.firstChild) {
+ if (this.ptr.firstChild.name !== "(") return null;
+ if (!this.ptr.firstChild.nextSibling) return null;
+ return new Cursor(this.ptr.firstChild.nextSibling.cursor(), this.sql);
+ }
+
+ return null;
+ }
+
+ end() {
+ return this.ptr === null;
+ }
+}
+
+export function buildSyntaxCursor(sql: string): Cursor {
+ const r = SQLite.language.parser.parse(sql).cursor();
+ r.firstChild();
+ r.firstChild();
+
+ return new Cursor(r, sql);
+}
+
+function parseColumnDef(cursor: Cursor): DatabaseTableColumn | null {
+ const columnName = cursor.consumeIdentifier();
+ if (!columnName) return null;
+
+ let dataType = cursor.read();
+ cursor.next();
+
+ // Handle case such as VARCHAR(255) where we need to read
+ // something inside the parens
+ if (cursor.type() === "Parens") {
+ dataType += cursor.read();
+ cursor.next();
+ }
+
+ const constraint = parseColumnConstraint(cursor);
+
+ return {
+ name: columnName,
+ pk: constraint?.primaryKey,
+ constraint,
+ type: dataType,
+ };
+}
+
+function parseConstraintConflict(
+ cursor: Cursor
+): DatabaseColumnConflict | undefined {
+ if (!cursor.matchKeyword("ON")) return;
+ cursor.next();
+
+ if (!cursor.matchKeyword("CONFLICT")) return;
+ cursor.next();
+
+ if (!cursor.end()) {
+ const conflict = cursor.read().toUpperCase();
+ cursor.next();
+ return conflict as DatabaseColumnConflict;
+ }
+
+ return;
+}
+
+export function parseColumnList(columnPtr: Cursor) {
+ const columns: string[] = [];
+
+ while (!columnPtr.end()) {
+ columns.push(columnPtr.consumeIdentifier());
+
+ if (!columnPtr.match(",")) break;
+ columnPtr.next();
+ }
+
+ return columns;
+}
+
+export function parseColumnConstraint(
+ cursor: Cursor
+): DatabaseTableColumnConstraint | undefined {
+ if (cursor.matchKeyword("CONSTRAINT")) {
+ cursor.next();
+ const constraintName = cursor.consumeIdentifier();
+
+ return {
+ ...parseColumnConstraint(cursor),
+ name: constraintName,
+ };
+ } else if (cursor.matchKeyword("PRIMARY")) {
+ let primaryKeyOrder: SqlOrder | undefined;
+ let primaryColumns: string[] | undefined;
+ let autoIncrement = false;
+
+ cursor.next();
+ if (!cursor.matchKeyword("KEY"))
+ throw new Error("PRIMARY must follow by KEY");
+
+ cursor.next();
+
+ const parens = cursor.enterParens();
+ if (parens) {
+ primaryColumns = parseColumnList(parens);
+ cursor.next();
+ }
+
+ if (cursor.matchKeyword("ASC")) {
+ primaryKeyOrder = "ASC";
+ cursor.next();
+ } else if (cursor.matchKeyword("DESC")) {
+ primaryKeyOrder = "DESC";
+ cursor.next();
+ }
+
+ const conflict = parseConstraintConflict(cursor);
+
+ if (cursor.matchKeyword("AUTOINCREMENT")) {
+ autoIncrement = true;
+ cursor.next();
+ }
+
+ return {
+ primaryKey: true,
+ primaryKeyOrder,
+ primaryColumns,
+ autoIncrement,
+ primaryKeyConflict: conflict,
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.matchKeyword("NOT")) {
+ cursor.next();
+ if (!cursor.match("NULL")) throw new Error("NOT should follow by NULL");
+ cursor.next();
+
+ const conflict = parseConstraintConflict(cursor);
+ return {
+ notNull: true,
+ notNullConflict: conflict,
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.matchKeyword("UNIQUE")) {
+ let uniqueColumns: string[] | undefined;
+
+ cursor.next();
+
+ const parens = cursor.enterParens();
+ if (parens) {
+ uniqueColumns = parseColumnList(parens);
+ cursor.next();
+ }
+
+ const conflict = parseConstraintConflict(cursor);
+
+ return {
+ unique: true,
+ uniqueConflict: conflict,
+ uniqueColumns,
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.matchKeyword("DEFAULT")) {
+ let defaultValue: unknown;
+ let defaultExpression: string | undefined;
+
+ cursor.next();
+
+ if (cursor.type() === "String") {
+ defaultValue = cursor.read().slice(1, -1);
+ cursor.next();
+ } else if (cursor.type() === "Operator") {
+ if (cursor.match("+")) {
+ cursor.next();
+ defaultValue = Number(cursor.read());
+ cursor.next();
+ } else if (cursor.match("-")) {
+ cursor.next();
+ defaultValue = -Number(cursor.read());
+ cursor.next();
+ }
+ } else if (cursor.type() === "Number") {
+ defaultValue = Number(cursor.read());
+ cursor.next();
+ } else if (cursor.type() === "Parens") {
+ defaultExpression = cursor.read();
+ } else if (
+ cursor.match("current_timestamp") ||
+ cursor.match("current_time") ||
+ cursor.match("current_date") ||
+ cursor.match("true") ||
+ cursor.match("false") ||
+ cursor.match("null")
+ ) {
+ defaultExpression = cursor.read();
+ }
+
+ return {
+ defaultValue,
+ defaultExpression,
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.matchKeyword("CHECK")) {
+ cursor.next();
+
+ const expr = cursor.read();
+ cursor.next();
+
+ return {
+ checkExpression: expr,
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.matchKeyword("COLLATE")) {
+ cursor.next();
+
+ const collationName = cursor.read();
+ cursor.next();
+
+ return {
+ collate: collationName,
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.matchKeyword("FOREIGN")) {
+ cursor.next();
+
+ if (!cursor.match("KEY")) throw new Error("FOREIGN should follow by KEY");
+ cursor.next();
+
+ const parens = cursor.enterParens();
+
+ if (!parens) throw new Error("FOREIGN KEY should follow by column list");
+
+ const columns = parseColumnList(parens);
+ cursor.next();
+ const refConstraint = parseColumnConstraint(cursor);
+
+ return {
+ foreignKey: {
+ foreignTableName: refConstraint?.foreignKey?.foreignTableName ?? "",
+ foreignColumns: refConstraint?.foreignKey?.foreignColumns ?? [],
+ columns,
+ },
+ };
+ } else if (cursor.matchKeyword("REFERENCES")) {
+ cursor.next();
+ const foreignTableName = cursor.consumeIdentifier();
+ let foreignColumns: string[] = [];
+
+ // Trying to find the parens by skipping all other rule
+ // We may visit more rule in the future, but at the moment
+ // it is too complex to handle all the rules.
+ // We will just grab foreign key column first
+ while (!cursor.end() && cursor.type() !== "Parens" && !cursor.match(",")) {
+ cursor.next();
+ }
+
+ const columnPtr = cursor.enterParens();
+
+ if (columnPtr) {
+ foreignColumns = parseColumnList(columnPtr);
+ }
+
+ return {
+ foreignKey: {
+ foreignTableName,
+ foreignColumns,
+ },
+ ...parseColumnConstraint(cursor),
+ };
+ } else if (cursor.match("GENERATED")) {
+ cursor.next();
+ if (!cursor.match("ALWAYS"))
+ throw new Error("GENERATED should follow by ALWAYS");
+
+ cursor.next();
+ if (!cursor.match("AS"))
+ throw new Error("GENERATED ALWAYS should follow by AS");
+
+ cursor.next();
+ const expr = cursor.read();
+
+ cursor.next();
+ const virtualColumnType = cursor.matchKeyword("STORED")
+ ? "STORED"
+ : "VIRTUAL";
+
+ return {
+ generatedType: virtualColumnType,
+ generatedExpression: expr,
+ ...parseColumnConstraint(cursor),
+ };
+ }
+
+ return undefined;
+}
+
+function parseTableDefinition(cursor: Cursor): {
+ columns: DatabaseTableColumn[];
+ constraints: DatabaseTableColumnConstraint[];
+} {
+ let moveNext = true;
+ const columns: DatabaseTableColumn[] = [];
+ const constraints: DatabaseTableColumnConstraint[] = [];
+
+ while (moveNext) {
+ moveNext = false;
+
+ if (
+ cursor.matchKeywords([
+ "CONSTRAINT",
+ "PRIMARY",
+ "UNIQUE",
+ "CHECK",
+ "FOREIGN",
+ ])
+ ) {
+ const constraint = parseColumnConstraint(cursor);
+ if (constraint) {
+ constraints.push(constraint);
+ moveNext = true;
+ }
+ } else {
+ const column = parseColumnDef(cursor);
+ if (column) {
+ columns.push(column);
+ moveNext = true;
+ }
+ }
+
+ while (cursor.read() !== "," && !cursor.end()) {
+ cursor.next();
+ }
+
+ if (cursor.end()) break;
+ cursor.next();
+ }
+
+ for (const constraint of constraints) {
+ if (constraint.primaryKey && constraint.primaryColumns) {
+ for (const pkColumn of constraint.primaryColumns) {
+ const column = columns.find(
+ (col) => pkColumn.toLowerCase() === col.name.toLowerCase()
+ );
+
+ if (column) {
+ column.pk = true;
+ }
+ }
+ }
+ }
+
+ return { columns, constraints };
+}
+
+// Our parser follows this spec
+// https://www.sqlite.org/lang_createtable.html
+export function parseCreateTableScript(sql: string): DatabaseTableSchema {
+ const tree = SQLite.language.parser.parse(sql);
+ const ptr = tree.cursor();
+
+ ptr.firstChild();
+ ptr.firstChild();
+
+ const cursor = new Cursor(ptr, sql);
+ cursor.expectKeyword("CREATE");
+ cursor.expectKeywordOptional("TEMP");
+ cursor.expectKeywordOptional("TEMPORARY");
+ cursor.expectKeyword("TABLE");
+ cursor.expectKeywordsOptional(["IF", "NOT", "EXIST"]);
+ const tableName = cursor.consumeIdentifier();
+
+ const defCursor = cursor.enterParens();
+ const defs = defCursor
+ ? parseTableDefinition(defCursor)
+ : { columns: [], constraints: [] };
+
+ const pk = defs.columns.filter((col) => col.pk).map((col) => col.name);
+
+ const autoIncrement = defs.columns.some(
+ (col) => !!col.constraint?.autoIncrement
+ );
+
+ return {
+ tableName,
+ ...defs,
+ pk,
+ autoIncrement,
+ };
+}
diff --git a/src/lib/sql-parse-trigger.test.ts b/gui/src/sqlite/sql-parse-trigger.test.ts
similarity index 100%
rename from src/lib/sql-parse-trigger.test.ts
rename to gui/src/sqlite/sql-parse-trigger.test.ts
diff --git a/src/lib/sql-parse-trigger.ts b/gui/src/sqlite/sql-parse-trigger.ts
similarity index 98%
rename from src/lib/sql-parse-trigger.ts
rename to gui/src/sqlite/sql-parse-trigger.ts
index 0e74d3c6..c75cab9a 100644
--- a/src/lib/sql-parse-trigger.ts
+++ b/gui/src/sqlite/sql-parse-trigger.ts
@@ -4,7 +4,7 @@ import {
DatabaseTriggerSchema,
TriggerWhen,
TriggerOperation,
-} from "@/drivers/base-driver";
+} from "@gui/drivers/base-driver";
export function parseCreateTriggerScript(sql: string): DatabaseTriggerSchema {
const tree = SQLite.language.parser.parse(sql);
diff --git a/gui/src/studio.tsx b/gui/src/studio.tsx
new file mode 100644
index 00000000..605b9141
--- /dev/null
+++ b/gui/src/studio.tsx
@@ -0,0 +1,36 @@
+"use client";
+import "./index.css";
+import MainScreen from "./components/main-connection";
+import { ConfigProvider } from "./contexts/config-provider";
+import { DriverProvider } from "./contexts/driver-provider";
+import ThemeProvider from "./contexts/theme-provider";
+import type { BaseDriver } from "./drivers/base-driver";
+import { CollaborationDriver } from "./drivers/collaboration-driver";
+
+interface StudioProps {
+ driver: BaseDriver;
+ collaboration?: CollaborationDriver;
+ name: string;
+ color: string;
+ defaultTheme?: "dark" | "light";
+ onBack: () => void;
+}
+
+export function Studio({
+ driver,
+ defaultTheme,
+ collaboration,
+ name,
+ color,
+ onBack,
+}: Readonly) {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/gui/src/vite-env.d.ts b/gui/src/vite-env.d.ts
new file mode 100644
index 00000000..11f02fe2
--- /dev/null
+++ b/gui/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/gui/tailwind.config.js b/gui/tailwind.config.js
new file mode 100644
index 00000000..1d84236d
--- /dev/null
+++ b/gui/tailwind.config.js
@@ -0,0 +1,10 @@
+import { LibSqlStudoTailwindPreset } from "@libsqlstudio/tailwind";
+
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["./src/**/*.tsx"],
+ presets: [LibSqlStudoTailwindPreset],
+ corePlugins: {
+ preflight: false,
+ },
+};
diff --git a/gui/tsconfig.json b/gui/tsconfig.json
new file mode 100644
index 00000000..7f9cb813
--- /dev/null
+++ b/gui/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "extends": ["@libsqlstudio/tsconfig/react"],
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo",
+ "baseUrl": "./",
+ "paths": {
+ "@gui/*": ["./src/*"]
+ },
+ "noImplicitReturns": false
+ },
+ "include": [
+ "**/*.ts",
+ "**/*.tsx",
+ ".eslintrc.cjs",
+ "*.js",
+ "*.ts",
+ "jest.config.cjs"
+ ],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/gui/tsup.config.ts b/gui/tsup.config.ts
new file mode 100644
index 00000000..4fc99f41
--- /dev/null
+++ b/gui/tsup.config.ts
@@ -0,0 +1,15 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig((opts) => ({
+ entry: ["src/index.tsx"],
+ format: ["esm", "cjs"],
+ splitting: true,
+ sourcemap: true,
+ minify: !opts.watch,
+ clean: !opts.watch,
+ external: ["react", "react-dom", "next"],
+ platform: "browser",
+ dts: true,
+ outDir: "dist",
+ treeshake: true,
+}));
diff --git a/gui/vite.config.ts b/gui/vite.config.ts
new file mode 100644
index 00000000..26a3dc30
--- /dev/null
+++ b/gui/vite.config.ts
@@ -0,0 +1,11 @@
+import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
+
+// lol this get defined cuz it seems to be with @libsqlstudio/config
+// and the @libsqlstudio/config is installed in the root of the project
+import tsconfigPaths from "vite-tsconfig-paths";
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react(), tsconfigPaths()],
+});
diff --git a/src/window.d.ts b/gui/window.d.ts
similarity index 62%
rename from src/window.d.ts
rename to gui/window.d.ts
index c49e32a0..9050ae5b 100644
--- a/src/window.d.ts
+++ b/gui/window.d.ts
@@ -1,4 +1,4 @@
-import InternalPubSub from "./lib/internal-pubsub";
+import type InternalPubSub from "@/lib/internal-pubsub";
export {};
diff --git a/next.config.js b/next.config.js
deleted file mode 100644
index 24f1a900..00000000
--- a/next.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/** @type {import('next').NextConfig} */
-const nextConfig = {
- reactStrictMode: false,
-};
-
-module.exports = nextConfig;
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 46c7841a..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,16762 +0,0 @@
-{
- "name": "libsql-studio",
- "version": "0.3.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "libsql-studio",
- "version": "0.3.1",
- "dependencies": {
- "@aws-sdk/client-s3": "^3.540.0",
- "@blocknote/core": "^0.12.1",
- "@blocknote/react": "^0.12.2",
- "@codemirror/lang-sql": "^6.5.5",
- "@dnd-kit/core": "^6.1.0",
- "@dnd-kit/sortable": "^8.0.0",
- "@justmiracle/result": "^1.2.0",
- "@lezer/common": "^1.2.1",
- "@lezer/lr": "^1.4.0",
- "@libsql/client": "^0.5.3",
- "@lucia-auth/adapter-sqlite": "^3.0.1",
- "@radix-ui/react-alert-dialog": "^1.0.5",
- "@radix-ui/react-avatar": "^1.0.4",
- "@radix-ui/react-checkbox": "^1.0.4",
- "@radix-ui/react-context-menu": "^2.1.5",
- "@radix-ui/react-dialog": "^1.0.5",
- "@radix-ui/react-dropdown-menu": "^2.0.6",
- "@radix-ui/react-hover-card": "^1.0.7",
- "@radix-ui/react-icons": "^1.3.0",
- "@radix-ui/react-label": "^2.0.2",
- "@radix-ui/react-menubar": "^1.0.4",
- "@radix-ui/react-navigation-menu": "^1.1.4",
- "@radix-ui/react-popover": "^1.0.7",
- "@radix-ui/react-radio-group": "^1.1.3",
- "@radix-ui/react-scroll-area": "^1.0.5",
- "@radix-ui/react-select": "^2.0.0",
- "@radix-ui/react-separator": "^1.0.3",
- "@radix-ui/react-slot": "^1.0.2",
- "@radix-ui/react-toggle": "^1.0.3",
- "@radix-ui/react-toggle-group": "^1.0.4",
- "@radix-ui/react-tooltip": "^1.0.7",
- "@silevis/reactgrid": "^4.1.3",
- "@t3-oss/env-nextjs": "^0.9.2",
- "@uiw/codemirror-extensions-langs": "^4.21.24",
- "@uiw/codemirror-themes": "^4.21.21",
- "@uiw/react-codemirror": "^4.21.21",
- "arctic": "^1.2.1",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.0",
- "cmdk": "^0.2.0",
- "cookies-next": "^4.1.1",
- "deep-equal": "^2.2.3",
- "dotenv": "^16.4.5",
- "drizzle-orm": "^0.30.1",
- "eslint-plugin-jest": "^27.6.3",
- "lucia": "^3.1.1",
- "lucide-react": "^0.309.0",
- "magic-bytes.js": "^1.10.0",
- "next": "14.0.4",
- "oslo": "^1.1.3",
- "react": "^18",
- "react-dom": "^18",
- "react-resizable-panels": "^1.0.9",
- "sonner": "^1.4.41",
- "sql-query-identifier": "^2.6.0",
- "tailwind-merge": "^2.2.0",
- "tailwindcss-animate": "^1.0.7",
- "zod": "^3.22.4"
- },
- "devDependencies": {
- "@testing-library/jest-dom": "^6.2.1",
- "@testing-library/react": "^14.1.2",
- "@types/deep-equal": "^1.0.4",
- "@types/jest": "^29.5.11",
- "@types/node": "^20",
- "@types/react": "^18",
- "@types/react-dom": "^18",
- "@typescript-eslint/eslint-plugin": "^6.21.0",
- "@typescript-eslint/parser": "^6.21.0",
- "autoprefixer": "^10.0.1",
- "drizzle-kit": "^0.20.14",
- "eslint": "^8",
- "eslint-config-next": "14.0.4",
- "jest": "^29.7.0",
- "jest-environment-jsdom": "^29.7.0",
- "postcss": "^8",
- "tailwindcss": "^3.3.0",
- "ts-node": "^10.9.2",
- "tsx": "^4.7.1",
- "typescript": "^5"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@adobe/css-tools": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz",
- "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==",
- "dev": true
- },
- "node_modules/@alloc/quick-lru": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
- "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "devOptional": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@aws-crypto/crc32": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz",
- "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==",
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/crc32/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/crc32c": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz",
- "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==",
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/crc32c/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/ie11-detection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
- "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/sha1-browser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz",
- "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==",
- "dependencies": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/sha256-browser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
- "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
- "dependencies": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/sha256-js": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/sha256-js": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
- "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/supports-web-crypto": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
- "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-crypto/util": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
- "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/@aws-sdk/client-s3": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.540.0.tgz",
- "integrity": "sha512-rYBuNB7uqCO9xZc0OAwM2K6QJAo2Syt1L5OhEaf7zG7FulNMyrK6kJPg1WrvNE90tW6gUdDaTy3XsQ7lq6O7uA==",
- "dependencies": {
- "@aws-crypto/sha1-browser": "3.0.0",
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.540.0",
- "@aws-sdk/core": "3.535.0",
- "@aws-sdk/credential-provider-node": "3.540.0",
- "@aws-sdk/middleware-bucket-endpoint": "3.535.0",
- "@aws-sdk/middleware-expect-continue": "3.535.0",
- "@aws-sdk/middleware-flexible-checksums": "3.535.0",
- "@aws-sdk/middleware-host-header": "3.535.0",
- "@aws-sdk/middleware-location-constraint": "3.535.0",
- "@aws-sdk/middleware-logger": "3.535.0",
- "@aws-sdk/middleware-recursion-detection": "3.535.0",
- "@aws-sdk/middleware-sdk-s3": "3.535.0",
- "@aws-sdk/middleware-signing": "3.535.0",
- "@aws-sdk/middleware-ssec": "3.537.0",
- "@aws-sdk/middleware-user-agent": "3.540.0",
- "@aws-sdk/region-config-resolver": "3.535.0",
- "@aws-sdk/signature-v4-multi-region": "3.535.0",
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-endpoints": "3.540.0",
- "@aws-sdk/util-user-agent-browser": "3.535.0",
- "@aws-sdk/util-user-agent-node": "3.535.0",
- "@aws-sdk/xml-builder": "3.535.0",
- "@smithy/config-resolver": "^2.2.0",
- "@smithy/core": "^1.4.0",
- "@smithy/eventstream-serde-browser": "^2.2.0",
- "@smithy/eventstream-serde-config-resolver": "^2.2.0",
- "@smithy/eventstream-serde-node": "^2.2.0",
- "@smithy/fetch-http-handler": "^2.5.0",
- "@smithy/hash-blob-browser": "^2.2.0",
- "@smithy/hash-node": "^2.2.0",
- "@smithy/hash-stream-node": "^2.2.0",
- "@smithy/invalid-dependency": "^2.2.0",
- "@smithy/md5-js": "^2.2.0",
- "@smithy/middleware-content-length": "^2.2.0",
- "@smithy/middleware-endpoint": "^2.5.0",
- "@smithy/middleware-retry": "^2.2.0",
- "@smithy/middleware-serde": "^2.3.0",
- "@smithy/middleware-stack": "^2.2.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/node-http-handler": "^2.5.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/url-parser": "^2.2.0",
- "@smithy/util-base64": "^2.3.0",
- "@smithy/util-body-length-browser": "^2.2.0",
- "@smithy/util-body-length-node": "^2.3.0",
- "@smithy/util-defaults-mode-browser": "^2.2.0",
- "@smithy/util-defaults-mode-node": "^2.3.0",
- "@smithy/util-endpoints": "^1.2.0",
- "@smithy/util-retry": "^2.2.0",
- "@smithy/util-stream": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "@smithy/util-waiter": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.540.0.tgz",
- "integrity": "sha512-rrQZMuw4sxIo3eyAUUzPQRA336mPRnrAeSlSdVHBKZD8Fjvoy0lYry2vNhkPLpFZLso1J66KRyuIv4LzRR3v1Q==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/core": "3.535.0",
- "@aws-sdk/middleware-host-header": "3.535.0",
- "@aws-sdk/middleware-logger": "3.535.0",
- "@aws-sdk/middleware-recursion-detection": "3.535.0",
- "@aws-sdk/middleware-user-agent": "3.540.0",
- "@aws-sdk/region-config-resolver": "3.535.0",
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-endpoints": "3.540.0",
- "@aws-sdk/util-user-agent-browser": "3.535.0",
- "@aws-sdk/util-user-agent-node": "3.535.0",
- "@smithy/config-resolver": "^2.2.0",
- "@smithy/core": "^1.4.0",
- "@smithy/fetch-http-handler": "^2.5.0",
- "@smithy/hash-node": "^2.2.0",
- "@smithy/invalid-dependency": "^2.2.0",
- "@smithy/middleware-content-length": "^2.2.0",
- "@smithy/middleware-endpoint": "^2.5.0",
- "@smithy/middleware-retry": "^2.2.0",
- "@smithy/middleware-serde": "^2.3.0",
- "@smithy/middleware-stack": "^2.2.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/node-http-handler": "^2.5.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/url-parser": "^2.2.0",
- "@smithy/util-base64": "^2.3.0",
- "@smithy/util-body-length-browser": "^2.2.0",
- "@smithy/util-body-length-node": "^2.3.0",
- "@smithy/util-defaults-mode-browser": "^2.2.0",
- "@smithy/util-defaults-mode-node": "^2.3.0",
- "@smithy/util-endpoints": "^1.2.0",
- "@smithy/util-middleware": "^2.2.0",
- "@smithy/util-retry": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.540.0.tgz",
- "integrity": "sha512-LZYK0lBRQK8D8M3Sqc96XiXkAV2v70zhTtF6weyzEpgwxZMfSuFJjs0jFyhaeZBZbZv7BBghIdhJ5TPavNxGMQ==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.540.0",
- "@aws-sdk/core": "3.535.0",
- "@aws-sdk/middleware-host-header": "3.535.0",
- "@aws-sdk/middleware-logger": "3.535.0",
- "@aws-sdk/middleware-recursion-detection": "3.535.0",
- "@aws-sdk/middleware-user-agent": "3.540.0",
- "@aws-sdk/region-config-resolver": "3.535.0",
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-endpoints": "3.540.0",
- "@aws-sdk/util-user-agent-browser": "3.535.0",
- "@aws-sdk/util-user-agent-node": "3.535.0",
- "@smithy/config-resolver": "^2.2.0",
- "@smithy/core": "^1.4.0",
- "@smithy/fetch-http-handler": "^2.5.0",
- "@smithy/hash-node": "^2.2.0",
- "@smithy/invalid-dependency": "^2.2.0",
- "@smithy/middleware-content-length": "^2.2.0",
- "@smithy/middleware-endpoint": "^2.5.0",
- "@smithy/middleware-retry": "^2.2.0",
- "@smithy/middleware-serde": "^2.3.0",
- "@smithy/middleware-stack": "^2.2.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/node-http-handler": "^2.5.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/url-parser": "^2.2.0",
- "@smithy/util-base64": "^2.3.0",
- "@smithy/util-body-length-browser": "^2.2.0",
- "@smithy/util-body-length-node": "^2.3.0",
- "@smithy/util-defaults-mode-browser": "^2.2.0",
- "@smithy/util-defaults-mode-node": "^2.3.0",
- "@smithy/util-endpoints": "^1.2.0",
- "@smithy/util-middleware": "^2.2.0",
- "@smithy/util-retry": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/credential-provider-node": "^3.540.0"
- }
- },
- "node_modules/@aws-sdk/client-sts": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.540.0.tgz",
- "integrity": "sha512-ITHUQxvpqfQX6obfpIi3KYGzZYfe/I5Ixjfxoi5lB7ISCtmxqObKB1fzD93wonkMJytJ7LUO8panZl/ojiJ1uw==",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/core": "3.535.0",
- "@aws-sdk/middleware-host-header": "3.535.0",
- "@aws-sdk/middleware-logger": "3.535.0",
- "@aws-sdk/middleware-recursion-detection": "3.535.0",
- "@aws-sdk/middleware-user-agent": "3.540.0",
- "@aws-sdk/region-config-resolver": "3.535.0",
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-endpoints": "3.540.0",
- "@aws-sdk/util-user-agent-browser": "3.535.0",
- "@aws-sdk/util-user-agent-node": "3.535.0",
- "@smithy/config-resolver": "^2.2.0",
- "@smithy/core": "^1.4.0",
- "@smithy/fetch-http-handler": "^2.5.0",
- "@smithy/hash-node": "^2.2.0",
- "@smithy/invalid-dependency": "^2.2.0",
- "@smithy/middleware-content-length": "^2.2.0",
- "@smithy/middleware-endpoint": "^2.5.0",
- "@smithy/middleware-retry": "^2.2.0",
- "@smithy/middleware-serde": "^2.3.0",
- "@smithy/middleware-stack": "^2.2.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/node-http-handler": "^2.5.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/url-parser": "^2.2.0",
- "@smithy/util-base64": "^2.3.0",
- "@smithy/util-body-length-browser": "^2.2.0",
- "@smithy/util-body-length-node": "^2.3.0",
- "@smithy/util-defaults-mode-browser": "^2.2.0",
- "@smithy/util-defaults-mode-node": "^2.3.0",
- "@smithy/util-endpoints": "^1.2.0",
- "@smithy/util-middleware": "^2.2.0",
- "@smithy/util-retry": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/credential-provider-node": "^3.540.0"
- }
- },
- "node_modules/@aws-sdk/core": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.535.0.tgz",
- "integrity": "sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==",
- "dependencies": {
- "@smithy/core": "^1.4.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/signature-v4": "^2.2.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "fast-xml-parser": "4.2.5",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz",
- "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.535.0.tgz",
- "integrity": "sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/fetch-http-handler": "^2.5.0",
- "@smithy/node-http-handler": "^2.5.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-stream": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.540.0.tgz",
- "integrity": "sha512-igN/RbsnulIBwqXbwsWmR3srqmtbPF1dm+JteGvUY31FW65fTVvWvSr945Y/cf1UbhPmIQXntlsqESqpkhTHwg==",
- "dependencies": {
- "@aws-sdk/client-sts": "3.540.0",
- "@aws-sdk/credential-provider-env": "3.535.0",
- "@aws-sdk/credential-provider-process": "3.535.0",
- "@aws-sdk/credential-provider-sso": "3.540.0",
- "@aws-sdk/credential-provider-web-identity": "3.540.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/credential-provider-imds": "^2.3.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.540.0.tgz",
- "integrity": "sha512-HKQZJbLHlrHX9A0B1poiYNXIIQfy8whTjuosTCYKPDBhhUyVAQfxy/KG726j0v43IhaNPLgTGZCJve4hAsazSw==",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.535.0",
- "@aws-sdk/credential-provider-http": "3.535.0",
- "@aws-sdk/credential-provider-ini": "3.540.0",
- "@aws-sdk/credential-provider-process": "3.535.0",
- "@aws-sdk/credential-provider-sso": "3.540.0",
- "@aws-sdk/credential-provider-web-identity": "3.540.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/credential-provider-imds": "^2.3.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz",
- "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.540.0.tgz",
- "integrity": "sha512-tKkFqK227LF5ajc5EL6asXS32p3nkofpP8G7NRpU7zOEOQCg01KUc4JRX+ItI0T007CiN1J19yNoFqHLT/SqHg==",
- "dependencies": {
- "@aws-sdk/client-sso": "3.540.0",
- "@aws-sdk/token-providers": "3.540.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.540.0.tgz",
- "integrity": "sha512-OpDm9w3A168B44hSjpnvECP4rvnFzD86rN4VYdGADuCvEa5uEcdA/JuT5WclFPDqdWEmFBqS1pxBIJBf0g2Q9Q==",
- "dependencies": {
- "@aws-sdk/client-sts": "3.540.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-bucket-endpoint": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.535.0.tgz",
- "integrity": "sha512-7sijlfQsc4UO9Fsl11mU26Y5f9E7g6UoNg/iJUBpC5pgvvmdBRO5UEhbB/gnqvOEPsBXyhmfzbstebq23Qdz7A==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-arn-parser": "3.535.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-config-provider": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-expect-continue": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.535.0.tgz",
- "integrity": "sha512-hFKyqUBky0NWCVku8iZ9+PACehx0p6vuMw5YnZf8FVgHP0fode0b/NwQY6UY7oor/GftvRsAlRUAWGNFEGUpwA==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.535.0.tgz",
- "integrity": "sha512-rBIzldY9jjRATxICDX7t77aW6ctqmVDgnuAOgbVT5xgHftt4o7PGWKoMvl/45hYqoQgxVFnCBof9bxkqSBebVA==",
- "dependencies": {
- "@aws-crypto/crc32": "3.0.0",
- "@aws-crypto/crc32c": "3.0.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/is-array-buffer": "^2.2.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz",
- "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-location-constraint": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.535.0.tgz",
- "integrity": "sha512-SxfS9wfidUZZ+WnlKRTCRn3h+XTsymXRXPJj8VV6hNRNeOwzNweoG3YhQbTowuuNfXf89m9v6meYkBBtkdacKw==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-logger": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz",
- "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz",
- "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.535.0.tgz",
- "integrity": "sha512-/dLG/E3af6ohxkQ5GBHT8tZfuPIg6eItKxCXuulvYj0Tqgf3Mb+xTsvSkxQsJF06RS4sH7Qsg/PnB8ZfrJrXpg==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-arn-parser": "3.535.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/signature-v4": "^2.2.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-config-provider": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-signing": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.535.0.tgz",
- "integrity": "sha512-Rb4sfus1Gc5paRl9JJgymJGsb/i3gJKK/rTuFZICdd1PBBE5osIOHP5CpzWYBtc5LlyZE1a2QoxPMCyG+QUGPw==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/signature-v4": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-middleware": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-ssec": {
- "version": "3.537.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.537.0.tgz",
- "integrity": "sha512-2QWMrbwd5eBy5KCYn9a15JEWBgrK2qFEKQN2lqb/6z0bhtevIOxIRfC99tzvRuPt6nixFQ+ynKuBjcfT4ZFrdQ==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz",
- "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@aws-sdk/util-endpoints": "3.540.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz",
- "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-config-provider": "^2.3.0",
- "@smithy/util-middleware": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.535.0.tgz",
- "integrity": "sha512-tqCsEsEj8icW0SAh3NvyhRUq54Gz2pu4NM2tOSrFp7SO55heUUaRLSzYteNZCTOupH//AAaZvbN/UUTO/DrOog==",
- "dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.535.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/signature-v4": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/token-providers": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.540.0.tgz",
- "integrity": "sha512-9BvtiVEZe5Ev88Wa4ZIUbtT6BVcPwhxmVInQ6c12MYNb0WNL54BN6wLy/eknAfF05gpX2/NDU2pUDOyMPdm/+g==",
- "dependencies": {
- "@aws-sdk/client-sso-oidc": "3.540.0",
- "@aws-sdk/types": "3.535.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/types": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz",
- "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-arn-parser": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.535.0.tgz",
- "integrity": "sha512-smVo29nUPAOprp8Z5Y3GHuhiOtw6c8/EtLCm5AVMtRsTPw4V414ZXL2H66tzmb5kEeSzQlbfBSBEdIFZoxO9kg==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-endpoints": {
- "version": "3.540.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz",
- "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-endpoints": "^1.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-locate-window": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz",
- "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz",
- "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/types": "^2.12.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz",
- "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==",
- "dependencies": {
- "@aws-sdk/types": "3.535.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
- }
- },
- "node_modules/@aws-sdk/util-utf8-browser": {
- "version": "3.259.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
- "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
- "dependencies": {
- "tslib": "^2.3.1"
- }
- },
- "node_modules/@aws-sdk/xml-builder": {
- "version": "3.535.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.535.0.tgz",
- "integrity": "sha512-VXAq/Jz8KIrU84+HqsOJhIKZqG0PNTdi6n6PFQ4xJf44ZQHD/5C7ouH4qCFX5XgZXcgbRIcMVVYGC6Jye0dRng==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
- "devOptional": true,
- "dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/code-frame/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "devOptional": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "devOptional": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "devOptional": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "devOptional": true
- },
- "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "devOptional": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/code-frame/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "devOptional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "devOptional": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
- "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
- "devOptional": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.7",
- "@babel/parser": "^7.23.6",
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.7",
- "@babel/types": "^7.23.6",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "devOptional": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "devOptional": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.23.6",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
- "browserslist": "^4.22.2",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "devOptional": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "devOptional": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "devOptional": true
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "devOptional": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.23.8",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz",
- "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.7",
- "@babel/types": "^7.23.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "devOptional": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "devOptional": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "devOptional": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "devOptional": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "devOptional": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "devOptional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "devOptional": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
- "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
- "devOptional": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
- "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
- "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.23.8",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz",
- "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
- "devOptional": true,
- "dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/parser": "^7.22.15",
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
- "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
- "devOptional": true,
- "dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@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.6",
- "@babel/types": "^7.23.6",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse/node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "devOptional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
- "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "devOptional": true
- },
- "node_modules/@blocknote/core": {
- "version": "0.12.1",
- "resolved": "https://registry.npmjs.org/@blocknote/core/-/core-0.12.1.tgz",
- "integrity": "sha512-J2cVTshMtCjBZgwOUUXntDZ2vq2Szg0L3U+95iJ10l/Gb0bRtBkW+gXN4mpNTNgAdPOIG9010nGnd8M904+gYw==",
- "dependencies": {
- "@tiptap/core": "^2.0.3",
- "@tiptap/extension-bold": "^2.0.3",
- "@tiptap/extension-code": "^2.0.3",
- "@tiptap/extension-collaboration": "^2.0.3",
- "@tiptap/extension-collaboration-cursor": "^2.0.3",
- "@tiptap/extension-dropcursor": "^2.0.3",
- "@tiptap/extension-gapcursor": "^2.0.3",
- "@tiptap/extension-hard-break": "^2.0.3",
- "@tiptap/extension-history": "^2.0.3",
- "@tiptap/extension-horizontal-rule": "^2.0.3",
- "@tiptap/extension-italic": "^2.0.3",
- "@tiptap/extension-link": "^2.0.3",
- "@tiptap/extension-paragraph": "^2.0.3",
- "@tiptap/extension-strike": "^2.0.3",
- "@tiptap/extension-table-cell": "^2.0.3",
- "@tiptap/extension-table-header": "^2.0.3",
- "@tiptap/extension-table-row": "^2.0.3",
- "@tiptap/extension-text": "^2.0.3",
- "@tiptap/extension-underline": "^2.0.3",
- "@tiptap/pm": "^2.0.3",
- "hast-util-from-dom": "^4.2.0",
- "prosemirror-model": "^1.18.3",
- "prosemirror-state": "^1.4.3",
- "prosemirror-tables": "^1.3.4",
- "prosemirror-transform": "^1.7.2",
- "prosemirror-view": "^1.31.4",
- "rehype-format": "^5.0.0",
- "rehype-parse": "^8.0.4",
- "rehype-remark": "^9.1.2",
- "rehype-stringify": "^9.0.3",
- "remark-gfm": "^3.0.1",
- "remark-parse": "^10.0.1",
- "remark-rehype": "^10.1.0",
- "remark-stringify": "^10.0.2",
- "unified": "^10.1.2",
- "uuid": "^8.3.2",
- "y-prosemirror": "1.2.1",
- "y-protocols": "^1.0.5",
- "yjs": "^13.6.1"
- }
- },
- "node_modules/@blocknote/react": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/@blocknote/react/-/react-0.12.2.tgz",
- "integrity": "sha512-oDIBeXHpj4y6KnAbbvqXXV/vDF0QOjfizqi3mJ+vhVHMCrznDeIAsWx0UG9sCiK/zUcYysxSAyQUADAGFbDdUQ==",
- "dependencies": {
- "@blocknote/core": "^0.12.1",
- "@floating-ui/react": "^0.26.4",
- "@mantine/core": "^7.5.0",
- "@mantine/hooks": "^7.5.0",
- "@mantine/utils": "^6.0.21",
- "@tiptap/core": "^2.0.3",
- "@tiptap/react": "^2.0.3",
- "lodash.merge": "^4.6.2",
- "react": "^18",
- "react-dom": "^18.2.0",
- "react-icons": "^4.3.1",
- "use-prefers-color-scheme": "^1.1.3"
- },
- "peerDependencies": {
- "react": "^18",
- "react-dom": "^18"
- }
- },
- "node_modules/@codemirror/autocomplete": {
- "version": "6.12.0",
- "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.12.0.tgz",
- "integrity": "sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0"
- },
- "peerDependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@codemirror/commands": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz",
- "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.4.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.1.0"
- }
- },
- "node_modules/@codemirror/lang-angular": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-angular/-/lang-angular-0.1.3.tgz",
- "integrity": "sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w==",
- "dependencies": {
- "@codemirror/lang-html": "^6.0.0",
- "@codemirror/lang-javascript": "^6.1.2",
- "@codemirror/language": "^6.0.0",
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.3.3"
- }
- },
- "node_modules/@codemirror/lang-cpp": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz",
- "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@lezer/cpp": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-css": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz",
- "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.0.2",
- "@lezer/css": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-html": {
- "version": "6.4.8",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz",
- "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/lang-css": "^6.0.0",
- "@codemirror/lang-javascript": "^6.0.0",
- "@codemirror/language": "^6.4.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0",
- "@lezer/css": "^1.1.0",
- "@lezer/html": "^1.3.0"
- }
- },
- "node_modules/@codemirror/lang-java": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.1.tgz",
- "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@lezer/java": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-javascript": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz",
- "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.6.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/common": "^1.0.0",
- "@lezer/javascript": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-json": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz",
- "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@lezer/json": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-less": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-less/-/lang-less-6.0.2.tgz",
- "integrity": "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==",
- "dependencies": {
- "@codemirror/lang-css": "^6.2.0",
- "@codemirror/language": "^6.0.0",
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-lezer": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-lezer/-/lang-lezer-6.0.1.tgz",
- "integrity": "sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/lezer": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-liquid": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-liquid/-/lang-liquid-6.2.1.tgz",
- "integrity": "sha512-J1Mratcm6JLNEiX+U2OlCDTysGuwbHD76XwuL5o5bo9soJtSbz2g6RU3vGHFyS5DC8rgVmFSzi7i6oBftm7tnA==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/lang-html": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.3.1"
- }
- },
- "node_modules/@codemirror/lang-markdown": {
- "version": "6.2.4",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.2.4.tgz",
- "integrity": "sha512-UghkA1vSMs8bT7RSZM6vsIocigyah2bV00eRQuZy76401UmFZdsTsbQNBGdyxRQDOLeEvF5iFwap0BM8LKyd+g==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.7.1",
- "@codemirror/lang-html": "^6.0.0",
- "@codemirror/language": "^6.3.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.2.1",
- "@lezer/markdown": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-php": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.1.tgz",
- "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==",
- "dependencies": {
- "@codemirror/lang-html": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/php": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-python": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.4.tgz",
- "integrity": "sha512-b6d1TDqrkCjFNvMO01SWldFiDoZ39yl3tDMC1Y5f8glA2eZpynPxJhwYVTlGFr0stizcJgrp6ojLEGH2myoZAw==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.3.2",
- "@codemirror/language": "^6.8.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.2.1",
- "@lezer/python": "^1.1.4"
- }
- },
- "node_modules/@codemirror/lang-rust": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz",
- "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@lezer/rust": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-sass": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz",
- "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==",
- "dependencies": {
- "@codemirror/lang-css": "^6.2.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.0.2",
- "@lezer/sass": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-sql": {
- "version": "6.5.5",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.5.tgz",
- "integrity": "sha512-DvOaP2RXLb2xlxJxxydTFfwyYw5YDqEFea6aAfgh9UH0kUD6J1KFZ0xPgPpw1eo/5s2w3L6uh5PVR7GM23GxkQ==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-vue": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz",
- "integrity": "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==",
- "dependencies": {
- "@codemirror/lang-html": "^6.0.0",
- "@codemirror/lang-javascript": "^6.1.2",
- "@codemirror/language": "^6.0.0",
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.3.1"
- }
- },
- "node_modules/@codemirror/lang-wast": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz",
- "integrity": "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-xml": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz",
- "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.4.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/xml": "^1.0.0"
- }
- },
- "node_modules/@codemirror/lang-yaml": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.0.0.tgz",
- "integrity": "sha512-fVPapdX1oYr5HMC5bou1MHscGnNCvOHuhUW6C+V2gfIeIRcughvVfznV0OuUyHy0AdXoBCjOehjzFcmLRumu2Q==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@lezer/common": "^1.2.0",
- "@lezer/yaml": "^1.0.0"
- }
- },
- "node_modules/@codemirror/language": {
- "version": "6.10.0",
- "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.0.tgz",
- "integrity": "sha512-2vaNn9aPGCRFKWcHPFksctzJ8yS5p7YoaT+jHpc0UGKzNuAIx4qy6R5wiqbP+heEEdyaABA582mNqSHzSoYdmg==",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.23.0",
- "@lezer/common": "^1.1.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0",
- "style-mod": "^4.0.0"
- }
- },
- "node_modules/@codemirror/language-data": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@codemirror/language-data/-/language-data-6.4.1.tgz",
- "integrity": "sha512-NYhC3NvEMwUxSWS1sB5AePUtr5g2ASSYOZ37YixicDG8PWHslDV9mmXIX0KvmtEm50V8FT4F5i4HAsk/7i78LA==",
- "dependencies": {
- "@codemirror/lang-angular": "^0.1.0",
- "@codemirror/lang-cpp": "^6.0.0",
- "@codemirror/lang-css": "^6.0.0",
- "@codemirror/lang-html": "^6.0.0",
- "@codemirror/lang-java": "^6.0.0",
- "@codemirror/lang-javascript": "^6.0.0",
- "@codemirror/lang-json": "^6.0.0",
- "@codemirror/lang-less": "^6.0.0",
- "@codemirror/lang-liquid": "^6.0.0",
- "@codemirror/lang-markdown": "^6.0.0",
- "@codemirror/lang-php": "^6.0.0",
- "@codemirror/lang-python": "^6.0.0",
- "@codemirror/lang-rust": "^6.0.0",
- "@codemirror/lang-sass": "^6.0.0",
- "@codemirror/lang-sql": "^6.0.0",
- "@codemirror/lang-vue": "^0.1.1",
- "@codemirror/lang-wast": "^6.0.0",
- "@codemirror/lang-xml": "^6.0.0",
- "@codemirror/lang-yaml": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/legacy-modes": "^6.1.0"
- }
- },
- "node_modules/@codemirror/legacy-modes": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.3.3.tgz",
- "integrity": "sha512-X0Z48odJ0KIoh/HY8Ltz75/4tDYc9msQf1E/2trlxFaFFhgjpVHjZ/BCXe1Lk7s4Gd67LL/CeEEHNI+xHOiESg==",
- "dependencies": {
- "@codemirror/language": "^6.0.0"
- }
- },
- "node_modules/@codemirror/lint": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.2.tgz",
- "integrity": "sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "crelt": "^1.0.5"
- }
- },
- "node_modules/@codemirror/search": {
- "version": "6.5.5",
- "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz",
- "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==",
- "dependencies": {
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "crelt": "^1.0.5"
- }
- },
- "node_modules/@codemirror/state": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz",
- "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A=="
- },
- "node_modules/@codemirror/theme-one-dark": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz",
- "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/highlight": "^1.0.0"
- }
- },
- "node_modules/@codemirror/view": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.23.0.tgz",
- "integrity": "sha512-/51px9N4uW8NpuWkyUX+iam5+PM6io2fm+QmRnzwqBy5v/pwGg9T0kILFtYeum8hjuvENtgsGNKluOfqIICmeQ==",
- "dependencies": {
- "@codemirror/state": "^6.4.0",
- "style-mod": "^4.1.0",
- "w3c-keyname": "^2.2.4"
- }
- },
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "devOptional": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "0.3.9"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "devOptional": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "node_modules/@dnd-kit/accessibility": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz",
- "integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8.0"
- }
- },
- "node_modules/@dnd-kit/core": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz",
- "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==",
- "dependencies": {
- "@dnd-kit/accessibility": "^3.1.0",
- "@dnd-kit/utilities": "^3.2.2",
- "tslib": "^2.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@dnd-kit/sortable": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-8.0.0.tgz",
- "integrity": "sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==",
- "dependencies": {
- "@dnd-kit/utilities": "^3.2.2",
- "tslib": "^2.0.0"
- },
- "peerDependencies": {
- "@dnd-kit/core": "^6.1.0",
- "react": ">=16.8.0"
- }
- },
- "node_modules/@dnd-kit/utilities": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz",
- "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8.0"
- }
- },
- "node_modules/@drizzle-team/studio": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@drizzle-team/studio/-/studio-0.0.39.tgz",
- "integrity": "sha512-c5Hkm7MmQC2n5qAsKShjQrHoqlfGslB8+qWzsGGZ+2dHMRTNG60UuzalF0h0rvBax5uzPXuGkYLGaQ+TUX3yMw==",
- "dev": true,
- "dependencies": {
- "superjson": "^2.2.1"
- }
- },
- "node_modules/@esbuild-kit/core-utils": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz",
- "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==",
- "dev": true,
- "dependencies": {
- "esbuild": "~0.18.20",
- "source-map-support": "^0.5.21"
- }
- },
- "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
- "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
- "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.18.20",
- "@esbuild/android-arm64": "0.18.20",
- "@esbuild/android-x64": "0.18.20",
- "@esbuild/darwin-arm64": "0.18.20",
- "@esbuild/darwin-x64": "0.18.20",
- "@esbuild/freebsd-arm64": "0.18.20",
- "@esbuild/freebsd-x64": "0.18.20",
- "@esbuild/linux-arm": "0.18.20",
- "@esbuild/linux-arm64": "0.18.20",
- "@esbuild/linux-ia32": "0.18.20",
- "@esbuild/linux-loong64": "0.18.20",
- "@esbuild/linux-mips64el": "0.18.20",
- "@esbuild/linux-ppc64": "0.18.20",
- "@esbuild/linux-riscv64": "0.18.20",
- "@esbuild/linux-s390x": "0.18.20",
- "@esbuild/linux-x64": "0.18.20",
- "@esbuild/netbsd-x64": "0.18.20",
- "@esbuild/openbsd-x64": "0.18.20",
- "@esbuild/sunos-x64": "0.18.20",
- "@esbuild/win32-arm64": "0.18.20",
- "@esbuild/win32-ia32": "0.18.20",
- "@esbuild/win32-x64": "0.18.20"
- }
- },
- "node_modules/@esbuild-kit/core-utils/node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/@esbuild-kit/esm-loader": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz",
- "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==",
- "dev": true,
- "dependencies": {
- "@esbuild-kit/core-utils": "^3.3.2",
- "get-tsconfig": "^4.7.0"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
- "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
- "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@floating-ui/core": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
- "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
- "dependencies": {
- "@floating-ui/utils": "^0.2.1"
- }
- },
- "node_modules/@floating-ui/dom": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz",
- "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==",
- "dependencies": {
- "@floating-ui/core": "^1.0.0",
- "@floating-ui/utils": "^0.2.0"
- }
- },
- "node_modules/@floating-ui/react": {
- "version": "0.26.9",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.9.tgz",
- "integrity": "sha512-p86wynZJVEkEq2BBjY/8p2g3biQ6TlgT4o/3KgFKyTWoJLU1GZ8wpctwRqtkEl2tseYA+kw7dBAIDFcednfI5w==",
- "dependencies": {
- "@floating-ui/react-dom": "^2.0.8",
- "@floating-ui/utils": "^0.2.1",
- "tabbable": "^6.0.1"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@floating-ui/react-dom": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz",
- "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==",
- "dependencies": {
- "@floating-ui/dom": "^1.6.1"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@floating-ui/utils": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
- "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
- "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw=="
- },
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
- "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "devOptional": true,
- "dependencies": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "devOptional": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "devOptional": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "devOptional": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "devOptional": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "devOptional": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "devOptional": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
- "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/core": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
- "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
- "devOptional": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/reporters": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.7.0",
- "jest-config": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-resolve-dependencies": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/environment": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
- "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
- "devOptional": true,
- "dependencies": {
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-mock": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/expect": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
- "devOptional": true,
- "dependencies": {
- "expect": "^29.7.0",
- "jest-snapshot": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/expect-utils": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
- "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
- "devOptional": true,
- "dependencies": {
- "jest-get-type": "^29.6.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/fake-timers": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
- "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/globals": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
- "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
- "devOptional": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/types": "^29.6.3",
- "jest-mock": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/reporters": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
- "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
- "devOptional": true,
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^6.0.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
- "devOptional": true,
- "dependencies": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/source-map": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
- "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
- "devOptional": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.18",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-result": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
- "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
- "devOptional": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-sequencer": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
- "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
- "devOptional": true,
- "dependencies": {
- "@jest/test-result": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/transform": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
- "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
- "devOptional": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^2.0.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-util": "^29.7.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/types": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
- "devOptional": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.21",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz",
- "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@justmiracle/result": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@justmiracle/result/-/result-1.2.0.tgz",
- "integrity": "sha512-MyyfTSloRNvdB1EnzSDiOeyPtdXeK+gp1d2zxqcjq/XHoagsIzo7ImEJCKIUkOTlmuEInPfYZrcAU7sdeCWqkg=="
- },
- "node_modules/@lezer/common": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz",
- "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ=="
- },
- "node_modules/@lezer/cpp": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.1.2.tgz",
- "integrity": "sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/css": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz",
- "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/highlight": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz",
- "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==",
- "dependencies": {
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@lezer/html": {
- "version": "1.3.9",
- "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz",
- "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/java": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.1.1.tgz",
- "integrity": "sha512-mt3dX13fRlpY7RlWELYRakanXgmwXsLRCrhstrn+c1sZd7jR2xle46/3heoxGd+oHxnuTnpoyXTyxcLJQs9+mQ==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/javascript": {
- "version": "1.4.13",
- "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.13.tgz",
- "integrity": "sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.1.3",
- "@lezer/lr": "^1.3.0"
- }
- },
- "node_modules/@lezer/json": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.2.tgz",
- "integrity": "sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/lezer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@lezer/lezer/-/lezer-1.1.2.tgz",
- "integrity": "sha512-O8yw3CxPhzYHB1hvwbdozjnAslhhR8A5BH7vfEMof0xk3p+/DFDfZkA9Tde6J+88WgtwaHy4Sy6ThZSkaI0Evw==",
- "dependencies": {
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/lr": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz",
- "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==",
- "dependencies": {
- "@lezer/common": "^1.0.0"
- }
- },
- "node_modules/@lezer/markdown": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.2.0.tgz",
- "integrity": "sha512-d7MwsfAukZJo1GpPrcPGa3MxaFFOqNp0gbqF+3F7pTeNDOgeJN1muXzx1XXDPt+Ac+/voCzsH7qXqnn+xReG/g==",
- "dependencies": {
- "@lezer/common": "^1.0.0",
- "@lezer/highlight": "^1.0.0"
- }
- },
- "node_modules/@lezer/php": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.2.tgz",
- "integrity": "sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.1.0"
- }
- },
- "node_modules/@lezer/python": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.12.tgz",
- "integrity": "sha512-jDfUgOIDulv94R89dtYBfmIpCHiKn6RkeeVT7RQmbaKehJEMp30Bj5fHdAsgA2p8Gqjj+mbHVR+jyxUzSUNaOg==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/rust": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.2.tgz",
- "integrity": "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/sass": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@lezer/sass/-/sass-1.0.5.tgz",
- "integrity": "sha512-gG3h/58JSk2SY3OmKO2hyEkxMgC+dLAylRubxBiSjglvDnABsMDxgrmMDlCHugdtH+2JlgtYLoMDZ9H0JE9wAQ==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/xml": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.5.tgz",
- "integrity": "sha512-VFouqOzmUWfIg+tfmpcdV33ewtK+NSwd4ngSe1aG7HFb4BN0ExyY1b8msp+ndFrnlG4V4iC8yXacjFtrwERnaw==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@lezer/yaml": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@lezer/yaml/-/yaml-1.0.2.tgz",
- "integrity": "sha512-XCkwuxe+eumJ28nA9e1S6XKsXz9W7V/AG+WBiWOtiIuUpKcZ/bHuvN8bLxSDREIcybSRpEd/jvphh4vgm6Ed2g==",
- "dependencies": {
- "@lezer/common": "^1.2.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.4.0"
- }
- },
- "node_modules/@libsql/client": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.5.3.tgz",
- "integrity": "sha512-GsOTv/Yikw8I9ZBqpxwfcDM2GDFtyZfJg7MYgWqVnNXtsqCa+tabSuRVKe34UaG2FjcOFJr9buB4vbl55geXXw==",
- "dependencies": {
- "@libsql/core": "^0.5.3",
- "@libsql/hrana-client": "^0.5.6",
- "js-base64": "^3.7.5",
- "libsql": "^0.3.7"
- }
- },
- "node_modules/@libsql/core": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.5.3.tgz",
- "integrity": "sha512-vccnRnLIeru4hacfowXDZZRxYyFWN8Z6CSs+951rH7w9JOMzwmetn5IYsXw5VcOIf0P0aLa86Uhvl1MF8jM6pA==",
- "dependencies": {
- "js-base64": "^3.7.5"
- }
- },
- "node_modules/@libsql/darwin-arm64": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.3.8.tgz",
- "integrity": "sha512-uh9dfDsmx0NfBjJbFm8APPD8E5s18mxmmmuH4IdSTl/xdv9URAeYo8zv9s2SHgM62QbUUcokLDzLgFfOGSsFBA==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@libsql/hrana-client": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.5.6.tgz",
- "integrity": "sha512-mjQoAmejZ1atG+M3YR2ZW+rg6ceBByH/S/h17ZoYZkqbWrvohFhXyz2LFxj++ARMoY9m6w3RJJIRdJdmnEUlFg==",
- "dependencies": {
- "@libsql/isomorphic-fetch": "^0.1.12",
- "@libsql/isomorphic-ws": "^0.1.5",
- "js-base64": "^3.7.5",
- "node-fetch": "^3.3.2"
- }
- },
- "node_modules/@libsql/isomorphic-fetch": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.1.12.tgz",
- "integrity": "sha512-MRo4UcmjAGAa3ac56LoD5OE13m2p0lu0VEtZC2NZMcogM/jc5fU9YtMQ3qbPjFJ+u2BBjFZgMPkQaLS1dlMhpg==",
- "dependencies": {
- "@types/node-fetch": "^2.6.11",
- "node-fetch": "^2.7.0"
- }
- },
- "node_modules/@libsql/isomorphic-fetch/node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/@libsql/isomorphic-ws": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz",
- "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==",
- "dependencies": {
- "@types/ws": "^8.5.4",
- "ws": "^8.13.0"
- }
- },
- "node_modules/@lucia-auth/adapter-sqlite": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@lucia-auth/adapter-sqlite/-/adapter-sqlite-3.0.1.tgz",
- "integrity": "sha512-bzr8+HALrbiYMb/+oL1SAnjbgFqlPs/Kj4lO57t/VvbXzmbpQEKk5Nv6hMpvWSkGAR9LbxYeQAtecikpKZVB0w==",
- "peerDependencies": {
- "@libsql/client": "^0.3.0",
- "better-sqlite3": "8.x - 9.x",
- "lucia": "3.x"
- },
- "peerDependenciesMeta": {
- "@libsql/client": {
- "optional": true
- },
- "better-sqlite3": {
- "optional": true
- }
- }
- },
- "node_modules/@mantine/core": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.6.2.tgz",
- "integrity": "sha512-qmZhmQVc7ZZ8EKKhPkGuZbfBnLXR0xE45ikxfx+1E6/8hLY5Ypr4nWqh5Pk6p3b+K71yYnBqlbNXbtHLQH0h3g==",
- "dependencies": {
- "@floating-ui/react": "^0.26.9",
- "clsx": "2.1.0",
- "react-number-format": "^5.3.1",
- "react-remove-scroll": "^2.5.7",
- "react-textarea-autosize": "8.5.3",
- "type-fest": "^4.12.0"
- },
- "peerDependencies": {
- "@mantine/hooks": "7.6.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- }
- },
- "node_modules/@mantine/core/node_modules/react-remove-scroll": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz",
- "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==",
- "dependencies": {
- "react-remove-scroll-bar": "^2.3.4",
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.1.0",
- "use-callback-ref": "^1.3.0",
- "use-sidecar": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@mantine/core/node_modules/type-fest": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.12.0.tgz",
- "integrity": "sha512-5Y2/pp2wtJk8o08G0CMkuFPCO354FGwk/vbidxrdhRGZfd0tFnb4Qb8anp9XxXriwBgVPjdWbKpGl4J9lJY2jQ==",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@mantine/hooks": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.6.2.tgz",
- "integrity": "sha512-ZrOgrZHoIGCDKrr2/9njDgK0al+jjusYQFlmR0YyEFyRtgY6eNSI4zuYLcAPx1haHmUm5RsLBrqY6Iy/TLdGXA==",
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/@mantine/utils": {
- "version": "6.0.21",
- "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.21.tgz",
- "integrity": "sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==",
- "peerDependencies": {
- "react": ">=16.8.0"
- }
- },
- "node_modules/@neon-rs/load": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz",
- "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="
- },
- "node_modules/@next/env": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz",
- "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ=="
- },
- "node_modules/@next/eslint-plugin-next": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz",
- "integrity": "sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==",
- "dev": true,
- "dependencies": {
- "glob": "7.1.7"
- }
- },
- "node_modules/@next/swc-darwin-arm64": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz",
- "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-darwin-x64": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz",
- "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-arm64-gnu": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz",
- "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-arm64-musl": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz",
- "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-x64-gnu": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz",
- "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-linux-x64-musl": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz",
- "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-win32-arm64-msvc": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz",
- "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-win32-ia32-msvc": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz",
- "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==",
- "cpu": [
- "ia32"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@next/swc-win32-x64-msvc": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz",
- "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==",
- "cpu": [
- "x64"
- ],
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nextjournal/lang-clojure": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@nextjournal/lang-clojure/-/lang-clojure-1.0.0.tgz",
- "integrity": "sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@nextjournal/lezer-clojure": "1.0.0"
- }
- },
- "node_modules/@nextjournal/lezer-clojure": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@nextjournal/lezer-clojure/-/lezer-clojure-1.0.0.tgz",
- "integrity": "sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==",
- "dependencies": {
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@node-rs/argon2": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@node-rs/argon2/-/argon2-1.7.0.tgz",
- "integrity": "sha512-zfULc+/tmcWcxn+nHkbyY8vP3+MpEqKORbszt4UkpqZgBgDAAIYvuDN/zukfTgdmo6tmJKKVfzigZOPk4LlIog==",
- "engines": {
- "node": ">= 10"
- },
- "optionalDependencies": {
- "@node-rs/argon2-android-arm-eabi": "1.7.0",
- "@node-rs/argon2-android-arm64": "1.7.0",
- "@node-rs/argon2-darwin-arm64": "1.7.0",
- "@node-rs/argon2-darwin-x64": "1.7.0",
- "@node-rs/argon2-freebsd-x64": "1.7.0",
- "@node-rs/argon2-linux-arm-gnueabihf": "1.7.0",
- "@node-rs/argon2-linux-arm64-gnu": "1.7.0",
- "@node-rs/argon2-linux-arm64-musl": "1.7.0",
- "@node-rs/argon2-linux-x64-gnu": "1.7.0",
- "@node-rs/argon2-linux-x64-musl": "1.7.0",
- "@node-rs/argon2-wasm32-wasi": "1.7.0",
- "@node-rs/argon2-win32-arm64-msvc": "1.7.0",
- "@node-rs/argon2-win32-ia32-msvc": "1.7.0",
- "@node-rs/argon2-win32-x64-msvc": "1.7.0"
- }
- },
- "node_modules/@node-rs/argon2-darwin-arm64": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@node-rs/argon2-darwin-arm64/-/argon2-darwin-arm64-1.7.0.tgz",
- "integrity": "sha512-ZIz4L6HGOB9U1kW23g+m7anGNuTZ0RuTw0vNp3o+2DWpb8u8rODq6A8tH4JRL79S+Co/Nq608m9uackN2pe0Rw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@node-rs/bcrypt": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@node-rs/bcrypt/-/bcrypt-1.9.0.tgz",
- "integrity": "sha512-u2OlIxW264bFUfvbFqDz9HZKFjwe8FHFtn7T/U8mYjPZ7DWYpbUB+/dkW/QgYfMSfR0ejkyuWaBBe0coW7/7ig==",
- "engines": {
- "node": ">= 10"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
- },
- "optionalDependencies": {
- "@node-rs/bcrypt-android-arm-eabi": "1.9.0",
- "@node-rs/bcrypt-android-arm64": "1.9.0",
- "@node-rs/bcrypt-darwin-arm64": "1.9.0",
- "@node-rs/bcrypt-darwin-x64": "1.9.0",
- "@node-rs/bcrypt-freebsd-x64": "1.9.0",
- "@node-rs/bcrypt-linux-arm-gnueabihf": "1.9.0",
- "@node-rs/bcrypt-linux-arm64-gnu": "1.9.0",
- "@node-rs/bcrypt-linux-arm64-musl": "1.9.0",
- "@node-rs/bcrypt-linux-x64-gnu": "1.9.0",
- "@node-rs/bcrypt-linux-x64-musl": "1.9.0",
- "@node-rs/bcrypt-wasm32-wasi": "1.9.0",
- "@node-rs/bcrypt-win32-arm64-msvc": "1.9.0",
- "@node-rs/bcrypt-win32-ia32-msvc": "1.9.0",
- "@node-rs/bcrypt-win32-x64-msvc": "1.9.0"
- }
- },
- "node_modules/@node-rs/bcrypt-darwin-arm64": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-darwin-arm64/-/bcrypt-darwin-arm64-1.9.0.tgz",
- "integrity": "sha512-CQiS+F9Pa0XozvkXR1g7uXE9QvBOPOplDg0iCCPRYTN9PqA5qYxhwe48G3o+v2UeQceNRrbnEtWuANm7JRqIhw==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
- "node_modules/@radix-ui/number": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz",
- "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- }
- },
- "node_modules/@radix-ui/primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz",
- "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- }
- },
- "node_modules/@radix-ui/react-alert-dialog": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.5.tgz",
- "integrity": "sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-dialog": "1.0.5",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-arrow": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz",
- "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-avatar": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.0.4.tgz",
- "integrity": "sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-checkbox": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.0.4.tgz",
- "integrity": "sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "@radix-ui/react-use-previous": "1.0.1",
- "@radix-ui/react-use-size": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-collection": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz",
- "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-compose-refs": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz",
- "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-context": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz",
- "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-context-menu": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.1.5.tgz",
- "integrity": "sha512-R5XaDj06Xul1KGb+WP8qiOh7tKJNz2durpLBXAGZjSVtctcRFCuEvy2gtMwRJGePwQQE5nV77gs4FwRi8T+r2g==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-menu": "2.0.6",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dialog": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz",
- "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-focus-guards": "1.0.1",
- "@radix-ui/react-focus-scope": "1.0.4",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-portal": "1.0.4",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "aria-hidden": "^1.1.1",
- "react-remove-scroll": "2.5.5"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-direction": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz",
- "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz",
- "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-escape-keydown": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dropdown-menu": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz",
- "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-menu": "2.0.6",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-guards": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz",
- "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-scope": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz",
- "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-hover-card": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.0.7.tgz",
- "integrity": "sha512-OcUN2FU0YpmajD/qkph3XzMcK/NmSk9hGWnjV68p6QiZMgILugusgQwnLSDs3oFSJYGKf3Y49zgFedhGh04k9A==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-popper": "1.1.3",
- "@radix-ui/react-portal": "1.0.4",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-icons": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz",
- "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==",
- "peerDependencies": {
- "react": "^16.x || ^17.x || ^18.x"
- }
- },
- "node_modules/@radix-ui/react-id": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz",
- "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-layout-effect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-label": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz",
- "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-menu": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz",
- "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-focus-guards": "1.0.1",
- "@radix-ui/react-focus-scope": "1.0.4",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-popper": "1.1.3",
- "@radix-ui/react-portal": "1.0.4",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-roving-focus": "1.0.4",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "aria-hidden": "^1.1.1",
- "react-remove-scroll": "2.5.5"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-menubar": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.0.4.tgz",
- "integrity": "sha512-bHgUo9gayKZfaQcWSSLr++LyS0rgh+MvD89DE4fJ6TkGHvjHgPaBZf44hdka7ogOxIOdj9163J+5xL2Dn4qzzg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-menu": "2.0.6",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-roving-focus": "1.0.4",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-navigation-menu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.1.4.tgz",
- "integrity": "sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1",
- "@radix-ui/react-use-previous": "1.0.1",
- "@radix-ui/react-visually-hidden": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popover": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz",
- "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-focus-guards": "1.0.1",
- "@radix-ui/react-focus-scope": "1.0.4",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-popper": "1.1.3",
- "@radix-ui/react-portal": "1.0.4",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "aria-hidden": "^1.1.1",
- "react-remove-scroll": "2.5.5"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popper": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz",
- "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@floating-ui/react-dom": "^2.0.0",
- "@radix-ui/react-arrow": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1",
- "@radix-ui/react-use-rect": "1.0.1",
- "@radix-ui/react-use-size": "1.0.1",
- "@radix-ui/rect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-portal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz",
- "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-presence": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz",
- "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-primitive": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz",
- "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-slot": "1.0.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-radio-group": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz",
- "integrity": "sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-roving-focus": "1.0.4",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "@radix-ui/react-use-previous": "1.0.1",
- "@radix-ui/react-use-size": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-roving-focus": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz",
- "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-scroll-area": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.5.tgz",
- "integrity": "sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/number": "1.0.1",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz",
- "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/number": "1.0.1",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-collection": "1.0.3",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-focus-guards": "1.0.1",
- "@radix-ui/react-focus-scope": "1.0.4",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-popper": "1.1.3",
- "@radix-ui/react-portal": "1.0.4",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-use-callback-ref": "1.0.1",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "@radix-ui/react-use-layout-effect": "1.0.1",
- "@radix-ui/react-use-previous": "1.0.1",
- "@radix-ui/react-visually-hidden": "1.0.3",
- "aria-hidden": "^1.1.1",
- "react-remove-scroll": "2.5.5"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-separator": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz",
- "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-slot": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz",
- "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toggle": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz",
- "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toggle-group": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz",
- "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-direction": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-roving-focus": "1.0.4",
- "@radix-ui/react-toggle": "1.0.3",
- "@radix-ui/react-use-controllable-state": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-tooltip": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz",
- "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.1",
- "@radix-ui/react-compose-refs": "1.0.1",
- "@radix-ui/react-context": "1.0.1",
- "@radix-ui/react-dismissable-layer": "1.0.5",
- "@radix-ui/react-id": "1.0.1",
- "@radix-ui/react-popper": "1.1.3",
- "@radix-ui/react-portal": "1.0.4",
- "@radix-ui/react-presence": "1.0.1",
- "@radix-ui/react-primitive": "1.0.3",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-use-controllable-state": "1.0.1",
- "@radix-ui/react-visually-hidden": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-callback-ref": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz",
- "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-controllable-state": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz",
- "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-callback-ref": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-escape-keydown": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz",
- "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-callback-ref": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-layout-effect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz",
- "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-previous": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz",
- "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-rect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz",
- "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/rect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-size": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz",
- "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-layout-effect": "1.0.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz",
- "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/rect": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz",
- "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- }
- },
- "node_modules/@remirror/core-constants": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz",
- "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ=="
- },
- "node_modules/@replit/codemirror-lang-csharp": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-csharp/-/codemirror-lang-csharp-6.2.0.tgz",
- "integrity": "sha512-6utbaWkoymhoAXj051mkRp+VIJlpwUgCX9Toevz3YatiZsz512fw3OVCedXQx+WcR0wb6zVHjChnuxqfCLtFVQ==",
- "peerDependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@replit/codemirror-lang-nix": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-nix/-/codemirror-lang-nix-6.0.1.tgz",
- "integrity": "sha512-lvzjoYn9nfJzBD5qdm3Ut6G3+Or2wEacYIDJ49h9+19WSChVnxv4ojf+rNmQ78ncuxIt/bfbMvDLMeMP0xze6g==",
- "peerDependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@replit/codemirror-lang-solidity": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-solidity/-/codemirror-lang-solidity-6.0.2.tgz",
- "integrity": "sha512-/dpTVH338KFV6SaDYYSadkB4bI/0B0QRF/bkt1XS3t3QtyR49mn6+2k0OUQhvt2ZSO7kt10J+OPilRAtgbmX0w==",
- "dependencies": {
- "@lezer/highlight": "^1.2.0"
- },
- "peerDependencies": {
- "@codemirror/language": "^6.0.0"
- }
- },
- "node_modules/@replit/codemirror-lang-svelte": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz",
- "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==",
- "peerDependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/lang-css": "^6.0.1",
- "@codemirror/lang-html": "^6.2.0",
- "@codemirror/lang-javascript": "^6.1.1",
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/common": "^1.0.0",
- "@lezer/highlight": "^1.0.0",
- "@lezer/javascript": "^1.2.0",
- "@lezer/lr": "^1.0.0"
- }
- },
- "node_modules/@rushstack/eslint-patch": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz",
- "integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==",
- "dev": true
- },
- "node_modules/@silevis/reactgrid": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/@silevis/reactgrid/-/reactgrid-4.1.3.tgz",
- "integrity": "sha512-SjiRE3WLr3kJYTiL1wwWqdl6c9+8jsoUm7f/122tlR3P0XWXdex2Q5yYkOH6B7mkoOiK2iGMW1IDP2BALNuVeA==",
- "dependencies": {
- "sass": "^1.62.1",
- "tslib": "^2.5.2"
- },
- "peerDependencies": {
- "react": "^16.13.1 || ^17.0.0 || ^18.2.0",
- "react-dom": "^16.13.1 || ^17.0.0 || ^18.2.0"
- }
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "devOptional": true
- },
- "node_modules/@sinonjs/commons": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
- "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
- "devOptional": true,
- "dependencies": {
- "type-detect": "4.0.8"
- }
- },
- "node_modules/@sinonjs/fake-timers": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
- "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
- "devOptional": true,
- "dependencies": {
- "@sinonjs/commons": "^3.0.0"
- }
- },
- "node_modules/@smithy/abort-controller": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz",
- "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/chunked-blob-reader": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.2.0.tgz",
- "integrity": "sha512-3GJNvRwXBGdkDZZOGiziVYzDpn4j6zfyULHMDKAGIUo72yHALpE9CbhfQp/XcLNVoc1byfMpn6uW5H2BqPjgaQ==",
- "dependencies": {
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/chunked-blob-reader-native": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.2.0.tgz",
- "integrity": "sha512-VNB5+1oCgX3Fzs072yuRsUoC2N4Zg/LJ11DTxX3+Qu+Paa6AmbIF0E9sc2wthz9Psrk/zcOlTCyuposlIhPjZQ==",
- "dependencies": {
- "@smithy/util-base64": "^2.3.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/config-resolver": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz",
- "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==",
- "dependencies": {
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-config-provider": "^2.3.0",
- "@smithy/util-middleware": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/core": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.0.tgz",
- "integrity": "sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==",
- "dependencies": {
- "@smithy/middleware-endpoint": "^2.5.0",
- "@smithy/middleware-retry": "^2.2.0",
- "@smithy/middleware-serde": "^2.3.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-middleware": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/credential-provider-imds": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz",
- "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==",
- "dependencies": {
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "@smithy/url-parser": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/eventstream-codec": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz",
- "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==",
- "dependencies": {
- "@aws-crypto/crc32": "3.0.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-hex-encoding": "^2.2.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/eventstream-serde-browser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.2.0.tgz",
- "integrity": "sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==",
- "dependencies": {
- "@smithy/eventstream-serde-universal": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/eventstream-serde-config-resolver": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.2.0.tgz",
- "integrity": "sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/eventstream-serde-node": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.2.0.tgz",
- "integrity": "sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==",
- "dependencies": {
- "@smithy/eventstream-serde-universal": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/eventstream-serde-universal": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.2.0.tgz",
- "integrity": "sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==",
- "dependencies": {
- "@smithy/eventstream-codec": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/fetch-http-handler": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz",
- "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==",
- "dependencies": {
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/querystring-builder": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-base64": "^2.3.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/hash-blob-browser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.2.0.tgz",
- "integrity": "sha512-SGPoVH8mdXBqrkVCJ1Hd1X7vh1zDXojNN1yZyZTZsCno99hVue9+IYzWDjq/EQDDXxmITB0gBmuyPh8oAZSTcg==",
- "dependencies": {
- "@smithy/chunked-blob-reader": "^2.2.0",
- "@smithy/chunked-blob-reader-native": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/hash-node": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz",
- "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "@smithy/util-buffer-from": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/hash-stream-node": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.2.0.tgz",
- "integrity": "sha512-aT+HCATOSRMGpPI7bi7NSsTNVZE/La9IaxLXWoVAYMxHT5hGO3ZOGEMZQg8A6nNL+pdFGtZQtND1eoY084HgHQ==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/invalid-dependency": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz",
- "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/md5-js": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.2.0.tgz",
- "integrity": "sha512-M26XTtt9IIusVMOWEAhIvFIr9jYj4ISPPGJROqw6vXngO3IYJCnVVSMFn4Tx1rUTG5BiKJNg9u2nxmBiZC5IlQ==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/middleware-content-length": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz",
- "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==",
- "dependencies": {
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/middleware-endpoint": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.0.tgz",
- "integrity": "sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==",
- "dependencies": {
- "@smithy/middleware-serde": "^2.3.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "@smithy/url-parser": "^2.2.0",
- "@smithy/util-middleware": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/middleware-retry": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.2.0.tgz",
- "integrity": "sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==",
- "dependencies": {
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/service-error-classification": "^2.1.5",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-middleware": "^2.2.0",
- "@smithy/util-retry": "^2.2.0",
- "tslib": "^2.6.2",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/middleware-serde": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz",
- "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/middleware-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz",
- "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/node-config-provider": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz",
- "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==",
- "dependencies": {
- "@smithy/property-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.4.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/node-http-handler": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz",
- "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==",
- "dependencies": {
- "@smithy/abort-controller": "^2.2.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/querystring-builder": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/property-provider": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz",
- "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/protocol-http": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz",
- "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/querystring-builder": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz",
- "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "@smithy/util-uri-escape": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/querystring-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz",
- "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/service-error-classification": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz",
- "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==",
- "dependencies": {
- "@smithy/types": "^2.12.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/shared-ini-file-loader": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz",
- "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/signature-v4": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.2.0.tgz",
- "integrity": "sha512-+B5TNzj/fRZzVW3z8UUJOkNx15+4E0CLuvJmJUA1JUIZFp3rdJ/M2H5r2SqltaVPXL0oIxv/6YK92T9TsFGbFg==",
- "dependencies": {
- "@smithy/eventstream-codec": "^2.2.0",
- "@smithy/is-array-buffer": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-hex-encoding": "^2.2.0",
- "@smithy/util-middleware": "^2.2.0",
- "@smithy/util-uri-escape": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/smithy-client": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.0.tgz",
- "integrity": "sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==",
- "dependencies": {
- "@smithy/middleware-endpoint": "^2.5.0",
- "@smithy/middleware-stack": "^2.2.0",
- "@smithy/protocol-http": "^3.3.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-stream": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/types": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz",
- "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/url-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz",
- "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==",
- "dependencies": {
- "@smithy/querystring-parser": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/util-base64": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz",
- "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-body-length-browser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz",
- "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==",
- "dependencies": {
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@smithy/util-body-length-node": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz",
- "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-config-provider": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz",
- "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-defaults-mode-browser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.0.tgz",
- "integrity": "sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==",
- "dependencies": {
- "@smithy/property-provider": "^2.2.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "bowser": "^2.11.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@smithy/util-defaults-mode-node": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.0.tgz",
- "integrity": "sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==",
- "dependencies": {
- "@smithy/config-resolver": "^2.2.0",
- "@smithy/credential-provider-imds": "^2.3.0",
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/property-provider": "^2.2.0",
- "@smithy/smithy-client": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@smithy/util-endpoints": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz",
- "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==",
- "dependencies": {
- "@smithy/node-config-provider": "^2.3.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@smithy/util-hex-encoding": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz",
- "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-middleware": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz",
- "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==",
- "dependencies": {
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-retry": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz",
- "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==",
- "dependencies": {
- "@smithy/service-error-classification": "^2.1.5",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@smithy/util-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz",
- "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==",
- "dependencies": {
- "@smithy/fetch-http-handler": "^2.5.0",
- "@smithy/node-http-handler": "^2.5.0",
- "@smithy/types": "^2.12.0",
- "@smithy/util-base64": "^2.3.0",
- "@smithy/util-buffer-from": "^2.2.0",
- "@smithy/util-hex-encoding": "^2.2.0",
- "@smithy/util-utf8": "^2.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-uri-escape": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz",
- "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
- "dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/util-waiter": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.2.0.tgz",
- "integrity": "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==",
- "dependencies": {
- "@smithy/abort-controller": "^2.2.0",
- "@smithy/types": "^2.12.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@swc/helpers": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
- "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@t3-oss/env-core": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/@t3-oss/env-core/-/env-core-0.9.2.tgz",
- "integrity": "sha512-KgWXljUTHgO3o7GMZQPAD5+P+HqpauMNNHowlm7V2b9IeMitSUpNKwG6xQrup/xARWHTdxRVIl0mSI4wCevQhQ==",
- "peerDependencies": {
- "typescript": ">=5.0.0",
- "zod": "^3.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@t3-oss/env-nextjs": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/@t3-oss/env-nextjs/-/env-nextjs-0.9.2.tgz",
- "integrity": "sha512-dklHrgKLESStNVB67Jdbu6osxDYA+xNKaPBRerlnkEvzbCccSKMvZENx6EZebJuR4snqB3/yRykNMn/bdIAyiQ==",
- "dependencies": {
- "@t3-oss/env-core": "0.9.2"
- },
- "peerDependencies": {
- "typescript": ">=5.0.0",
- "zod": "^3.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@testing-library/dom": {
- "version": "9.3.4",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz",
- "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.10.4",
- "@babel/runtime": "^7.12.5",
- "@types/aria-query": "^5.0.1",
- "aria-query": "5.1.3",
- "chalk": "^4.1.0",
- "dom-accessibility-api": "^0.5.9",
- "lz-string": "^1.5.0",
- "pretty-format": "^27.0.2"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@testing-library/dom/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@testing-library/dom/node_modules/aria-query": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
- "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
- "dev": true,
- "dependencies": {
- "deep-equal": "^2.0.5"
- }
- },
- "node_modules/@testing-library/dom/node_modules/dom-accessibility-api": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
- "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
- "dev": true
- },
- "node_modules/@testing-library/dom/node_modules/pretty-format": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1",
- "ansi-styles": "^5.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/@testing-library/dom/node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "node_modules/@testing-library/jest-dom": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.2.1.tgz",
- "integrity": "sha512-Nuy/uFFDe9h/2jwoUuMKgoxvgkUv4S9jI9bARj6dGUKJ3euRhg8JFi5sciYbrayoxkadEOZednRT9+vo6LvvxQ==",
- "dev": true,
- "dependencies": {
- "@adobe/css-tools": "^4.3.2",
- "@babel/runtime": "^7.9.2",
- "aria-query": "^5.0.0",
- "chalk": "^3.0.0",
- "css.escape": "^1.5.1",
- "dom-accessibility-api": "^0.6.3",
- "lodash": "^4.17.15",
- "redent": "^3.0.0"
- },
- "engines": {
- "node": ">=14",
- "npm": ">=6",
- "yarn": ">=1"
- },
- "peerDependencies": {
- "@jest/globals": ">= 28",
- "@types/bun": "latest",
- "@types/jest": ">= 28",
- "jest": ">= 28",
- "vitest": ">= 0.32"
- },
- "peerDependenciesMeta": {
- "@jest/globals": {
- "optional": true
- },
- "@types/bun": {
- "optional": true
- },
- "@types/jest": {
- "optional": true
- },
- "jest": {
- "optional": true
- },
- "vitest": {
- "optional": true
- }
- }
- },
- "node_modules/@testing-library/jest-dom/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@testing-library/react": {
- "version": "14.1.2",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz",
- "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.12.5",
- "@testing-library/dom": "^9.0.0",
- "@types/react-dom": "^18.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
- "node_modules/@tiptap/core": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz",
- "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-bold": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz",
- "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-bubble-menu": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz",
- "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==",
- "dependencies": {
- "tippy.js": "^6.3.7"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-code": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.4.tgz",
- "integrity": "sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-collaboration": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration/-/extension-collaboration-2.2.4.tgz",
- "integrity": "sha512-Q9DnGeTYhB8TDud9B2zbRZqbNdBi0C/zzTYora2bFRRXnUzQUJgvV7HeIcHajj2wdKe8HXGwXjrCzORUtwUFgA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0",
- "y-prosemirror": "^1.2.1"
- }
- },
- "node_modules/@tiptap/extension-collaboration-cursor": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-collaboration-cursor/-/extension-collaboration-cursor-2.2.4.tgz",
- "integrity": "sha512-G0j08yGwFaq3AiaNHR+CUVCqLQv0fZhmwy9V1ByE7YkIgiDs9icCuKo1cbY2riW/Sn874rIHEctMxA8hVsNttw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "y-prosemirror": "^1.2.1"
- }
- },
- "node_modules/@tiptap/extension-dropcursor": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz",
- "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-floating-menu": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz",
- "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==",
- "dependencies": {
- "tippy.js": "^6.3.7"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-gapcursor": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz",
- "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-hard-break": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.4.tgz",
- "integrity": "sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-history": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz",
- "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-horizontal-rule": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.4.tgz",
- "integrity": "sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-italic": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz",
- "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-link": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz",
- "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==",
- "dependencies": {
- "linkifyjs": "^4.1.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-paragraph": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz",
- "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-strike": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz",
- "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-table-cell": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.2.4.tgz",
- "integrity": "sha512-Dt3FjNjM1Mh2BgEjvx5+s96DiJpC82BdMtqicO3z/Pk0X1bn70ocMuURNR7upfRYI+9YbE3+3wBk/vY1yf7ydw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-table-header": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.2.4.tgz",
- "integrity": "sha512-epRrB/468yGvKb/n6lW3VXWUpjMp3+mKxGWfsXLQncGb1leRbqkgQgsUUYuIEosk+70bjzz6lbfHKQBz408s3g==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-table-row": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.2.4.tgz",
- "integrity": "sha512-VItZ0byY5CVMrcSRrdBjhElHxIq1JQAAli+o3UNYM5rLKHKx4ezeBCUh80wIKvmaAxWsLMs8h/t4crxUE8dyHA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-text": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz",
- "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/extension-underline": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.2.4.tgz",
- "integrity": "sha512-jCHgIJMwtXlGHVy/j3L8/QvglHCikkHJw7YS5yf8E/8HlPh1tZfVy/IxdgacDOpUN30X+UPJZQDdVKymafgwdA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0"
- }
- },
- "node_modules/@tiptap/pm": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz",
- "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==",
- "dependencies": {
- "prosemirror-changeset": "^2.2.1",
- "prosemirror-collab": "^1.3.1",
- "prosemirror-commands": "^1.5.2",
- "prosemirror-dropcursor": "^1.8.1",
- "prosemirror-gapcursor": "^1.3.2",
- "prosemirror-history": "^1.3.2",
- "prosemirror-inputrules": "^1.3.0",
- "prosemirror-keymap": "^1.2.2",
- "prosemirror-markdown": "^1.12.0",
- "prosemirror-menu": "^1.2.4",
- "prosemirror-model": "^1.19.4",
- "prosemirror-schema-basic": "^1.2.2",
- "prosemirror-schema-list": "^1.3.0",
- "prosemirror-state": "^1.4.3",
- "prosemirror-tables": "^1.3.5",
- "prosemirror-trailing-node": "^2.0.7",
- "prosemirror-transform": "^1.8.0",
- "prosemirror-view": "^1.32.7"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- }
- },
- "node_modules/@tiptap/react": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-2.2.4.tgz",
- "integrity": "sha512-HkYmMZWcETPZn3KpzdDg/ns2TKeFh54TvtCEInA4ljYtWGLoZc/A+KaiEtMIgVs+Mo1XwrhuoNGjL9c0OK2HJw==",
- "dependencies": {
- "@tiptap/extension-bubble-menu": "^2.2.4",
- "@tiptap/extension-floating-menu": "^2.2.4"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.0.0",
- "@tiptap/pm": "^2.0.0",
- "react": "^17.0.0 || ^18.0.0",
- "react-dom": "^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
- "devOptional": true
- },
- "node_modules/@tsconfig/node12": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "devOptional": true
- },
- "node_modules/@tsconfig/node14": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "devOptional": true
- },
- "node_modules/@tsconfig/node16": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
- "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "devOptional": true
- },
- "node_modules/@types/aria-query": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
- "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
- "dev": true
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "devOptional": true,
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.6.8",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
- "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "devOptional": true,
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
- "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="
- },
- "node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "dependencies": {
- "@types/ms": "*"
- }
- },
- "node_modules/@types/deep-equal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@types/deep-equal/-/deep-equal-1.0.4.tgz",
- "integrity": "sha512-tqdiS4otQP4KmY0PR3u6KbZ5EWvhNdUoS/jc93UuK23C220lOZ/9TvjfxdPcKvqwwDVtmtSCrnr0p/2dirAxkA==",
- "dev": true
- },
- "node_modules/@types/extend": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.4.tgz",
- "integrity": "sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA=="
- },
- "node_modules/@types/graceful-fs": {
- "version": "4.1.9",
- "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
- "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
- "devOptional": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/hast": {
- "version": "2.3.10",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
- "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
- "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
- "devOptional": true
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
- "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
- "devOptional": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
- "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
- "devOptional": true,
- "dependencies": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest": {
- "version": "29.5.11",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz",
- "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==",
- "dev": true,
- "dependencies": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
- }
- },
- "node_modules/@types/jsdom": {
- "version": "20.0.1",
- "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz",
- "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "@types/tough-cookie": "*",
- "parse5": "^7.0.0"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
- },
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true
- },
- "node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
- },
- "node_modules/@types/node": {
- "version": "20.11.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.1.tgz",
- "integrity": "sha512-DsXojJUES2M+FE8CpptJTKpg+r54moV9ZEncPstni1WHFmTcCzeFLnMFfyhCVS8XNOy/OQG+8lVxRLRrVHmV5A==",
- "dependencies": {
- "undici-types": "~5.26.4"
- }
- },
- "node_modules/@types/node-fetch": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz",
- "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==",
- "dependencies": {
- "@types/node": "*",
- "form-data": "^4.0.0"
- }
- },
- "node_modules/@types/parse5": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
- "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.11",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
- "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==",
- "devOptional": true
- },
- "node_modules/@types/react": {
- "version": "18.2.48",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.48.tgz",
- "integrity": "sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==",
- "devOptional": true,
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.2.18",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
- "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
- "devOptional": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.8",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
- "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
- "devOptional": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.6",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
- "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A=="
- },
- "node_modules/@types/stack-utils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
- "devOptional": true
- },
- "node_modules/@types/tough-cookie": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
- "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
- "dev": true
- },
- "node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA=="
- },
- "node_modules/@types/ws": {
- "version": "8.5.10",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
- "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/yargs": {
- "version": "17.0.32",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
- "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
- "devOptional": true,
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@types/yargs-parser": {
- "version": "21.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
- "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
- "devOptional": true
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
- "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
- "devOptional": true,
- "dependencies": {
- "@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/type-utils": "6.21.0",
- "@typescript-eslint/utils": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
- "debug": "^4.3.4",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.4",
- "natural-compare": "^1.4.0",
- "semver": "^7.5.4",
- "ts-api-utils": "^1.0.1"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
- "eslint": "^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
- "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
- "devOptional": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@types/json-schema": "^7.0.12",
- "@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
- "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
- "devOptional": true,
- "dependencies": {
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
- "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
- "devOptional": true,
- "dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
- "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
- "devOptional": true,
- "dependencies": {
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/utils": "6.21.0",
- "debug": "^4.3.4",
- "ts-api-utils": "^1.0.1"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
- "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
- "devOptional": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@types/json-schema": "^7.0.12",
- "@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
- "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
- "devOptional": true,
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
- "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
- "devOptional": true,
- "dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "9.0.3",
- "semver": "^7.5.4",
- "ts-api-utils": "^1.0.1"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "devOptional": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "devOptional": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
- "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
- "devOptional": true,
- "dependencies": {
- "@typescript-eslint/types": "6.21.0",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@uiw/codemirror-extensions-basic-setup": {
- "version": "4.21.21",
- "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.21.tgz",
- "integrity": "sha512-+0i9dPrRSa8Mf0CvyrMvnAhajnqwsP3IMRRlaHDRgsSGL8igc4z7MhvUPn+7cWFAAqWzQRhMdMSWzo6/TEa3EA==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/commands": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/search": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0"
- },
- "funding": {
- "url": "https://jaywcjlove.github.io/#/sponsor"
- },
- "peerDependencies": {
- "@codemirror/autocomplete": ">=6.0.0",
- "@codemirror/commands": ">=6.0.0",
- "@codemirror/language": ">=6.0.0",
- "@codemirror/lint": ">=6.0.0",
- "@codemirror/search": ">=6.0.0",
- "@codemirror/state": ">=6.0.0",
- "@codemirror/view": ">=6.0.0"
- }
- },
- "node_modules/@uiw/codemirror-extensions-langs": {
- "version": "4.21.24",
- "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-langs/-/codemirror-extensions-langs-4.21.24.tgz",
- "integrity": "sha512-NZkmlwRK4r5npNprRVKwiKauKauylbtAWyQU6DHNIJXg/6tJDSgqDtmbwWzQiao0egwADMKqwj3pHA+IRUxTgw==",
- "dependencies": {
- "@codemirror/lang-angular": "^0.1.0",
- "@codemirror/lang-cpp": "^6.0.0",
- "@codemirror/lang-css": "^6.2.0",
- "@codemirror/lang-html": "^6.4.0",
- "@codemirror/lang-java": "^6.0.0",
- "@codemirror/lang-javascript": "^6.1.0",
- "@codemirror/lang-json": "^6.0.0",
- "@codemirror/lang-less": "^6.0.1",
- "@codemirror/lang-lezer": "^6.0.0",
- "@codemirror/lang-liquid": "^6.0.1",
- "@codemirror/lang-markdown": "^6.1.0",
- "@codemirror/lang-php": "^6.0.0",
- "@codemirror/lang-python": "^6.1.0",
- "@codemirror/lang-rust": "^6.0.0",
- "@codemirror/lang-sass": "^6.0.1",
- "@codemirror/lang-sql": "^6.4.0",
- "@codemirror/lang-vue": "^0.1.1",
- "@codemirror/lang-wast": "^6.0.0",
- "@codemirror/lang-xml": "^6.0.0",
- "@codemirror/language-data": ">=6.0.0",
- "@codemirror/legacy-modes": ">=6.0.0",
- "@nextjournal/lang-clojure": "^1.0.0",
- "@replit/codemirror-lang-csharp": "^6.1.0",
- "@replit/codemirror-lang-nix": "^6.0.1",
- "@replit/codemirror-lang-solidity": "^6.0.1",
- "@replit/codemirror-lang-svelte": "^6.0.0",
- "codemirror-lang-mermaid": "^0.5.0"
- },
- "funding": {
- "url": "https://jaywcjlove.github.io/#/sponsor"
- },
- "peerDependencies": {
- "@codemirror/language-data": ">=6.0.0",
- "@codemirror/legacy-modes": ">=6.0.0"
- }
- },
- "node_modules/@uiw/codemirror-themes": {
- "version": "4.21.21",
- "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.21.tgz",
- "integrity": "sha512-ljVcMGdaxo75UaH+EqxJ+jLyMVVgeSfW2AKyT1VeLy+4SDpuqNQ7wq5XVxktsG6LH+OvgSFndWXgPANf4+gQcA==",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0"
- },
- "funding": {
- "url": "https://jaywcjlove.github.io/#/sponsor"
- },
- "peerDependencies": {
- "@codemirror/language": ">=6.0.0",
- "@codemirror/state": ">=6.0.0",
- "@codemirror/view": ">=6.0.0"
- }
- },
- "node_modules/@uiw/react-codemirror": {
- "version": "4.21.21",
- "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.21.tgz",
- "integrity": "sha512-PaxBMarufMWoR0qc5zuvBSt76rJ9POm9qoOaJbqRmnNL2viaF+d+Paf2blPSlm1JSnqn7hlRjio+40nZJ9TKzw==",
- "dependencies": {
- "@babel/runtime": "^7.18.6",
- "@codemirror/commands": "^6.1.0",
- "@codemirror/state": "^6.1.1",
- "@codemirror/theme-one-dark": "^6.0.0",
- "@uiw/codemirror-extensions-basic-setup": "4.21.21",
- "codemirror": "^6.0.0"
- },
- "funding": {
- "url": "https://jaywcjlove.github.io/#/sponsor"
- },
- "peerDependencies": {
- "@babel/runtime": ">=7.11.0",
- "@codemirror/state": ">=6.0.0",
- "@codemirror/theme-one-dark": ">=6.0.0",
- "@codemirror/view": ">=6.0.0",
- "codemirror": ">=6.0.0",
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
- },
- "node_modules/abab": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
- "deprecated": "Use your platform's native atob() and btoa() methods instead",
- "dev": true
- },
- "node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz",
- "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.1.0",
- "acorn-walk": "^8.0.2"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
- "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
- "devOptional": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "devOptional": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/arctic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/arctic/-/arctic-1.2.1.tgz",
- "integrity": "sha512-Pahp2ZhXH7fqrsQKRkvcsVBTFXkpUzfxSuJcyHR5Zz83a2S8yNX3w3w5rbozezO3i0w5q1zgR27VMoiuR/hB/Q==",
- "dependencies": {
- "oslo": "1.0.1"
- }
- },
- "node_modules/arctic/node_modules/@node-rs/argon2": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@node-rs/argon2/-/argon2-1.7.2.tgz",
- "integrity": "sha512-+H6pc3M1vIX9YnG59YW7prHhhpv19P8YyxlXHnnFzTimf2q+kKDF7mGWbhvN9STqIY+P70Patn0Q6qb6Ib5/4g==",
- "engines": {
- "node": ">= 10"
- },
- "optionalDependencies": {
- "@node-rs/argon2-android-arm-eabi": "1.7.2",
- "@node-rs/argon2-android-arm64": "1.7.2",
- "@node-rs/argon2-darwin-arm64": "1.7.2",
- "@node-rs/argon2-darwin-x64": "1.7.2",
- "@node-rs/argon2-freebsd-x64": "1.7.2",
- "@node-rs/argon2-linux-arm-gnueabihf": "1.7.2",
- "@node-rs/argon2-linux-arm64-gnu": "1.7.2",
- "@node-rs/argon2-linux-arm64-musl": "1.7.2",
- "@node-rs/argon2-linux-x64-gnu": "1.7.2",
- "@node-rs/argon2-linux-x64-musl": "1.7.2",
- "@node-rs/argon2-wasm32-wasi": "1.7.2",
- "@node-rs/argon2-win32-arm64-msvc": "1.7.2",
- "@node-rs/argon2-win32-ia32-msvc": "1.7.2",
- "@node-rs/argon2-win32-x64-msvc": "1.7.2"
- }
- },
- "node_modules/arctic/node_modules/@node-rs/argon2-darwin-arm64": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@node-rs/argon2-darwin-arm64/-/argon2-darwin-arm64-1.7.2.tgz",
- "integrity": "sha512-hUOhtgYHTEyzX5sgMZVdXunONOus2HWpWydF5D/RYJ1mZ76FXRnFpQE40DqbzisdPIraKdn40m7JqkPP7wqdyg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/arctic/node_modules/@node-rs/bcrypt": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@node-rs/bcrypt/-/bcrypt-1.9.2.tgz",
- "integrity": "sha512-FKUo9iCSIti+ldwoOlY1ztyIFhZxEgT7jZ/UCt/9bg1rLmNdbQQD2JKIMImDCqmTWuLPY4ZF4Q5MyOMIfDCd8Q==",
- "engines": {
- "node": ">= 10"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
- },
- "optionalDependencies": {
- "@node-rs/bcrypt-android-arm-eabi": "1.9.2",
- "@node-rs/bcrypt-android-arm64": "1.9.2",
- "@node-rs/bcrypt-darwin-arm64": "1.9.2",
- "@node-rs/bcrypt-darwin-x64": "1.9.2",
- "@node-rs/bcrypt-freebsd-x64": "1.9.2",
- "@node-rs/bcrypt-linux-arm-gnueabihf": "1.9.2",
- "@node-rs/bcrypt-linux-arm64-gnu": "1.9.2",
- "@node-rs/bcrypt-linux-arm64-musl": "1.9.2",
- "@node-rs/bcrypt-linux-x64-gnu": "1.9.2",
- "@node-rs/bcrypt-linux-x64-musl": "1.9.2",
- "@node-rs/bcrypt-wasm32-wasi": "1.9.2",
- "@node-rs/bcrypt-win32-arm64-msvc": "1.9.2",
- "@node-rs/bcrypt-win32-ia32-msvc": "1.9.2",
- "@node-rs/bcrypt-win32-x64-msvc": "1.9.2"
- }
- },
- "node_modules/arctic/node_modules/@node-rs/bcrypt-darwin-arm64": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-darwin-arm64/-/bcrypt-darwin-arm64-1.9.2.tgz",
- "integrity": "sha512-svJKsGbzMAxOB5oluOYneN4YkKUy26WSMgm3KOIhgoX30IeMilj+2jFN/5qrI0oDZ0Iczb3XyL5DuZFtEkdP8A==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/arctic/node_modules/oslo": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/oslo/-/oslo-1.0.1.tgz",
- "integrity": "sha512-esfzZry+HfGgK/GCYkg7BRlLd3RH5aHa08wgLJPYjENXybi0BvXxGk0LbUj+lXfz2TkjPDHe4rB/o6JxRLHxBg==",
- "dependencies": {
- "@node-rs/argon2": "1.7.2",
- "@node-rs/bcrypt": "1.9.2"
- }
- },
- "node_modules/arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "node_modules/aria-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz",
- "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/aria-query": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
- "dev": true,
- "dependencies": {
- "dequal": "^2.0.3"
- }
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-includes": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
- "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array.prototype.findlastindex": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
- "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0",
- "get-intrinsic": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
- "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.tosorted": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz",
- "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0",
- "get-intrinsic": "^1.2.1"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
- "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/ast-types-flow": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
- "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
- "dev": true
- },
- "node_modules/asynciterator.prototype": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
- "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.3"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/autoprefixer": {
- "version": "10.4.16",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz",
- "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/autoprefixer"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "browserslist": "^4.21.10",
- "caniuse-lite": "^1.0.30001538",
- "fraction.js": "^4.3.6",
- "normalize-range": "^0.1.2",
- "picocolors": "^1.0.0",
- "postcss-value-parser": "^4.2.0"
- },
- "bin": {
- "autoprefixer": "bin/autoprefixer"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/axe-core": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz",
- "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/axobject-query": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
- "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
- "dev": true,
- "dependencies": {
- "dequal": "^2.0.3"
- }
- },
- "node_modules/babel-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
- "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
- "devOptional": true,
- "dependencies": {
- "@jest/transform": "^29.7.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.6.3",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.8.0"
- }
- },
- "node_modules/babel-plugin-istanbul": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
- "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
- "devOptional": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "devOptional": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-istanbul/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "devOptional": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/babel-plugin-jest-hoist": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
- "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
- "devOptional": true,
- "dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-preset-jest": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
- "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
- "devOptional": true,
- "dependencies": {
- "babel-plugin-jest-hoist": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/bail": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
- "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bowser": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
- "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.22.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
- "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
- "devOptional": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001565",
- "electron-to-chromium": "^1.4.601",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/bser": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
- "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "devOptional": true,
- "dependencies": {
- "node-int64": "^0.4.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "devOptional": true
- },
- "node_modules/busboy": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
- "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
- "dependencies": {
- "streamsearch": "^1.1.0"
- },
- "engines": {
- "node": ">=10.16.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
- "dependencies": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase-css": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
- "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001576",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz",
- "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ]
- },
- "node_modules/ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ci-info": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
- "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
- "devOptional": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cjs-module-lexer": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
- "devOptional": true
- },
- "node_modules/class-variance-authority": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz",
- "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==",
- "dependencies": {
- "clsx": "2.0.0"
- },
- "funding": {
- "url": "https://joebell.co.uk"
- }
- },
- "node_modules/class-variance-authority/node_modules/clsx": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
- "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-color": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz",
- "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==",
- "dev": true,
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.64",
- "es6-iterator": "^2.0.3",
- "memoizee": "^0.4.15",
- "timers-ext": "^0.1.7"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/client-only": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
- "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "devOptional": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "devOptional": true
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "devOptional": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "devOptional": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/clsx": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
- "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cmdk": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-0.2.0.tgz",
- "integrity": "sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==",
- "dependencies": {
- "@radix-ui/react-dialog": "1.0.0",
- "command-score": "0.1.2"
- },
- "peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/primitive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz",
- "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-compose-refs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
- "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-context": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
- "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-dialog": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz",
- "integrity": "sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.0",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-context": "1.0.0",
- "@radix-ui/react-dismissable-layer": "1.0.0",
- "@radix-ui/react-focus-guards": "1.0.0",
- "@radix-ui/react-focus-scope": "1.0.0",
- "@radix-ui/react-id": "1.0.0",
- "@radix-ui/react-portal": "1.0.0",
- "@radix-ui/react-presence": "1.0.0",
- "@radix-ui/react-primitive": "1.0.0",
- "@radix-ui/react-slot": "1.0.0",
- "@radix-ui/react-use-controllable-state": "1.0.0",
- "aria-hidden": "^1.1.1",
- "react-remove-scroll": "2.5.4"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.0.tgz",
- "integrity": "sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/primitive": "1.0.0",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-primitive": "1.0.0",
- "@radix-ui/react-use-callback-ref": "1.0.0",
- "@radix-ui/react-use-escape-keydown": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-focus-guards": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz",
- "integrity": "sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-focus-scope": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.0.tgz",
- "integrity": "sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-primitive": "1.0.0",
- "@radix-ui/react-use-callback-ref": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-id": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz",
- "integrity": "sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-layout-effect": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-portal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.0.tgz",
- "integrity": "sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-primitive": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-presence": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz",
- "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.0",
- "@radix-ui/react-use-layout-effect": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-primitive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.0.tgz",
- "integrity": "sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-slot": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-slot": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.0.tgz",
- "integrity": "sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-compose-refs": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-use-callback-ref": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz",
- "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-use-controllable-state": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz",
- "integrity": "sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-callback-ref": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-use-escape-keydown": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.0.tgz",
- "integrity": "sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==",
- "dependencies": {
- "@babel/runtime": "^7.13.10",
- "@radix-ui/react-use-callback-ref": "1.0.0"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/@radix-ui/react-use-layout-effect": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz",
- "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==",
- "dependencies": {
- "@babel/runtime": "^7.13.10"
- },
- "peerDependencies": {
- "react": "^16.8 || ^17.0 || ^18.0"
- }
- },
- "node_modules/cmdk/node_modules/react-remove-scroll": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
- "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
- "dependencies": {
- "react-remove-scroll-bar": "^2.3.3",
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.1.0",
- "use-callback-ref": "^1.3.0",
- "use-sidecar": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "devOptional": true,
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/codemirror": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
- "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
- "dependencies": {
- "@codemirror/autocomplete": "^6.0.0",
- "@codemirror/commands": "^6.0.0",
- "@codemirror/language": "^6.0.0",
- "@codemirror/lint": "^6.0.0",
- "@codemirror/search": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0"
- }
- },
- "node_modules/codemirror-lang-mermaid": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/codemirror-lang-mermaid/-/codemirror-lang-mermaid-0.5.0.tgz",
- "integrity": "sha512-Taw/2gPCyNArQJCxIP/HSUif+3zrvD+6Ugt7KJZ2dUKou/8r3ZhcfG8krNTZfV2iu8AuGnymKuo7bLPFyqsh/A==",
- "dependencies": {
- "@codemirror/language": "^6.9.0",
- "@lezer/highlight": "^1.1.6",
- "@lezer/lr": "^1.3.10"
- }
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
- "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
- "devOptional": true
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/command-score": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/command-score/-/command-score-0.1.2.tgz",
- "integrity": "sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w=="
- },
- "node_modules/commander": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "devOptional": true
- },
- "node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookies-next": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-4.1.1.tgz",
- "integrity": "sha512-20QaN0iQSz87Os0BhNg9M71eM++gylT3N5szTlhq2rK6QvXn1FYGPB4eAgU4qFTunbQKhD35zfQ95ZWgzUy3Cg==",
- "dependencies": {
- "@types/cookie": "^0.6.0",
- "@types/node": "^16.10.2",
- "cookie": "^0.6.0"
- }
- },
- "node_modules/cookies-next/node_modules/@types/node": {
- "version": "16.18.91",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.91.tgz",
- "integrity": "sha512-h8Q4klc8xzc9kJKr7UYNtJde5TU2qEePVyH3WyzJaUC+3ptyc5kPQbWOIUcn8ZsG5+KSkq+P0py0kC0VqxgAXw=="
- },
- "node_modules/copy-anything": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
- "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
- "dev": true,
- "dependencies": {
- "is-what": "^4.1.8"
- },
- "engines": {
- "node": ">=12.13"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/create-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "prompts": "^2.0.1"
- },
- "bin": {
- "create-jest": "bin/create-jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "devOptional": true
- },
- "node_modules/crelt": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
- "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css.escape": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
- "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
- "dev": true
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cssom": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
- "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
- "dev": true
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
- "dev": true,
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
- "dev": true
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
- "devOptional": true
- },
- "node_modules/d": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
- "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
- "dev": true,
- "dependencies": {
- "es5-ext": "^0.10.64",
- "type": "^2.7.2"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/damerau-levenshtein": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
- "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
- "dev": true
- },
- "node_modules/data-uri-to-buffer": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
- "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/data-urls": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
- "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.6",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^11.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/data-urls/node_modules/tr46": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
- "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/data-urls/node_modules/webidl-conversions": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/data-urls/node_modules/whatwg-url": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
- "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
- "dev": true,
- "dependencies": {
- "tr46": "^3.0.0",
- "webidl-conversions": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
- },
- "node_modules/decode-named-character-reference": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/dedent": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz",
- "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==",
- "devOptional": true,
- "peerDependencies": {
- "babel-plugin-macros": "^3.1.0"
- },
- "peerDependenciesMeta": {
- "babel-plugin-macros": {
- "optional": true
- }
- }
- },
- "node_modules/deep-equal": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
- "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.5",
- "es-get-iterator": "^1.1.3",
- "get-intrinsic": "^1.2.2",
- "is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.2",
- "is-date-object": "^1.0.5",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "isarray": "^2.0.5",
- "object-is": "^1.1.5",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "side-channel": "^1.0.4",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
- },
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "devOptional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/detect-node-es": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
- "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
- },
- "node_modules/didyoumean": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
- },
- "node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "devOptional": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/diff-sequences": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
- "devOptional": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/difflib": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz",
- "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==",
- "dev": true,
- "dependencies": {
- "heap": ">= 0.2.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dlv": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-accessibility-api": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
- "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
- "dev": true
- },
- "node_modules/domexception": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
- "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
- "deprecated": "Use your platform's native DOMException instead",
- "dev": true,
- "dependencies": {
- "webidl-conversions": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/domexception/node_modules/webidl-conversions": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "node_modules/dreamopt": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/dreamopt/-/dreamopt-0.8.0.tgz",
- "integrity": "sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==",
- "dev": true,
- "dependencies": {
- "wordwrap": ">=0.0.2"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/drizzle-kit": {
- "version": "0.20.14",
- "resolved": "https://registry.npmjs.org/drizzle-kit/-/drizzle-kit-0.20.14.tgz",
- "integrity": "sha512-0fHv3YIEaUcSVPSGyaaBfOi9bmpajjhbJNdPsRMIUvYdLVxBu9eGjH8mRc3Qk7HVmEidFc/lhG1YyJhoXrn5yA==",
- "dev": true,
- "dependencies": {
- "@drizzle-team/studio": "^0.0.39",
- "@esbuild-kit/esm-loader": "^2.5.5",
- "camelcase": "^7.0.1",
- "chalk": "^5.2.0",
- "commander": "^9.4.1",
- "env-paths": "^3.0.0",
- "esbuild": "^0.19.7",
- "esbuild-register": "^3.5.0",
- "glob": "^8.1.0",
- "hanji": "^0.0.5",
- "json-diff": "0.9.0",
- "minimatch": "^7.4.3",
- "semver": "^7.5.4",
- "zod": "^3.20.2"
- },
- "bin": {
- "drizzle-kit": "bin.cjs"
- }
- },
- "node_modules/drizzle-kit/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/drizzle-kit/node_modules/camelcase": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
- "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
- "dev": true,
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/drizzle-kit/node_modules/chalk": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
- "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
- "dev": true,
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/drizzle-kit/node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || >=14"
- }
- },
- "node_modules/drizzle-kit/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/drizzle-kit/node_modules/glob/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/drizzle-kit/node_modules/minimatch": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz",
- "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/drizzle-orm": {
- "version": "0.30.1",
- "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.1.tgz",
- "integrity": "sha512-5P6CXl4XyWtDDiYOX/jYOJp1HTUmBlXRAwaq+muUOgaSykMEy5sJesCxceMT0oCGvxeWkKfSXo5owLnfKwCIdw==",
- "peerDependencies": {
- "@aws-sdk/client-rds-data": ">=3",
- "@cloudflare/workers-types": ">=3",
- "@libsql/client": "*",
- "@neondatabase/serverless": ">=0.1",
- "@op-engineering/op-sqlite": ">=2",
- "@opentelemetry/api": "^1.4.1",
- "@planetscale/database": ">=1",
- "@types/better-sqlite3": "*",
- "@types/pg": "*",
- "@types/react": ">=18",
- "@types/sql.js": "*",
- "@vercel/postgres": "*",
- "better-sqlite3": ">=7",
- "bun-types": "*",
- "expo-sqlite": ">=13.2.0",
- "knex": "*",
- "kysely": "*",
- "mysql2": ">=2",
- "pg": ">=8",
- "postgres": ">=3",
- "react": ">=18",
- "sql.js": ">=1",
- "sqlite3": ">=5"
- },
- "peerDependenciesMeta": {
- "@aws-sdk/client-rds-data": {
- "optional": true
- },
- "@cloudflare/workers-types": {
- "optional": true
- },
- "@libsql/client": {
- "optional": true
- },
- "@neondatabase/serverless": {
- "optional": true
- },
- "@op-engineering/op-sqlite": {
- "optional": true
- },
- "@opentelemetry/api": {
- "optional": true
- },
- "@planetscale/database": {
- "optional": true
- },
- "@types/better-sqlite3": {
- "optional": true
- },
- "@types/pg": {
- "optional": true
- },
- "@types/react": {
- "optional": true
- },
- "@types/sql.js": {
- "optional": true
- },
- "@vercel/postgres": {
- "optional": true
- },
- "better-sqlite3": {
- "optional": true
- },
- "bun-types": {
- "optional": true
- },
- "expo-sqlite": {
- "optional": true
- },
- "knex": {
- "optional": true
- },
- "kysely": {
- "optional": true
- },
- "mysql2": {
- "optional": true
- },
- "pg": {
- "optional": true
- },
- "postgres": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "sql.js": {
- "optional": true
- },
- "sqlite3": {
- "optional": true
- }
- }
- },
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.630",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz",
- "integrity": "sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==",
- "devOptional": true
- },
- "node_modules/emittery": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
- "devOptional": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
- }
- },
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
- },
- "node_modules/enhanced-resolve": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
- "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/env-paths": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
- "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "devOptional": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
- "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.2",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.5",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.2",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.12",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "safe-array-concat": "^1.0.1",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.8",
- "string.prototype.trimend": "^1.0.7",
- "string.prototype.trimstart": "^1.0.7",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-get-iterator": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
- "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "has-symbols": "^1.0.3",
- "is-arguments": "^1.1.1",
- "is-map": "^2.0.2",
- "is-set": "^2.0.2",
- "is-string": "^1.0.7",
- "isarray": "^2.0.5",
- "stop-iteration-iterator": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-iterator-helpers": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz",
- "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==",
- "dev": true,
- "dependencies": {
- "asynciterator.prototype": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.1",
- "es-set-tostringtag": "^2.0.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "iterator.prototype": "^1.1.2",
- "safe-array-concat": "^1.0.1"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
- "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.2",
- "has-tostringtag": "^1.0.0",
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
- "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es5-ext": {
- "version": "0.10.64",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
- "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "esniff": "^2.0.1",
- "next-tick": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-symbol": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
- "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
- "dev": true,
- "dependencies": {
- "d": "^1.0.2",
- "ext": "^1.7.0"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/esbuild": {
- "version": "0.19.12",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
- "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.19.12",
- "@esbuild/android-arm": "0.19.12",
- "@esbuild/android-arm64": "0.19.12",
- "@esbuild/android-x64": "0.19.12",
- "@esbuild/darwin-arm64": "0.19.12",
- "@esbuild/darwin-x64": "0.19.12",
- "@esbuild/freebsd-arm64": "0.19.12",
- "@esbuild/freebsd-x64": "0.19.12",
- "@esbuild/linux-arm": "0.19.12",
- "@esbuild/linux-arm64": "0.19.12",
- "@esbuild/linux-ia32": "0.19.12",
- "@esbuild/linux-loong64": "0.19.12",
- "@esbuild/linux-mips64el": "0.19.12",
- "@esbuild/linux-ppc64": "0.19.12",
- "@esbuild/linux-riscv64": "0.19.12",
- "@esbuild/linux-s390x": "0.19.12",
- "@esbuild/linux-x64": "0.19.12",
- "@esbuild/netbsd-x64": "0.19.12",
- "@esbuild/openbsd-x64": "0.19.12",
- "@esbuild/sunos-x64": "0.19.12",
- "@esbuild/win32-arm64": "0.19.12",
- "@esbuild/win32-ia32": "0.19.12",
- "@esbuild/win32-x64": "0.19.12"
- }
- },
- "node_modules/esbuild-register": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz",
- "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==",
- "dev": true,
- "dependencies": {
- "debug": "^4.3.4"
- },
- "peerDependencies": {
- "esbuild": ">=0.12 <1"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
- "dev": true,
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/eslint": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
- "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.56.0",
- "@humanwhocodes/config-array": "^0.11.13",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-next": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.4.tgz",
- "integrity": "sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==",
- "dev": true,
- "dependencies": {
- "@next/eslint-plugin-next": "14.0.4",
- "@rushstack/eslint-patch": "^1.3.3",
- "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
- "eslint-import-resolver-node": "^0.3.6",
- "eslint-import-resolver-typescript": "^3.5.2",
- "eslint-plugin-import": "^2.28.1",
- "eslint-plugin-jsx-a11y": "^6.7.1",
- "eslint-plugin-react": "^7.33.2",
- "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
- },
- "peerDependencies": {
- "eslint": "^7.23.0 || ^8.0.0",
- "typescript": ">=3.3.1"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
- "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.13.0",
- "resolve": "^1.22.4"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-import-resolver-typescript": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
- "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
- "dev": true,
- "dependencies": {
- "debug": "^4.3.4",
- "enhanced-resolve": "^5.12.0",
- "eslint-module-utils": "^2.7.4",
- "fast-glob": "^3.3.1",
- "get-tsconfig": "^4.5.0",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
- },
- "peerDependencies": {
- "eslint": "*",
- "eslint-plugin-import": "*"
- }
- },
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
- "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlastindex": "^1.2.3",
- "array.prototype.flat": "^1.3.2",
- "array.prototype.flatmap": "^1.3.2",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "hasown": "^2.0.0",
- "is-core-module": "^2.13.1",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.7",
- "object.groupby": "^1.0.1",
- "object.values": "^1.1.7",
- "semver": "^6.3.1",
- "tsconfig-paths": "^3.15.0"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-plugin-jest": {
- "version": "27.6.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz",
- "integrity": "sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA==",
- "dependencies": {
- "@typescript-eslint/utils": "^5.10.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0",
- "eslint": "^7.0.0 || ^8.0.0",
- "jest": "*"
- },
- "peerDependenciesMeta": {
- "@typescript-eslint/eslint-plugin": {
- "optional": true
- },
- "jest": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-jsx-a11y": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz",
- "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "aria-query": "^5.3.0",
- "array-includes": "^3.1.7",
- "array.prototype.flatmap": "^1.3.2",
- "ast-types-flow": "^0.0.8",
- "axe-core": "=4.7.0",
- "axobject-query": "^3.2.1",
- "damerau-levenshtein": "^1.0.8",
- "emoji-regex": "^9.2.2",
- "es-iterator-helpers": "^1.0.15",
- "hasown": "^2.0.0",
- "jsx-ast-utils": "^3.3.5",
- "language-tags": "^1.0.9",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.7",
- "object.fromentries": "^2.0.7"
- },
- "engines": {
- "node": ">=4.0"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
- }
- },
- "node_modules/eslint-plugin-react": {
- "version": "7.33.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz",
- "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flatmap": "^1.3.1",
- "array.prototype.tosorted": "^1.1.1",
- "doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.12",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.6",
- "object.fromentries": "^2.0.6",
- "object.hasown": "^1.1.2",
- "object.values": "^1.1.6",
- "prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.4",
- "semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.8"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
- "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esniff": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
- "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
- "dev": true,
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.62",
- "event-emitter": "^0.3.5",
- "type": "^2.7.2"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "devOptional": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
- "dev": true,
- "dependencies": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "devOptional": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/execa/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "devOptional": true
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "devOptional": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expect": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
- "devOptional": true,
- "dependencies": {
- "@jest/expect-utils": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
- "dev": true,
- "dependencies": {
- "type": "^2.7.2"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
- },
- "node_modules/fast-xml-parser": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
- "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
- "funding": [
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- }
- },
- "node_modules/fastq": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
- "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fb-watchman": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
- "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
- "devOptional": true,
- "dependencies": {
- "bser": "2.1.1"
- }
- },
- "node_modules/fetch-blob": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
- "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "dependencies": {
- "node-domexception": "^1.0.0",
- "web-streams-polyfill": "^3.0.3"
- },
- "engines": {
- "node": "^12.20 || >= 14.13"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/foreground-child": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/formdata-polyfill": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
- "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
- "dependencies": {
- "fetch-blob": "^3.1.2"
- },
- "engines": {
- "node": ">=12.20.0"
- }
- },
- "node_modules/fraction.js": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
- "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
- "dev": true,
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "patreon",
- "url": "https://github.com/sponsors/rawify"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "devOptional": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "devOptional": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
- "dependencies": {
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-nonce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
- "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/get-package-type": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
- "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "devOptional": true,
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-tsconfig": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz",
- "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==",
- "dev": true,
- "dependencies": {
- "resolve-pkg-maps": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
- }
- },
- "node_modules/glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
- },
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
- },
- "node_modules/hanji": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/hanji/-/hanji-0.0.5.tgz",
- "integrity": "sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw==",
- "dev": true,
- "dependencies": {
- "lodash.throttle": "^4.1.1",
- "sisteransi": "^1.0.5"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
- "dependencies": {
- "get-intrinsic": "^1.2.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hast-util-embedded": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz",
- "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-is-element": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-embedded/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/hast-util-from-dom": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-4.2.0.tgz",
- "integrity": "sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==",
- "dependencies": {
- "hastscript": "^7.0.0",
- "web-namespaces": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-from-parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz",
- "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "hastscript": "^7.0.0",
- "property-information": "^6.0.0",
- "vfile": "^5.0.0",
- "vfile-location": "^4.0.0",
- "web-namespaces": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-has-property": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz",
- "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-has-property/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/hast-util-is-body-ok-link": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.0.tgz",
- "integrity": "sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-is-body-ok-link/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/hast-util-is-element": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
- "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-is-element/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/hast-util-parse-selector": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz",
- "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==",
- "dependencies": {
- "@types/hast": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-phrasing": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz",
- "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-embedded": "^3.0.0",
- "hast-util-has-property": "^3.0.0",
- "hast-util-is-body-ok-link": "^3.0.0",
- "hast-util-is-element": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-phrasing/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/hast-util-raw": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz",
- "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/parse5": "^6.0.0",
- "hast-util-from-parse5": "^7.0.0",
- "hast-util-to-parse5": "^7.0.0",
- "html-void-elements": "^2.0.0",
- "parse5": "^6.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile": "^5.0.0",
- "web-namespaces": "^2.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-raw/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/hast-util-to-html": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz",
- "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "ccount": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "hast-util-raw": "^7.0.0",
- "hast-util-whitespace": "^2.0.0",
- "html-void-elements": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "stringify-entities": "^4.0.0",
- "zwitch": "^2.0.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-html/node_modules/hast-util-whitespace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
- "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-8.4.1.tgz",
- "integrity": "sha512-tfmBLASuCgyhCzpkTXM5kU8xeuS5jkMZ17BYm2YftGT5wvgc7uHXTZ/X8WfNd6F5NV/IGmrLsuahZ+jXQir4zQ==",
- "dependencies": {
- "@types/extend": "^3.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "extend": "^3.0.0",
- "hast-util-has-property": "^2.0.0",
- "hast-util-is-element": "^2.0.0",
- "hast-util-phrasing": "^2.0.0",
- "hast-util-to-text": "^3.0.0",
- "mdast-util-phrasing": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "rehype-minify-whitespace": "^5.0.0",
- "trim-trailing-lines": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/hast-util-embedded": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-2.0.1.tgz",
- "integrity": "sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==",
- "dependencies": {
- "hast-util-is-element": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/hast-util-has-property": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-2.0.1.tgz",
- "integrity": "sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/hast-util-is-body-ok-link": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-2.0.0.tgz",
- "integrity": "sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-has-property": "^2.0.0",
- "hast-util-is-element": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/hast-util-is-element": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz",
- "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/hast-util-phrasing": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-2.0.2.tgz",
- "integrity": "sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-embedded": "^2.0.0",
- "hast-util-has-property": "^2.0.0",
- "hast-util-is-body-ok-link": "^2.0.0",
- "hast-util-is-element": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/hast-util-whitespace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
- "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/rehype-minify-whitespace": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-5.0.1.tgz",
- "integrity": "sha512-PPp4lWJiBPlePI/dv1BeYktbwkfgXkrK59MUa+tYbMPgleod+4DvFK2PLU0O0O60/xuhHfiR9GUIUlXTU8sRIQ==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-embedded": "^2.0.0",
- "hast-util-is-element": "^2.0.0",
- "hast-util-whitespace": "^2.0.0",
- "unified": "^10.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-mdast/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-parse5": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz",
- "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "web-namespaces": "^2.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-text": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz",
- "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "hast-util-is-element": "^2.0.0",
- "unist-util-find-after": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-to-text/node_modules/hast-util-is-element": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz",
- "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-whitespace/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/hastscript": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz",
- "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "hast-util-parse-selector": "^3.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/heap": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz",
- "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==",
- "dev": true
- },
- "node_modules/html-encoding-sniffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
- "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
- "dev": true,
- "dependencies": {
- "whatwg-encoding": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/html-escaper": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "devOptional": true
- },
- "node_modules/html-void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
- "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/html-whitespace-sensitive-tag-names": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.0.tgz",
- "integrity": "sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "devOptional": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/immutable": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
- "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA=="
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/import-local": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
- "devOptional": true,
- "dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/internal-slot": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
- "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
- "dependencies": {
- "get-intrinsic": "^1.2.2",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dependencies": {
- "loose-envify": "^1.0.0"
- }
- },
- "node_modules/is-arguments": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "devOptional": true
- },
- "node_modules/is-async-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
- "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-finalizationregistry": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
- "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
- "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
- "node_modules/is-promise": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
- "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
- "dev": true
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-set": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
- "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
- "dependencies": {
- "which-typed-array": "^1.1.11"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakmap": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
- "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakset": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
- "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-what": {
- "version": "4.1.16",
- "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
- "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
- "dev": true,
- "engines": {
- "node": ">=12.13"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
- },
- "node_modules/isomorphic.js": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz",
- "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==",
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- }
- },
- "node_modules/istanbul-lib-coverage": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
- "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz",
- "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==",
- "devOptional": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-lib-report": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
- "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
- "devOptional": true,
- "dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^4.0.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "devOptional": true,
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-reports": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
- "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
- "devOptional": true,
- "dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/iterator.prototype": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
- "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.2.1",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "reflect.getprototypeof": "^1.0.4",
- "set-function-name": "^2.0.1"
- }
- },
- "node_modules/jackspeak": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "node_modules/jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
- "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
- "devOptional": true,
- "dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/types": "^29.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^29.7.0"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-changed-files": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
- "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
- "devOptional": true,
- "dependencies": {
- "execa": "^5.0.0",
- "jest-util": "^29.7.0",
- "p-limit": "^3.1.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
- "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
- "devOptional": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^1.0.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.7.0",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.7.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-cli": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
- "devOptional": true,
- "dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "create-jest": "^29.7.0",
- "exit": "^0.1.2",
- "import-local": "^3.0.2",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "yargs": "^17.3.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
- "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
- "devOptional": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-jest": "^29.7.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@types/node": "*",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/jest-diff": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
- "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
- "devOptional": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.6.3",
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-docblock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
- "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
- "devOptional": true,
- "dependencies": {
- "detect-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
- "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "jest-util": "^29.7.0",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-environment-jsdom": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz",
- "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==",
- "dev": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/jsdom": "^20.0.0",
- "@types/node": "*",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0",
- "jsdom": "^20.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jest-environment-node": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
- "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
- "devOptional": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-mock": "^29.7.0",
- "jest-util": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-get-type": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
- "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
- "devOptional": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-haste-map": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
- "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.6.3",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/jest-leak-detector": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
- "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
- "devOptional": true,
- "dependencies": {
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-matcher-utils": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
- "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
- "devOptional": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-message-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
- "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
- "devOptional": true,
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.6.3",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-mock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
- "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "jest-util": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
- }
- },
- "node_modules/jest-regex-util": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
- "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
- "devOptional": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
- "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
- "devOptional": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve-dependencies": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
- "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
- "devOptional": true,
- "dependencies": {
- "jest-regex-util": "^29.6.3",
- "jest-snapshot": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runner": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
- "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
- "devOptional": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/environment": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-leak-detector": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-resolve": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "jest-worker": "^29.7.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runtime": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
- "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
- "devOptional": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/globals": "^29.7.0",
- "@jest/source-map": "^29.6.3",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runtime/node_modules/strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
- "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
- "devOptional": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.7.0",
- "semver": "^7.5.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-util": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-validate": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
- "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
- "devOptional": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-validate/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-watcher": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
- "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
- "devOptional": true,
- "dependencies": {
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.7.0",
- "string-length": "^4.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-worker": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
- "devOptional": true,
- "dependencies": {
- "@types/node": "*",
- "jest-util": "^29.7.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "devOptional": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/jiti": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
- "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
- "bin": {
- "jiti": "bin/jiti.js"
- }
- },
- "node_modules/js-base64": {
- "version": "3.7.5",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
- "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsdom": {
- "version": "20.0.3",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
- "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.6",
- "acorn": "^8.8.1",
- "acorn-globals": "^7.0.0",
- "cssom": "^0.5.0",
- "cssstyle": "^2.3.0",
- "data-urls": "^3.0.2",
- "decimal.js": "^10.4.2",
- "domexception": "^4.0.0",
- "escodegen": "^2.0.0",
- "form-data": "^4.0.0",
- "html-encoding-sniffer": "^3.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.1",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.2",
- "parse5": "^7.1.1",
- "saxes": "^6.0.0",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.1.2",
- "w3c-xmlserializer": "^4.0.0",
- "webidl-conversions": "^7.0.0",
- "whatwg-encoding": "^2.0.0",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^11.0.0",
- "ws": "^8.11.0",
- "xml-name-validator": "^4.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jsdom/node_modules/tr46": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
- "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/jsdom/node_modules/webidl-conversions": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
- "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/jsdom/node_modules/whatwg-url": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
- "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
- "dev": true,
- "dependencies": {
- "tr46": "^3.0.0",
- "webidl-conversions": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "devOptional": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
- },
- "node_modules/json-diff": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/json-diff/-/json-diff-0.9.0.tgz",
- "integrity": "sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ==",
- "dev": true,
- "dependencies": {
- "cli-color": "^2.0.0",
- "difflib": "~0.2.1",
- "dreamopt": "~0.8.0"
- },
- "bin": {
- "json-diff": "bin/json-diff.js"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "devOptional": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
- },
- "node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/jsx-ast-utils": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "object.assign": "^4.1.4",
- "object.values": "^1.1.6"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/language-subtag-registry": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
- "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==",
- "dev": true
- },
- "node_modules/language-tags": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
- "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
- "dev": true,
- "dependencies": {
- "language-subtag-registry": "^0.3.20"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lib0": {
- "version": "0.2.92",
- "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.92.tgz",
- "integrity": "sha512-cLaqTQmHqOY7hte7FazjG6h8KKR7S36I9FoEnK/RWtCmmwoZ4e8wDnMB1tkU0a54yf2l+SUNyR/jfKuBsXxVNw==",
- "dependencies": {
- "isomorphic.js": "^0.2.4"
- },
- "bin": {
- "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js",
- "0gentesthtml": "bin/gentesthtml.js",
- "0serve": "bin/0serve.js"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- }
- },
- "node_modules/libsql": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.3.8.tgz",
- "integrity": "sha512-tz12gCfDXl6WKwtpxpw6PaZtkecHQQQTHuuj6RLQvEfOB17bPpmo8xdC55S4J6fx6qzmqJbaLZSlA6gYJgUXkg==",
- "cpu": [
- "x64",
- "arm64"
- ],
- "os": [
- "darwin",
- "linux",
- "win32"
- ],
- "dependencies": {
- "@neon-rs/load": "^0.0.4",
- "detect-libc": "2.0.2"
- },
- "optionalDependencies": {
- "@libsql/darwin-arm64": "0.3.8",
- "@libsql/darwin-x64": "0.3.8",
- "@libsql/linux-arm64-gnu": "0.3.8",
- "@libsql/linux-arm64-musl": "0.3.8",
- "@libsql/linux-x64-gnu": "0.3.8",
- "@libsql/linux-x64-musl": "0.3.8",
- "@libsql/win32-x64-msvc": "0.3.8"
- }
- },
- "node_modules/lilconfig": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
- },
- "node_modules/linkify-it": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
- "dependencies": {
- "uc.micro": "^2.0.0"
- }
- },
- "node_modules/linkifyjs": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz",
- "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg=="
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
- },
- "node_modules/lodash.throttle": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
- "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
- "dev": true
- },
- "node_modules/longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lru-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
- "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
- "dev": true,
- "dependencies": {
- "es5-ext": "~0.10.2"
- }
- },
- "node_modules/lucia": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lucia/-/lucia-3.1.1.tgz",
- "integrity": "sha512-Ygvgnqq7Ha7lYVaZATPwkPD2s2Qlsm71Z2o0byx/abNBfFldCRow5sNii6RqMsuMpK957RAI3Gw4/aWoagkc7A==",
- "dependencies": {
- "oslo": "1.0.1"
- }
- },
- "node_modules/lucia/node_modules/@node-rs/argon2": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@node-rs/argon2/-/argon2-1.7.2.tgz",
- "integrity": "sha512-+H6pc3M1vIX9YnG59YW7prHhhpv19P8YyxlXHnnFzTimf2q+kKDF7mGWbhvN9STqIY+P70Patn0Q6qb6Ib5/4g==",
- "engines": {
- "node": ">= 10"
- },
- "optionalDependencies": {
- "@node-rs/argon2-android-arm-eabi": "1.7.2",
- "@node-rs/argon2-android-arm64": "1.7.2",
- "@node-rs/argon2-darwin-arm64": "1.7.2",
- "@node-rs/argon2-darwin-x64": "1.7.2",
- "@node-rs/argon2-freebsd-x64": "1.7.2",
- "@node-rs/argon2-linux-arm-gnueabihf": "1.7.2",
- "@node-rs/argon2-linux-arm64-gnu": "1.7.2",
- "@node-rs/argon2-linux-arm64-musl": "1.7.2",
- "@node-rs/argon2-linux-x64-gnu": "1.7.2",
- "@node-rs/argon2-linux-x64-musl": "1.7.2",
- "@node-rs/argon2-wasm32-wasi": "1.7.2",
- "@node-rs/argon2-win32-arm64-msvc": "1.7.2",
- "@node-rs/argon2-win32-ia32-msvc": "1.7.2",
- "@node-rs/argon2-win32-x64-msvc": "1.7.2"
- }
- },
- "node_modules/lucia/node_modules/@node-rs/argon2-darwin-arm64": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@node-rs/argon2-darwin-arm64/-/argon2-darwin-arm64-1.7.2.tgz",
- "integrity": "sha512-hUOhtgYHTEyzX5sgMZVdXunONOus2HWpWydF5D/RYJ1mZ76FXRnFpQE40DqbzisdPIraKdn40m7JqkPP7wqdyg==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/lucia/node_modules/@node-rs/bcrypt": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@node-rs/bcrypt/-/bcrypt-1.9.2.tgz",
- "integrity": "sha512-FKUo9iCSIti+ldwoOlY1ztyIFhZxEgT7jZ/UCt/9bg1rLmNdbQQD2JKIMImDCqmTWuLPY4ZF4Q5MyOMIfDCd8Q==",
- "engines": {
- "node": ">= 10"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
- },
- "optionalDependencies": {
- "@node-rs/bcrypt-android-arm-eabi": "1.9.2",
- "@node-rs/bcrypt-android-arm64": "1.9.2",
- "@node-rs/bcrypt-darwin-arm64": "1.9.2",
- "@node-rs/bcrypt-darwin-x64": "1.9.2",
- "@node-rs/bcrypt-freebsd-x64": "1.9.2",
- "@node-rs/bcrypt-linux-arm-gnueabihf": "1.9.2",
- "@node-rs/bcrypt-linux-arm64-gnu": "1.9.2",
- "@node-rs/bcrypt-linux-arm64-musl": "1.9.2",
- "@node-rs/bcrypt-linux-x64-gnu": "1.9.2",
- "@node-rs/bcrypt-linux-x64-musl": "1.9.2",
- "@node-rs/bcrypt-wasm32-wasi": "1.9.2",
- "@node-rs/bcrypt-win32-arm64-msvc": "1.9.2",
- "@node-rs/bcrypt-win32-ia32-msvc": "1.9.2",
- "@node-rs/bcrypt-win32-x64-msvc": "1.9.2"
- }
- },
- "node_modules/lucia/node_modules/@node-rs/bcrypt-darwin-arm64": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@node-rs/bcrypt-darwin-arm64/-/bcrypt-darwin-arm64-1.9.2.tgz",
- "integrity": "sha512-svJKsGbzMAxOB5oluOYneN4YkKUy26WSMgm3KOIhgoX30IeMilj+2jFN/5qrI0oDZ0Iczb3XyL5DuZFtEkdP8A==",
- "cpu": [
- "arm64"
- ],
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/lucia/node_modules/oslo": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/oslo/-/oslo-1.0.1.tgz",
- "integrity": "sha512-esfzZry+HfGgK/GCYkg7BRlLd3RH5aHa08wgLJPYjENXybi0BvXxGk0LbUj+lXfz2TkjPDHe4rB/o6JxRLHxBg==",
- "dependencies": {
- "@node-rs/argon2": "1.7.2",
- "@node-rs/bcrypt": "1.9.2"
- }
- },
- "node_modules/lucide-react": {
- "version": "0.309.0",
- "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.309.0.tgz",
- "integrity": "sha512-zNVPczuwFrCfksZH3zbd1UDE6/WYhYAdbe2k7CImVyPAkXLgIwbs6eXQ4loigqDnUFjyFYCI5jZ1y10Kqal0dg==",
- "peerDependencies": {
- "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
- "dev": true,
- "bin": {
- "lz-string": "bin/bin.js"
- }
- },
- "node_modules/magic-bytes.js": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz",
- "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ=="
- },
- "node_modules/make-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
- "devOptional": true,
- "dependencies": {
- "semver": "^7.5.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "devOptional": true
- },
- "node_modules/makeerror": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
- "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
- "devOptional": true,
- "dependencies": {
- "tmpl": "1.0.5"
- }
- },
- "node_modules/markdown-it": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz",
- "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==",
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "^4.4.0",
- "linkify-it": "^5.0.0",
- "mdurl": "^2.0.0",
- "punycode.js": "^2.3.1",
- "uc.micro": "^2.0.0"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.mjs"
- }
- },
- "node_modules/markdown-table": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
- "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/mdast-util-definitions": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz",
- "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-find-and-replace": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz",
- "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "escape-string-regexp": "^5.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
- "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "mdast-util-to-string": "^3.1.0",
- "micromark": "^3.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz",
- "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==",
- "dependencies": {
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-gfm-autolink-literal": "^1.0.0",
- "mdast-util-gfm-footnote": "^1.0.0",
- "mdast-util-gfm-strikethrough": "^1.0.0",
- "mdast-util-gfm-table": "^1.0.0",
- "mdast-util-gfm-task-list-item": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-autolink-literal": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz",
- "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "ccount": "^2.0.0",
- "mdast-util-find-and-replace": "^2.0.0",
- "micromark-util-character": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-footnote": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz",
- "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0",
- "micromark-util-normalize-identifier": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-strikethrough": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz",
- "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-table": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz",
- "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "markdown-table": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.3.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-task-list-item": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz",
- "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-phrasing": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz",
- "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-phrasing/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-hast": {
- "version": "12.3.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz",
- "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-definitions": "^5.0.0",
- "micromark-util-sanitize-uri": "^1.1.0",
- "trim-lines": "^3.0.0",
- "unist-util-generated": "^2.0.0",
- "unist-util-position": "^4.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-markdown": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz",
- "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^3.0.0",
- "mdast-util-to-string": "^3.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "unist-util-visit": "^4.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
- "dependencies": {
- "@types/mdast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
- "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="
- },
- "node_modules/memoizee": {
- "version": "0.4.15",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
- "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
- "dev": true,
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.53",
- "es6-weak-map": "^2.0.3",
- "event-emitter": "^0.3.5",
- "is-promise": "^2.2.2",
- "lru-queue": "^0.1.0",
- "next-tick": "^1.1.0",
- "timers-ext": "^0.1.7"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "devOptional": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromark": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
- "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "micromark-core-commonmark": "^1.0.1",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz",
- "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-factory-destination": "^1.0.0",
- "micromark-factory-label": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-factory-title": "^1.0.0",
- "micromark-factory-whitespace": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-classify-character": "^1.0.0",
- "micromark-util-html-tag-name": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-extension-gfm": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz",
- "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==",
- "dependencies": {
- "micromark-extension-gfm-autolink-literal": "^1.0.0",
- "micromark-extension-gfm-footnote": "^1.0.0",
- "micromark-extension-gfm-strikethrough": "^1.0.0",
- "micromark-extension-gfm-table": "^1.0.0",
- "micromark-extension-gfm-tagfilter": "^1.0.0",
- "micromark-extension-gfm-task-list-item": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-autolink-literal": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz",
- "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-footnote": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz",
- "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==",
- "dependencies": {
- "micromark-core-commonmark": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-strikethrough": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz",
- "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==",
- "dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-classify-character": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-table": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz",
- "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==",
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-tagfilter": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz",
- "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==",
- "dependencies": {
- "micromark-util-types": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-task-list-item": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz",
- "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==",
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz",
- "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz",
- "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
- "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz",
- "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz",
- "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
- "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz",
- "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz",
- "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz",
- "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz",
- "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz",
- "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz",
- "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz",
- "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
- "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz",
- "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz",
- "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz",
- "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
- "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromark-util-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
- "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ]
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/mri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
- },
- "node_modules/next": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz",
- "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==",
- "dependencies": {
- "@next/env": "14.0.4",
- "@swc/helpers": "0.5.2",
- "busboy": "1.6.0",
- "caniuse-lite": "^1.0.30001406",
- "graceful-fs": "^4.2.11",
- "postcss": "8.4.31",
- "styled-jsx": "5.1.1",
- "watchpack": "2.4.0"
- },
- "bin": {
- "next": "dist/bin/next"
- },
- "engines": {
- "node": ">=18.17.0"
- },
- "optionalDependencies": {
- "@next/swc-darwin-arm64": "14.0.4",
- "@next/swc-darwin-x64": "14.0.4",
- "@next/swc-linux-arm64-gnu": "14.0.4",
- "@next/swc-linux-arm64-musl": "14.0.4",
- "@next/swc-linux-x64-gnu": "14.0.4",
- "@next/swc-linux-x64-musl": "14.0.4",
- "@next/swc-win32-arm64-msvc": "14.0.4",
- "@next/swc-win32-ia32-msvc": "14.0.4",
- "@next/swc-win32-x64-msvc": "14.0.4"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.1.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "sass": "^1.3.0"
- },
- "peerDependenciesMeta": {
- "@opentelemetry/api": {
- "optional": true
- },
- "sass": {
- "optional": true
- }
- }
- },
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
- "dev": true
- },
- "node_modules/next/node_modules/postcss": {
- "version": "8.4.31",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
- "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/node-domexception": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "github",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "engines": {
- "node": ">=10.5.0"
- }
- },
- "node_modules/node-fetch": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
- "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
- "dependencies": {
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.4",
- "formdata-polyfill": "^4.0.10"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-fetch"
- }
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "devOptional": true
- },
- "node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "devOptional": true
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "devOptional": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nwsapi": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
- "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
- "dev": true
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-hash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
- "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-is": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
- "dependencies": {
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.entries": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
- "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.fromentries": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
- "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.groupby": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
- "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1"
- }
- },
- "node_modules/object.hasown": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz",
- "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.values": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
- "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "devOptional": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/orderedmap": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
- "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="
- },
- "node_modules/oslo": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/oslo/-/oslo-1.1.3.tgz",
- "integrity": "sha512-hCz528UlNTiegplcyBg6AvG0HLNrnq06EJMp88Ze308GX1hszkb8u3puhNC4aqLMbYQ0hXpl+wQGnwxMtt5+5w==",
- "dependencies": {
- "@node-rs/argon2": "1.7.0",
- "@node-rs/bcrypt": "1.9.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "devOptional": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
- "dependencies": {
- "entities": "^4.4.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "node_modules/path-scurry": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
- "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
- "dependencies": {
- "lru-cache": "^9.1.1 || ^10.0.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
- "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
- "engines": {
- "node": "14 || >=16.14"
- }
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pirates": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "devOptional": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "devOptional": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "devOptional": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "devOptional": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "devOptional": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.33",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
- "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postcss-import": {
- "version": "15.1.0",
- "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
- "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
- "dependencies": {
- "postcss-value-parser": "^4.0.0",
- "read-cache": "^1.0.0",
- "resolve": "^1.1.7"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "postcss": "^8.0.0"
- }
- },
- "node_modules/postcss-js": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
- "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
- "dependencies": {
- "camelcase-css": "^2.0.1"
- },
- "engines": {
- "node": "^12 || ^14 || >= 16"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": "^8.4.21"
- }
- },
- "node_modules/postcss-load-config": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
- "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "lilconfig": "^3.0.0",
- "yaml": "^2.3.4"
- },
- "engines": {
- "node": ">= 14"
- },
- "peerDependencies": {
- "postcss": ">=8.0.9",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/postcss-load-config/node_modules/lilconfig": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
- "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/postcss-nested": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
- "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
- "dependencies": {
- "postcss-selector-parser": "^6.0.11"
- },
- "engines": {
- "node": ">=12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": "^8.2.14"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "6.0.15",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
- "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "devOptional": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/pretty-format/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "devOptional": true
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "devOptional": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/property-information": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz",
- "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/prosemirror-changeset": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz",
- "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==",
- "dependencies": {
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-collab": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz",
- "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==",
- "dependencies": {
- "prosemirror-state": "^1.0.0"
- }
- },
- "node_modules/prosemirror-commands": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz",
- "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==",
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-dropcursor": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz",
- "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==",
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0",
- "prosemirror-view": "^1.1.0"
- }
- },
- "node_modules/prosemirror-gapcursor": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz",
- "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==",
- "dependencies": {
- "prosemirror-keymap": "^1.0.0",
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-view": "^1.0.0"
- }
- },
- "node_modules/prosemirror-history": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz",
- "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==",
- "dependencies": {
- "prosemirror-state": "^1.2.2",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.31.0",
- "rope-sequence": "^1.3.0"
- }
- },
- "node_modules/prosemirror-inputrules": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz",
- "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==",
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-keymap": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz",
- "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==",
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "w3c-keyname": "^2.2.0"
- }
- },
- "node_modules/prosemirror-markdown": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz",
- "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==",
- "dependencies": {
- "markdown-it": "^14.0.0",
- "prosemirror-model": "^1.0.0"
- }
- },
- "node_modules/prosemirror-menu": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz",
- "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==",
- "dependencies": {
- "crelt": "^1.0.0",
- "prosemirror-commands": "^1.0.0",
- "prosemirror-history": "^1.0.0",
- "prosemirror-state": "^1.0.0"
- }
- },
- "node_modules/prosemirror-model": {
- "version": "1.19.4",
- "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz",
- "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==",
- "dependencies": {
- "orderedmap": "^2.0.0"
- }
- },
- "node_modules/prosemirror-schema-basic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz",
- "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==",
- "dependencies": {
- "prosemirror-model": "^1.19.0"
- }
- },
- "node_modules/prosemirror-schema-list": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz",
- "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==",
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.7.3"
- }
- },
- "node_modules/prosemirror-state": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",
- "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.27.0"
- }
- },
- "node_modules/prosemirror-tables": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz",
- "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==",
- "dependencies": {
- "prosemirror-keymap": "^1.1.2",
- "prosemirror-model": "^1.8.1",
- "prosemirror-state": "^1.3.1",
- "prosemirror-transform": "^1.2.1",
- "prosemirror-view": "^1.13.3"
- }
- },
- "node_modules/prosemirror-trailing-node": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz",
- "integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==",
- "dependencies": {
- "@remirror/core-constants": "^2.0.2",
- "escape-string-regexp": "^4.0.0"
- },
- "peerDependencies": {
- "prosemirror-model": "^1.19.0",
- "prosemirror-state": "^1.4.2",
- "prosemirror-view": "^1.31.2"
- }
- },
- "node_modules/prosemirror-transform": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz",
- "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==",
- "dependencies": {
- "prosemirror-model": "^1.0.0"
- }
- },
- "node_modules/prosemirror-view": {
- "version": "1.33.1",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.1.tgz",
- "integrity": "sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==",
- "dependencies": {
- "prosemirror-model": "^1.16.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0"
- }
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/punycode.js": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
- "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pure-rand": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz",
- "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==",
- "devOptional": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/dubzzz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fast-check"
- }
- ]
- },
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- },
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/react-icons": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz",
- "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==",
- "peerDependencies": {
- "react": "*"
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/react-number-format": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.3.3.tgz",
- "integrity": "sha512-maGHWmOvwYzyeRIpL0YC6drWqYaX6iFqjisdJXpZ+HzEtSEJsL6nqw4azTpF5Sm6SAvwUeAr7JY924Ebqq8EdA==",
- "dependencies": {
- "prop-types": "^15.7.2"
- },
- "peerDependencies": {
- "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react-remove-scroll": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz",
- "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==",
- "dependencies": {
- "react-remove-scroll-bar": "^2.3.3",
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.1.0",
- "use-callback-ref": "^1.3.0",
- "use-sidecar": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/react-remove-scroll-bar": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
- "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
- "dependencies": {
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/react-resizable-panels": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-1.0.9.tgz",
- "integrity": "sha512-QPfW3L7yetEC6z04G9AYYFz5kBklh8rTWcOsVFImYMNUVhr1Y1r9Qc/20Yks2tA+lXMBWCUz4fkGEvbS7tpBSg==",
- "peerDependencies": {
- "react": "^16.14.0 || ^17.0.0 || ^18.0.0",
- "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react-style-singleton": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
- "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
- "dependencies": {
- "get-nonce": "^1.0.0",
- "invariant": "^2.2.4",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/react-textarea-autosize": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz",
- "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==",
- "dependencies": {
- "@babel/runtime": "^7.20.13",
- "use-composed-ref": "^1.3.0",
- "use-latest": "^1.2.1"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/read-cache": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
- "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
- "dependencies": {
- "pify": "^2.3.0"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/reflect.getprototypeof": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz",
- "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "which-builtin-type": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "set-function-name": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/rehype-format": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.0.tgz",
- "integrity": "sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-embedded": "^3.0.0",
- "hast-util-is-element": "^3.0.0",
- "hast-util-phrasing": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "html-whitespace-sensitive-tag-names": "^3.0.0",
- "rehype-minify-whitespace": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-format/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/rehype-minify-whitespace": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.0.tgz",
- "integrity": "sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "hast-util-embedded": "^3.0.0",
- "hast-util-is-element": "^3.0.0",
- "hast-util-whitespace": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-minify-whitespace/node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/rehype-parse": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz",
- "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-from-parse5": "^7.0.0",
- "parse5": "^6.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-parse/node_modules/parse5": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
- "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
- },
- "node_modules/rehype-remark": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/rehype-remark/-/rehype-remark-9.1.2.tgz",
- "integrity": "sha512-c0fG3/CrJ95zAQ07xqHSkdpZybwdsY7X5dNWvgL2XqLKZuqmG3+vk6kP/4miCnp+R+x/0uKKRSpfXb9aGR8Z5w==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "hast-util-to-mdast": "^8.3.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-stringify": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.4.tgz",
- "integrity": "sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "hast-util-to-html": "^8.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-gfm": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz",
- "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-gfm": "^2.0.0",
- "micromark-extension-gfm": "^2.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-parse": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz",
- "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-rehype": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz",
- "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==",
- "dependencies": {
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-to-hast": "^12.1.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/remark-stringify": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.3.tgz",
- "integrity": "sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "devOptional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
- },
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "devOptional": true,
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-cwd/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-pkg-maps": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
- "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
- "dev": true,
- "funding": {
- "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
- }
- },
- "node_modules/resolve.exports": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rope-sequence": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
- "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/sade": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
- "dependencies": {
- "mri": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz",
- "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
- "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "get-intrinsic": "^1.2.2",
- "is-regex": "^1.1.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "node_modules/sass": {
- "version": "1.69.7",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz",
- "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==",
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/saxes": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
- "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
- "dev": true,
- "dependencies": {
- "xmlchars": "^2.2.0"
- },
- "engines": {
- "node": ">=v12.22.7"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/set-function-length": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
- "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
- "dependencies": {
- "define-data-property": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.2",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-function-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
- "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
- "dependencies": {
- "define-data-property": "^1.0.1",
- "functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "devOptional": true
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sonner": {
- "version": "1.4.41",
- "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.4.41.tgz",
- "integrity": "sha512-uG511ggnnsw6gcn/X+YKkWPo5ep9il9wYi3QJxHsYe7yTZ4+cOd1wuodOUmOpFuXL+/RE3R04LczdNCDygTDgQ==",
- "peerDependencies": {
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "devOptional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
- "devOptional": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "devOptional": true
- },
- "node_modules/sql-query-identifier": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/sql-query-identifier/-/sql-query-identifier-2.6.0.tgz",
- "integrity": "sha512-gxlT1LX+BZi1NR8qWDtiU8umJf53OYuSKZN4xIufl6apD3OAVoBc/06FYBWPc+cHKrdqwvvs6wkiGfhvtqZwRw==",
- "engines": {
- "node": ">= 10.13"
- }
- },
- "node_modules/stack-utils": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
- "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
- "devOptional": true,
- "dependencies": {
- "escape-string-regexp": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/stack-utils/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "devOptional": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/stop-iteration-iterator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
- "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
- "dependencies": {
- "internal-slot": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/streamsearch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
- "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "devOptional": true,
- "dependencies": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/string-width-cjs": {
- "name": "string-width",
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/string.prototype.matchall": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
- "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "regexp.prototype.flags": "^1.5.0",
- "set-function-name": "^2.0.0",
- "side-channel": "^1.0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
- "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
- "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
- "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/stringify-entities": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz",
- "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==",
- "dependencies": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "dependencies": {
- "min-indent": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
- },
- "node_modules/style-mod": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz",
- "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA=="
- },
- "node_modules/styled-jsx": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
- "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
- "dependencies": {
- "client-only": "0.0.1"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "peerDependencies": {
- "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "babel-plugin-macros": {
- "optional": true
- }
- }
- },
- "node_modules/sucrase": {
- "version": "3.35.0",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
- "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.2",
- "commander": "^4.0.0",
- "glob": "^10.3.10",
- "lines-and-columns": "^1.1.6",
- "mz": "^2.7.0",
- "pirates": "^4.0.1",
- "ts-interface-checker": "^0.1.9"
- },
- "bin": {
- "sucrase": "bin/sucrase",
- "sucrase-node": "bin/sucrase-node"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/sucrase/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/sucrase/node_modules/glob": {
- "version": "10.3.10",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
- "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.5",
- "minimatch": "^9.0.1",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
- "path-scurry": "^1.10.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/sucrase/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/superjson": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz",
- "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==",
- "dev": true,
- "dependencies": {
- "copy-anything": "^3.0.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
- },
- "node_modules/tabbable": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
- },
- "node_modules/tailwind-merge": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.0.tgz",
- "integrity": "sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==",
- "dependencies": {
- "@babel/runtime": "^7.23.5"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/dcastil"
- }
- },
- "node_modules/tailwindcss": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
- "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
- "dependencies": {
- "@alloc/quick-lru": "^5.2.0",
- "arg": "^5.0.2",
- "chokidar": "^3.5.3",
- "didyoumean": "^1.2.2",
- "dlv": "^1.1.3",
- "fast-glob": "^3.3.0",
- "glob-parent": "^6.0.2",
- "is-glob": "^4.0.3",
- "jiti": "^1.19.1",
- "lilconfig": "^2.1.0",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "object-hash": "^3.0.0",
- "picocolors": "^1.0.0",
- "postcss": "^8.4.23",
- "postcss-import": "^15.1.0",
- "postcss-js": "^4.0.1",
- "postcss-load-config": "^4.0.1",
- "postcss-nested": "^6.0.1",
- "postcss-selector-parser": "^6.0.11",
- "resolve": "^1.22.2",
- "sucrase": "^3.32.0"
- },
- "bin": {
- "tailwind": "lib/cli.js",
- "tailwindcss": "lib/cli.js"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tailwindcss-animate": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
- "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
- "peerDependencies": {
- "tailwindcss": ">=3.0.0 || insiders"
- }
- },
- "node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/test-exclude": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
- "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "devOptional": true,
- "dependencies": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
- },
- "node_modules/thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/timers-ext": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
- "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
- "dev": true,
- "dependencies": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
- }
- },
- "node_modules/tippy.js": {
- "version": "6.3.7",
- "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz",
- "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==",
- "dependencies": {
- "@popperjs/core": "^2.9.0"
- }
- },
- "node_modules/tmpl": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
- "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "devOptional": true
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "devOptional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/tough-cookie": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
- "dev": true,
- "dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "node_modules/trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/trim-trailing-lines": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz",
- "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/trough": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
- "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/ts-api-utils": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
- "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
- "devOptional": true,
- "engines": {
- "node": ">=16.13.0"
- },
- "peerDependencies": {
- "typescript": ">=4.2.0"
- }
- },
- "node_modules/ts-interface-checker": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
- "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
- },
- "node_modules/ts-node": {
- "version": "10.9.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
- "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
- "devOptional": true,
- "dependencies": {
- "@cspotcode/source-map-support": "^0.8.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.1",
- "yn": "3.1.1"
- },
- "bin": {
- "ts-node": "dist/bin.js",
- "ts-node-cwd": "dist/bin-cwd.js",
- "ts-node-esm": "dist/bin-esm.js",
- "ts-node-script": "dist/bin-script.js",
- "ts-node-transpile-only": "dist/bin-transpile.js",
- "ts-script": "dist/bin-script-deprecated.js"
- },
- "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
- }
- }
- },
- "node_modules/ts-node/node_modules/arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "devOptional": true
- },
- "node_modules/tsconfig-paths": {
- "version": "3.15.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
- "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
- "dev": true,
- "dependencies": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- }
- },
- "node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/tsx": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz",
- "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==",
- "dev": true,
- "dependencies": {
- "esbuild": "~0.19.10",
- "get-tsconfig": "^4.7.2"
- },
- "bin": {
- "tsx": "dist/cli.mjs"
- },
- "engines": {
- "node": ">=18.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- }
- },
- "node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
- "dev": true
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "devOptional": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typed-array-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
- "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/uc.micro": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
- "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
- },
- "node_modules/unified": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
- "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "bail": "^2.0.0",
- "extend": "^3.0.0",
- "is-buffer": "^2.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-find-after": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz",
- "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-find-after/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-generated": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
- "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-is/node_modules/@types/unist": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
- "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
- },
- "node_modules/unist-util-position": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz",
- "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
- "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0",
- "unist-util-visit-parents": "^5.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents/node_modules/@types/unist": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
- "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ=="
- },
- "node_modules/unist-util-visit/node_modules/unist-util-is": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
- "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
- "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-is": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
- "devOptional": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
- "dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
- "node_modules/use-callback-ref": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz",
- "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/use-composed-ref": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
- "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/use-isomorphic-layout-effect": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
- "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/use-latest": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz",
- "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==",
- "dependencies": {
- "use-isomorphic-layout-effect": "^1.1.1"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/use-prefers-color-scheme": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/use-prefers-color-scheme/-/use-prefers-color-scheme-1.1.3.tgz",
- "integrity": "sha512-ZRgDfb5BFLum/Sud4SpZ+d1YcV+lRbsupw0qQ/rGy5kGrpE3KMUQgEQOKiQQSa4Wslex46n5fKFO+9FGMTosUQ==",
- "engines": {
- "node": ">=8",
- "npm": ">=5"
- },
- "peerDependencies": {
- "react": ">= 16.8.0"
- }
- },
- "node_modules/use-sidecar": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
- "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
- "dependencies": {
- "detect-node-es": "^1.1.0",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/uvu": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
- "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
- "dependencies": {
- "dequal": "^2.0.0",
- "diff": "^5.0.0",
- "kleur": "^4.0.3",
- "sade": "^1.7.3"
- },
- "bin": {
- "uvu": "bin.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/uvu/node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/uvu/node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/v8-compile-cache-lib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "devOptional": true
- },
- "node_modules/v8-to-istanbul": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
- "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==",
- "devOptional": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^2.0.0"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
- "node_modules/vfile": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
- "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "is-buffer": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-location": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz",
- "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
- "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-stringify-position": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/w3c-keyname": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
- "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="
- },
- "node_modules/w3c-xmlserializer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
- "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
- "dev": true,
- "dependencies": {
- "xml-name-validator": "^4.0.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/walker": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
- "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "devOptional": true,
- "dependencies": {
- "makeerror": "1.0.12"
- }
- },
- "node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
- "dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/web-namespaces": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
- "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/web-streams-polyfill": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz",
- "integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "node_modules/whatwg-encoding": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
- "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
- "dev": true,
- "dependencies": {
- "iconv-lite": "0.6.3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
- "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-builtin-type": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
- "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
- "dev": true,
- "dependencies": {
- "function.prototype.name": "^1.1.5",
- "has-tostringtag": "^1.0.0",
- "is-async-function": "^2.0.0",
- "is-date-object": "^1.0.5",
- "is-finalizationregistry": "^1.0.2",
- "is-generator-function": "^1.0.10",
- "is-regex": "^1.1.4",
- "is-weakref": "^1.0.2",
- "isarray": "^2.0.5",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.9"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-collection": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
- "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
- "dependencies": {
- "is-map": "^2.0.1",
- "is-set": "^2.0.1",
- "is-weakmap": "^2.0.1",
- "is-weakset": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
- "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.4",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
- },
- "node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs": {
- "name": "wrap-ansi",
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "node_modules/write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
- "devOptional": true,
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/write-file-atomic/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "devOptional": true
- },
- "node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "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
- }
- }
- },
- "node_modules/xml-name-validator": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
- "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
- "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
- "dev": true
- },
- "node_modules/y-prosemirror": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/y-prosemirror/-/y-prosemirror-1.2.1.tgz",
- "integrity": "sha512-czMBfB1eL2awqmOSxQM8cS/fsUOGE6fjvyPLInrh4crPxFiw67wDpwIW+EGBYKRa04sYbS0ScGj7ZgvWuDrmBQ==",
- "dependencies": {
- "lib0": "^0.2.42"
- },
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- },
- "peerDependencies": {
- "prosemirror-model": "^1.7.1",
- "prosemirror-state": "^1.2.3",
- "prosemirror-view": "^1.9.10",
- "y-protocols": "^1.0.1",
- "yjs": "^13.5.38"
- }
- },
- "node_modules/y-protocols": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz",
- "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==",
- "dependencies": {
- "lib0": "^0.2.85"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=8.0.0"
- },
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- },
- "peerDependencies": {
- "yjs": "^13.0.0"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "devOptional": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/yaml": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
- "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "devOptional": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "devOptional": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "devOptional": true
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "devOptional": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yjs": {
- "version": "13.6.14",
- "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.14.tgz",
- "integrity": "sha512-D+7KcUr0j+vBCUSKXXEWfA+bG4UQBviAwP3gYBhkstkgwy5+8diOPMx0iqLIOxNo/HxaREUimZRxqHGAHCL2BQ==",
- "dependencies": {
- "lib0": "^0.2.86"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=8.0.0"
- },
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "devOptional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/zod": {
- "version": "3.22.4",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz",
- "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==",
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
- },
- "node_modules/zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 821841a6..809126b6 100644
--- a/package.json
+++ b/package.json
@@ -1,104 +1,33 @@
{
"name": "libsql-studio",
"version": "0.3.1",
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "npm run db:migrate && next build",
- "start": "next start",
- "lint": "next lint",
- "tsc": "tsc --noEmit --skipLibCheck",
- "test": "jest",
- "test:coverage": "jest --coverage",
- "test:watch": "jest --watch",
- "db:generate": "drizzle-kit generate:sqlite",
- "db:migrate": "tsx src/db/migrate.ts",
- "generate-random-key": "tsx src/cli/generate-aes-key.ts",
- "staged": "npm run tsc && npm run lint && jest"
- },
+ "private": false,
+ "lisence": "MIT",
+ "workspaces": [
+ "./*",
+ "./config/*"
+ ],
"overrides": {
"@libsql/client": "^0.5.3"
},
- "dependencies": {
- "@aws-sdk/client-s3": "^3.540.0",
- "@blocknote/core": "^0.12.1",
- "@blocknote/react": "^0.12.2",
- "@codemirror/lang-sql": "^6.5.5",
- "@dnd-kit/core": "^6.1.0",
- "@dnd-kit/sortable": "^8.0.0",
- "@justmiracle/result": "^1.2.0",
- "@lezer/common": "^1.2.1",
- "@lezer/lr": "^1.4.0",
- "@libsql/client": "^0.5.3",
- "@lucia-auth/adapter-sqlite": "^3.0.1",
- "@radix-ui/react-alert-dialog": "^1.0.5",
- "@radix-ui/react-avatar": "^1.0.4",
- "@radix-ui/react-checkbox": "^1.0.4",
- "@radix-ui/react-context-menu": "^2.1.5",
- "@radix-ui/react-dialog": "^1.0.5",
- "@radix-ui/react-dropdown-menu": "^2.0.6",
- "@radix-ui/react-hover-card": "^1.0.7",
- "@radix-ui/react-icons": "^1.3.0",
- "@radix-ui/react-label": "^2.0.2",
- "@radix-ui/react-menubar": "^1.0.4",
- "@radix-ui/react-navigation-menu": "^1.1.4",
- "@radix-ui/react-popover": "^1.0.7",
- "@radix-ui/react-radio-group": "^1.1.3",
- "@radix-ui/react-scroll-area": "^1.0.5",
- "@radix-ui/react-select": "^2.0.0",
- "@radix-ui/react-separator": "^1.0.3",
- "@radix-ui/react-slot": "^1.0.2",
- "@radix-ui/react-toggle": "^1.0.3",
- "@radix-ui/react-toggle-group": "^1.0.4",
- "@radix-ui/react-tooltip": "^1.0.7",
- "@silevis/reactgrid": "^4.1.3",
- "@t3-oss/env-nextjs": "^0.9.2",
- "@uiw/codemirror-extensions-langs": "^4.21.24",
- "@uiw/codemirror-themes": "^4.21.21",
- "@uiw/react-codemirror": "^4.21.21",
- "arctic": "^1.2.1",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.0",
- "cmdk": "^0.2.0",
- "cookies-next": "^4.1.1",
- "deep-equal": "^2.2.3",
- "dotenv": "^16.4.5",
- "drizzle-orm": "^0.30.1",
- "eslint-plugin-jest": "^27.6.3",
- "lucia": "^3.1.1",
- "lucide-react": "^0.309.0",
- "magic-bytes.js": "^1.10.0",
- "next": "14.0.4",
- "oslo": "^1.1.3",
- "react": "^18",
- "react-dom": "^18",
- "react-resizable-panels": "^1.0.9",
- "sonner": "^1.4.41",
- "sql-query-identifier": "^2.6.0",
- "tailwind-merge": "^2.2.0",
- "tailwindcss-animate": "^1.0.7",
- "zod": "^3.22.4"
+ "scripts": {
+ "typecheck": "turbo run typecheck",
+ "build": "turbo run build",
+ "dev": "turbo run dev",
+ "lint": "turbo run lint",
+ "lint:fix": "turbo run lint:fix",
+ "format": "turbo run format",
+ "format:fix": "turbo run format:fix",
+ "test": "turbo run test",
+ "test:watch": "turbo run test:watch",
+ "staged": "turbo run staged --cache-dir=.turbo"
},
"devDependencies": {
- "@testing-library/jest-dom": "^6.2.1",
- "@testing-library/react": "^14.1.2",
- "@types/deep-equal": "^1.0.4",
- "@types/jest": "^29.5.11",
- "@types/node": "^20",
- "@types/react": "^18",
- "@types/react-dom": "^18",
- "@typescript-eslint/eslint-plugin": "^6.21.0",
- "@typescript-eslint/parser": "^6.21.0",
- "autoprefixer": "^10.0.1",
- "drizzle-kit": "^0.20.14",
- "eslint": "^8",
- "eslint-config-next": "14.0.4",
- "jest": "^29.7.0",
- "jest-environment-jsdom": "^29.7.0",
- "postcss": "^8",
- "tailwindcss": "^3.3.0",
- "ts-node": "^10.9.2",
- "tsx": "^4.7.1",
+ "@types/eslint": "^8.56.9",
+ "@types/node": "^20.12.7",
+ "eslint": "^8.57.0",
+ "prettier": "^3.2.5",
+ "turbo": "^1.13.2",
"typescript": "^5"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 00000000..c048b9d5
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,13245 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ devDependencies:
+ '@types/eslint':
+ specifier: ^8.56.9
+ version: 8.56.9
+ '@types/node':
+ specifier: ^20.12.7
+ version: 20.12.7
+ eslint:
+ specifier: ^8.57.0
+ version: 8.57.0
+ prettier:
+ specifier: ^3.2.5
+ version: 3.2.5
+ turbo:
+ specifier: ^1.13.2
+ version: 1.13.2
+ typescript:
+ specifier: ^5
+ version: 5.4.5
+
+ config/eslint:
+ devDependencies:
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^7.6.0
+ version: 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/parser':
+ specifier: ^7.6.0
+ version: 7.6.0(eslint@8.57.0)(typescript@5.4.5)
+ eslint-config-next:
+ specifier: ^14.1.4
+ version: 14.2.1(eslint@8.57.0)(typescript@5.4.5)
+ eslint-config-prettier:
+ specifier: ^9.1.0
+ version: 9.1.0(eslint@8.57.0)
+ eslint-plugin-eslint-comments:
+ specifier: ^3.2.0
+ version: 3.2.0(eslint@8.57.0)
+ eslint-plugin-react:
+ specifier: ^7.34.1
+ version: 7.34.1(eslint@8.57.0)
+ eslint-plugin-react-hooks:
+ specifier: ^4.6.0
+ version: 4.6.0(eslint@8.57.0)
+
+ config/tailwind:
+ devDependencies:
+ tailwindcss:
+ specifier: ^3.4.3
+ version: 3.4.3(ts-node@10.9.2)
+ tailwindcss-animate:
+ specifier: ^1.0.7
+ version: 1.0.7(tailwindcss@3.4.3)
+
+ config/tsconfig: {}
+
+ gui:
+ dependencies:
+ '@blocknote/core':
+ specifier: ^0.12.1
+ version: 0.12.4
+ '@blocknote/react':
+ specifier: ^0.12.2
+ version: 0.12.4(@tiptap/pm@2.3.0)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@codemirror/commands':
+ specifier: ^6.3.3
+ version: 6.3.3
+ '@codemirror/lang-sql':
+ specifier: ^6.5.5
+ version: 6.6.3(@codemirror/view@6.26.3)
+ '@codemirror/view':
+ specifier: ^6.26.3
+ version: 6.26.3
+ '@dnd-kit/core':
+ specifier: ^6.1.0
+ version: 6.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@dnd-kit/sortable':
+ specifier: ^8.0.0
+ version: 8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0)
+ '@justmiracle/result':
+ specifier: ^1.2.0
+ version: 1.2.0
+ '@lezer/common':
+ specifier: ^1.2.1
+ version: 1.2.1
+ '@lezer/highlight':
+ specifier: ^1.2.0
+ version: 1.2.0
+ '@lezer/lr':
+ specifier: ^1.4.0
+ version: 1.4.0
+ '@libsql/client':
+ specifier: ^0.5.3
+ version: 0.5.6
+ '@radix-ui/react-alert-dialog':
+ specifier: ^1.0.5
+ version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-avatar':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-checkbox':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-context-menu':
+ specifier: ^2.1.5
+ version: 2.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-dialog':
+ specifier: ^1.0.5
+ version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-dropdown-menu':
+ specifier: ^2.0.6
+ version: 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-hover-card':
+ specifier: ^1.0.7
+ version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-icons':
+ specifier: ^1.3.0
+ version: 1.3.0(react@18.2.0)
+ '@radix-ui/react-label':
+ specifier: ^2.0.2
+ version: 2.0.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-menubar':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-navigation-menu':
+ specifier: ^1.1.4
+ version: 1.1.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-popover':
+ specifier: ^1.0.7
+ version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-radio-group':
+ specifier: ^1.1.3
+ version: 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-scroll-area':
+ specifier: ^1.0.5
+ version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-select':
+ specifier: ^2.0.0
+ version: 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-separator':
+ specifier: ^1.0.3
+ version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot':
+ specifier: ^1.0.2
+ version: 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-toggle':
+ specifier: ^1.0.3
+ version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle-group':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-tooltip':
+ specifier: ^1.0.7
+ version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@tiptap/core':
+ specifier: ^2.3.0
+ version: 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/react':
+ specifier: ^2.3.0
+ version: 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(react-dom@18.2.0)(react@18.2.0)
+ '@uiw/codemirror-extensions-langs':
+ specifier: ^4.21.24
+ version: 4.21.25(@codemirror/autocomplete@6.16.0)(@codemirror/language-data@6.5.0)(@codemirror/language@6.10.1)(@codemirror/legacy-modes@6.4.0)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.14)(@lezer/lr@1.4.0)
+ '@uiw/codemirror-themes':
+ specifier: ^4.21.21
+ version: 4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)
+ '@uiw/react-codemirror':
+ specifier: ^4.21.21
+ version: 4.21.25(@babel/runtime@7.24.4)(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.26.3)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0)
+ class-variance-authority:
+ specifier: ^0.7.0
+ version: 0.7.0
+ clsx:
+ specifier: ^2.1.0
+ version: 2.1.0
+ cmdk:
+ specifier: ^0.2.0
+ version: 0.2.1(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ cookies-next:
+ specifier: ^4.1.1
+ version: 4.1.1
+ deep-equal:
+ specifier: ^2.2.3
+ version: 2.2.3
+ lucide-react:
+ specifier: ^0.309.0
+ version: 0.309.0(react@18.2.0)
+ react:
+ specifier: ^18.2.0
+ version: 18.2.0
+ react-dom:
+ specifier: ^18.2.0
+ version: 18.2.0(react@18.2.0)
+ react-resizable-panels:
+ specifier: ^1.0.9
+ version: 1.0.10(react-dom@18.2.0)(react@18.2.0)
+ sonner:
+ specifier: ^1.4.41
+ version: 1.4.41(react-dom@18.2.0)(react@18.2.0)
+ sql-query-identifier:
+ specifier: ^2.6.0
+ version: 2.7.0
+ tailwind-merge:
+ specifier: ^2.2.2
+ version: 2.2.2
+ devDependencies:
+ '@libsqlstudio/tailwind':
+ specifier: workspace:*
+ version: link:../config/tailwind
+ '@libsqlstudio/tsconfig':
+ specifier: workspace:*
+ version: link:../config/tsconfig
+ '@types/deep-equal':
+ specifier: ^1.0.4
+ version: 1.0.4
+ '@types/jest':
+ specifier: ^29.5.11
+ version: 29.5.12
+ '@types/react':
+ specifier: ^18.2.66
+ version: 18.2.78
+ '@types/react-dom':
+ specifier: ^18.2.22
+ version: 18.2.25
+ '@vitejs/plugin-react':
+ specifier: ^4.2.1
+ version: 4.2.1(vite@5.2.8)
+ autoprefixer:
+ specifier: ^10.4.19
+ version: 10.4.19(postcss@8.4.38)
+ eslint-config-libsqlstudio:
+ specifier: workspace:*
+ version: link:../config/eslint
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ jest-environment-jsdom:
+ specifier: ^29.7.0
+ version: 29.7.0
+ postcss:
+ specifier: ^8.4.38
+ version: 8.4.38
+ tailwindcss:
+ specifier: ^3.4.3
+ version: 3.4.3(ts-node@10.9.2)
+ ts-jest:
+ specifier: ^29.1.2
+ version: 29.1.2(@babel/core@7.24.4)(esbuild@0.19.12)(jest@29.7.0)(typescript@5.4.5)
+ tsup:
+ specifier: ^8.0.2
+ version: 8.0.2(postcss@8.4.38)(typescript@5.4.5)
+ vite:
+ specifier: ^5.2.0
+ version: 5.2.8(@types/node@20.12.7)
+ vite-tsconfig-paths:
+ specifier: ^4.3.2
+ version: 4.3.2(typescript@5.4.5)(vite@5.2.8)
+
+ studio:
+ dependencies:
+ '@aws-sdk/client-s3':
+ specifier: ^3.540.0
+ version: 3.554.0
+ '@blocknote/core':
+ specifier: ^0.12.1
+ version: 0.12.4
+ '@blocknote/react':
+ specifier: ^0.12.2
+ version: 0.12.4(@tiptap/pm@2.3.0)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@codemirror/lang-sql':
+ specifier: ^6.5.5
+ version: 6.6.3(@codemirror/view@6.26.3)
+ '@dnd-kit/core':
+ specifier: ^6.1.0
+ version: 6.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@dnd-kit/sortable':
+ specifier: ^8.0.0
+ version: 8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0)
+ '@justmiracle/result':
+ specifier: ^1.2.0
+ version: 1.2.0
+ '@lezer/common':
+ specifier: ^1.2.1
+ version: 1.2.1
+ '@lezer/lr':
+ specifier: ^1.4.0
+ version: 1.4.0
+ '@libsql/client':
+ specifier: ^0.5.3
+ version: 0.5.6
+ '@libsqlstudio/gui':
+ specifier: workspace:*
+ version: link:../gui
+ '@lucia-auth/adapter-sqlite':
+ specifier: ^3.0.1
+ version: 3.0.1(@libsql/client@0.5.6)(lucia@3.1.1)
+ '@radix-ui/react-alert-dialog':
+ specifier: ^1.0.5
+ version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-avatar':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-checkbox':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-context-menu':
+ specifier: ^2.1.5
+ version: 2.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-dialog':
+ specifier: ^1.0.5
+ version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-dropdown-menu':
+ specifier: ^2.0.6
+ version: 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-hover-card':
+ specifier: ^1.0.7
+ version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-icons':
+ specifier: ^1.3.0
+ version: 1.3.0(react@18.2.0)
+ '@radix-ui/react-label':
+ specifier: ^2.0.2
+ version: 2.0.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-menubar':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-navigation-menu':
+ specifier: ^1.1.4
+ version: 1.1.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-popover':
+ specifier: ^1.0.7
+ version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-radio-group':
+ specifier: ^1.1.3
+ version: 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-scroll-area':
+ specifier: ^1.0.5
+ version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-select':
+ specifier: ^2.0.0
+ version: 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-separator':
+ specifier: ^1.0.3
+ version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot':
+ specifier: ^1.0.2
+ version: 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-toggle':
+ specifier: ^1.0.3
+ version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle-group':
+ specifier: ^1.0.4
+ version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-tooltip':
+ specifier: ^1.0.7
+ version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@silevis/reactgrid':
+ specifier: ^4.1.3
+ version: 4.1.4(react-dom@18.2.0)(react@18.2.0)
+ '@t3-oss/env-nextjs':
+ specifier: ^0.9.2
+ version: 0.9.2(typescript@5.4.5)(zod@3.22.4)
+ '@uiw/codemirror-extensions-langs':
+ specifier: ^4.21.24
+ version: 4.21.25(@codemirror/autocomplete@6.16.0)(@codemirror/language-data@6.5.0)(@codemirror/language@6.10.1)(@codemirror/legacy-modes@6.4.0)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.14)(@lezer/lr@1.4.0)
+ '@uiw/codemirror-themes':
+ specifier: ^4.21.21
+ version: 4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)
+ '@uiw/react-codemirror':
+ specifier: ^4.21.21
+ version: 4.21.25(@babel/runtime@7.24.4)(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.26.3)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0)
+ arctic:
+ specifier: ^1.2.1
+ version: 1.5.0
+ class-variance-authority:
+ specifier: ^0.7.0
+ version: 0.7.0
+ clsx:
+ specifier: ^2.1.0
+ version: 2.1.0
+ cmdk:
+ specifier: ^0.2.0
+ version: 0.2.1(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ cookies-next:
+ specifier: ^4.1.1
+ version: 4.1.1
+ deep-equal:
+ specifier: ^2.2.3
+ version: 2.2.3
+ dotenv:
+ specifier: ^16.4.5
+ version: 16.4.5
+ drizzle-orm:
+ specifier: ^0.30.1
+ version: 0.30.8(@libsql/client@0.5.6)(@types/react@18.2.78)(react@18.2.0)
+ eslint-plugin-jest:
+ specifier: ^27.6.3
+ version: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5)
+ lucia:
+ specifier: ^3.1.1
+ version: 3.1.1
+ lucide-react:
+ specifier: ^0.309.0
+ version: 0.309.0(react@18.2.0)
+ magic-bytes.js:
+ specifier: ^1.10.0
+ version: 1.10.0
+ next:
+ specifier: 14.2.1
+ version: 14.2.1(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0)
+ oslo:
+ specifier: ^1.1.3
+ version: 1.2.0
+ react:
+ specifier: ^18
+ version: 18.2.0
+ react-dom:
+ specifier: ^18
+ version: 18.2.0(react@18.2.0)
+ react-resizable-panels:
+ specifier: ^1.0.9
+ version: 1.0.10(react-dom@18.2.0)(react@18.2.0)
+ sonner:
+ specifier: ^1.4.41
+ version: 1.4.41(react-dom@18.2.0)(react@18.2.0)
+ sql-query-identifier:
+ specifier: ^2.6.0
+ version: 2.7.0
+ tailwind-merge:
+ specifier: ^2.2.2
+ version: 2.2.2
+ tailwindcss-animate:
+ specifier: ^1.0.7
+ version: 1.0.7(tailwindcss@3.4.3)
+ zod:
+ specifier: ^3.22.4
+ version: 3.22.4
+ devDependencies:
+ '@testing-library/jest-dom':
+ specifier: ^6.2.1
+ version: 6.4.2(@types/jest@29.5.12)(jest@29.7.0)
+ '@testing-library/react':
+ specifier: ^14.1.2
+ version: 14.3.1(react-dom@18.2.0)(react@18.2.0)
+ '@types/deep-equal':
+ specifier: ^1.0.4
+ version: 1.0.4
+ '@types/jest':
+ specifier: ^29.5.11
+ version: 29.5.12
+ '@types/node':
+ specifier: ^20
+ version: 20.12.7
+ '@types/react':
+ specifier: ^18
+ version: 18.2.78
+ '@types/react-dom':
+ specifier: ^18
+ version: 18.2.25
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^6.21.0
+ version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/parser':
+ specifier: ^6.21.0
+ version: 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ autoprefixer:
+ specifier: ^10.4.19
+ version: 10.4.19(postcss@8.4.38)
+ drizzle-kit:
+ specifier: ^0.20.14
+ version: 0.20.14
+ eslint:
+ specifier: ^8
+ version: 8.57.0
+ eslint-config-next:
+ specifier: 14.0.4
+ version: 14.0.4(eslint@8.57.0)(typescript@5.4.5)
+ gui:
+ specifier: ^0.15.3
+ version: 0.15.3
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ jest-environment-jsdom:
+ specifier: ^29.7.0
+ version: 29.7.0
+ postcss:
+ specifier: ^8.4.38
+ version: 8.4.38
+ prettier:
+ specifier: ^3.2.5
+ version: 3.2.5
+ tailwindcss:
+ specifier: ^3.4.3
+ version: 3.4.3(ts-node@10.9.2)
+ ts-node:
+ specifier: ^10.9.2
+ version: 10.9.2(@types/node@20.12.7)(typescript@5.4.5)
+ tsx:
+ specifier: ^4.7.1
+ version: 4.7.2
+ typescript:
+ specifier: ^5
+ version: 5.4.5
+
+packages:
+
+ /@aashutoshrathi/word-wrap@1.2.6:
+ resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
+ engines: {node: '>=0.10.0'}
+
+ /@adobe/css-tools@4.3.3:
+ resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==}
+ dev: true
+
+ /@alloc/quick-lru@5.2.0:
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ /@ampproject/remapping@2.3.0:
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ /@aws-crypto/crc32@3.0.0:
+ resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.535.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/crc32c@3.0.0:
+ resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.535.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/ie11-detection@3.0.0:
+ resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha1-browser@3.0.0:
+ resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-locate-window': 3.535.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-browser@3.0.0:
+ resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-locate-window': 3.535.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-js@3.0.0:
+ resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.535.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/supports-web-crypto@3.0.0:
+ resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/util@3.0.0:
+ resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/client-s3@3.554.0:
+ resolution: {integrity: sha512-d5TKKtGWhN0vl9QovUFrf3UsM7jgFQkowDPx1O+E/yeQUj1FBDOoRfDCcQOKW/9ghloI6k7f0bBpNxdd+x0oKA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha1-browser': 3.0.0
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/core': 3.554.0
+ '@aws-sdk/credential-provider-node': 3.554.0
+ '@aws-sdk/middleware-bucket-endpoint': 3.535.0
+ '@aws-sdk/middleware-expect-continue': 3.535.0
+ '@aws-sdk/middleware-flexible-checksums': 3.535.0
+ '@aws-sdk/middleware-host-header': 3.535.0
+ '@aws-sdk/middleware-location-constraint': 3.535.0
+ '@aws-sdk/middleware-logger': 3.535.0
+ '@aws-sdk/middleware-recursion-detection': 3.535.0
+ '@aws-sdk/middleware-sdk-s3': 3.552.0
+ '@aws-sdk/middleware-signing': 3.552.0
+ '@aws-sdk/middleware-ssec': 3.537.0
+ '@aws-sdk/middleware-user-agent': 3.540.0
+ '@aws-sdk/region-config-resolver': 3.535.0
+ '@aws-sdk/signature-v4-multi-region': 3.552.0
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-endpoints': 3.540.0
+ '@aws-sdk/util-user-agent-browser': 3.535.0
+ '@aws-sdk/util-user-agent-node': 3.535.0
+ '@aws-sdk/xml-builder': 3.535.0
+ '@smithy/config-resolver': 2.2.0
+ '@smithy/core': 1.4.2
+ '@smithy/eventstream-serde-browser': 2.2.0
+ '@smithy/eventstream-serde-config-resolver': 2.2.0
+ '@smithy/eventstream-serde-node': 2.2.0
+ '@smithy/fetch-http-handler': 2.5.0
+ '@smithy/hash-blob-browser': 2.2.0
+ '@smithy/hash-node': 2.2.0
+ '@smithy/hash-stream-node': 2.2.0
+ '@smithy/invalid-dependency': 2.2.0
+ '@smithy/md5-js': 2.2.0
+ '@smithy/middleware-content-length': 2.2.0
+ '@smithy/middleware-endpoint': 2.5.1
+ '@smithy/middleware-retry': 2.3.1
+ '@smithy/middleware-serde': 2.3.0
+ '@smithy/middleware-stack': 2.2.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/node-http-handler': 2.5.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/url-parser': 2.2.0
+ '@smithy/util-base64': 2.3.0
+ '@smithy/util-body-length-browser': 2.2.0
+ '@smithy/util-body-length-node': 2.3.0
+ '@smithy/util-defaults-mode-browser': 2.2.1
+ '@smithy/util-defaults-mode-node': 2.3.1
+ '@smithy/util-endpoints': 1.2.0
+ '@smithy/util-retry': 2.2.0
+ '@smithy/util-stream': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ '@smithy/util-waiter': 2.2.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso-oidc@3.554.0(@aws-sdk/credential-provider-node@3.554.0):
+ resolution: {integrity: sha512-M86rkiRqbZBF5VyfTQ/vttry9VSoQkZ1oCqYF+SAGlXmD0Of8587yRSj2M4rYe0Uj7nRQIfSnhDYp1UzsZeRfQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@aws-sdk/credential-provider-node': ^3.554.0
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/core': 3.554.0
+ '@aws-sdk/credential-provider-node': 3.554.0
+ '@aws-sdk/middleware-host-header': 3.535.0
+ '@aws-sdk/middleware-logger': 3.535.0
+ '@aws-sdk/middleware-recursion-detection': 3.535.0
+ '@aws-sdk/middleware-user-agent': 3.540.0
+ '@aws-sdk/region-config-resolver': 3.535.0
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-endpoints': 3.540.0
+ '@aws-sdk/util-user-agent-browser': 3.535.0
+ '@aws-sdk/util-user-agent-node': 3.535.0
+ '@smithy/config-resolver': 2.2.0
+ '@smithy/core': 1.4.2
+ '@smithy/fetch-http-handler': 2.5.0
+ '@smithy/hash-node': 2.2.0
+ '@smithy/invalid-dependency': 2.2.0
+ '@smithy/middleware-content-length': 2.2.0
+ '@smithy/middleware-endpoint': 2.5.1
+ '@smithy/middleware-retry': 2.3.1
+ '@smithy/middleware-serde': 2.3.0
+ '@smithy/middleware-stack': 2.2.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/node-http-handler': 2.5.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/url-parser': 2.2.0
+ '@smithy/util-base64': 2.3.0
+ '@smithy/util-body-length-browser': 2.2.0
+ '@smithy/util-body-length-node': 2.3.0
+ '@smithy/util-defaults-mode-browser': 2.2.1
+ '@smithy/util-defaults-mode-node': 2.3.1
+ '@smithy/util-endpoints': 1.2.0
+ '@smithy/util-middleware': 2.2.0
+ '@smithy/util-retry': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso@3.554.0:
+ resolution: {integrity: sha512-yj6CgIxCT3UwMumEO481KH4QvwArkAPzD7Xvwe1QKgJATc9bKNEo/FxV8LfnWIJ7nOtMDxbNxYLMXH/Fs1qGaQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/core': 3.554.0
+ '@aws-sdk/middleware-host-header': 3.535.0
+ '@aws-sdk/middleware-logger': 3.535.0
+ '@aws-sdk/middleware-recursion-detection': 3.535.0
+ '@aws-sdk/middleware-user-agent': 3.540.0
+ '@aws-sdk/region-config-resolver': 3.535.0
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-endpoints': 3.540.0
+ '@aws-sdk/util-user-agent-browser': 3.535.0
+ '@aws-sdk/util-user-agent-node': 3.535.0
+ '@smithy/config-resolver': 2.2.0
+ '@smithy/core': 1.4.2
+ '@smithy/fetch-http-handler': 2.5.0
+ '@smithy/hash-node': 2.2.0
+ '@smithy/invalid-dependency': 2.2.0
+ '@smithy/middleware-content-length': 2.2.0
+ '@smithy/middleware-endpoint': 2.5.1
+ '@smithy/middleware-retry': 2.3.1
+ '@smithy/middleware-serde': 2.3.0
+ '@smithy/middleware-stack': 2.2.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/node-http-handler': 2.5.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/url-parser': 2.2.0
+ '@smithy/util-base64': 2.3.0
+ '@smithy/util-body-length-browser': 2.2.0
+ '@smithy/util-body-length-node': 2.3.0
+ '@smithy/util-defaults-mode-browser': 2.2.1
+ '@smithy/util-defaults-mode-node': 2.3.1
+ '@smithy/util-endpoints': 1.2.0
+ '@smithy/util-middleware': 2.2.0
+ '@smithy/util-retry': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts@3.554.0(@aws-sdk/credential-provider-node@3.554.0):
+ resolution: {integrity: sha512-EhaA6T0M0DNg5M8TCF1a7XJI5D/ZxAF3dgVIchyF98iNzjYgl/7U8K6hJay2A11aFvVu70g46xYMpz3Meky4wQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@aws-sdk/credential-provider-node': ^3.554.0
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/core': 3.554.0
+ '@aws-sdk/credential-provider-node': 3.554.0
+ '@aws-sdk/middleware-host-header': 3.535.0
+ '@aws-sdk/middleware-logger': 3.535.0
+ '@aws-sdk/middleware-recursion-detection': 3.535.0
+ '@aws-sdk/middleware-user-agent': 3.540.0
+ '@aws-sdk/region-config-resolver': 3.535.0
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-endpoints': 3.540.0
+ '@aws-sdk/util-user-agent-browser': 3.535.0
+ '@aws-sdk/util-user-agent-node': 3.535.0
+ '@smithy/config-resolver': 2.2.0
+ '@smithy/core': 1.4.2
+ '@smithy/fetch-http-handler': 2.5.0
+ '@smithy/hash-node': 2.2.0
+ '@smithy/invalid-dependency': 2.2.0
+ '@smithy/middleware-content-length': 2.2.0
+ '@smithy/middleware-endpoint': 2.5.1
+ '@smithy/middleware-retry': 2.3.1
+ '@smithy/middleware-serde': 2.3.0
+ '@smithy/middleware-stack': 2.2.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/node-http-handler': 2.5.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/url-parser': 2.2.0
+ '@smithy/util-base64': 2.3.0
+ '@smithy/util-body-length-browser': 2.2.0
+ '@smithy/util-body-length-node': 2.3.0
+ '@smithy/util-defaults-mode-browser': 2.2.1
+ '@smithy/util-defaults-mode-node': 2.3.1
+ '@smithy/util-endpoints': 1.2.0
+ '@smithy/util-middleware': 2.2.0
+ '@smithy/util-retry': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/core@3.554.0:
+ resolution: {integrity: sha512-JrG7ToTLeNf+/S3IiCUPVw9jEDB0DXl5ho8n/HwOa946mv+QyCepCuV2U/8f/1KAX0mD8Ufm/E4/cbCbFHgbSg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/core': 1.4.2
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/signature-v4': 2.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ fast-xml-parser: 4.2.5
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-env@3.535.0:
+ resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-http@3.552.0:
+ resolution: {integrity: sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/fetch-http-handler': 2.5.0
+ '@smithy/node-http-handler': 2.5.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/util-stream': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-ini@3.554.0(@aws-sdk/credential-provider-node@3.554.0):
+ resolution: {integrity: sha512-BQenhg43S6TMJHxrdjDVdVF+HH5tA1op9ZYLyJrvV5nn7CCO4kyAkkOuSAv1NkL+RZsIkW0/vHTXwQOQw3cUsg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/credential-provider-env': 3.535.0
+ '@aws-sdk/credential-provider-process': 3.535.0
+ '@aws-sdk/credential-provider-sso': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/credential-provider-web-identity': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/types': 3.535.0
+ '@smithy/credential-provider-imds': 2.3.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - '@aws-sdk/credential-provider-node'
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node@3.554.0:
+ resolution: {integrity: sha512-poX/+2OE3oxqp4f5MiaJh251p8l+bzcFwgcDBwz0e2rcpvMSYl9jw4AvGnCiG2bmf9yhNJdftBiS1A+KjxV0qA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.535.0
+ '@aws-sdk/credential-provider-http': 3.552.0
+ '@aws-sdk/credential-provider-ini': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/credential-provider-process': 3.535.0
+ '@aws-sdk/credential-provider-sso': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/credential-provider-web-identity': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/types': 3.535.0
+ '@smithy/credential-provider-imds': 2.3.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process@3.535.0:
+ resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-sso@3.554.0(@aws-sdk/credential-provider-node@3.554.0):
+ resolution: {integrity: sha512-8QPpwBA31i/fZ7lDZJC4FA9EdxLg5SJ8sPB2qLSjp5UTGTYL2HRl0Eznkb7DXyp/wImsR/HFR1NxuFCCVotLCg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.554.0
+ '@aws-sdk/token-providers': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/types': 3.535.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - '@aws-sdk/credential-provider-node'
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity@3.554.0(@aws-sdk/credential-provider-node@3.554.0):
+ resolution: {integrity: sha512-HN54DzLjepw5ZWSF9ycGevhFTyg6pjLuLKy5Y8t/f1jFDComzYdGEDe0cdV9YO653W3+PQwZZGz09YVygGYBLg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/types': 3.535.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - '@aws-sdk/credential-provider-node'
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/middleware-bucket-endpoint@3.535.0:
+ resolution: {integrity: sha512-7sijlfQsc4UO9Fsl11mU26Y5f9E7g6UoNg/iJUBpC5pgvvmdBRO5UEhbB/gnqvOEPsBXyhmfzbstebq23Qdz7A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-arn-parser': 3.535.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-config-provider': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-expect-continue@3.535.0:
+ resolution: {integrity: sha512-hFKyqUBky0NWCVku8iZ9+PACehx0p6vuMw5YnZf8FVgHP0fode0b/NwQY6UY7oor/GftvRsAlRUAWGNFEGUpwA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-flexible-checksums@3.535.0:
+ resolution: {integrity: sha512-rBIzldY9jjRATxICDX7t77aW6ctqmVDgnuAOgbVT5xgHftt4o7PGWKoMvl/45hYqoQgxVFnCBof9bxkqSBebVA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@aws-crypto/crc32c': 3.0.0
+ '@aws-sdk/types': 3.535.0
+ '@smithy/is-array-buffer': 2.2.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-host-header@3.535.0:
+ resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-location-constraint@3.535.0:
+ resolution: {integrity: sha512-SxfS9wfidUZZ+WnlKRTCRn3h+XTsymXRXPJj8VV6hNRNeOwzNweoG3YhQbTowuuNfXf89m9v6meYkBBtkdacKw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-logger@3.535.0:
+ resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection@3.535.0:
+ resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-s3@3.552.0:
+ resolution: {integrity: sha512-9KzOqsbwJJuQcpmrpkkIftjPahB1bsrcWalYzcVqKCgHCylhkSHW2tX+uGHRnvAl9iobQD5D7LUrS+cv0NeQ/Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-arn-parser': 3.535.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/signature-v4': 2.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/util-config-provider': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-signing@3.552.0:
+ resolution: {integrity: sha512-ZjOrlEmwjhbmkINa4Zx9LJh+xb/kgEiUrcfud2kq/r8ath1Nv1/4zalI9jHnou1J+R+yS+FQlXLXHSZ7vqyFbA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/signature-v4': 2.3.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-middleware': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-ssec@3.537.0:
+ resolution: {integrity: sha512-2QWMrbwd5eBy5KCYn9a15JEWBgrK2qFEKQN2lqb/6z0bhtevIOxIRfC99tzvRuPt6nixFQ+ynKuBjcfT4ZFrdQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-user-agent@3.540.0:
+ resolution: {integrity: sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@aws-sdk/util-endpoints': 3.540.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/region-config-resolver@3.535.0:
+ resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-config-provider': 2.3.0
+ '@smithy/util-middleware': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/signature-v4-multi-region@3.552.0:
+ resolution: {integrity: sha512-cC11/5ahp+LaBCq7cR+51AM2ftf6m9diRd2oWkbEpjSiEKQzZRAltUPZAJM6NXGypmDODQDJphLGt45tvS+8kg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-sdk-s3': 3.552.0
+ '@aws-sdk/types': 3.535.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/signature-v4': 2.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/token-providers@3.554.0(@aws-sdk/credential-provider-node@3.554.0):
+ resolution: {integrity: sha512-KMMQ5Cw0FUPL9H8g69Lp08xtzRo7r/MK+lBV6LznWBbCP/NwtZ8awVHaPy2P31z00cWtu9MYkUTviWPqJTaBvg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso-oidc': 3.554.0(@aws-sdk/credential-provider-node@3.554.0)
+ '@aws-sdk/types': 3.535.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - '@aws-sdk/credential-provider-node'
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/types@3.535.0:
+ resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-arn-parser@3.535.0:
+ resolution: {integrity: sha512-smVo29nUPAOprp8Z5Y3GHuhiOtw6c8/EtLCm5AVMtRsTPw4V414ZXL2H66tzmb5kEeSzQlbfBSBEdIFZoxO9kg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-endpoints@3.540.0:
+ resolution: {integrity: sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-endpoints': 1.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-locate-window@3.535.0:
+ resolution: {integrity: sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser@3.535.0:
+ resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==}
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/types': 2.12.0
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-node@3.535.0:
+ resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/types': 3.535.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-utf8-browser@3.259.0:
+ resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/xml-builder@3.535.0:
+ resolution: {integrity: sha512-VXAq/Jz8KIrU84+HqsOJhIKZqG0PNTdi6n6PFQ4xJf44ZQHD/5C7ouH4qCFX5XgZXcgbRIcMVVYGC6Jye0dRng==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@babel/code-frame@7.24.2:
+ resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.24.2
+ picocolors: 1.0.0
+
+ /@babel/compat-data@7.24.4:
+ resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/core@7.24.4:
+ resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.24.2
+ '@babel/generator': 7.24.4
+ '@babel/helper-compilation-targets': 7.23.6
+ '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4)
+ '@babel/helpers': 7.24.4
+ '@babel/parser': 7.24.4
+ '@babel/template': 7.24.0
+ '@babel/traverse': 7.24.1
+ '@babel/types': 7.24.0
+ convert-source-map: 2.0.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.24.4:
+ resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.0
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 2.5.2
+
+ /@babel/helper-compilation-targets@7.23.6:
+ resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/compat-data': 7.24.4
+ '@babel/helper-validator-option': 7.23.5
+ browserslist: 4.23.0
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ /@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'}
+ dependencies:
+ '@babel/template': 7.24.0
+ '@babel/types': 7.24.0
+
+ /@babel/helper-hoist-variables@7.22.5:
+ resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@babel/helper-module-imports@7.24.3:
+ resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-environment-visitor': 7.22.20
+ '@babel/helper-module-imports': 7.24.3
+ '@babel/helper-simple-access': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/helper-validator-identifier': 7.22.20
+
+ /@babel/helper-plugin-utils@7.24.0:
+ resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-simple-access@7.22.5:
+ resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@babel/helper-split-export-declaration@7.22.6:
+ resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@babel/helper-string-parser@7.24.1:
+ resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
+ 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.23.5:
+ resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helpers@7.24.4:
+ resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.24.0
+ '@babel/traverse': 7.24.1
+ '@babel/types': 7.24.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/highlight@7.24.2:
+ resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ picocolors: 1.0.0
+
+ /@babel/parser@7.24.4:
+ resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4):
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4):
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4):
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4):
+ resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4):
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4):
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4):
+ resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4):
+ resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+
+ /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4):
+ resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+ dev: true
+
+ /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.4):
+ resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/helper-plugin-utils': 7.24.0
+ dev: true
+
+ /@babel/runtime@7.24.4:
+ resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.14.1
+
+ /@babel/template@7.24.0:
+ resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.24.2
+ '@babel/parser': 7.24.4
+ '@babel/types': 7.24.0
+
+ /@babel/traverse@7.24.1:
+ resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.24.2
+ '@babel/generator': 7.24.4
+ '@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.24.4
+ '@babel/types': 7.24.0
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/types@7.24.0:
+ resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.24.1
+ '@babel/helper-validator-identifier': 7.22.20
+ to-fast-properties: 2.0.0
+
+ /@bcoe/v8-coverage@0.2.3:
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+
+ /@blocknote/core@0.12.4:
+ resolution: {integrity: sha512-njnrEZUZ7sPm0CIwxSfFfnP1IgB+H+Kvk5+2Etr3tozuQgwdQ0X6wn6E+MTCP97Nxl/aPA7S1F/XUoy1L8ICXQ==}
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/extension-bold': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-code': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-collaboration': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(y-prosemirror@1.2.1)
+ '@tiptap/extension-collaboration-cursor': 2.3.0(@tiptap/core@2.3.0)(y-prosemirror@1.2.1)
+ '@tiptap/extension-dropcursor': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/extension-gapcursor': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/extension-hard-break': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-history': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/extension-horizontal-rule': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/extension-italic': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-link': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/extension-paragraph': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-strike': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-table-cell': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-table-header': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-table-row': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-text': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/extension-underline': 2.3.0(@tiptap/core@2.3.0)
+ '@tiptap/pm': 2.3.0
+ hast-util-from-dom: 4.2.0
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-tables: 1.3.7
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.4
+ rehype-format: 5.0.0
+ rehype-parse: 8.0.5
+ rehype-remark: 9.1.2
+ rehype-stringify: 9.0.4
+ remark-gfm: 3.0.1
+ remark-parse: 10.0.2
+ remark-rehype: 10.1.0
+ remark-stringify: 10.0.3
+ unified: 10.1.2
+ uuid: 8.3.2
+ y-prosemirror: 1.2.1(prosemirror-model@1.20.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.4)(y-protocols@1.0.6)(yjs@13.6.14)
+ y-protocols: 1.0.6(yjs@13.6.14)
+ yjs: 13.6.14
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@blocknote/react@0.12.4(@tiptap/pm@2.3.0)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-cgtQmPUhRmWwHifskhfuwq7SflXTagilblzkfKmkvHYsldeH2WcOHGbgskX5bdx7ulvryrLnTSbXszLuTGd5Hw==}
+ peerDependencies:
+ react: ^18
+ react-dom: ^18
+ dependencies:
+ '@blocknote/core': 0.12.4
+ '@floating-ui/react': 0.26.12(react-dom@18.2.0)(react@18.2.0)
+ '@mantine/core': 7.8.0(@mantine/hooks@7.8.0)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@mantine/hooks': 7.8.0(react@18.2.0)
+ '@mantine/utils': 6.0.21(react@18.2.0)
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/react': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(react-dom@18.2.0)(react@18.2.0)
+ lodash.merge: 4.6.2
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-icons: 4.12.0(react@18.2.0)
+ use-prefers-color-scheme: 1.1.3(react@18.2.0)
+ transitivePeerDependencies:
+ - '@tiptap/pm'
+ - '@types/react'
+ - supports-color
+ dev: false
+
+ /@codemirror/autocomplete@6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-P/LeCTtZHRTCU4xQsa89vSKWecYv1ZqwzOd5topheGRf+qtacFgBeIMQi3eL8Kt/BUNvxUWkx+5qP2jlGoARrg==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@codemirror/commands@6.3.3:
+ resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@codemirror/lang-angular@0.1.3:
+ resolution: {integrity: sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w==}
+ dependencies:
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@codemirror/lang-cpp@6.0.2:
+ resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/cpp': 1.1.2
+ dev: false
+
+ /@codemirror/lang-css@6.2.1(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/css': 1.1.8
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-go@6.0.0(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-mMT4YeYdKGjnffDBOhr1ur1glee4oV/rfMe28vzazNHZkSt7vSiuHiBcgr3L/79Cl2RIjFdpQ1XMD0/T8Rx64g==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/go': 1.0.0
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-html@6.4.9:
+ resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/css': 1.1.8
+ '@lezer/html': 1.3.9
+ dev: false
+
+ /@codemirror/lang-java@6.0.1:
+ resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/java': 1.1.1
+ dev: false
+
+ /@codemirror/lang-javascript@6.2.2:
+ resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.5.0
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/javascript': 1.4.14
+ dev: false
+
+ /@codemirror/lang-json@6.0.1:
+ resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/json': 1.0.2
+ dev: false
+
+ /@codemirror/lang-less@6.0.2(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==}
+ dependencies:
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/language': 6.10.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-lezer@6.0.1:
+ resolution: {integrity: sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/lezer': 1.1.2
+ dev: false
+
+ /@codemirror/lang-liquid@6.2.1:
+ resolution: {integrity: sha512-J1Mratcm6JLNEiX+U2OlCDTysGuwbHD76XwuL5o5bo9soJtSbz2g6RU3vGHFyS5DC8rgVmFSzi7i6oBftm7tnA==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@codemirror/lang-markdown@6.2.5:
+ resolution: {integrity: sha512-Hgke565YcO4fd9pe2uLYxnMufHO5rQwRr+AAhFq8ABuhkrjyX8R5p5s+hZUTdV60O0dMRjxKhBLxz8pu/MkUVA==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/markdown': 1.3.0
+ dev: false
+
+ /@codemirror/lang-php@6.0.1:
+ resolution: {integrity: sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==}
+ dependencies:
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/php': 1.0.2
+ dev: false
+
+ /@codemirror/lang-python@6.1.5(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-hCm+8X6wrnXJCGf+QhmFu1AXkdTVG7dHy0Ly6SI1N3SRPptaMvwX6oNQonOXOMPvmcjiB0xq342KAxX3BYpijw==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/python': 1.1.13
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-rust@6.0.1:
+ resolution: {integrity: sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/rust': 1.0.2
+ dev: false
+
+ /@codemirror/lang-sass@6.0.2(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==}
+ dependencies:
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/sass': 1.0.6
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-sql@6.6.3(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-fo5i3OD/7TmmqMtKycC4OaqfPsRxk0sKOb35g8cOtyUyyI2hfP2qXkDc7Asb6h7BiJK+MU/DYVPnQm6iNB5ZTw==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/lang-vue@0.1.3:
+ resolution: {integrity: sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==}
+ dependencies:
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@codemirror/lang-wast@6.0.2:
+ resolution: {integrity: sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@codemirror/lang-xml@6.1.0:
+ resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/xml': 1.0.5
+ dev: false
+
+ /@codemirror/lang-yaml@6.1.1(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-HV2NzbK9bbVnjWxwObuZh5FuPCowx51mEfoFT9y3y+M37fA3+pbxx4I7uePuygFzDsAmCTwQSc/kXh/flab4uw==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/yaml': 1.0.2
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/language-data@6.5.0(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-+F2PyUJtTfGO/3X0fgwZwyyCQ35GZycQSI/731tHifhFMaKYTM8Ic45uK1jrcg086pDy573CL2DWvHJlSkFGzQ==}
+ dependencies:
+ '@codemirror/lang-angular': 0.1.3
+ '@codemirror/lang-cpp': 6.0.2
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/lang-go': 6.0.0(@codemirror/view@6.26.3)
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/lang-java': 6.0.1
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/lang-json': 6.0.1
+ '@codemirror/lang-less': 6.0.2(@codemirror/view@6.26.3)
+ '@codemirror/lang-liquid': 6.2.1
+ '@codemirror/lang-markdown': 6.2.5
+ '@codemirror/lang-php': 6.0.1
+ '@codemirror/lang-python': 6.1.5(@codemirror/view@6.26.3)
+ '@codemirror/lang-rust': 6.0.1
+ '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.26.3)
+ '@codemirror/lang-sql': 6.6.3(@codemirror/view@6.26.3)
+ '@codemirror/lang-vue': 0.1.3
+ '@codemirror/lang-wast': 6.0.2
+ '@codemirror/lang-xml': 6.1.0
+ '@codemirror/lang-yaml': 6.1.1(@codemirror/view@6.26.3)
+ '@codemirror/language': 6.10.1
+ '@codemirror/legacy-modes': 6.4.0
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/language@6.10.1:
+ resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ style-mod: 4.1.2
+ dev: false
+
+ /@codemirror/legacy-modes@6.4.0:
+ resolution: {integrity: sha512-5m/K+1A6gYR0e+h/dEde7LoGimMjRtWXZFg4Lo70cc8HzjSdHe3fLwjWMR0VRl5KFT1SxalSap7uMgPKF28wBA==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ dev: false
+
+ /@codemirror/lint@6.5.0:
+ resolution: {integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ crelt: 1.0.6
+ dev: false
+
+ /@codemirror/search@6.5.6:
+ resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ crelt: 1.0.6
+ dev: false
+
+ /@codemirror/state@6.4.1:
+ resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==}
+ dev: false
+
+ /@codemirror/theme-one-dark@6.1.2:
+ resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/highlight': 1.2.0
+ dev: false
+
+ /@codemirror/view@6.26.3:
+ resolution: {integrity: sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ style-mod: 4.1.2
+ w3c-keyname: 2.2.8
+ dev: false
+
+ /@cspotcode/source-map-support@0.8.1:
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
+ /@dnd-kit/accessibility@3.1.0(react@18.2.0):
+ resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@dnd-kit/core@6.1.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@dnd-kit/accessibility': 3.1.0(react@18.2.0)
+ '@dnd-kit/utilities': 3.2.2(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tslib: 2.6.2
+ dev: false
+
+ /@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0)(react@18.2.0):
+ resolution: {integrity: sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==}
+ peerDependencies:
+ '@dnd-kit/core': ^6.1.0
+ react: '>=16.8.0'
+ dependencies:
+ '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@dnd-kit/utilities': 3.2.2(react@18.2.0)
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@dnd-kit/utilities@3.2.2(react@18.2.0):
+ resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@drizzle-team/studio@0.0.39:
+ resolution: {integrity: sha512-c5Hkm7MmQC2n5qAsKShjQrHoqlfGslB8+qWzsGGZ+2dHMRTNG60UuzalF0h0rvBax5uzPXuGkYLGaQ+TUX3yMw==}
+ dependencies:
+ superjson: 2.2.1
+ dev: true
+
+ /@emnapi/core@0.45.0:
+ resolution: {integrity: sha512-DPWjcUDQkCeEM4VnljEOEcXdAD7pp8zSZsgOujk/LGIwCXWbXJngin+MO4zbH429lzeC3WbYLGjE2MaUOwzpyw==}
+ requiresBuild: true
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+ optional: true
+
+ /@emnapi/core@1.1.1:
+ resolution: {integrity: sha512-eu4KjHfXg3I+UUR7vSuwZXpRo4c8h4Rtb5Lu2F7Z4JqJFl/eidquONEBiRs6viXKpWBC3BaJBy68xGJ2j56idw==}
+ requiresBuild: true
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+ optional: true
+
+ /@emnapi/runtime@0.45.0:
+ resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==}
+ requiresBuild: true
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+ optional: true
+
+ /@emnapi/runtime@1.1.1:
+ resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==}
+ requiresBuild: true
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+ optional: true
+
+ /@esbuild-kit/core-utils@3.3.2:
+ resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
+ dependencies:
+ esbuild: 0.18.20
+ source-map-support: 0.5.21
+ dev: true
+
+ /@esbuild-kit/esm-loader@2.6.5:
+ resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
+ dependencies:
+ '@esbuild-kit/core-utils': 3.3.2
+ get-tsconfig: 4.7.3
+ dev: true
+
+ /@esbuild/aix-ppc64@0.19.12:
+ resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/aix-ppc64@0.20.2:
+ resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64@0.18.20:
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64@0.19.12:
+ resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64@0.20.2:
+ resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.18.20:
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.19.12:
+ resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.20.2:
+ resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.18.20:
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.19.12:
+ resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.20.2:
+ resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.18.20:
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.19.12:
+ resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.20.2:
+ resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.18.20:
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.19.12:
+ resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.20.2:
+ resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.18.20:
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.19.12:
+ resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.20.2:
+ resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.18.20:
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.19.12:
+ resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.20.2:
+ resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.18.20:
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.19.12:
+ resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.20.2:
+ resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.18.20:
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.19.12:
+ resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.20.2:
+ resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.18.20:
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.19.12:
+ resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.20.2:
+ resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.18.20:
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.19.12:
+ resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.20.2:
+ resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.18.20:
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.19.12:
+ resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.20.2:
+ resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.18.20:
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.19.12:
+ resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.20.2:
+ resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.18.20:
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.19.12:
+ resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.20.2:
+ resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.18.20:
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.19.12:
+ resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.20.2:
+ resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.18.20:
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.19.12:
+ resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.20.2:
+ resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.18.20:
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.19.12:
+ resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.20.2:
+ resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.18.20:
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.19.12:
+ resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.20.2:
+ resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.18.20:
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.19.12:
+ resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.20.2:
+ resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.18.20:
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.19.12:
+ resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.20.2:
+ resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.18.20:
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.19.12:
+ resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.20.2:
+ resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.18.20:
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.19.12:
+ resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.20.2:
+ resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@eslint-community/eslint-utils@4.4.0(eslint@8.57.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
+ dependencies:
+ eslint: 8.57.0
+ eslint-visitor-keys: 3.4.3
+
+ /@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/eslintrc@2.1.4:
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.4
+ espree: 9.6.1
+ globals: 13.24.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:
+ resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ /@floating-ui/core@1.6.0:
+ resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
+ dependencies:
+ '@floating-ui/utils': 0.2.1
+ dev: false
+
+ /@floating-ui/dom@1.6.3:
+ resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==}
+ dependencies:
+ '@floating-ui/core': 1.6.0
+ '@floating-ui/utils': 0.2.1
+ dev: false
+
+ /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/dom': 1.6.3
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@floating-ui/react@0.26.12(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-D09o62HrWdIkstF2kGekIKAC0/N/Dl6wo3CQsnLcOmO3LkW6Ik8uIb3kw8JYkwxNCcg+uJ2bpWUiIijTBep05w==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
+ '@floating-ui/utils': 0.2.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tabbable: 6.2.0
+ dev: false
+
+ /@floating-ui/utils@0.2.1:
+ resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
+ dev: false
+
+ /@humanwhocodes/config-array@0.11.14:
+ resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.4
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ /@humanwhocodes/module-importer@1.0.1:
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ /@humanwhocodes/object-schema@2.0.3:
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+
+ /@isaacs/cliui@8.0.2:
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+ 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/load-nyc-config@1.1.0:
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.1
+ resolve-from: 5.0.0
+
+ /@istanbuljs/schema@0.1.3:
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+
+ /@jest/console@29.7.0:
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+
+ /@jest/core@29.7.0(ts-node@10.9.2):
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ /@jest/environment@29.7.0:
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ jest-mock: 29.7.0
+
+ /@jest/expect-utils@29.7.0:
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+
+ /@jest/expect@29.7.0:
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@jest/fake-timers@29.7.0:
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 20.12.7
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ /@jest/globals@29.7.0:
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@jest/reporters@29.7.0:
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/node': 20.12.7
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.2
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.2
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.7
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /@jest/schemas@29.6.3:
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+
+ /@jest/source-map@29.6.3:
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+
+ /@jest/test-result@29.7.0:
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ collect-v8-coverage: 1.0.2
+
+ /@jest/test-sequencer@29.7.0:
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+
+ /@jest/transform@29.7.0:
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.24.4
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ micromatch: 4.0.5
+ pirates: 4.0.6
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ /@jest/types@29.6.3:
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 20.12.7
+ '@types/yargs': 17.0.32
+ chalk: 4.1.2
+
+ /@jridgewell/gen-mapping@0.3.5:
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
+
+ /@jridgewell/resolve-uri@3.1.2:
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ /@jridgewell/set-array@1.2.1:
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+
+ /@jridgewell/trace-mapping@0.3.25:
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ /@jridgewell/trace-mapping@0.3.9:
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ /@justmiracle/result@1.2.0:
+ resolution: {integrity: sha512-MyyfTSloRNvdB1EnzSDiOeyPtdXeK+gp1d2zxqcjq/XHoagsIzo7ImEJCKIUkOTlmuEInPfYZrcAU7sdeCWqkg==}
+ dev: false
+
+ /@lezer/common@1.2.1:
+ resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==}
+ dev: false
+
+ /@lezer/cpp@1.1.2:
+ resolution: {integrity: sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/css@1.1.8:
+ resolution: {integrity: sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/go@1.0.0:
+ resolution: {integrity: sha512-co9JfT3QqX1YkrMmourYw2Z8meGC50Ko4d54QEcQbEYpvdUvN4yb0NBZdn/9ertgvjsySxHsKzH3lbm3vqJ4Jw==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/highlight@1.2.0:
+ resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@lezer/html@1.3.9:
+ resolution: {integrity: sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/java@1.1.1:
+ resolution: {integrity: sha512-mt3dX13fRlpY7RlWELYRakanXgmwXsLRCrhstrn+c1sZd7jR2xle46/3heoxGd+oHxnuTnpoyXTyxcLJQs9+mQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/javascript@1.4.14:
+ resolution: {integrity: sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/json@1.0.2:
+ resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/lezer@1.1.2:
+ resolution: {integrity: sha512-O8yw3CxPhzYHB1hvwbdozjnAslhhR8A5BH7vfEMof0xk3p+/DFDfZkA9Tde6J+88WgtwaHy4Sy6ThZSkaI0Evw==}
+ dependencies:
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/lr@1.4.0:
+ resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@lezer/markdown@1.3.0:
+ resolution: {integrity: sha512-ErbEQ15eowmJUyT095e9NJc3BI9yZ894fjSDtHftD0InkfUBGgnKSU6dvan9jqsZuNHg2+ag/1oyDRxNsENupQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ dev: false
+
+ /@lezer/php@1.0.2:
+ resolution: {integrity: sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/python@1.1.13:
+ resolution: {integrity: sha512-AdbRAtdQq94PfTNd4kqMEJhH2fqa2JdoyyqqVewY6w34w2Gi6dg2JuOtOgR21Bi0zP9r0KjSSHOUq/tP7FVT8A==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/rust@1.0.2:
+ resolution: {integrity: sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/sass@1.0.6:
+ resolution: {integrity: sha512-w/RCO2dIzZH1To8p+xjs8cE+yfgGus8NZ/dXeWl/QzHyr+TeBs71qiE70KPImEwvTsmEjoWh0A5SxMzKd5BWBQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/xml@1.0.5:
+ resolution: {integrity: sha512-VFouqOzmUWfIg+tfmpcdV33ewtK+NSwd4ngSe1aG7HFb4BN0ExyY1b8msp+ndFrnlG4V4iC8yXacjFtrwERnaw==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/yaml@1.0.2:
+ resolution: {integrity: sha512-XCkwuxe+eumJ28nA9e1S6XKsXz9W7V/AG+WBiWOtiIuUpKcZ/bHuvN8bLxSDREIcybSRpEd/jvphh4vgm6Ed2g==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@libsql/client@0.5.6:
+ resolution: {integrity: sha512-UBjmDoxz75Z2sHdP+ETCROpeLA/77VMesiff8R4UWK1rnaWbh6/YoCLDILMJL3Rh0udQeKxjL8MjXthqohax+g==}
+ dependencies:
+ '@libsql/core': 0.5.6
+ '@libsql/hrana-client': 0.5.6
+ js-base64: 3.7.7
+ libsql: 0.3.12
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - utf-8-validate
+ dev: false
+
+ /@libsql/core@0.5.6:
+ resolution: {integrity: sha512-3vicUAydq6jPth410n4AsHHm1n2psTwvkSf94nfJlSXutGSZsl0updn2N/mJBgqUHkbuFoWZtlMifF0SwBj1xQ==}
+ dependencies:
+ js-base64: 3.7.7
+ dev: false
+
+ /@libsql/darwin-arm64@0.3.12:
+ resolution: {integrity: sha512-rBiMebxLgsShSEg73CibeuenlUMKXnaW/XoUk3tii1C1U7141w6k5VuF6/jnNl/cS7PMK/vy+2V5N/k++yvb9A==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@libsql/darwin-x64@0.3.12:
+ resolution: {integrity: sha512-T1yXSG1WukLq41hEWTU3G1kuV9TVoc+90KFs1KGluLrGvpj5l1QIff35hQlWWi6c1tfPsdlydR6qIO6AZdUwNg==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@libsql/hrana-client@0.5.6:
+ resolution: {integrity: sha512-mjQoAmejZ1atG+M3YR2ZW+rg6ceBByH/S/h17ZoYZkqbWrvohFhXyz2LFxj++ARMoY9m6w3RJJIRdJdmnEUlFg==}
+ dependencies:
+ '@libsql/isomorphic-fetch': 0.1.12
+ '@libsql/isomorphic-ws': 0.1.5
+ js-base64: 3.7.7
+ node-fetch: 3.3.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - utf-8-validate
+ dev: false
+
+ /@libsql/isomorphic-fetch@0.1.12:
+ resolution: {integrity: sha512-MRo4UcmjAGAa3ac56LoD5OE13m2p0lu0VEtZC2NZMcogM/jc5fU9YtMQ3qbPjFJ+u2BBjFZgMPkQaLS1dlMhpg==}
+ dependencies:
+ '@types/node-fetch': 2.6.11
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+ dev: false
+
+ /@libsql/isomorphic-ws@0.1.5:
+ resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==}
+ dependencies:
+ '@types/ws': 8.5.10
+ ws: 8.16.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
+ /@libsql/linux-arm64-gnu@0.3.12:
+ resolution: {integrity: sha512-1tmLuj02vySklkadwYEjvXFhyipyNr7oufe55tJK0hqvjQEcqfzBqAD3AHvPo41ug0qlrB2GRpiBlJtcIu2dMQ==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@libsql/linux-arm64-musl@0.3.12:
+ resolution: {integrity: sha512-sM2NJTYe1FiixpJbebTllfV6uuSB1WIOfgQVHb7cJP0Jik5Kyq5F9n4reF6QKRivbPAn3kk6f5uRZKHBE6rvXw==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@libsql/linux-x64-gnu@0.3.12:
+ resolution: {integrity: sha512-x8+Qo09osyOWs0/+D48Ml+CMlU33yCXznv4PYfQJc1NWA0dcQkSK353raYebH+cJhNIv0RcEz3ltTT3ME+HwAQ==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@libsql/linux-x64-musl@0.3.12:
+ resolution: {integrity: sha512-wY5G8zx727wvg5n/qB4oK357u3HQlz84oNG0XTrKnJVCxqR91Yg6bU+fKsGrvyaGFEqLmZ/Ft0K0pi6Mn/k4vQ==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@libsql/win32-x64-msvc@0.3.12:
+ resolution: {integrity: sha512-ko9Ph0ssQk2rUiNXfbquZ4fXXKb/E47GE6+caA4gNt4+rgFc1ksaffekYwym24Zk4VDYsvAQNOpwgd9baIBzLA==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@lucia-auth/adapter-sqlite@3.0.1(@libsql/client@0.5.6)(lucia@3.1.1):
+ resolution: {integrity: sha512-bzr8+HALrbiYMb/+oL1SAnjbgFqlPs/Kj4lO57t/VvbXzmbpQEKk5Nv6hMpvWSkGAR9LbxYeQAtecikpKZVB0w==}
+ peerDependencies:
+ '@libsql/client': ^0.3.0
+ better-sqlite3: 8.x - 9.x
+ lucia: 3.x
+ peerDependenciesMeta:
+ '@libsql/client':
+ optional: true
+ better-sqlite3:
+ optional: true
+ dependencies:
+ '@libsql/client': 0.5.6
+ lucia: 3.1.1
+ dev: false
+
+ /@mantine/core@7.8.0(@mantine/hooks@7.8.0)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-19RKuNdJ/s8pZjy2w2rvTsl4ybi/XM6vf+Kc0WY7kpLFCvdG+/UxNi1MuJF8t2Zs0QSFeb/H5yZQNe0XPbegHw==}
+ peerDependencies:
+ '@mantine/hooks': 7.8.0
+ react: ^18.2.0
+ react-dom: ^18.2.0
+ dependencies:
+ '@floating-ui/react': 0.26.12(react-dom@18.2.0)(react@18.2.0)
+ '@mantine/hooks': 7.8.0(react@18.2.0)
+ clsx: 2.1.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-number-format: 5.3.4(react-dom@18.2.0)(react@18.2.0)
+ react-remove-scroll: 2.5.9(@types/react@18.2.78)(react@18.2.0)
+ react-textarea-autosize: 8.5.3(@types/react@18.2.78)(react@18.2.0)
+ type-fest: 4.15.0
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@mantine/hooks@7.8.0(react@18.2.0):
+ resolution: {integrity: sha512-+70fkgjhVJeJ+nJqnburIM3UAsfvxat1Low9HMPobLbv64FIdB4Nzu5ct3qojNQ58r5sK01tg5UoFIJYslaVrg==}
+ peerDependencies:
+ react: ^18.2.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@mantine/utils@6.0.21(react@18.2.0):
+ resolution: {integrity: sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==}
+ peerDependencies:
+ react: '>=16.8.0'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@napi-rs/wasm-runtime@0.1.2:
+ resolution: {integrity: sha512-8JuczewTFIZ/XIjHQ+YlQUydHvlKx2hkcxtuGwh+t/t5zWyZct6YG4+xjHcq8xyc/e7FmFwf42Zj2YgICwmlvA==}
+ requiresBuild: true
+ dependencies:
+ '@emnapi/core': 1.1.1
+ '@emnapi/runtime': 1.1.1
+ '@tybys/wasm-util': 0.8.1
+ dev: false
+ optional: true
+
+ /@neon-rs/load@0.0.4:
+ resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==}
+ dev: false
+
+ /@next/env@14.2.1:
+ resolution: {integrity: sha512-qsHJle3GU3CmVx7pUoXcghX4sRN+vINkbLdH611T8ZlsP//grzqVW87BSUgOZeSAD4q7ZdZicdwNe/20U2janA==}
+ dev: false
+
+ /@next/eslint-plugin-next@14.0.4:
+ resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==}
+ dependencies:
+ glob: 7.1.7
+ dev: true
+
+ /@next/eslint-plugin-next@14.2.1:
+ resolution: {integrity: sha512-Fp+mthEBjkn8r9qd6o4JgxKp0IDEzW0VYHD8ZC05xS5/lFNwHKuOdr2kVhWG7BQCO9L6eeepshM1Wbs2T+LgSg==}
+ dependencies:
+ glob: 10.3.10
+ dev: true
+
+ /@next/swc-darwin-arm64@14.2.1:
+ resolution: {integrity: sha512-kGjnjcIJehEcd3rT/3NAATJQndAEELk0J9GmGMXHSC75TMnvpOhONcjNHbjtcWE5HUQnIHy5JVkatrnYm1QhVw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-darwin-x64@14.2.1:
+ resolution: {integrity: sha512-dAdWndgdQi7BK2WSXrx4lae7mYcOYjbHJUhvOUnJjMNYrmYhxbbvJ2xElZpxNxdfA6zkqagIB9He2tQk+l16ew==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-arm64-gnu@14.2.1:
+ resolution: {integrity: sha512-2ZctfnyFOGvTkoD6L+DtQtO3BfFz4CapoHnyLTXkOxbZkVRgg3TQBUjTD/xKrO1QWeydeo8AWfZRg8539qNKrg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-arm64-musl@14.2.1:
+ resolution: {integrity: sha512-jazZXctiaanemy4r+TPIpFP36t1mMwWCKMsmrTRVChRqE6putyAxZA4PDujx0SnfvZHosjdkx9xIq9BzBB5tWg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-x64-gnu@14.2.1:
+ resolution: {integrity: sha512-VjCHWCjsAzQAAo8lkBOLEIkBZFdfW+Z18qcQ056kL4KpUYc8o59JhLDCBlhg+hINQRgzQ2UPGma2AURGOH0+Qg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-linux-x64-musl@14.2.1:
+ resolution: {integrity: sha512-7HZKYKvAp4nAHiHIbY04finRqjeYvkITOGOurP1aLMexIFG/1+oCnqhGogBdc4lao/lkMW1c+AkwWSzSlLasqw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-win32-arm64-msvc@14.2.1:
+ resolution: {integrity: sha512-YGHklaJ/Cj/F0Xd8jxgj2p8po4JTCi6H7Z3Yics3xJhm9CPIqtl8erlpK1CLv+HInDqEWfXilqatF8YsLxxA2Q==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-win32-ia32-msvc@14.2.1:
+ resolution: {integrity: sha512-o+ISKOlvU/L43ZhtAAfCjwIfcwuZstiHVXq/BDsZwGqQE0h/81td95MPHliWCnFoikzWcYqh+hz54ZB2FIT8RA==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@next/swc-win32-x64-msvc@14.2.1:
+ resolution: {integrity: sha512-GmRoTiLcvCLifujlisknv4zu9/C4i9r0ktsA8E51EMqJL4bD4CpO7lDYr7SrUxCR0tS4RVcrqKmCak24T0ohaw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@nextjournal/lang-clojure@1.0.0:
+ resolution: {integrity: sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@nextjournal/lezer-clojure': 1.0.0
+ dev: false
+
+ /@nextjournal/lezer-clojure@1.0.0:
+ resolution: {integrity: sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==}
+ dependencies:
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@node-rs/argon2-android-arm-eabi@1.7.0:
+ resolution: {integrity: sha512-udDqkr5P9E+wYX1SZwAVPdyfYvaF4ry9Tm+R9LkfSHbzWH0uhU6zjIwNRp7m+n4gx691rk+lqqDAIP8RLKwbhg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-android-arm-eabi@1.7.2:
+ resolution: {integrity: sha512-WhW84XOzdR4AOGc4BJvIg5lCRVBL0pXp/PPCe8QCyWw493p7VdNCdYpr2xdtjS/0zImmY85HNB/6zpzjLRTT/A==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-android-arm64@1.7.0:
+ resolution: {integrity: sha512-s9j/G30xKUx8WU50WIhF0fIl1EdhBGq0RQ06lEhZ0Gi0ap8lhqbE2Bn5h3/G2D1k0Dx+yjeVVNmt/xOQIRG38A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-android-arm64@1.7.2:
+ resolution: {integrity: sha512-CdtayHSMIyDuVhSYFirwA757c4foQuyTjpysgFJLHweP9C7uDiBf9WBYij+UyabpaCadJ0wPyK6Vakinvlk4/g==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-darwin-arm64@1.7.0:
+ resolution: {integrity: sha512-ZIz4L6HGOB9U1kW23g+m7anGNuTZ0RuTw0vNp3o+2DWpb8u8rODq6A8tH4JRL79S+Co/Nq608m9uackN2pe0Rw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-darwin-arm64@1.7.2:
+ resolution: {integrity: sha512-hUOhtgYHTEyzX5sgMZVdXunONOus2HWpWydF5D/RYJ1mZ76FXRnFpQE40DqbzisdPIraKdn40m7JqkPP7wqdyg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-darwin-x64@1.7.0:
+ resolution: {integrity: sha512-5oi/pxqVhODW/pj1+3zElMTn/YukQeywPHHYDbcAW3KsojFjKySfhcJMd1DjKTc+CHQI+4lOxZzSUzK7mI14Hw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-darwin-x64@1.7.2:
+ resolution: {integrity: sha512-lfs5HX+t542yUfcv6Aa/NeGD1nUCwyQNgnPEGcik71Ow6V13hkR1bHgmT1u3CHN4fBts0gW+DQEDsq1xlVgkvw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-freebsd-x64@1.7.0:
+ resolution: {integrity: sha512-Ify08683hA4QVXYoIm5SUWOY5DPIT/CMB0CQT+IdxQAg/F+qp342+lUkeAtD5bvStQuCx/dFO3bnnzoe2clMhA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-freebsd-x64@1.7.2:
+ resolution: {integrity: sha512-ROoF+4VaCBJUjddrTN1hjuqSl89ppRcjVXJscSPJjWzTlbzFmGGovJvIzUBmCr/Oq3yM1zKHj6MP9oRD5cB+/g==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-arm-gnueabihf@1.7.0:
+ resolution: {integrity: sha512-7DjDZ1h5AUHAtRNjD19RnQatbhL+uuxBASuuXIBu4/w6Dx8n7YPxwTP4MXfsvuRgKuMWiOb/Ub/HJ3kXVCXRkg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-arm-gnueabihf@1.7.2:
+ resolution: {integrity: sha512-CBSB8KPI8LS74Bcz3dYaa2/khULutz4vSDvFWUERlSLX+mPdDhoZi6UPuUPPF9e01w8AbiK1YCqlLUTm3tIMfw==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-arm64-gnu@1.7.0:
+ resolution: {integrity: sha512-nJDoMP4Y3YcqGswE4DvP080w6O24RmnFEDnL0emdI8Nou17kNYBzP2546Nasx9GCyLzRcYQwZOUjrtUuQ+od2g==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-arm64-gnu@1.7.2:
+ resolution: {integrity: sha512-6LBTug6ZiWFakP3X3Nqs7ZTM03gmcSWX4YvEn20HhhQE5NDrsrw3zNqGj0cJiNzKKIMSDDuj7uGy+ITEfNo4CA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-arm64-musl@1.7.0:
+ resolution: {integrity: sha512-BKWS8iVconhE3jrb9mj6t1J9vwUqQPpzCbUKxfTGJfc+kNL58F1SXHBoe2cDYGnHrFEHTY0YochzXoAfm4Dm/A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-arm64-musl@1.7.2:
+ resolution: {integrity: sha512-KjhQ+ZPne29t9VRVeIif7JdKwQba+tM6CBNYBoJB1iON0CUKeqSQtZcHuTj9gkf2SNRG5bsU4ABcfxd0OKsKHg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-x64-gnu@1.7.0:
+ resolution: {integrity: sha512-EmgqZOlf4Jurk/szW1iTsVISx25bKksVC5uttJDUloTgsAgIGReCpUUO1R24pBhu9ESJa47iv8NSf3yAfGv6jQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-x64-gnu@1.7.2:
+ resolution: {integrity: sha512-BQvp+iLtKqomHz4q5t1aKoni9osgvUDU5sZtHAlFm5dRTlGHnympcQVATRE5GHyH9C6MIM9W7P1kqEeCLGPolQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-x64-musl@1.7.0:
+ resolution: {integrity: sha512-/o1efYCYIxjfuoRYyBTi2Iy+1iFfhqHCvvVsnjNSgO1xWiWrX0Rrt/xXW5Zsl7vS2Y+yu8PL8KFWRzZhaVxfKA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-linux-x64-musl@1.7.2:
+ resolution: {integrity: sha512-yXJudpBZQ98g+lWaHn9EzZ5KsAyqRdlpub/K+5NP7gHehb8wzBRIFAejIHAG0fvzQEEc86VOnV2koWIVZxWAvw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-wasm32-wasi@1.7.0:
+ resolution: {integrity: sha512-Evmk9VcxqnuwQftfAfYEr6YZYSPLzmKUsbFIMep5nTt9PT4XYRFAERj7wNYp+rOcBenF3X4xoB+LhwcOMTNE5w==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ requiresBuild: true
+ dependencies:
+ '@emnapi/core': 0.45.0
+ '@emnapi/runtime': 0.45.0
+ '@tybys/wasm-util': 0.8.1
+ memfs-browser: 3.5.10302
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-wasm32-wasi@1.7.2:
+ resolution: {integrity: sha512-diXlVjJZY2GIV8ZDwUqXPhacXsFR0klGSv5D9f+XidwWXK4udtzDhkM/7N/Mb7h1HAWaxZ6IN9spYFjvWH1wqg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ requiresBuild: true
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.1.2
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-win32-arm64-msvc@1.7.0:
+ resolution: {integrity: sha512-qgsU7T004COWWpSA0tppDqDxbPLgg8FaU09krIJ7FBl71Sz8SFO40h7fDIjfbTT5w7u6mcaINMQ5bSHu75PCaA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-win32-arm64-msvc@1.7.2:
+ resolution: {integrity: sha512-dhIBrY04P9nbmwzBpgERQDmmSu4YBZyeEE32t4TikMz5rQ07iaVC+JpGmtCBZoDIsLDHGC8cikENd3YEqpqIcA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-win32-ia32-msvc@1.7.0:
+ resolution: {integrity: sha512-JGafwWYQ/HpZ3XSwP4adQ6W41pRvhcdXvpzIWtKvX+17+xEXAe2nmGWM6s27pVkg1iV2ZtoYLRDkOUoGqZkCcg==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-win32-ia32-msvc@1.7.2:
+ resolution: {integrity: sha512-o1tfqr8gyALCzuxBoQfvhxkeYMaw/0H8Gmt7klTYyEIBvEFu7SD5qytXO9Px7t5420nZL/Wy5cflg3IB1s57Pg==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-win32-x64-msvc@1.7.0:
+ resolution: {integrity: sha512-9oq4ShyFakw8AG3mRls0AoCpxBFcimYx7+jvXeAf2OqKNO+mSA6eZ9z7KQeVCi0+SOEUYxMGf5UiGiDb9R6+9Q==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2-win32-x64-msvc@1.7.2:
+ resolution: {integrity: sha512-v0h53XUc7hNgWiWi0qcMcHvj9/kwuItI9NwLK4C+gtzT3UB0cedhfIL8HFMKThMXasy41ZdbpCF2Bi0kJoLNEg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/argon2@1.7.0:
+ resolution: {integrity: sha512-zfULc+/tmcWcxn+nHkbyY8vP3+MpEqKORbszt4UkpqZgBgDAAIYvuDN/zukfTgdmo6tmJKKVfzigZOPk4LlIog==}
+ engines: {node: '>= 10'}
+ optionalDependencies:
+ '@node-rs/argon2-android-arm-eabi': 1.7.0
+ '@node-rs/argon2-android-arm64': 1.7.0
+ '@node-rs/argon2-darwin-arm64': 1.7.0
+ '@node-rs/argon2-darwin-x64': 1.7.0
+ '@node-rs/argon2-freebsd-x64': 1.7.0
+ '@node-rs/argon2-linux-arm-gnueabihf': 1.7.0
+ '@node-rs/argon2-linux-arm64-gnu': 1.7.0
+ '@node-rs/argon2-linux-arm64-musl': 1.7.0
+ '@node-rs/argon2-linux-x64-gnu': 1.7.0
+ '@node-rs/argon2-linux-x64-musl': 1.7.0
+ '@node-rs/argon2-wasm32-wasi': 1.7.0
+ '@node-rs/argon2-win32-arm64-msvc': 1.7.0
+ '@node-rs/argon2-win32-ia32-msvc': 1.7.0
+ '@node-rs/argon2-win32-x64-msvc': 1.7.0
+ dev: false
+
+ /@node-rs/argon2@1.7.2:
+ resolution: {integrity: sha512-+H6pc3M1vIX9YnG59YW7prHhhpv19P8YyxlXHnnFzTimf2q+kKDF7mGWbhvN9STqIY+P70Patn0Q6qb6Ib5/4g==}
+ engines: {node: '>= 10'}
+ optionalDependencies:
+ '@node-rs/argon2-android-arm-eabi': 1.7.2
+ '@node-rs/argon2-android-arm64': 1.7.2
+ '@node-rs/argon2-darwin-arm64': 1.7.2
+ '@node-rs/argon2-darwin-x64': 1.7.2
+ '@node-rs/argon2-freebsd-x64': 1.7.2
+ '@node-rs/argon2-linux-arm-gnueabihf': 1.7.2
+ '@node-rs/argon2-linux-arm64-gnu': 1.7.2
+ '@node-rs/argon2-linux-arm64-musl': 1.7.2
+ '@node-rs/argon2-linux-x64-gnu': 1.7.2
+ '@node-rs/argon2-linux-x64-musl': 1.7.2
+ '@node-rs/argon2-wasm32-wasi': 1.7.2
+ '@node-rs/argon2-win32-arm64-msvc': 1.7.2
+ '@node-rs/argon2-win32-ia32-msvc': 1.7.2
+ '@node-rs/argon2-win32-x64-msvc': 1.7.2
+ dev: false
+
+ /@node-rs/bcrypt-android-arm-eabi@1.9.0:
+ resolution: {integrity: sha512-nOCFISGtnodGHNiLrG0WYLWr81qQzZKYfmwHc7muUeq+KY0sQXyHOwZk9OuNQAWv/lnntmtbwkwT0QNEmOyLvA==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-android-arm-eabi@1.9.2:
+ resolution: {integrity: sha512-er/Q2khwpan9pczvTTqY/DJE4UU65u31xd0NkZlHUTKyB7djRhWfzoGexGx2GN+k831/RR3U8kKE/8QUHeO3hQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-android-arm64@1.9.0:
+ resolution: {integrity: sha512-+ZrIAtigVmjYkqZQTThHVlz0+TG6D+GDHWhVKvR2DifjtqJ0i+mb9gjo++hN+fWEQdWNGxKCiBBjwgT4EcXd6A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-android-arm64@1.9.2:
+ resolution: {integrity: sha512-OUYatOEG5vbLbF73q2TC8UqrDO81zUQxnaFD/OAB1hcm6J+ur0zJ8E53c35/DIqkTp7JarPMraC4rouJ2ugN4w==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-darwin-arm64@1.9.0:
+ resolution: {integrity: sha512-CQiS+F9Pa0XozvkXR1g7uXE9QvBOPOplDg0iCCPRYTN9PqA5qYxhwe48G3o+v2UeQceNRrbnEtWuANm7JRqIhw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-darwin-arm64@1.9.2:
+ resolution: {integrity: sha512-svJKsGbzMAxOB5oluOYneN4YkKUy26WSMgm3KOIhgoX30IeMilj+2jFN/5qrI0oDZ0Iczb3XyL5DuZFtEkdP8A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-darwin-x64@1.9.0:
+ resolution: {integrity: sha512-4pTKGawYd7sNEjdJ7R/R67uwQH1VvwPZ0SSUMmeNHbxD5QlwAPXdDH11q22uzVXsvNFZ6nGQBg8No5OUGpx6Ug==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-darwin-x64@1.9.2:
+ resolution: {integrity: sha512-9OrySjBi/rWix8NZWD/TrNbNcwMY0pAiMHdL09aJnJ07uPih83GGh1pq4UHCYFCMy7iTX8swOmDlGBUImkOZbg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-freebsd-x64@1.9.0:
+ resolution: {integrity: sha512-UmWzySX4BJhT/B8xmTru6iFif3h0Rpx3TqxRLCcbgmH43r7k5/9QuhpiyzpvKGpKHJCFNm4F3rC2wghvw5FCIg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-freebsd-x64@1.9.2:
+ resolution: {integrity: sha512-/djXV71RO6g5L1mI2pVvmp3x3pH7G4uKI3ODG1JBIXoz334oOcCMh40sB0uq0ljP8WEadker01p4T1rJE98fpg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-arm-gnueabihf@1.9.0:
+ resolution: {integrity: sha512-8qoX4PgBND2cVwsbajoAWo3NwdfJPEXgpCsZQZURz42oMjbGyhhSYbovBCskGU3EBLoC8RA2B1jFWooeYVn5BA==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-arm-gnueabihf@1.9.2:
+ resolution: {integrity: sha512-F7wP950OTAooxEleUN4I2hqryGZK7hi1cSgRF13Wvbc597RFux35KiSxIXUA3mNt2DE7lV2PeceEtCOScaThWQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-arm64-gnu@1.9.0:
+ resolution: {integrity: sha512-TuAC6kx0SbcIA4mSEWPi+OCcDjTQUMl213v5gMNlttF+D4ieIZx6pPDGTaMO6M2PDHTeCG0CBzZl0Lu+9b0c7Q==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-arm64-gnu@1.9.2:
+ resolution: {integrity: sha512-MehG+yQ0TgKMgKR1rO4hdvHkVsTM91Cof8qI9EJlS5+7+QSwfFA5O0zGwCkISD7bsyauJ5uJgcByGjpEobAHOg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-arm64-musl@1.9.0:
+ resolution: {integrity: sha512-/sIvKDABOI8QOEnLD7hIj02BVaNOuCIWBKvxcJOt8+TuwJ6zmY1UI5kSv9d99WbiHjTp97wtAUbZQwauU4b9ew==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-arm64-musl@1.9.2:
+ resolution: {integrity: sha512-PRZTAJjOwKEGsIhmBvfNh81So+wGl4QyCFAt23j+KwBujLStjC0N3YaqtTlWVKG9tcriPtmMYiAQtXWIyIgg/w==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-x64-gnu@1.9.0:
+ resolution: {integrity: sha512-DyyhDHDsLBsCKz1tZ1hLvUZSc1DK0FU0v52jK6IBQxrj24WscSU9zZe7ie/V9kdmA4Ep57BfpWX8Dsa2JxGdgQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-x64-gnu@1.9.2:
+ resolution: {integrity: sha512-5WfGO+O1m7nJ55WZ8XDq+ItA98Z4O7sNWsR+1nIj9YGT+Tx5zkQ2RBhpK6oCWZMluuZ0eKQ0FDmyP6K+2NDRIA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-x64-musl@1.9.0:
+ resolution: {integrity: sha512-duIiuqQ+Lew8ASSAYm6ZRqcmfBGWwsi81XLUwz86a2HR7Qv6V4yc3ZAUQovAikhjCsIqe8C11JlAZSK6+PlXYg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-linux-x64-musl@1.9.2:
+ resolution: {integrity: sha512-VjCn0388p6PMCVUYHgYmHZrKNc7WwNJRr2WLJsHbQRGDOKbpNL6YolCjQxUchcSPDhzwrq1cIdy4j0fpoXEsdw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-wasm32-wasi@1.9.0:
+ resolution: {integrity: sha512-ylaGmn9Wjwv/D5lxtawttx3H6Uu2WTTR7lWlRHGT6Ga/MB1Vj4OjSGUW8G8zIVnKuXpGbZ92pgHlt4HUpSLctw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ requiresBuild: true
+ dependencies:
+ '@emnapi/core': 0.45.0
+ '@emnapi/runtime': 0.45.0
+ '@tybys/wasm-util': 0.8.1
+ memfs-browser: 3.5.10302
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-wasm32-wasi@1.9.2:
+ resolution: {integrity: sha512-P06aHfMzm9makwU+nM7WA65yQnS1xuqJ8l/6I/LvXjnl+lfB3DtJ2B0CSLtjnUGpUgcHbWl5gEbNnTPxSAirjQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ requiresBuild: true
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.1.2
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-win32-arm64-msvc@1.9.0:
+ resolution: {integrity: sha512-2h86gF7QFyEzODuDFml/Dp1MSJoZjxJ4yyT2Erf4NkwsiA5MqowUhUsorRwZhX6+2CtlGa7orbwi13AKMsYndw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-win32-arm64-msvc@1.9.2:
+ resolution: {integrity: sha512-Iyo/Q5/eNw27VRd3mLBgh1b9b5fnT3QHTVwxv3Siv/MRAIfJXH/cTOe18qSwYQzNh0ZioW4yemFPYCWSZi7szA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-win32-ia32-msvc@1.9.0:
+ resolution: {integrity: sha512-kqxalCvhs4FkN0+gWWfa4Bdy2NQAkfiqq/CEf6mNXC13RSV673Ev9V8sRlQyNpCHCNkeXfOT9pgoBdJmMs9muA==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-win32-ia32-msvc@1.9.2:
+ resolution: {integrity: sha512-6LHWMaPylyyHoS5863YpxAACVB8DWCxro5W6pQ4h8WKSgHpJp8Um9jphTdN0A2w45HZjUnfcFuiFFC+TbftjCw==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-win32-x64-msvc@1.9.0:
+ resolution: {integrity: sha512-2y0Tuo6ZAT2Cz8V7DHulSlv1Bip3zbzeXyeur+uR25IRNYXKvI/P99Zl85Fbuu/zzYAZRLLlGTRe6/9IHofe/w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt-win32-x64-msvc@1.9.2:
+ resolution: {integrity: sha512-vZ9T1MOaYkLO9FTyl28YX0SYJneiYTKNFgM8PUv8nas8xrD+7OzokA0fEtlNp6413T7IKSD/iG9qi8nTWsiyGg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /@node-rs/bcrypt@1.9.0:
+ resolution: {integrity: sha512-u2OlIxW264bFUfvbFqDz9HZKFjwe8FHFtn7T/U8mYjPZ7DWYpbUB+/dkW/QgYfMSfR0ejkyuWaBBe0coW7/7ig==}
+ engines: {node: '>= 10'}
+ optionalDependencies:
+ '@node-rs/bcrypt-android-arm-eabi': 1.9.0
+ '@node-rs/bcrypt-android-arm64': 1.9.0
+ '@node-rs/bcrypt-darwin-arm64': 1.9.0
+ '@node-rs/bcrypt-darwin-x64': 1.9.0
+ '@node-rs/bcrypt-freebsd-x64': 1.9.0
+ '@node-rs/bcrypt-linux-arm-gnueabihf': 1.9.0
+ '@node-rs/bcrypt-linux-arm64-gnu': 1.9.0
+ '@node-rs/bcrypt-linux-arm64-musl': 1.9.0
+ '@node-rs/bcrypt-linux-x64-gnu': 1.9.0
+ '@node-rs/bcrypt-linux-x64-musl': 1.9.0
+ '@node-rs/bcrypt-wasm32-wasi': 1.9.0
+ '@node-rs/bcrypt-win32-arm64-msvc': 1.9.0
+ '@node-rs/bcrypt-win32-ia32-msvc': 1.9.0
+ '@node-rs/bcrypt-win32-x64-msvc': 1.9.0
+ dev: false
+
+ /@node-rs/bcrypt@1.9.2:
+ resolution: {integrity: sha512-FKUo9iCSIti+ldwoOlY1ztyIFhZxEgT7jZ/UCt/9bg1rLmNdbQQD2JKIMImDCqmTWuLPY4ZF4Q5MyOMIfDCd8Q==}
+ engines: {node: '>= 10'}
+ optionalDependencies:
+ '@node-rs/bcrypt-android-arm-eabi': 1.9.2
+ '@node-rs/bcrypt-android-arm64': 1.9.2
+ '@node-rs/bcrypt-darwin-arm64': 1.9.2
+ '@node-rs/bcrypt-darwin-x64': 1.9.2
+ '@node-rs/bcrypt-freebsd-x64': 1.9.2
+ '@node-rs/bcrypt-linux-arm-gnueabihf': 1.9.2
+ '@node-rs/bcrypt-linux-arm64-gnu': 1.9.2
+ '@node-rs/bcrypt-linux-arm64-musl': 1.9.2
+ '@node-rs/bcrypt-linux-x64-gnu': 1.9.2
+ '@node-rs/bcrypt-linux-x64-musl': 1.9.2
+ '@node-rs/bcrypt-wasm32-wasi': 1.9.2
+ '@node-rs/bcrypt-win32-arm64-msvc': 1.9.2
+ '@node-rs/bcrypt-win32-ia32-msvc': 1.9.2
+ '@node-rs/bcrypt-win32-x64-msvc': 1.9.2
+ dev: false
+
+ /@nodelib/fs.scandir@2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ /@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'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ /@pkgjs/parseargs@0.11.0:
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+ requiresBuild: true
+ optional: true
+
+ /@popperjs/core@2.11.8:
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+ dev: false
+
+ /@radix-ui/number@1.0.1:
+ resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
+ dependencies:
+ '@babel/runtime': 7.24.4
+ dev: false
+
+ /@radix-ui/primitive@1.0.0:
+ resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==}
+ dependencies:
+ '@babel/runtime': 7.24.4
+ dev: false
+
+ /@radix-ui/primitive@1.0.1:
+ resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
+ dependencies:
+ '@babel/runtime': 7.24.4
+ dev: false
+
+ /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-compose-refs@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-context-menu@2.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-R5XaDj06Xul1KGb+WP8qiOh7tKJNz2durpLBXAGZjSVtctcRFCuEvy2gtMwRJGePwQQE5nV77gs4FwRi8T+r2g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-context@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-context@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-dialog@1.0.0(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.0
+ '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
+ '@radix-ui/react-context': 1.0.0(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.0(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.0(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0)
+ aria-hidden: 1.2.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.4(@types/react@18.2.78)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ aria-hidden: 1.2.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-direction@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.0
+ '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-focus-guards@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-hover-card@1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-OcUN2FU0YpmajD/qkph3XzMcK/NmSk9hGWnjV68p6QiZMgILugusgQwnLSDs3oFSJYGKf3Y49zgFedhGh04k9A==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-icons@1.3.0(react@18.2.0):
+ resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
+ peerDependencies:
+ react: ^16.x || ^17.x || ^18.x
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-id@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-id@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ aria-hidden: 1.2.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-menubar@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-bHgUo9gayKZfaQcWSSLr++LyS0rgh+MvD89DE4fJ6TkGHvjHgPaBZf44hdka7ogOxIOdj9163J+5xL2Dn4qzzg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ aria-hidden: 1.2.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/rect': 1.0.1
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-portal@1.0.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-primitive@1.0.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-slot': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/number': 1.0.1
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/number': 1.0.1
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ aria-hidden: 1.2.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-slot@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-slot@1.0.2(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0):
+ resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==}
+ peerDependencies:
+ react: ^16.8 || ^17.0 || ^18.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/rect': 1.0.1
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-size@1.0.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0)
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.78
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/rect@1.0.1:
+ resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
+ dependencies:
+ '@babel/runtime': 7.24.4
+ dev: false
+
+ /@remirror/core-constants@2.0.2:
+ resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
+ dev: false
+
+ /@replit/codemirror-lang-csharp@6.2.0(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/lr@1.4.0):
+ resolution: {integrity: sha512-6utbaWkoymhoAXj051mkRp+VIJlpwUgCX9Toevz3YatiZsz512fw3OVCedXQx+WcR0wb6zVHjChnuxqfCLtFVQ==}
+ peerDependencies:
+ '@codemirror/autocomplete': ^6.0.0
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ '@lezer/highlight': ^1.0.0
+ '@lezer/lr': ^1.0.0
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/lr@1.4.0):
+ resolution: {integrity: sha512-lvzjoYn9nfJzBD5qdm3Ut6G3+Or2wEacYIDJ49h9+19WSChVnxv4ojf+rNmQ78ncuxIt/bfbMvDLMeMP0xze6g==}
+ peerDependencies:
+ '@codemirror/autocomplete': ^6.0.0
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ '@lezer/highlight': ^1.0.0
+ '@lezer/lr': ^1.0.0
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@replit/codemirror-lang-solidity@6.0.2(@codemirror/language@6.10.1):
+ resolution: {integrity: sha512-/dpTVH338KFV6SaDYYSadkB4bI/0B0QRF/bkt1XS3t3QtyR49mn6+2k0OUQhvt2ZSO7kt10J+OPilRAtgbmX0w==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/highlight': 1.2.0
+ dev: false
+
+ /@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.16.0)(@codemirror/lang-css@6.2.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.14)(@lezer/lr@1.4.0):
+ resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==}
+ peerDependencies:
+ '@codemirror/autocomplete': ^6.0.0
+ '@codemirror/lang-css': ^6.0.1
+ '@codemirror/lang-html': ^6.2.0
+ '@codemirror/lang-javascript': ^6.1.1
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ '@lezer/highlight': ^1.0.0
+ '@lezer/javascript': ^1.2.0
+ '@lezer/lr': ^1.0.0
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/javascript': 1.4.14
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@rollup/rollup-android-arm-eabi@4.14.2:
+ resolution: {integrity: sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-android-arm64@4.14.2:
+ resolution: {integrity: sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-arm64@4.14.2:
+ resolution: {integrity: sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-x64@4.14.2:
+ resolution: {integrity: sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm-gnueabihf@4.14.2:
+ resolution: {integrity: sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-gnu@4.14.2:
+ resolution: {integrity: sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-musl@4.14.2:
+ resolution: {integrity: sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-powerpc64le-gnu@4.14.2:
+ resolution: {integrity: sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-riscv64-gnu@4.14.2:
+ resolution: {integrity: sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-s390x-gnu@4.14.2:
+ resolution: {integrity: sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.14.2:
+ resolution: {integrity: sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-musl@4.14.2:
+ resolution: {integrity: sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-arm64-msvc@4.14.2:
+ resolution: {integrity: sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-ia32-msvc@4.14.2:
+ resolution: {integrity: sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-x64-msvc@4.14.2:
+ resolution: {integrity: sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rushstack/eslint-patch@1.10.2:
+ resolution: {integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==}
+ dev: true
+
+ /@silevis/reactgrid@4.1.4(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-j4Gqd25itlMFsNXMO5PuPVEzVz8UYkPBdpsDv4FtBC5XjsWBU+t7LjkY3Lce3q+zYpB7FR0WhdiqgI/F46XsPQ==}
+ peerDependencies:
+ react: ^16.13.1 || ^17.0.0 || ^18.2.0
+ react-dom: ^16.13.1 || ^17.0.0 || ^18.2.0
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ sass: 1.75.0
+ tslib: 2.6.2
+ dev: false
+
+ /@sinclair/typebox@0.27.8:
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+
+ /@sinonjs/commons@3.0.1:
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
+ dependencies:
+ type-detect: 4.0.8
+
+ /@sinonjs/fake-timers@10.3.0:
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+ dependencies:
+ '@sinonjs/commons': 3.0.1
+
+ /@smithy/abort-controller@2.2.0:
+ resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/chunked-blob-reader-native@2.2.0:
+ resolution: {integrity: sha512-VNB5+1oCgX3Fzs072yuRsUoC2N4Zg/LJ11DTxX3+Qu+Paa6AmbIF0E9sc2wthz9Psrk/zcOlTCyuposlIhPjZQ==}
+ dependencies:
+ '@smithy/util-base64': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/chunked-blob-reader@2.2.0:
+ resolution: {integrity: sha512-3GJNvRwXBGdkDZZOGiziVYzDpn4j6zfyULHMDKAGIUo72yHALpE9CbhfQp/XcLNVoc1byfMpn6uW5H2BqPjgaQ==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/config-resolver@2.2.0:
+ resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-config-provider': 2.3.0
+ '@smithy/util-middleware': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/core@1.4.2:
+ resolution: {integrity: sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-endpoint': 2.5.1
+ '@smithy/middleware-retry': 2.3.1
+ '@smithy/middleware-serde': 2.3.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/util-middleware': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/credential-provider-imds@2.3.0:
+ resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/types': 2.12.0
+ '@smithy/url-parser': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-codec@2.2.0:
+ resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-hex-encoding': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-browser@2.2.0:
+ resolution: {integrity: sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-serde-universal': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-config-resolver@2.2.0:
+ resolution: {integrity: sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-node@2.2.0:
+ resolution: {integrity: sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-serde-universal': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-universal@2.2.0:
+ resolution: {integrity: sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-codec': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/fetch-http-handler@2.5.0:
+ resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==}
+ dependencies:
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/querystring-builder': 2.2.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-base64': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-blob-browser@2.2.0:
+ resolution: {integrity: sha512-SGPoVH8mdXBqrkVCJ1Hd1X7vh1zDXojNN1yZyZTZsCno99hVue9+IYzWDjq/EQDDXxmITB0gBmuyPh8oAZSTcg==}
+ dependencies:
+ '@smithy/chunked-blob-reader': 2.2.0
+ '@smithy/chunked-blob-reader-native': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-node@2.2.0:
+ resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ '@smithy/util-buffer-from': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-stream-node@2.2.0:
+ resolution: {integrity: sha512-aT+HCATOSRMGpPI7bi7NSsTNVZE/La9IaxLXWoVAYMxHT5hGO3ZOGEMZQg8A6nNL+pdFGtZQtND1eoY084HgHQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/invalid-dependency@2.2.0:
+ resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/is-array-buffer@2.2.0:
+ resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/md5-js@2.2.0:
+ resolution: {integrity: sha512-M26XTtt9IIusVMOWEAhIvFIr9jYj4ISPPGJROqw6vXngO3IYJCnVVSMFn4Tx1rUTG5BiKJNg9u2nxmBiZC5IlQ==}
+ dependencies:
+ '@smithy/types': 2.12.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-content-length@2.2.0:
+ resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-endpoint@2.5.1:
+ resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-serde': 2.3.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ '@smithy/url-parser': 2.2.0
+ '@smithy/util-middleware': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-retry@2.3.1:
+ resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/service-error-classification': 2.1.5
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ '@smithy/util-middleware': 2.2.0
+ '@smithy/util-retry': 2.2.0
+ tslib: 2.6.2
+ uuid: 9.0.1
+ dev: false
+
+ /@smithy/middleware-serde@2.3.0:
+ resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-stack@2.2.0:
+ resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-config-provider@2.3.0:
+ resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.2.0
+ '@smithy/shared-ini-file-loader': 2.4.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-http-handler@2.5.0:
+ resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.2.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/querystring-builder': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/property-provider@2.2.0:
+ resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/protocol-http@3.3.0:
+ resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-builder@2.2.0:
+ resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ '@smithy/util-uri-escape': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-parser@2.2.0:
+ resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/service-error-classification@2.1.5:
+ resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ dev: false
+
+ /@smithy/shared-ini-file-loader@2.4.0:
+ resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/signature-v4@2.3.0:
+ resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/is-array-buffer': 2.2.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-hex-encoding': 2.2.0
+ '@smithy/util-middleware': 2.2.0
+ '@smithy/util-uri-escape': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/smithy-client@2.5.1:
+ resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-endpoint': 2.5.1
+ '@smithy/middleware-stack': 2.2.0
+ '@smithy/protocol-http': 3.3.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-stream': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/types@2.12.0:
+ resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/url-parser@2.2.0:
+ resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==}
+ dependencies:
+ '@smithy/querystring-parser': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-base64@2.3.0:
+ resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-browser@2.2.0:
+ resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-node@2.3.0:
+ resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-buffer-from@2.2.0:
+ resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/is-array-buffer': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-config-provider@2.3.0:
+ resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-browser@2.2.1:
+ resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.2.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-node@2.3.1:
+ resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/config-resolver': 2.2.0
+ '@smithy/credential-provider-imds': 2.3.0
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/property-provider': 2.2.0
+ '@smithy/smithy-client': 2.5.1
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-endpoints@1.2.0:
+ resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.3.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-hex-encoding@2.2.0:
+ resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-middleware@2.2.0:
+ resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-retry@2.2.0:
+ resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/service-error-classification': 2.1.5
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-stream@2.2.0:
+ resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/fetch-http-handler': 2.5.0
+ '@smithy/node-http-handler': 2.5.0
+ '@smithy/types': 2.12.0
+ '@smithy/util-base64': 2.3.0
+ '@smithy/util-buffer-from': 2.2.0
+ '@smithy/util-hex-encoding': 2.2.0
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-uri-escape@2.2.0:
+ resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-utf8@2.3.0:
+ resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-waiter@2.2.0:
+ resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.2.0
+ '@smithy/types': 2.12.0
+ tslib: 2.6.2
+ dev: false
+
+ /@swc/counter@0.1.3:
+ resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+ dev: false
+
+ /@swc/helpers@0.5.5:
+ resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
+ dependencies:
+ '@swc/counter': 0.1.3
+ tslib: 2.6.2
+ dev: false
+
+ /@t3-oss/env-core@0.9.2(typescript@5.4.5)(zod@3.22.4):
+ resolution: {integrity: sha512-KgWXljUTHgO3o7GMZQPAD5+P+HqpauMNNHowlm7V2b9IeMitSUpNKwG6xQrup/xARWHTdxRVIl0mSI4wCevQhQ==}
+ peerDependencies:
+ typescript: '>=5.0.0'
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ typescript: 5.4.5
+ zod: 3.22.4
+ dev: false
+
+ /@t3-oss/env-nextjs@0.9.2(typescript@5.4.5)(zod@3.22.4):
+ resolution: {integrity: sha512-dklHrgKLESStNVB67Jdbu6osxDYA+xNKaPBRerlnkEvzbCccSKMvZENx6EZebJuR4snqB3/yRykNMn/bdIAyiQ==}
+ peerDependencies:
+ typescript: '>=5.0.0'
+ zod: ^3.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@t3-oss/env-core': 0.9.2(typescript@5.4.5)(zod@3.22.4)
+ typescript: 5.4.5
+ zod: 3.22.4
+ dev: false
+
+ /@testing-library/dom@9.3.4:
+ resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@babel/code-frame': 7.24.2
+ '@babel/runtime': 7.24.4
+ '@types/aria-query': 5.0.4
+ aria-query: 5.1.3
+ chalk: 4.1.2
+ dom-accessibility-api: 0.5.16
+ lz-string: 1.5.0
+ pretty-format: 27.5.1
+ dev: true
+
+ /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(jest@29.7.0):
+ resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+ peerDependencies:
+ '@jest/globals': '>= 28'
+ '@types/bun': latest
+ '@types/jest': '>= 28'
+ jest: '>= 28'
+ vitest: '>= 0.32'
+ peerDependenciesMeta:
+ '@jest/globals':
+ optional: true
+ '@types/bun':
+ optional: true
+ '@types/jest':
+ optional: true
+ jest:
+ optional: true
+ vitest:
+ optional: true
+ dependencies:
+ '@adobe/css-tools': 4.3.3
+ '@babel/runtime': 7.24.4
+ '@types/jest': 29.5.12
+ aria-query: 5.3.0
+ chalk: 3.0.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.3
+ jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ lodash: 4.17.21
+ redent: 3.0.0
+ dev: true
+
+ /@testing-library/react@14.3.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@testing-library/dom': 9.3.4
+ '@types/react-dom': 18.2.25
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: true
+
+ /@tiptap/core@2.3.0(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-Gk2JN3i5CMkYGmsbyFI7cBUftWa+F7QYmeCLTWfbuy+hCM2OBsnYVKxhggFPGXRL5KLBEgBWeCeWMHfIw3B2MA==}
+ peerDependencies:
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/pm': 2.3.0
+ dev: false
+
+ /@tiptap/extension-bold@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-SzkbJibHXFNU7TRaAebTtwbXUEhGZ8+MhlBn12aQ4QhdjNtFpQwKXQPyYeDyZGcyiOFgtFTb+WIfCGm8ZX0Fpw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-bubble-menu@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-dqyfQ8idTlhapvt0fxCGvkyjw92pBEwPqmkJ01h3EE8wTh53j0ytOHyMSf1KBuzardxpd8Yya3zlrAcR0Z3DlQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ tippy.js: 6.3.7
+ dev: false
+
+ /@tiptap/extension-code@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-O2FZmosiIRoVbW82fZy8xW4h4gb2xAzxWzHEcsHPlwCbE3vYvcBMmbkQ5p+33eRtuRQInzl3Q/cwupv9ctIepQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-collaboration-cursor@2.3.0(@tiptap/core@2.3.0)(y-prosemirror@1.2.1):
+ resolution: {integrity: sha512-nwh3yBuFCBvGLzJeCDzwAesm4nkbIQuYJCM7IUt/JHnY4nj6H9ZtJQw4gWe4CCiEzl8zgozIDyq/WSExweH7zw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ y-prosemirror: ^1.2.1
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ y-prosemirror: 1.2.1(prosemirror-model@1.20.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.4)(y-protocols@1.0.6)(yjs@13.6.14)
+ dev: false
+
+ /@tiptap/extension-collaboration@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(y-prosemirror@1.2.1):
+ resolution: {integrity: sha512-mim3lG+wdlSYiPdPYO6jAt0YhBauS0E1GoqrDgIVPM5G3qqcMC8DMLsA3XPkf5LZE7JSJRcX+R8Wo2VJXvqqYQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ y-prosemirror: ^1.2.1
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ y-prosemirror: 1.2.1(prosemirror-model@1.20.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.4)(y-protocols@1.0.6)(yjs@13.6.14)
+ dev: false
+
+ /@tiptap/extension-dropcursor@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-WWxxGQPWdbzxyYP6jtBYSq4wMRhINhI0wBC8pgkxTVwCIWftMuYj++FP4LLIpuWgj78PWApuoM0QQxk4Lj7FOw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ dev: false
+
+ /@tiptap/extension-floating-menu@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-bNY43/yU/+wGfmk2eDV7EPDAN/akbC+YnSKTA5VPJADzscvlrL2HlQrxbd/STIdlwKqdPU5MokcvCChhfZ4f6w==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ tippy.js: 6.3.7
+ dev: false
+
+ /@tiptap/extension-gapcursor@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-OxcXcfD0uzNcXdXu2ZpXFAtXIsgK2MBHvFUs0t0gxtcL/t43pTOQBLy+29Ei30BxpwLghtX8jQ6IDzMiybq/sA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ dev: false
+
+ /@tiptap/extension-hard-break@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-9pXi69SzLabbjY5KZ54UKzu7HAHTla9aYZKH56VatOAiJOPKJppFbU2/NfJwGzDrEtfOiDqr3dYbUDF3RuCFoQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-history@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-EF5Oq9fe/VBzU1Lsow2ubOlx1e1r4OQT1WUPGsRnL7pr94GH1Skpk7/hs9COJ9K6kP3Ebt42XjP0JEQodR58YA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ dev: false
+
+ /@tiptap/extension-horizontal-rule@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-4DB8GU3uuDzzyqUmONIb3CHXcQ6Nuy4mHHkFSmUyEjg1i5eMQU5H7S6mNvZbltcJB2ImgCSwSMlj1kVN3MLIPg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ dev: false
+
+ /@tiptap/extension-italic@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-jdFjLjdt5JtPlGMpoS6TEq5rznjbAYVlPwcw5VkYENVIYIGIR1ylIw2JwK1nUEsQ+OgYwVxHLejcUXWG1dCi2g==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-link@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0):
+ resolution: {integrity: sha512-CnJAlV0ZOdEhKmDfYKuHJVG8g79iCFQ85cX/CROTWyuMfXz9uhj2rLpZ6nfidVbonqxAhQp7NAIr2y+Fj5/53A==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ linkifyjs: 4.1.3
+ dev: false
+
+ /@tiptap/extension-paragraph@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-peCpA7DFqkd0cHb+cHv4YHNoMsXG8tKFNJlCHpLmsZWl2hWmpKgKmUrXAUfzjcFSvkZxn0xYc5oWbqUgg+2LzA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-strike@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-gOW4ALeH8gkJiUGGXVy/AOd5lAPTX0bzoOW1+sCLcTA7t8dluBW7M2ngNYxTEtlKqyv7aLfrgsYSiqucmmfSLw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-table-cell@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-jsFp5lc+be04AsuMiTGlluLnsmJl/51+sv0DewYHeidh7iyvk3R5y2pyA+Bk1V/txFdaH5GxOQvSH3RonEVMAg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-table-header@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-wLvJqDBaXc/xs+NBJZoSIfO7fVYqcrIlsdtQRlBec3vTpSG0w0zlrM/JY4mjQKHzWsDk6hb9mvbK2scChOu5TA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-table-row@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-i2o/S8Mggw1GDxF5N5i8SvDvmOvbHu8MuWpdhFwfOkbrnEdtHlU/GjWIEstPymg4QyrfAEQa/KDffkrX0T7RNw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-text@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-zkudl0TyKRy/8vHtyo5dMzjBRD0HEUnsS8YOsjR4xwQq5EYUXleRgM1s6lb6Yms2sLUAZRWdDddoQ686iq4zQg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/extension-underline@2.3.0(@tiptap/core@2.3.0):
+ resolution: {integrity: sha512-vmmcwCPmWqGKYHZevz50+bxrpHyiu5y6YZweAE476hn8Mud6vYg7RpkXgW8bjkCOky6UA51uelslSc0XrLE6uw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ dev: false
+
+ /@tiptap/pm@2.3.0:
+ resolution: {integrity: sha512-4WYqShZBwDyReKvapC0nmeYdOtZbZ31y4MjolpKQaSD4I7kg/oZspC+byUGdvIRsNpRN7i2X0IyvdISKk8gw5Q==}
+ dependencies:
+ prosemirror-changeset: 2.2.1
+ prosemirror-collab: 1.3.1
+ prosemirror-commands: 1.5.2
+ prosemirror-dropcursor: 1.8.1
+ prosemirror-gapcursor: 1.3.2
+ prosemirror-history: 1.4.0
+ prosemirror-inputrules: 1.4.0
+ prosemirror-keymap: 1.2.2
+ prosemirror-markdown: 1.12.0
+ prosemirror-menu: 1.2.4
+ prosemirror-model: 1.20.0
+ prosemirror-schema-basic: 1.2.2
+ prosemirror-schema-list: 1.3.0
+ prosemirror-state: 1.4.3
+ prosemirror-tables: 1.3.7
+ prosemirror-trailing-node: 2.0.8(prosemirror-model@1.20.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.4)
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.4
+ dev: false
+
+ /@tiptap/react@2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-ThgFJQTWYKRClTV2Zg0wBRqfy0EGz3U4NOey7jwncUjSjx5+o9nXbfQAYWDKQFfWyE+wnrBTYfddEP9pHNX5cQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ react: ^17.0.0 || ^18.0.0
+ react-dom: ^17.0.0 || ^18.0.0
+ dependencies:
+ '@tiptap/core': 2.3.0(@tiptap/pm@2.3.0)
+ '@tiptap/extension-bubble-menu': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/extension-floating-menu': 2.3.0(@tiptap/core@2.3.0)(@tiptap/pm@2.3.0)
+ '@tiptap/pm': 2.3.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@tootallnate/once@2.0.0:
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@tsconfig/node10@1.0.11:
+ resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
+
+ /@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==}
+
+ /@tybys/wasm-util@0.8.1:
+ resolution: {integrity: sha512-GSsTwyBl4pIzsxAY5wroZdyQKyhXk0d8PCRZtrSZ2WEB1cBdrp2EgGBwHOGCZtIIPun/DL3+AykCv+J6fyRH4Q==}
+ requiresBuild: true
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+ optional: true
+
+ /@types/aria-query@5.0.4:
+ resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+ dev: true
+
+ /@types/babel__core@7.20.5:
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+ dependencies:
+ '@babel/parser': 7.24.4
+ '@babel/types': 7.24.0
+ '@types/babel__generator': 7.6.8
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.20.5
+
+ /@types/babel__generator@7.6.8:
+ resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@types/babel__template@7.4.4:
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+ dependencies:
+ '@babel/parser': 7.24.4
+ '@babel/types': 7.24.0
+
+ /@types/babel__traverse@7.20.5:
+ resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==}
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@types/cookie@0.6.0:
+ resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+ dev: false
+
+ /@types/debug@4.1.12:
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ dependencies:
+ '@types/ms': 0.7.34
+ dev: false
+
+ /@types/deep-equal@1.0.4:
+ resolution: {integrity: sha512-tqdiS4otQP4KmY0PR3u6KbZ5EWvhNdUoS/jc93UuK23C220lOZ/9TvjfxdPcKvqwwDVtmtSCrnr0p/2dirAxkA==}
+ dev: true
+
+ /@types/eslint@8.56.9:
+ resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==}
+ dependencies:
+ '@types/estree': 1.0.5
+ '@types/json-schema': 7.0.15
+ dev: true
+
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: true
+
+ /@types/extend@3.0.4:
+ resolution: {integrity: sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA==}
+ dev: false
+
+ /@types/graceful-fs@4.1.9:
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
+ dependencies:
+ '@types/node': 20.12.7
+
+ /@types/hast@2.3.10:
+ resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /@types/hast@3.0.4:
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /@types/istanbul-lib-coverage@2.0.6:
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+
+ /@types/istanbul-lib-report@3.0.3:
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+
+ /@types/istanbul-reports@3.0.4:
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+
+ /@types/jest@29.5.12:
+ resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
+ /@types/jsdom@20.0.1:
+ resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
+ dependencies:
+ '@types/node': 20.12.7
+ '@types/tough-cookie': 4.0.5
+ parse5: 7.1.2
+ dev: true
+
+ /@types/json-schema@7.0.15:
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ /@types/json5@0.0.29:
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+ dev: true
+
+ /@types/mdast@3.0.15:
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ dev: false
+
+ /@types/node-fetch@2.6.11:
+ resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
+ dependencies:
+ '@types/node': 20.12.7
+ form-data: 4.0.0
+ dev: false
+
+ /@types/node@16.18.96:
+ resolution: {integrity: sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==}
+ dev: false
+
+ /@types/node@20.12.7:
+ resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==}
+ dependencies:
+ undici-types: 5.26.5
+
+ /@types/parse5@6.0.3:
+ resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
+ dev: false
+
+ /@types/prop-types@15.7.12:
+ resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
+
+ /@types/react-dom@18.2.25:
+ resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==}
+ dependencies:
+ '@types/react': 18.2.78
+
+ /@types/react@18.2.78:
+ resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==}
+ dependencies:
+ '@types/prop-types': 15.7.12
+ csstype: 3.1.3
+
+ /@types/semver@7.5.8:
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ /@types/stack-utils@2.0.3:
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+
+ /@types/tough-cookie@4.0.5:
+ resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
+ dev: true
+
+ /@types/unist@2.0.10:
+ resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+ dev: false
+
+ /@types/unist@3.0.2:
+ resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
+ dev: false
+
+ /@types/ws@8.5.10:
+ resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
+ dependencies:
+ '@types/node': 20.12.7
+ dev: false
+
+ /@types/yargs-parser@21.0.3:
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+ /@types/yargs@17.0.32:
+ resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
+ /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@eslint-community/regexpp': 4.10.0
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/scope-manager': 6.21.0
+ '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 6.21.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)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^7.0.0
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@eslint-community/regexpp': 4.10.0
+ '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/scope-manager': 7.6.0
+ '@typescript-eslint/type-utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.6.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)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 6.21.0
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 6.21.0
+ debug: 4.3.4
+ eslint: 8.57.0
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ /@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 7.6.0
+ '@typescript-eslint/types': 7.6.0
+ '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
+ '@typescript-eslint/visitor-keys': 7.6.0
+ debug: 4.3.4
+ eslint: 8.57.0
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/scope-manager@5.62.0:
+ resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ dev: false
+
+ /@typescript-eslint/scope-manager@6.21.0:
+ resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/visitor-keys': 6.21.0
+
+ /@typescript-eslint/scope-manager@7.6.0:
+ resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ dependencies:
+ '@typescript-eslint/types': 7.6.0
+ '@typescript-eslint/visitor-keys': 7.6.0
+ dev: true
+
+ /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5)
+ '@typescript-eslint/utils': 6.21.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)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ /@typescript-eslint/type-utils@7.6.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
+ '@typescript-eslint/utils': 7.6.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)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/types@5.62.0:
+ resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: false
+
+ /@typescript-eslint/types@6.21.0:
+ resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+
+ /@typescript-eslint/types@7.6.0:
+ resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ dev: true
+
+ /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5):
+ resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.6.0
+ tsutils: 3.21.0(typescript@5.4.5)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5):
+ resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ 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)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+
+ /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5):
+ resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 7.6.0
+ '@typescript-eslint/visitor-keys': 7.6.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)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ 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': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5)
+ eslint: 8.57.0
+ eslint-scope: 5.1.1
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ 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.6.0(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ peerDependencies:
+ eslint: ^8.56.0
+ 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.6.0
+ '@typescript-eslint/types': 7.6.0
+ '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5)
+ eslint: 8.57.0
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@typescript-eslint/visitor-keys@5.62.0:
+ resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ eslint-visitor-keys: 3.4.3
+ dev: false
+
+ /@typescript-eslint/visitor-keys@6.21.0:
+ resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dependencies:
+ '@typescript-eslint/types': 6.21.0
+ eslint-visitor-keys: 3.4.3
+
+ /@typescript-eslint/visitor-keys@7.6.0:
+ resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==}
+ engines: {node: ^18.18.0 || >=20.0.0}
+ dependencies:
+ '@typescript-eslint/types': 7.6.0
+ eslint-visitor-keys: 3.4.3
+ dev: true
+
+ /@uiw/codemirror-extensions-basic-setup@4.21.25(@codemirror/autocomplete@6.16.0)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-eeUKlmEE8aSoSgelS8OR2elcPGntpRo669XinAqPCLa0eKorT2B0d3ts+AE+njAeGk744tiyAEbHb2n+6OQmJw==}
+ peerDependencies:
+ '@codemirror/autocomplete': '>=6.0.0'
+ '@codemirror/commands': '>=6.0.0'
+ '@codemirror/language': '>=6.0.0'
+ '@codemirror/lint': '>=6.0.0'
+ '@codemirror/search': '>=6.0.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/commands': 6.3.3
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.5.0
+ '@codemirror/search': 6.5.6
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ dev: false
+
+ /@uiw/codemirror-extensions-langs@4.21.25(@codemirror/autocomplete@6.16.0)(@codemirror/language-data@6.5.0)(@codemirror/language@6.10.1)(@codemirror/legacy-modes@6.4.0)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.14)(@lezer/lr@1.4.0):
+ resolution: {integrity: sha512-d+lJnY1pXC+dyhIZkTfsKtiizrtoWSDgSfT+OfvZC6Ga3IodEx0MtHi3MFA0P5xnReTqaKQebmwV87NPRxjHPg==}
+ peerDependencies:
+ '@codemirror/language-data': '>=6.0.0'
+ '@codemirror/legacy-modes': '>=6.0.0'
+ dependencies:
+ '@codemirror/lang-angular': 0.1.3
+ '@codemirror/lang-cpp': 6.0.2
+ '@codemirror/lang-css': 6.2.1(@codemirror/view@6.26.3)
+ '@codemirror/lang-html': 6.4.9
+ '@codemirror/lang-java': 6.0.1
+ '@codemirror/lang-javascript': 6.2.2
+ '@codemirror/lang-json': 6.0.1
+ '@codemirror/lang-less': 6.0.2(@codemirror/view@6.26.3)
+ '@codemirror/lang-lezer': 6.0.1
+ '@codemirror/lang-liquid': 6.2.1
+ '@codemirror/lang-markdown': 6.2.5
+ '@codemirror/lang-php': 6.0.1
+ '@codemirror/lang-python': 6.1.5(@codemirror/view@6.26.3)
+ '@codemirror/lang-rust': 6.0.1
+ '@codemirror/lang-sass': 6.0.2(@codemirror/view@6.26.3)
+ '@codemirror/lang-sql': 6.6.3(@codemirror/view@6.26.3)
+ '@codemirror/lang-vue': 0.1.3
+ '@codemirror/lang-wast': 6.0.2
+ '@codemirror/lang-xml': 6.1.0
+ '@codemirror/language-data': 6.5.0(@codemirror/view@6.26.3)
+ '@codemirror/legacy-modes': 6.4.0
+ '@nextjournal/lang-clojure': 1.0.0
+ '@replit/codemirror-lang-csharp': 6.2.0(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/lr@1.4.0)
+ '@replit/codemirror-lang-nix': 6.0.1(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/lr@1.4.0)
+ '@replit/codemirror-lang-solidity': 6.0.2(@codemirror/language@6.10.1)
+ '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.16.0)(@codemirror/lang-css@6.2.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.14)(@lezer/lr@1.4.0)
+ codemirror-lang-mermaid: 0.5.0
+ transitivePeerDependencies:
+ - '@codemirror/autocomplete'
+ - '@codemirror/language'
+ - '@codemirror/state'
+ - '@codemirror/view'
+ - '@lezer/common'
+ - '@lezer/highlight'
+ - '@lezer/javascript'
+ - '@lezer/lr'
+ dev: false
+
+ /@uiw/codemirror-themes@4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3):
+ resolution: {integrity: sha512-C3t/voELxQj0eaVhrlgzaOnSALNf8bOcRbL5xN9r2+RkdsbFOmvNl3VVhlxEB7PSGc1jUZwVO4wQsB2AP178ag==}
+ peerDependencies:
+ '@codemirror/language': '>=6.0.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ dev: false
+
+ /@uiw/react-codemirror@4.21.25(@babel/runtime@7.24.4)(@codemirror/autocomplete@6.16.0)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.26.3)(codemirror@6.0.1)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-mBrCoiffQ+hbTqV1JoixFEcH7BHXkS3PjTyNH7dE8Gzf3GSBRazhtSM5HrAFIiQ5FIRGFs8Gznc4UAdhtevMmw==}
+ peerDependencies:
+ '@babel/runtime': '>=7.11.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/theme-one-dark': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+ codemirror: '>=6.0.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@codemirror/commands': 6.3.3
+ '@codemirror/state': 6.4.1
+ '@codemirror/theme-one-dark': 6.1.2
+ '@codemirror/view': 6.26.3
+ '@uiw/codemirror-extensions-basic-setup': 4.21.25(@codemirror/autocomplete@6.16.0)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)
+ codemirror: 6.0.1(@lezer/common@1.2.1)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@codemirror/autocomplete'
+ - '@codemirror/language'
+ - '@codemirror/lint'
+ - '@codemirror/search'
+ dev: false
+
+ /@ungap/structured-clone@1.2.0:
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ /@vitejs/plugin-react@4.2.1(vite@5.2.8):
+ resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.4)
+ '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4)
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.14.0
+ vite: 5.2.8(@types/node@20.12.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /abab@2.0.6:
+ resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+ deprecated: Use your platform's native atob() and btoa() methods instead
+ dev: true
+
+ /acorn-globals@7.0.1:
+ resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
+ dependencies:
+ acorn: 8.11.3
+ acorn-walk: 8.3.2
+ dev: true
+
+ /acorn-jsx@5.3.2(acorn@8.11.3):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.11.3
+
+ /acorn-walk@8.3.2:
+ resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
+ engines: {node: '>=0.4.0'}
+
+ /acorn@8.11.3:
+ resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ /agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ 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
+
+ /ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+
+ /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'}
+ dependencies:
+ color-convert: 1.9.3
+
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+
+ /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'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ /arctic@1.5.0:
+ resolution: {integrity: sha512-ZBC3a7yFncIkeoavrOFi+Jq+Qc4ENsl1JViCMjFe2VEv30XEEHyUsWOO8MHmPFsCyRXbboWSHf+OGpc3WyR67A==}
+ dependencies:
+ oslo: 1.2.0
+ dev: false
+
+ /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==}
+ dependencies:
+ sprintf-js: 1.0.3
+
+ /argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ /aria-hidden@1.2.4:
+ resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
+ engines: {node: '>=10'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /aria-query@5.1.3:
+ resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+ dependencies:
+ deep-equal: 2.2.3
+ dev: true
+
+ /aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
+ /array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
+
+ /array-includes@3.1.8:
+ resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
+ is-string: 1.0.7
+ dev: true
+
+ /array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ /array.prototype.findlast@1.2.5:
+ resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /array.prototype.findlastindex@1.2.5:
+ resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /array.prototype.flat@1.3.2:
+ resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /array.prototype.flatmap@1.3.2:
+ resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /array.prototype.toreversed@1.1.2:
+ resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /array.prototype.tosorted@1.1.3:
+ resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ is-array-buffer: 3.0.4
+ is-shared-array-buffer: 1.0.3
+ dev: true
+
+ /ast-types-flow@0.0.8:
+ resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+ dev: true
+
+ /asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ /autoprefixer@10.4.19(postcss@8.4.38):
+ resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.23.0
+ caniuse-lite: 1.0.30001610
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.38
+ postcss-value-parser: 4.2.0
+ dev: true
+
+ /available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ possible-typed-array-names: 1.0.0
+
+ /axe-core@4.7.0:
+ resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /axobject-query@3.2.1:
+ resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
+ /babel-jest@29.7.0(@babel/core@7.24.4):
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.20.5
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.24.4)
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /babel-plugin-istanbul@6.1.1:
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/helper-plugin-utils': 7.24.0
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 5.2.1
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/template': 7.24.0
+ '@babel/types': 7.24.0
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.20.5
+
+ /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.4):
+ resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.4)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.4)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.4)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.4)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.4)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.4)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.4)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.4)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.4)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.4)
+
+ /babel-preset-jest@29.6.3(@babel/core@7.24.4):
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.24.4
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.4)
+
+ /bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+ dev: false
+
+ /balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ /binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ /bowser@2.11.0:
+ resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
+ dev: false
+
+ /brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ /brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ dependencies:
+ balanced-match: 1.0.2
+
+ /braces@3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+
+ /browserslist@4.23.0:
+ resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001610
+ electron-to-chromium: 1.4.736
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.23.0)
+
+ /bs-logger@0.2.6:
+ resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
+ engines: {node: '>= 6'}
+ dependencies:
+ fast-json-stable-stringify: 2.1.0
+ dev: true
+
+ /bser@2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+ dependencies:
+ node-int64: 0.4.0
+
+ /buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ /bundle-require@4.0.2(esbuild@0.19.12):
+ resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ peerDependencies:
+ esbuild: '>=0.17'
+ dependencies:
+ esbuild: 0.19.12
+ load-tsconfig: 0.2.5
+ dev: true
+
+ /busboy@1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+ dependencies:
+ streamsearch: 1.1.0
+ dev: false
+
+ /cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+ 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.2
+
+ /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'}
+
+ /camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ /camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ /camelcase@7.0.1:
+ resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
+ engines: {node: '>=14.16'}
+ dev: true
+
+ /caniuse-lite@1.0.30001610:
+ resolution: {integrity: sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==}
+
+ /ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+ dev: false
+
+ /chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ /chalk@3.0.0:
+ resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ /chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ dev: true
+
+ /char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+
+ /character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+ dev: false
+
+ /character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+ dev: false
+
+ /character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+ dev: false
+
+ /chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+ 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.3
+
+ /ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
+
+ /cjs-module-lexer@1.2.3:
+ resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
+
+ /class-variance-authority@0.7.0:
+ resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
+ dependencies:
+ clsx: 2.0.0
+ dev: false
+
+ /cli-color@2.0.4:
+ resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-iterator: 2.0.3
+ memoizee: 0.4.15
+ timers-ext: 0.1.7
+ dev: true
+
+ /client-only@0.0.1:
+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ dev: false
+
+ /cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ /clsx@2.0.0:
+ resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /clsx@2.1.0:
+ resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /cmdk@0.2.1(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-U6//9lQ6JvT47+6OF6Gi8BvkxYQ8SCRRSKIJkthIMsFsLZRG0cKvTtuTaefyIKMQb8rvvXy0wGdpTNq/jPtm+g==}
+ peerDependencies:
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ dependencies:
+ '@radix-ui/react-dialog': 1.0.0(@types/react@18.2.78)(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
+ /codemirror-lang-mermaid@0.5.0:
+ resolution: {integrity: sha512-Taw/2gPCyNArQJCxIP/HSUif+3zrvD+6Ugt7KJZ2dUKou/8r3ZhcfG8krNTZfV2iu8AuGnymKuo7bLPFyqsh/A==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /codemirror@6.0.1(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==}
+ dependencies:
+ '@codemirror/autocomplete': 6.16.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
+ '@codemirror/commands': 6.3.3
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.5.0
+ '@codemirror/search': 6.5.6
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.26.3
+ transitivePeerDependencies:
+ - '@lezer/common'
+ dev: false
+
+ /collect-v8-coverage@1.0.2:
+ resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==}
+
+ /color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+
+ /color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ /combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+
+ /comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+ dev: false
+
+ /commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ /commander@9.5.0:
+ resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+ engines: {node: ^12.20.0 || >=14}
+ dev: true
+
+ /concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ /convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ /cookie@0.6.0:
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /cookies-next@4.1.1:
+ resolution: {integrity: sha512-20QaN0iQSz87Os0BhNg9M71eM++gylT3N5szTlhq2rK6QvXn1FYGPB4eAgU4qFTunbQKhD35zfQ95ZWgzUy3Cg==}
+ dependencies:
+ '@types/cookie': 0.6.0
+ '@types/node': 16.18.96
+ cookie: 0.6.0
+ dev: false
+
+ /copy-anything@3.0.5:
+ resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
+ engines: {node: '>=12.13'}
+ dependencies:
+ is-what: 4.1.16
+ dev: true
+
+ /create-jest@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ /create-require@1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+
+ /crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+ dev: false
+
+ /cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ /css.escape@1.5.1:
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+ dev: true
+
+ /cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ /cssom@0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+ dev: true
+
+ /cssom@0.5.0:
+ resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
+ dev: true
+
+ /cssstyle@2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cssom: 0.3.8
+ dev: true
+
+ /csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ /d@1.0.2:
+ resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
+ engines: {node: '>=0.12'}
+ dependencies:
+ es5-ext: 0.10.64
+ type: 2.7.2
+ dev: true
+
+ /damerau-levenshtein@1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+ dev: true
+
+ /data-uri-to-buffer@4.0.1:
+ resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
+ engines: {node: '>= 12'}
+ dev: false
+
+ /data-urls@3.0.2:
+ resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ abab: 2.0.6
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
+ dev: true
+
+ /data-view-buffer@1.0.1:
+ resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+ dev: true
+
+ /data-view-byte-length@1.0.1:
+ resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+ dev: true
+
+ /data-view-byte-offset@1.0.0:
+ resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-data-view: 1.0.1
+ dev: true
+
+ /debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+
+ /decimal.js@10.4.3:
+ resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+ dev: true
+
+ /decode-named-character-reference@1.0.2:
+ resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
+ dependencies:
+ character-entities: 2.0.2
+ dev: false
+
+ /dedent@1.5.3:
+ resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+
+ /deep-equal@2.2.3:
+ resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ es-get-iterator: 1.1.3
+ get-intrinsic: 1.2.4
+ is-arguments: 1.1.1
+ is-array-buffer: 3.0.4
+ is-date-object: 1.0.5
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ isarray: 2.0.5
+ object-is: 1.1.6
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ side-channel: 1.0.6
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.2
+ which-typed-array: 1.1.15
+
+ /deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ /deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
+ /define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ /delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ /dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ /detect-libc@2.0.2:
+ resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
+ engines: {node: '>=8'}
+ dev: false
+
+ /detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+
+ /detect-node-es@1.1.0:
+ resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
+ dev: false
+
+ /didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
+ /diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ 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.2.0:
+ resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
+ engines: {node: '>=0.3.1'}
+ dev: false
+
+ /difflib@0.2.4:
+ resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==}
+ dependencies:
+ heap: 0.2.7
+ dev: true
+
+ /dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+
+ /dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ /doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: true
+
+ /doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+
+ /dom-accessibility-api@0.5.16:
+ resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+ dev: true
+
+ /dom-accessibility-api@0.6.3:
+ resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
+ dev: true
+
+ /domexception@4.0.0:
+ resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
+ engines: {node: '>=12'}
+ deprecated: Use your platform's native DOMException instead
+ dependencies:
+ webidl-conversions: 7.0.0
+ dev: true
+
+ /dotenv@16.4.5:
+ resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /download-yue@2.1.0:
+ resolution: {integrity: sha512-ECsv6WVYCBCFrCnBcpHTCgFsRM/h7C/AtrzXuTc8+xaW5lXj+Jw6c5S7Eq/ncix41h05JerSxan5p7p80H35qQ==}
+ hasBin: true
+ dev: true
+
+ /dreamopt@0.8.0:
+ resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==}
+ engines: {node: '>=0.4.0'}
+ dependencies:
+ wordwrap: 1.0.0
+ dev: true
+
+ /drizzle-kit@0.20.14:
+ resolution: {integrity: sha512-0fHv3YIEaUcSVPSGyaaBfOi9bmpajjhbJNdPsRMIUvYdLVxBu9eGjH8mRc3Qk7HVmEidFc/lhG1YyJhoXrn5yA==}
+ hasBin: true
+ dependencies:
+ '@drizzle-team/studio': 0.0.39
+ '@esbuild-kit/esm-loader': 2.6.5
+ camelcase: 7.0.1
+ chalk: 5.3.0
+ commander: 9.5.0
+ env-paths: 3.0.0
+ esbuild: 0.19.12
+ esbuild-register: 3.5.0(esbuild@0.19.12)
+ glob: 8.1.0
+ hanji: 0.0.5
+ json-diff: 0.9.0
+ minimatch: 7.4.6
+ semver: 7.6.0
+ zod: 3.22.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /drizzle-orm@0.30.8(@libsql/client@0.5.6)(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==}
+ peerDependencies:
+ '@aws-sdk/client-rds-data': '>=3'
+ '@cloudflare/workers-types': '>=3'
+ '@electric-sql/pglite': '>=0.1.1'
+ '@libsql/client': '*'
+ '@neondatabase/serverless': '>=0.1'
+ '@op-engineering/op-sqlite': '>=2'
+ '@opentelemetry/api': ^1.4.1
+ '@planetscale/database': '>=1'
+ '@types/better-sqlite3': '*'
+ '@types/pg': '*'
+ '@types/react': '>=18'
+ '@types/sql.js': '*'
+ '@vercel/postgres': '>=0.8.0'
+ '@xata.io/client': '*'
+ better-sqlite3: '>=7'
+ bun-types: '*'
+ expo-sqlite: '>=13.2.0'
+ knex: '*'
+ kysely: '*'
+ mysql2: '>=2'
+ pg: '>=8'
+ postgres: '>=3'
+ react: '>=18'
+ sql.js: '>=1'
+ sqlite3: '>=5'
+ peerDependenciesMeta:
+ '@aws-sdk/client-rds-data':
+ optional: true
+ '@cloudflare/workers-types':
+ optional: true
+ '@electric-sql/pglite':
+ optional: true
+ '@libsql/client':
+ optional: true
+ '@neondatabase/serverless':
+ optional: true
+ '@op-engineering/op-sqlite':
+ optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@types/better-sqlite3':
+ optional: true
+ '@types/pg':
+ optional: true
+ '@types/react':
+ optional: true
+ '@types/sql.js':
+ optional: true
+ '@vercel/postgres':
+ optional: true
+ '@xata.io/client':
+ optional: true
+ better-sqlite3:
+ optional: true
+ bun-types:
+ optional: true
+ expo-sqlite:
+ optional: true
+ knex:
+ optional: true
+ kysely:
+ optional: true
+ mysql2:
+ optional: true
+ pg:
+ optional: true
+ postgres:
+ optional: true
+ react:
+ optional: true
+ sql.js:
+ optional: true
+ sqlite3:
+ optional: true
+ dependencies:
+ '@libsql/client': 0.5.6
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ /electron-to-chromium@1.4.736:
+ resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==}
+
+ /emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ /emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ /enhanced-resolve@5.16.0:
+ resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+ dev: true
+
+ /entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ /env-paths@3.0.0:
+ resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
+ /error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+
+ /es-abstract@1.23.3:
+ resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ data-view-buffer: 1.0.1
+ data-view-byte-length: 1.0.1
+ data-view-byte-offset: 1.0.0
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ es-set-tostringtag: 2.0.3
+ es-to-primitive: 1.2.1
+ function.prototype.name: 1.1.6
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
+ globalthis: 1.0.3
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.2
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
+ is-callable: 1.2.7
+ is-data-view: 1.0.1
+ is-negative-zero: 2.0.3
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ is-string: 1.0.7
+ is-typed-array: 1.1.13
+ is-weakref: 1.0.2
+ object-inspect: 1.13.1
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ safe-array-concat: 1.1.2
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.9
+ string.prototype.trimend: 1.0.8
+ string.prototype.trimstart: 1.0.8
+ 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.6
+ unbox-primitive: 1.0.2
+ which-typed-array: 1.1.15
+ dev: true
+
+ /es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ /es-get-iterator@1.1.3:
+ resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ is-arguments: 1.1.1
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-string: 1.0.7
+ isarray: 2.0.5
+ stop-iteration-iterator: 1.0.0
+
+ /es-iterator-helpers@1.0.18:
+ resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.0.3
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.3
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ iterator.prototype: 1.1.2
+ safe-array-concat: 1.1.2
+ dev: true
+
+ /es-object-atoms@1.0.0:
+ resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ dev: true
+
+ /es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.4
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+ dev: true
+
+ /es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+ dependencies:
+ hasown: 2.0.2
+ dev: true
+
+ /es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+ dev: true
+
+ /es5-ext@0.10.64:
+ resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
+ engines: {node: '>=0.10'}
+ requiresBuild: true
+ dependencies:
+ es6-iterator: 2.0.3
+ es6-symbol: 3.1.4
+ esniff: 2.0.1
+ next-tick: 1.1.0
+ dev: true
+
+ /es6-iterator@2.0.3:
+ resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-symbol: 3.1.4
+ dev: true
+
+ /es6-symbol@3.1.4:
+ resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
+ engines: {node: '>=0.12'}
+ dependencies:
+ d: 1.0.2
+ ext: 1.7.0
+ dev: true
+
+ /es6-weak-map@2.0.3:
+ resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==}
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-iterator: 2.0.3
+ es6-symbol: 3.1.4
+ dev: true
+
+ /esbuild-register@3.5.0(esbuild@0.19.12):
+ resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==}
+ peerDependencies:
+ esbuild: '>=0.12 <1'
+ dependencies:
+ debug: 4.3.4
+ esbuild: 0.19.12
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /esbuild@0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+ dev: true
+
+ /esbuild@0.19.12:
+ resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.19.12
+ '@esbuild/android-arm': 0.19.12
+ '@esbuild/android-arm64': 0.19.12
+ '@esbuild/android-x64': 0.19.12
+ '@esbuild/darwin-arm64': 0.19.12
+ '@esbuild/darwin-x64': 0.19.12
+ '@esbuild/freebsd-arm64': 0.19.12
+ '@esbuild/freebsd-x64': 0.19.12
+ '@esbuild/linux-arm': 0.19.12
+ '@esbuild/linux-arm64': 0.19.12
+ '@esbuild/linux-ia32': 0.19.12
+ '@esbuild/linux-loong64': 0.19.12
+ '@esbuild/linux-mips64el': 0.19.12
+ '@esbuild/linux-ppc64': 0.19.12
+ '@esbuild/linux-riscv64': 0.19.12
+ '@esbuild/linux-s390x': 0.19.12
+ '@esbuild/linux-x64': 0.19.12
+ '@esbuild/netbsd-x64': 0.19.12
+ '@esbuild/openbsd-x64': 0.19.12
+ '@esbuild/sunos-x64': 0.19.12
+ '@esbuild/win32-arm64': 0.19.12
+ '@esbuild/win32-ia32': 0.19.12
+ '@esbuild/win32-x64': 0.19.12
+ dev: true
+
+ /esbuild@0.20.2:
+ resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.20.2
+ '@esbuild/android-arm': 0.20.2
+ '@esbuild/android-arm64': 0.20.2
+ '@esbuild/android-x64': 0.20.2
+ '@esbuild/darwin-arm64': 0.20.2
+ '@esbuild/darwin-x64': 0.20.2
+ '@esbuild/freebsd-arm64': 0.20.2
+ '@esbuild/freebsd-x64': 0.20.2
+ '@esbuild/linux-arm': 0.20.2
+ '@esbuild/linux-arm64': 0.20.2
+ '@esbuild/linux-ia32': 0.20.2
+ '@esbuild/linux-loong64': 0.20.2
+ '@esbuild/linux-mips64el': 0.20.2
+ '@esbuild/linux-ppc64': 0.20.2
+ '@esbuild/linux-riscv64': 0.20.2
+ '@esbuild/linux-s390x': 0.20.2
+ '@esbuild/linux-x64': 0.20.2
+ '@esbuild/netbsd-x64': 0.20.2
+ '@esbuild/openbsd-x64': 0.20.2
+ '@esbuild/sunos-x64': 0.20.2
+ '@esbuild/win32-arm64': 0.20.2
+ '@esbuild/win32-ia32': 0.20.2
+ '@esbuild/win32-x64': 0.20.2
+ dev: true
+
+ /escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ engines: {node: '>=6'}
+
+ /escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ /escape-string-regexp@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+
+ /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'}
+ dev: false
+
+ /escodegen@2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+ dev: true
+
+ /eslint-config-next@14.0.4(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==}
+ peerDependencies:
+ eslint: ^7.23.0 || ^8.0.0
+ typescript: '>=3.3.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@next/eslint-plugin-next': 14.0.4
+ '@rushstack/eslint-patch': 1.10.2
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)
+ eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
+ eslint-plugin-react: 7.34.1(eslint@8.57.0)
+ eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-config-next@14.2.1(eslint@8.57.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-BgD0kPCWMlqoItRf3xe9fG0MqwObKfVch+f2ccwDpZiCJA8ghkz2wrASH+bI6nLZzGcOJOpMm1v1Q1euhfpt4Q==}
+ peerDependencies:
+ eslint: ^7.23.0 || ^8.0.0
+ typescript: '>=3.3.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@next/eslint-plugin-next': 14.2.1
+ '@rushstack/eslint-patch': 1.10.2
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)
+ eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
+ eslint-plugin-react: 7.34.1(eslint@8.57.0)
+ eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0)
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-config-prettier@9.1.0(eslint@8.57.0):
+ resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ eslint: 8.57.0
+ dev: true
+
+ /eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.13.1
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0):
+ resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ dependencies:
+ debug: 4.3.4
+ enhanced-resolve: 5.16.0
+ eslint: 8.57.0
+ eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)
+ fast-glob: 3.3.2
+ get-tsconfig: 4.7.3
+ is-core-module: 2.13.1
+ is-glob: 4.0.3
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-node
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
+ resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ debug: 3.2.7
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.6.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0):
+ resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
+ debug: 3.2.7
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0):
+ resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
+ engines: {node: '>=6.5.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
+ dependencies:
+ escape-string-regexp: 1.0.5
+ eslint: 8.57.0
+ ignore: 5.3.1
+ dev: true
+
+ /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0):
+ resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5)
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.5
+ array.prototype.flat: 1.3.2
+ array.prototype.flatmap: 1.3.2
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+ hasown: 2.0.2
+ is-core-module: 2.13.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.0
+ semver: 6.3.1
+ tsconfig-paths: 3.15.0
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.6.0)(eslint@8.57.0):
+ resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5)
+ array-includes: 3.1.8
+ array.prototype.findlastindex: 1.2.5
+ array.prototype.flat: 1.3.2
+ array.prototype.flatmap: 1.3.2
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 8.57.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.6.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0)
+ hasown: 2.0.2
+ is-core-module: 2.13.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.0
+ semver: 6.3.1
+ tsconfig-paths: 3.15.0
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0
+ eslint: ^7.0.0 || ^8.0.0
+ jest: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ jest:
+ optional: true
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5)
+ eslint: 8.57.0
+ jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: false
+
+ /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0):
+ resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ dependencies:
+ '@babel/runtime': 7.24.4
+ aria-query: 5.3.0
+ array-includes: 3.1.8
+ 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.18
+ eslint: 8.57.0
+ hasown: 2.0.2
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.9
+ minimatch: 3.1.2
+ object.entries: 1.1.8
+ object.fromentries: 2.0.8
+ dev: true
+
+ /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0):
+ resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
+ dependencies:
+ eslint: 8.57.0
+ dev: true
+
+ /eslint-plugin-react@7.34.1(eslint@8.57.0):
+ resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.findlast: 1.2.5
+ 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.18
+ eslint: 8.57.0
+ estraverse: 5.3.0
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.2
+ object.entries: 1.1.8
+ object.fromentries: 2.0.8
+ object.hasown: 1.1.4
+ object.values: 1.2.0
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.5
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.11
+ dev: true
+
+ /eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+ dev: false
+
+ /eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.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
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/regexpp': 4.10.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.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.1
+ 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
+
+ /esniff@2.0.1:
+ resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ event-emitter: 0.3.5
+ type: 2.7.2
+ dev: true
+
+ /espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ acorn: 8.11.3
+ acorn-jsx: 5.3.2(acorn@8.11.3)
+ eslint-visitor-keys: 3.4.3
+
+ /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'}
+ dependencies:
+ estraverse: 5.3.0
+
+ /esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+
+ /estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+ dev: false
+
+ /estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ /esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ /event-emitter@0.3.5:
+ resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ dev: true
+
+ /execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+ 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@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+
+ /expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+
+ /ext@1.7.0:
+ resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
+ dependencies:
+ type: 2.7.2
+ dev: true
+
+ /extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ dev: false
+
+ /fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ /fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+ 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:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ /fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ /fast-xml-parser@4.2.5:
+ resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
+ /fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ dependencies:
+ reusify: 1.0.4
+
+ /fb-watchman@2.0.2:
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+ dependencies:
+ bser: 2.1.1
+
+ /fetch-blob@3.2.0:
+ resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
+ engines: {node: ^12.20 || >= 14.13}
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 3.3.3
+ dev: false
+
+ /file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.2.0
+
+ /fill-range@7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+
+ /find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ /find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ /flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.3.1
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ /flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ /for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+ dependencies:
+ is-callable: 1.2.7
+
+ /foreground-child@3.1.1:
+ resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ engines: {node: '>=14'}
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
+
+ /form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ /formdata-polyfill@4.0.10:
+ resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
+ engines: {node: '>=12.20.0'}
+ dependencies:
+ fetch-blob: 3.2.0
+ dev: false
+
+ /fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+ dev: true
+
+ /fs-monkey@1.0.5:
+ resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==}
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ optional: true
+
+ /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'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ functions-have-names: 1.2.3
+ dev: true
+
+ /functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+
+ /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-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.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.2
+
+ /get-nonce@1.0.1:
+ resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /get-package-type@0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+
+ /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'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ dev: true
+
+ /get-tsconfig@4.7.3:
+ resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==}
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+ dev: true
+
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+
+ /glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+
+ /glob@10.3.10:
+ resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.3.6
+ minimatch: 9.0.4
+ minipass: 7.0.4
+ path-scurry: 1.10.2
+ dev: true
+
+ /glob@10.3.12:
+ resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.3.6
+ minimatch: 9.0.4
+ minipass: 7.0.4
+ path-scurry: 1.10.2
+
+ /glob@7.1.7:
+ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
+ 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
+ dev: true
+
+ /glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ 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@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.1.6
+ once: 1.4.0
+ dev: true
+
+ /globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ /globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+
+ /globalthis@1.0.3:
+ resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.1
+ dev: true
+
+ /globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.2
+ ignore: 5.3.1
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ /globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+ dev: true
+
+ /gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ /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==}
+
+ /gui@0.15.3:
+ resolution: {integrity: sha512-zkdj+lgJdR7PxS0ZOjs6Te0NXnsw1rbOAOpW5zihkl1zIZg6zMEjisn5LWj0hYkJUQjuNgsq6CzNuBxMtWLZxg==}
+ requiresBuild: true
+ dependencies:
+ download-yue: 2.1.0
+ dev: true
+
+ /hanji@0.0.5:
+ resolution: {integrity: sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw==}
+ dependencies:
+ lodash.throttle: 4.1.1
+ sisteransi: 1.0.5
+ dev: 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==}
+ dependencies:
+ es-define-property: 1.0.0
+
+ /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'}
+ dependencies:
+ has-symbols: 1.0.3
+
+ /hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+
+ /hast-util-embedded@2.0.1:
+ resolution: {integrity: sha512-QUdSOP1/o+/TxXtpPFXR2mUg2P+ySrmlX7QjwHZCXqMFyYk7YmcGSvqRW+4XgXAoHifdE1t2PwFaQK33TqVjSw==}
+ dependencies:
+ hast-util-is-element: 2.1.3
+ dev: false
+
+ /hast-util-embedded@3.0.0:
+ resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==}
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-is-element: 3.0.0
+ dev: false
+
+ /hast-util-from-dom@4.2.0:
+ resolution: {integrity: sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==}
+ dependencies:
+ hastscript: 7.2.0
+ web-namespaces: 2.0.1
+ dev: false
+
+ /hast-util-from-parse5@7.1.2:
+ resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.10
+ hastscript: 7.2.0
+ property-information: 6.5.0
+ vfile: 5.3.7
+ vfile-location: 4.1.0
+ web-namespaces: 2.0.1
+ dev: false
+
+ /hast-util-has-property@2.0.1:
+ resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==}
+ dev: false
+
+ /hast-util-has-property@3.0.0:
+ resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==}
+ dependencies:
+ '@types/hast': 3.0.4
+ dev: false
+
+ /hast-util-is-body-ok-link@2.0.0:
+ resolution: {integrity: sha512-S58hCexyKdD31vMsErvgLfflW6vYWo/ixRLPJTtkOvLld24vyI8vmYmkgLA5LG3la2ME7nm7dLGdm48gfLRBfw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-has-property: 2.0.1
+ hast-util-is-element: 2.1.3
+ dev: false
+
+ /hast-util-is-body-ok-link@3.0.0:
+ resolution: {integrity: sha512-VFHY5bo2nY8HiV6nir2ynmEB1XkxzuUffhEGeVx7orbu/B1KaGyeGgMZldvMVx5xWrDlLLG/kQ6YkJAMkBEx0w==}
+ dependencies:
+ '@types/hast': 3.0.4
+ dev: false
+
+ /hast-util-is-element@2.1.3:
+ resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.10
+ dev: false
+
+ /hast-util-is-element@3.0.0:
+ resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
+ dependencies:
+ '@types/hast': 3.0.4
+ dev: false
+
+ /hast-util-parse-selector@3.1.1:
+ resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==}
+ dependencies:
+ '@types/hast': 2.3.10
+ dev: false
+
+ /hast-util-phrasing@2.0.2:
+ resolution: {integrity: sha512-yGkCfPkkfCyiLfK6KEl/orMDr/zgCnq/NaO9HfULx6/Zga5fso5eqQA5Ov/JZVqACygvw9shRYWgXNcG2ilo7w==}
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-embedded: 2.0.1
+ hast-util-has-property: 2.0.1
+ hast-util-is-body-ok-link: 2.0.0
+ hast-util-is-element: 2.1.3
+ dev: false
+
+ /hast-util-phrasing@3.0.1:
+ resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==}
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-embedded: 3.0.0
+ hast-util-has-property: 3.0.0
+ hast-util-is-body-ok-link: 3.0.0
+ hast-util-is-element: 3.0.0
+ dev: false
+
+ /hast-util-raw@7.2.3:
+ resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/parse5': 6.0.3
+ hast-util-from-parse5: 7.1.2
+ hast-util-to-parse5: 7.1.0
+ html-void-elements: 2.0.1
+ parse5: 6.0.1
+ unist-util-position: 4.0.4
+ unist-util-visit: 4.1.2
+ vfile: 5.3.7
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+ dev: false
+
+ /hast-util-to-html@8.0.4:
+ resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.10
+ ccount: 2.0.1
+ comma-separated-tokens: 2.0.3
+ hast-util-raw: 7.2.3
+ hast-util-whitespace: 2.0.1
+ html-void-elements: 2.0.1
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ stringify-entities: 4.0.4
+ zwitch: 2.0.4
+ dev: false
+
+ /hast-util-to-mdast@8.4.1:
+ resolution: {integrity: sha512-tfmBLASuCgyhCzpkTXM5kU8xeuS5jkMZ17BYm2YftGT5wvgc7uHXTZ/X8WfNd6F5NV/IGmrLsuahZ+jXQir4zQ==}
+ dependencies:
+ '@types/extend': 3.0.4
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ extend: 3.0.2
+ hast-util-has-property: 2.0.1
+ hast-util-is-element: 2.1.3
+ hast-util-phrasing: 2.0.2
+ hast-util-to-text: 3.1.2
+ mdast-util-phrasing: 3.0.1
+ mdast-util-to-string: 3.2.0
+ rehype-minify-whitespace: 5.0.1
+ trim-trailing-lines: 2.1.0
+ unist-util-is: 5.2.1
+ unist-util-visit: 4.1.2
+ dev: false
+
+ /hast-util-to-parse5@7.1.0:
+ resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ comma-separated-tokens: 2.0.3
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+ dev: false
+
+ /hast-util-to-text@3.1.2:
+ resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/unist': 2.0.10
+ hast-util-is-element: 2.1.3
+ unist-util-find-after: 4.0.1
+ dev: false
+
+ /hast-util-whitespace@2.0.1:
+ resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
+ dev: false
+
+ /hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+ dependencies:
+ '@types/hast': 3.0.4
+ dev: false
+
+ /hastscript@7.2.0:
+ resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 3.1.1
+ property-information: 6.5.0
+ space-separated-tokens: 2.0.2
+ dev: false
+
+ /heap@0.2.7:
+ resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==}
+ dev: true
+
+ /html-encoding-sniffer@3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+ dependencies:
+ whatwg-encoding: 2.0.0
+ dev: true
+
+ /html-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+
+ /html-void-elements@2.0.1:
+ resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
+ dev: false
+
+ /html-whitespace-sensitive-tag-names@3.0.0:
+ resolution: {integrity: sha512-KlClZ3/Qy5UgvpvVvDomGhnQhNWH5INE8GwvSIQ9CWt1K0zbbXrl7eN5bWaafOZgtmO3jMPwUqmrmEwinhPq1w==}
+ dev: false
+
+ /http-proxy-agent@5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+
+ /iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /ignore@5.3.1:
+ resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ engines: {node: '>= 4'}
+
+ /immutable@4.3.5:
+ resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+ dev: false
+
+ /import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ /import-local@3.1.0:
+ resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+
+ /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'}
+ dev: true
+
+ /inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ /internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.0.6
+
+ /invariant@2.2.4:
+ resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ /is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ /is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ /is-async-function@2.0.0:
+ resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ dependencies:
+ has-bigints: 1.0.2
+
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.3.0
+
+ /is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ /is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /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==}
+ dependencies:
+ hasown: 2.0.2
+
+ /is-data-view@1.0.1:
+ resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-typed-array: 1.1.13
+ dev: true
+
+ /is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ /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==}
+ dependencies:
+ call-bind: 1.0.7
+ dev: true
+
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ /is-generator-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+
+ /is-generator-function@1.0.10:
+ resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+
+ /is-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+
+ /is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ /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@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ dev: true
+
+ /is-promise@2.2.2:
+ resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+ dev: true
+
+ /is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+
+ /is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+
+ /is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+
+ /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'}
+ dependencies:
+ has-tostringtag: 1.0.2
+
+ /is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+
+ /is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ which-typed-array: 1.1.15
+ dev: true
+
+ /is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+
+ /is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ dependencies:
+ call-bind: 1.0.7
+ dev: true
+
+ /is-weakset@2.0.3:
+ resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+
+ /is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
+ engines: {node: '>=12.13'}
+ dev: true
+
+ /isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ /isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ /isomorphic.js@0.2.5:
+ resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==}
+ dev: false
+
+ /istanbul-lib-coverage@3.2.2:
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
+
+ /istanbul-lib-instrument@5.2.1:
+ resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/parser': 7.24.4
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ /istanbul-lib-instrument@6.0.2:
+ resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/parser': 7.24.4
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+
+ /istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+ dependencies:
+ debug: 4.3.4
+ istanbul-lib-coverage: 3.2.2
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+
+ /istanbul-reports@3.1.7:
+ resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
+ engines: {node: '>=8'}
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+
+ /iterator.prototype@1.1.2:
+ resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
+ dependencies:
+ define-properties: 1.2.1
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ reflect.getprototypeof: 1.0.6
+ set-function-name: 2.0.2
+ dev: true
+
+ /jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ /jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+
+ /jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.5.3
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.1.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ /jest-cli@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0(ts-node@10.9.2)
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ exit: 0.1.2
+ import-local: 3.1.0
+ jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ /jest-config@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ '@babel/core': 7.24.4
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ babel-jest: 29.7.0(@babel/core@7.24.4)
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.5
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5)
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+
+ /jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ /jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+
+ /jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+
+ /jest-environment-jsdom@29.7.0:
+ resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/jsdom': 20.0.1
+ '@types/node': 20.12.7
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ jsdom: 20.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /jest-environment-node@29.7.0:
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+
+ /jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ /jest-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.9
+ '@types/node': 20.12.7
+ anymatch: 3.1.3
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.5
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ /jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ /jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+
+ /jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/code-frame': 7.24.2
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+
+ /jest-mock@29.7.0:
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ jest-util: 29.7.0
+
+ /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 29.7.0
+
+ /jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ /jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.8
+ resolve.exports: 2.0.2
+ slash: 3.0.0
+
+ /jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ /jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ chalk: 4.1.2
+ cjs-module-lexer: 1.2.3
+ collect-v8-coverage: 1.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.24.4
+ '@babel/generator': 7.24.4
+ '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4)
+ '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.4)
+ '@babel/types': 7.24.0
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.4)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.6.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+
+ /jest-validate@29.7.0:
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+
+ /jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.12.7
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+
+ /jest-worker@29.7.0:
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@types/node': 20.12.7
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+
+ /jest@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0(ts-node@10.9.2)
+ '@jest/types': 29.6.3
+ import-local: 3.1.0
+ jest-cli: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+
+ /jiti@1.21.0:
+ resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
+ hasBin: true
+
+ /joycon@3.1.1:
+ resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /js-base64@3.7.7:
+ resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==}
+ dev: false
+
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ /js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+
+ /js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+
+ /jsdom@20.0.3:
+ resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ abab: 2.0.6
+ acorn: 8.11.3
+ acorn-globals: 7.0.1
+ cssom: 0.5.0
+ cssstyle: 2.3.0
+ data-urls: 3.0.2
+ decimal.js: 10.4.3
+ domexception: 4.0.0
+ escodegen: 2.1.0
+ form-data: 4.0.0
+ html-encoding-sniffer: 3.0.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.7
+ parse5: 7.1.2
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.3
+ w3c-xmlserializer: 4.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 2.0.0
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
+ ws: 8.16.0
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ /json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ /json-diff@0.9.0:
+ resolution: {integrity: sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ==}
+ hasBin: true
+ dependencies:
+ cli-color: 2.0.4
+ difflib: 0.2.4
+ dreamopt: 0.8.0
+ dev: true
+
+ /json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ /json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ /json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ /json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ dev: true
+
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ /jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ array-includes: 3.1.8
+ array.prototype.flat: 1.3.2
+ object.assign: 4.1.5
+ object.values: 1.2.0
+ dev: true
+
+ /keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ dependencies:
+ json-buffer: 3.0.1
+
+ /kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+
+ /kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /language-subtag-registry@0.3.22:
+ resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
+ dev: true
+
+ /language-tags@1.0.9:
+ resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ language-subtag-registry: 0.3.22
+ dev: true
+
+ /leven@3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+
+ /levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ /lib0@0.2.93:
+ resolution: {integrity: sha512-M5IKsiFJYulS+8Eal8f+zAqf5ckm1vffW0fFDxfgxJ+uiVopvDdd3PxJmz0GsVi3YNO7QCFSq0nAsiDmNhLj9Q==}
+ engines: {node: '>=16'}
+ hasBin: true
+ dependencies:
+ isomorphic.js: 0.2.5
+ dev: false
+
+ /libsql@0.3.12:
+ resolution: {integrity: sha512-to30hj8O3DjS97wpbKN6ERZ8k66MN1IaOfFLR6oHqd25GMiPJ/ZX0VaZ7w+TsPmxcFS3p71qArj/hiedCyvXCg==}
+ cpu: [x64, arm64, wasm32]
+ os: [darwin, linux, win32]
+ dependencies:
+ '@neon-rs/load': 0.0.4
+ detect-libc: 2.0.2
+ optionalDependencies:
+ '@libsql/darwin-arm64': 0.3.12
+ '@libsql/darwin-x64': 0.3.12
+ '@libsql/linux-arm64-gnu': 0.3.12
+ '@libsql/linux-arm64-musl': 0.3.12
+ '@libsql/linux-x64-gnu': 0.3.12
+ '@libsql/linux-x64-musl': 0.3.12
+ '@libsql/win32-x64-msvc': 0.3.12
+ dev: false
+
+ /lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
+ /lilconfig@3.1.1:
+ resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==}
+ engines: {node: '>=14'}
+
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ /linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+ dependencies:
+ uc.micro: 2.1.0
+ dev: false
+
+ /linkifyjs@4.1.3:
+ resolution: {integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==}
+ dev: false
+
+ /load-tsconfig@0.2.5:
+ resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
+ /locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+
+ /locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+
+ /lodash.memoize@4.1.2:
+ resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
+ dev: true
+
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ /lodash.sortby@4.7.0:
+ resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+ dev: true
+
+ /lodash.throttle@4.1.1:
+ resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
+ dev: true
+
+ /lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: true
+
+ /longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+ dev: false
+
+ /loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+
+ /lru-cache@10.2.0:
+ resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
+ engines: {node: 14 || >=16.14}
+
+ /lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+
+ /lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+
+ /lru-queue@0.1.0:
+ resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==}
+ dependencies:
+ es5-ext: 0.10.64
+ dev: true
+
+ /lucia@3.1.1:
+ resolution: {integrity: sha512-Ygvgnqq7Ha7lYVaZATPwkPD2s2Qlsm71Z2o0byx/abNBfFldCRow5sNii6RqMsuMpK957RAI3Gw4/aWoagkc7A==}
+ dependencies:
+ oslo: 1.0.1
+ dev: false
+
+ /lucide-react@0.309.0(react@18.2.0):
+ resolution: {integrity: sha512-zNVPczuwFrCfksZH3zbd1UDE6/WYhYAdbe2k7CImVyPAkXLgIwbs6eXQ4loigqDnUFjyFYCI5jZ1y10Kqal0dg==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /lz-string@1.5.0:
+ resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
+ hasBin: true
+ dev: true
+
+ /magic-bytes.js@1.10.0:
+ resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==}
+ dev: false
+
+ /make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
+ dependencies:
+ semver: 7.6.0
+
+ /make-error@1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+
+ /makeerror@1.0.12:
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+ dependencies:
+ tmpl: 1.0.5
+
+ /markdown-it@14.1.0:
+ resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+ dev: false
+
+ /markdown-table@3.0.3:
+ resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
+ dev: false
+
+ /mdast-util-definitions@5.1.2:
+ resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ unist-util-visit: 4.1.2
+ dev: false
+
+ /mdast-util-find-and-replace@2.2.2:
+ resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ escape-string-regexp: 5.0.0
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+ dev: false
+
+ /mdast-util-from-markdown@1.3.1:
+ resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ decode-named-character-reference: 1.0.2
+ mdast-util-to-string: 3.2.0
+ micromark: 3.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-decode-string: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ unist-util-stringify-position: 3.0.3
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-gfm-autolink-literal@1.0.3:
+ resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ ccount: 2.0.1
+ mdast-util-find-and-replace: 2.2.2
+ micromark-util-character: 1.2.0
+ dev: false
+
+ /mdast-util-gfm-footnote@1.0.2:
+ resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ micromark-util-normalize-identifier: 1.1.0
+ dev: false
+
+ /mdast-util-gfm-strikethrough@1.0.3:
+ resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ dev: false
+
+ /mdast-util-gfm-table@1.0.7:
+ resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ markdown-table: 3.0.3
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-gfm-task-list-item@1.0.2:
+ resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ dev: false
+
+ /mdast-util-gfm@2.0.2:
+ resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
+ dependencies:
+ mdast-util-from-markdown: 1.3.1
+ mdast-util-gfm-autolink-literal: 1.0.3
+ mdast-util-gfm-footnote: 1.0.2
+ mdast-util-gfm-strikethrough: 1.0.3
+ mdast-util-gfm-table: 1.0.7
+ mdast-util-gfm-task-list-item: 1.0.2
+ mdast-util-to-markdown: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /mdast-util-phrasing@3.0.1:
+ resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ unist-util-is: 5.2.1
+ dev: false
+
+ /mdast-util-to-hast@12.3.0:
+ resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ mdast-util-definitions: 5.1.2
+ micromark-util-sanitize-uri: 1.2.0
+ trim-lines: 3.0.1
+ unist-util-generated: 2.0.1
+ unist-util-position: 4.0.4
+ unist-util-visit: 4.1.2
+ dev: false
+
+ /mdast-util-to-markdown@1.5.0:
+ resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ '@types/unist': 2.0.10
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 3.0.1
+ mdast-util-to-string: 3.2.0
+ micromark-util-decode-string: 1.1.0
+ unist-util-visit: 4.1.2
+ zwitch: 2.0.4
+ dev: false
+
+ /mdast-util-to-string@3.2.0:
+ resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ dev: false
+
+ /mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+ dev: false
+
+ /memfs-browser@3.5.10302:
+ resolution: {integrity: sha512-JJTc/nh3ig05O0gBBGZjTCPOyydaTxNF0uHYBrcc1gHNnO+KIHIvo0Y1FKCJsaei6FCl8C6xfQomXqu+cuzkIw==}
+ requiresBuild: true
+ dependencies:
+ memfs: 3.5.3
+ dev: false
+ optional: true
+
+ /memfs@3.5.3:
+ resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==}
+ engines: {node: '>= 4.0.0'}
+ requiresBuild: true
+ dependencies:
+ fs-monkey: 1.0.5
+ dev: false
+ optional: true
+
+ /memoizee@0.4.15:
+ resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==}
+ dependencies:
+ d: 1.0.2
+ es5-ext: 0.10.64
+ es6-weak-map: 2.0.3
+ event-emitter: 0.3.5
+ is-promise: 2.2.2
+ lru-queue: 0.1.0
+ next-tick: 1.1.0
+ timers-ext: 0.1.7
+ dev: true
+
+ /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'}
+
+ /micromark-core-commonmark@1.1.0:
+ resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-factory-destination: 1.1.0
+ micromark-factory-label: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-factory-title: 1.1.0
+ micromark-factory-whitespace: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-html-tag-name: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-autolink-literal@1.0.5:
+ resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-gfm-footnote@1.1.2:
+ resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==}
+ dependencies:
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-strikethrough@1.0.7:
+ resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-classify-character: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-table@1.0.7:
+ resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm-tagfilter@1.0.2:
+ resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
+ dependencies:
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-extension-gfm-task-list-item@1.0.5:
+ resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-extension-gfm@2.0.3:
+ resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 1.0.5
+ micromark-extension-gfm-footnote: 1.1.2
+ micromark-extension-gfm-strikethrough: 1.0.7
+ micromark-extension-gfm-table: 1.0.7
+ micromark-extension-gfm-tagfilter: 1.0.2
+ micromark-extension-gfm-task-list-item: 1.0.5
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-destination@1.1.0:
+ resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-label@1.1.0:
+ resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-factory-space@1.1.0:
+ resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-title@1.1.0:
+ resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-factory-whitespace@1.1.0:
+ resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==}
+ dependencies:
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-character@1.2.0:
+ resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-chunked@1.1.0:
+ resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-classify-character@1.1.0:
+ resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-combine-extensions@1.1.0:
+ resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==}
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-decode-numeric-character-reference@1.1.0:
+ resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-decode-string@1.1.0:
+ resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==}
+ dependencies:
+ decode-named-character-reference: 1.0.2
+ micromark-util-character: 1.2.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-encode@1.1.0:
+ resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==}
+ dev: false
+
+ /micromark-util-html-tag-name@1.2.0:
+ resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==}
+ dev: false
+
+ /micromark-util-normalize-identifier@1.1.0:
+ resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==}
+ dependencies:
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-resolve-all@1.1.0:
+ resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==}
+ dependencies:
+ micromark-util-types: 1.1.0
+ dev: false
+
+ /micromark-util-sanitize-uri@1.2.0:
+ resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==}
+ dependencies:
+ micromark-util-character: 1.2.0
+ micromark-util-encode: 1.1.0
+ micromark-util-symbol: 1.1.0
+ dev: false
+
+ /micromark-util-subtokenize@1.1.0:
+ resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==}
+ dependencies:
+ micromark-util-chunked: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ dev: false
+
+ /micromark-util-symbol@1.1.0:
+ resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==}
+ dev: false
+
+ /micromark-util-types@1.1.0:
+ resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==}
+ dev: false
+
+ /micromark@3.2.0:
+ resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.4
+ decode-named-character-reference: 1.0.2
+ micromark-core-commonmark: 1.1.0
+ micromark-factory-space: 1.1.0
+ micromark-util-character: 1.2.0
+ micromark-util-chunked: 1.1.0
+ micromark-util-combine-extensions: 1.1.0
+ micromark-util-decode-numeric-character-reference: 1.1.0
+ micromark-util-encode: 1.1.0
+ micromark-util-normalize-identifier: 1.1.0
+ micromark-util-resolve-all: 1.1.0
+ micromark-util-sanitize-uri: 1.2.0
+ micromark-util-subtokenize: 1.1.0
+ micromark-util-symbol: 1.1.0
+ micromark-util-types: 1.1.0
+ uvu: 0.5.6
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /micromatch@4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+
+ /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'}
+ dependencies:
+ mime-db: 1.52.0
+
+ /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'}
+ dev: true
+
+ /minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+
+ /minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
+ /minimatch@7.4.6:
+ resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
+ /minimatch@9.0.3:
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.1
+
+ /minimatch@9.0.4:
+ resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.1
+
+ /minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ dev: true
+
+ /minipass@7.0.4:
+ resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ /mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
+
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+
+ /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==}
+
+ /next-tick@1.1.0:
+ resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
+ dev: true
+
+ /next@14.2.1(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-SF3TJnKdH43PMkCcErLPv+x/DY1YCklslk3ZmwaVoyUfDgHKexuKlf9sEfBQ69w+ue8jQ3msLb+hSj1T19hGag==}
+ engines: {node: '>=18.17.0'}
+ hasBin: true
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+ '@playwright/test': ^1.41.2
+ react: ^18.2.0
+ react-dom: ^18.2.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+ '@playwright/test':
+ optional: true
+ sass:
+ optional: true
+ dependencies:
+ '@next/env': 14.2.1
+ '@swc/helpers': 0.5.5
+ busboy: 1.6.0
+ caniuse-lite: 1.0.30001610
+ graceful-fs: 4.2.11
+ postcss: 8.4.31
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ styled-jsx: 5.1.1(@babel/core@7.24.4)(react@18.2.0)
+ optionalDependencies:
+ '@next/swc-darwin-arm64': 14.2.1
+ '@next/swc-darwin-x64': 14.2.1
+ '@next/swc-linux-arm64-gnu': 14.2.1
+ '@next/swc-linux-arm64-musl': 14.2.1
+ '@next/swc-linux-x64-gnu': 14.2.1
+ '@next/swc-linux-x64-musl': 14.2.1
+ '@next/swc-win32-arm64-msvc': 14.2.1
+ '@next/swc-win32-ia32-msvc': 14.2.1
+ '@next/swc-win32-x64-msvc': 14.2.1
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+ dev: false
+
+ /node-domexception@1.0.0:
+ resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
+ engines: {node: '>=10.5.0'}
+ dev: false
+
+ /node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: false
+
+ /node-fetch@3.3.2:
+ resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ data-uri-to-buffer: 4.0.1
+ fetch-blob: 3.2.0
+ formdata-polyfill: 4.0.10
+ dev: false
+
+ /node-int64@0.4.0:
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+
+ /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'}
+ dev: true
+
+ /npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+
+ /nwsapi@2.2.7:
+ resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
+ dev: true
+
+ /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-is@1.1.6:
+ resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+
+ /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'}
+ 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.8:
+ resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /object.fromentries@2.0.8:
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /object.groupby@1.0.3:
+ resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ dev: true
+
+ /object.hasown@1.1.4:
+ resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /object.values@1.2.0:
+ resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+
+ /onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+
+ /optionator@0.9.3:
+ resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
+ engines: {node: '>= 0.8.0'}
+ 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
+
+ /orderedmap@2.1.1:
+ resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
+ dev: false
+
+ /oslo@1.0.1:
+ resolution: {integrity: sha512-esfzZry+HfGgK/GCYkg7BRlLd3RH5aHa08wgLJPYjENXybi0BvXxGk0LbUj+lXfz2TkjPDHe4rB/o6JxRLHxBg==}
+ dependencies:
+ '@node-rs/argon2': 1.7.2
+ '@node-rs/bcrypt': 1.9.2
+ dev: false
+
+ /oslo@1.2.0:
+ resolution: {integrity: sha512-OoFX6rDsNcOQVAD2gQD/z03u4vEjWZLzJtwkmgfRF+KpQUXwdgEXErD7zNhyowmHwHefP+PM9Pw13pgpHMRlzw==}
+ dependencies:
+ '@node-rs/argon2': 1.7.0
+ '@node-rs/bcrypt': 1.9.0
+ dev: false
+
+ /p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+
+ /p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+
+ /p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+
+ /p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+
+ /p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ /parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+
+ /parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.24.2
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ /parse5@6.0.1:
+ resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
+ dev: false
+
+ /parse5@7.1.2:
+ resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+ dependencies:
+ entities: 4.5.0
+ dev: true
+
+ /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.2:
+ resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ lru-cache: 10.2.0
+ minipass: 7.0.4
+
+ /path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ /picocolors@1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ /pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ /pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+
+ /pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+
+ /possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
+ /postcss-import@15.1.0(postcss@8.4.38):
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.38
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.8
+
+ /postcss-js@4.0.1(postcss@8.4.38):
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.38
+
+ /postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2):
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 3.1.1
+ postcss: 8.4.38
+ ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.5)
+ yaml: 2.4.1
+
+ /postcss-nested@6.0.1(postcss@8.4.38):
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+ dependencies:
+ postcss: 8.4.38
+ postcss-selector-parser: 6.0.16
+
+ /postcss-selector-parser@6.0.16:
+ resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ /postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ /postcss@8.4.31:
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.2.0
+ dev: false
+
+ /postcss@8.4.38:
+ resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.2.0
+
+ /prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ /prettier@3.2.5:
+ resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: 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}
+ dependencies:
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
+ dev: true
+
+ /pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.2.0
+
+ /prompts@2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
+ /prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ /property-information@6.5.0:
+ resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
+ dev: false
+
+ /prosemirror-changeset@2.2.1:
+ resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==}
+ dependencies:
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-collab@1.3.1:
+ resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ dev: false
+
+ /prosemirror-commands@1.5.2:
+ resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==}
+ dependencies:
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-dropcursor@1.8.1:
+ resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.4
+ dev: false
+
+ /prosemirror-gapcursor@1.3.2:
+ resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
+ dependencies:
+ prosemirror-keymap: 1.2.2
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-view: 1.33.4
+ dev: false
+
+ /prosemirror-history@1.4.0:
+ resolution: {integrity: sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.4
+ rope-sequence: 1.3.4
+ dev: false
+
+ /prosemirror-inputrules@1.4.0:
+ resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-keymap@1.2.2:
+ resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ w3c-keyname: 2.2.8
+ dev: false
+
+ /prosemirror-markdown@1.12.0:
+ resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==}
+ dependencies:
+ markdown-it: 14.1.0
+ prosemirror-model: 1.20.0
+ dev: false
+
+ /prosemirror-menu@1.2.4:
+ resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==}
+ dependencies:
+ crelt: 1.0.6
+ prosemirror-commands: 1.5.2
+ prosemirror-history: 1.4.0
+ prosemirror-state: 1.4.3
+ dev: false
+
+ /prosemirror-model@1.20.0:
+ resolution: {integrity: sha512-q7AY7vMjKYqDCeoedgUiAgrLabliXxndJuuFmcmc2+YU1SblvnOiG2WEACF2lwAZsMlfLpiAilA3L+TWlDqIsQ==}
+ dependencies:
+ orderedmap: 2.1.1
+ dev: false
+
+ /prosemirror-schema-basic@1.2.2:
+ resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==}
+ dependencies:
+ prosemirror-model: 1.20.0
+ dev: false
+
+ /prosemirror-schema-list@1.3.0:
+ resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==}
+ dependencies:
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-state@1.4.3:
+ resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
+ dependencies:
+ prosemirror-model: 1.20.0
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.4
+ dev: false
+
+ /prosemirror-tables@1.3.7:
+ resolution: {integrity: sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==}
+ dependencies:
+ prosemirror-keymap: 1.2.2
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.4
+ dev: false
+
+ /prosemirror-trailing-node@2.0.8(prosemirror-model@1.20.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.4):
+ resolution: {integrity: sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==}
+ peerDependencies:
+ prosemirror-model: ^1.19.0
+ prosemirror-state: ^1.4.2
+ prosemirror-view: ^1.31.2
+ dependencies:
+ '@remirror/core-constants': 2.0.2
+ escape-string-regexp: 4.0.0
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-view: 1.33.4
+ dev: false
+
+ /prosemirror-transform@1.8.0:
+ resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==}
+ dependencies:
+ prosemirror-model: 1.20.0
+ dev: false
+
+ /prosemirror-view@1.33.4:
+ resolution: {integrity: sha512-xQqAhH8/HGleVpKDhQsrd+oqdyeKMxFtdCWDxWMmP+n0k27fBpyUqa8pA+RB5cFY8rqDDc1hll69aRZQa7UaAw==}
+ dependencies:
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /psl@1.9.0:
+ resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+ dev: true
+
+ /punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ /pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+
+ /querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+ dev: true
+
+ /queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ /react-dom@18.2.0(react@18.2.0):
+ resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
+ peerDependencies:
+ react: ^18.2.0
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.2.0
+ scheduler: 0.23.0
+
+ /react-icons@4.12.0(react@18.2.0):
+ resolution: {integrity: sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==}
+ peerDependencies:
+ react: '*'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /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==}
+ dev: true
+
+ /react-is@18.2.0:
+ resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+
+ /react-number-format@5.3.4(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-2hHN5mbLuCDUx19bv0Q8wet67QqYK6xmtLQeY5xx+h7UXiMmRtaCwqko4mMPoKXLc6xAzwRrutg8XbTRlsfjRg==}
+ peerDependencies:
+ react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /react-refresh@0.14.0:
+ resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /react-remove-scroll-bar@2.3.6(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0)
+ tslib: 2.6.2
+ dev: false
+
+ /react-remove-scroll@2.5.4(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ react-remove-scroll-bar: 2.3.6(@types/react@18.2.78)(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0)
+ tslib: 2.6.2
+ use-callback-ref: 1.3.2(@types/react@18.2.78)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /react-remove-scroll@2.5.5(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ react-remove-scroll-bar: 2.3.6(@types/react@18.2.78)(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0)
+ tslib: 2.6.2
+ use-callback-ref: 1.3.2(@types/react@18.2.78)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /react-remove-scroll@2.5.9(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-bvHCLBrFfM2OgcrpPY2YW84sPdS2o2HKWJUf1xGyGLnSoEnOTOBpahIarjRuYtN0ryahCeP242yf+5TrBX/pZA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ react-remove-scroll-bar: 2.3.6(@types/react@18.2.78)(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0)
+ tslib: 2.6.2
+ use-callback-ref: 1.3.2(@types/react@18.2.78)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /react-resizable-panels@1.0.10(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-0+g0CNqregkuocr+Mi+e6wgWVARnKTYIX3U1QK7GlkLQKCmbymZakx80YGwcRO7HNnKJTQ5v38HlBos/cGxWvg==}
+ peerDependencies:
+ react: ^16.14.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /react-style-singleton@2.2.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ get-nonce: 1.0.1
+ invariant: 2.2.4
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /react-textarea-autosize@8.5.3(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ react: 18.2.0
+ use-composed-ref: 1.3.0(react@18.2.0)
+ use-latest: 1.2.1(@types/react@18.2.78)(react@18.2.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+
+ /read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ dependencies:
+ pify: 2.3.0
+
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+
+ /redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
+ /reflect.getprototypeof@1.0.6:
+ resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ globalthis: 1.0.3
+ which-builtin-type: 1.1.3
+ dev: true
+
+ /regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+
+ /regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.2
+
+ /rehype-format@5.0.0:
+ resolution: {integrity: sha512-kM4II8krCHmUhxrlvzFSptvaWh280Fr7UGNJU5DCMuvmAwGCNmGfi9CvFAQK6JDjsNoRMWQStglK3zKJH685Wg==}
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-embedded: 3.0.0
+ hast-util-is-element: 3.0.0
+ hast-util-phrasing: 3.0.1
+ hast-util-whitespace: 3.0.0
+ html-whitespace-sensitive-tag-names: 3.0.0
+ rehype-minify-whitespace: 6.0.0
+ unist-util-visit-parents: 6.0.1
+ dev: false
+
+ /rehype-minify-whitespace@5.0.1:
+ resolution: {integrity: sha512-PPp4lWJiBPlePI/dv1BeYktbwkfgXkrK59MUa+tYbMPgleod+4DvFK2PLU0O0O60/xuhHfiR9GUIUlXTU8sRIQ==}
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-embedded: 2.0.1
+ hast-util-is-element: 2.1.3
+ hast-util-whitespace: 2.0.1
+ unified: 10.1.2
+ unist-util-is: 5.2.1
+ dev: false
+
+ /rehype-minify-whitespace@6.0.0:
+ resolution: {integrity: sha512-i9It4YHR0Sf3GsnlR5jFUKXRr9oayvEk9GKQUkwZv6hs70OH9q3OCZrq9PpLvIGKt3W+JxBOxCidNVpH/6rWdA==}
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-embedded: 3.0.0
+ hast-util-is-element: 3.0.0
+ hast-util-whitespace: 3.0.0
+ unist-util-is: 6.0.0
+ dev: false
+
+ /rehype-parse@8.0.5:
+ resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==}
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-from-parse5: 7.1.2
+ parse5: 6.0.1
+ unified: 10.1.2
+ dev: false
+
+ /rehype-remark@9.1.2:
+ resolution: {integrity: sha512-c0fG3/CrJ95zAQ07xqHSkdpZybwdsY7X5dNWvgL2XqLKZuqmG3+vk6kP/4miCnp+R+x/0uKKRSpfXb9aGR8Z5w==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ hast-util-to-mdast: 8.4.1
+ unified: 10.1.2
+ dev: false
+
+ /rehype-stringify@9.0.4:
+ resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==}
+ dependencies:
+ '@types/hast': 2.3.10
+ hast-util-to-html: 8.0.4
+ unified: 10.1.2
+ dev: false
+
+ /remark-gfm@3.0.1:
+ resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-gfm: 2.0.2
+ micromark-extension-gfm: 2.0.3
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-parse@10.0.2:
+ resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-from-markdown: 1.3.1
+ unified: 10.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /remark-rehype@10.1.0:
+ resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==}
+ dependencies:
+ '@types/hast': 2.3.10
+ '@types/mdast': 3.0.15
+ mdast-util-to-hast: 12.3.0
+ unified: 10.1.2
+ dev: false
+
+ /remark-stringify@10.0.3:
+ resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-markdown: 1.5.0
+ unified: 10.1.2
+ dev: false
+
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ /requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ dev: true
+
+ /resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ resolve-from: 5.0.0
+
+ /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-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+ dev: true
+
+ /resolve.exports@2.0.2:
+ resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
+ engines: {node: '>=10'}
+
+ /resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+ 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:
+ resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.13.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /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
+ dependencies:
+ glob: 7.2.3
+
+ /rollup@4.14.2:
+ resolution: {integrity: sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ '@types/estree': 1.0.5
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.14.2
+ '@rollup/rollup-android-arm64': 4.14.2
+ '@rollup/rollup-darwin-arm64': 4.14.2
+ '@rollup/rollup-darwin-x64': 4.14.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.14.2
+ '@rollup/rollup-linux-arm64-gnu': 4.14.2
+ '@rollup/rollup-linux-arm64-musl': 4.14.2
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.14.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.14.2
+ '@rollup/rollup-linux-s390x-gnu': 4.14.2
+ '@rollup/rollup-linux-x64-gnu': 4.14.2
+ '@rollup/rollup-linux-x64-musl': 4.14.2
+ '@rollup/rollup-win32-arm64-msvc': 4.14.2
+ '@rollup/rollup-win32-ia32-msvc': 4.14.2
+ '@rollup/rollup-win32-x64-msvc': 4.14.2
+ fsevents: 2.3.3
+ dev: true
+
+ /rope-sequence@1.3.4:
+ resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+ dev: false
+
+ /run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+
+ /sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+ dependencies:
+ mri: 1.2.0
+ dev: false
+
+ /safe-array-concat@1.1.2:
+ resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
+ engines: {node: '>=0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ isarray: 2.0.5
+ dev: true
+
+ /safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-regex: 1.1.4
+ dev: true
+
+ /safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: true
+
+ /sass@1.75.0:
+ resolution: {integrity: sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.6.0
+ immutable: 4.3.5
+ source-map-js: 1.2.0
+ dev: false
+
+ /saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+ dependencies:
+ xmlchars: 2.2.0
+ dev: true
+
+ /scheduler@0.23.0:
+ resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
+ dependencies:
+ loose-envify: 1.4.0
+
+ /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
+ dependencies:
+ lru-cache: 6.0.0
+
+ /set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+ 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.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ /shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+
+ /shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ /side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.1
+
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ /signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ /sisteransi@1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+
+ /slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ /sonner@1.4.41(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-uG511ggnnsw6gcn/X+YKkWPo5ep9il9wYi3QJxHsYe7yTZ4+cOd1wuodOUmOpFuXL+/RE3R04LczdNCDygTDgQ==}
+ peerDependencies:
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ dependencies:
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ /source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+ dev: true
+
+ /source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map@0.8.0-beta.0:
+ resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ whatwg-url: 7.1.0
+ dev: true
+
+ /space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+ dev: false
+
+ /sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
+ /sql-query-identifier@2.7.0:
+ resolution: {integrity: sha512-MTDRfn0kUv+9ELnt9wt/FATi03Wq1j3YvhE5Up8ToE5Afk5zzBgVHPuIu1bVhqNqfF0aeIPl3vEzZ60H1yv0ag==}
+ engines: {node: '>= 10.13'}
+ dev: false
+
+ /stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ escape-string-regexp: 2.0.0
+
+ /stop-iteration-iterator@1.0.0:
+ resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ internal-slot: 1.0.7
+
+ /streamsearch@1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+ dev: false
+
+ /string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+
+ /string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ /string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ /string.prototype.matchall@4.0.11:
+ resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-errors: 1.3.0
+ es-object-atoms: 1.0.0
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-symbols: 1.0.3
+ internal-slot: 1.0.7
+ regexp.prototype.flags: 1.5.2
+ set-function-name: 2.0.2
+ side-channel: 1.0.6
+ dev: true
+
+ /string.prototype.trim@1.2.9:
+ resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-abstract: 1.23.3
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /string.prototype.trimend@1.0.8:
+ resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-object-atoms: 1.0.0
+ dev: true
+
+ /stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+ dev: false
+
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+
+ /strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+
+ /strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+
+ /strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+
+ /strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
+ /strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ /strnum@1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ dev: false
+
+ /style-mod@4.1.2:
+ resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
+ dev: false
+
+ /styled-jsx@5.1.1(@babel/core@7.24.4)(react@18.2.0):
+ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@babel/core': '*'
+ babel-plugin-macros: '*'
+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+ dependencies:
+ '@babel/core': 7.24.4
+ client-only: 0.0.1
+ react: 18.2.0
+ dev: false
+
+ /sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ commander: 4.1.1
+ glob: 10.3.12
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+
+ /superjson@2.2.1:
+ resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==}
+ engines: {node: '>=16'}
+ dependencies:
+ copy-anything: 3.0.5
+ dev: true
+
+ /supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+
+ /supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ has-flag: 4.0.0
+
+ /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==}
+ dev: true
+
+ /tabbable@6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+ dev: false
+
+ /tailwind-merge@2.2.2:
+ resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==}
+ dependencies:
+ '@babel/runtime': 7.24.4
+ dev: false
+
+ /tailwindcss-animate@1.0.7(tailwindcss@3.4.3):
+ resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders'
+ dependencies:
+ tailwindcss: 3.4.3(ts-node@10.9.2)
+
+ /tailwindcss@3.4.3(ts-node@10.9.2):
+ resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.6.0
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.2
+ 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.2(postcss@8.4.38)(ts-node@10.9.2)
+ postcss-nested: 6.0.1(postcss@8.4.38)
+ postcss-selector-parser: 6.0.16
+ resolve: 1.22.8
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - ts-node
+
+ /tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /test-exclude@6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+
+ /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'}
+ dependencies:
+ thenify: 3.3.1
+
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+
+ /timers-ext@0.1.7:
+ resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
+ dependencies:
+ es5-ext: 0.10.64
+ next-tick: 1.1.0
+ dev: true
+
+ /tippy.js@6.3.7:
+ resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
+ dependencies:
+ '@popperjs/core': 2.11.8
+ dev: false
+
+ /tmpl@1.0.5:
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+
+ /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'}
+ dependencies:
+ is-number: 7.0.0
+
+ /tough-cookie@4.1.3:
+ resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
+ engines: {node: '>=6'}
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+ dev: true
+
+ /tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ dev: false
+
+ /tr46@1.0.1:
+ resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /tr46@3.0.0:
+ resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
+ engines: {node: '>=12'}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+ dev: true
+
+ /trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+ dev: false
+
+ /trim-trailing-lines@2.1.0:
+ resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==}
+ dev: false
+
+ /trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+ dev: false
+
+ /ts-api-utils@1.3.0(typescript@5.4.5):
+ resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
+ dependencies:
+ typescript: 5.4.5
+
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
+ /ts-jest@29.1.2(@babel/core@7.24.4)(esbuild@0.19.12)(jest@29.7.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==}
+ engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@babel/core': '>=7.0.0-beta.0 <8'
+ '@jest/types': ^29.0.0
+ babel-jest: ^29.0.0
+ esbuild: '*'
+ jest: ^29.0.0
+ typescript: '>=4.3 <6'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ '@jest/types':
+ optional: true
+ babel-jest:
+ optional: true
+ esbuild:
+ optional: true
+ dependencies:
+ '@babel/core': 7.24.4
+ bs-logger: 0.2.6
+ esbuild: 0.19.12
+ fast-json-stable-stringify: 2.1.0
+ jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
+ jest-util: 29.7.0
+ json5: 2.2.3
+ lodash.memoize: 4.1.2
+ make-error: 1.3.6
+ semver: 7.6.0
+ typescript: 5.4.5
+ yargs-parser: 21.1.1
+ dev: true
+
+ /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5):
+ 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
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 20.12.7
+ acorn: 8.11.3
+ acorn-walk: 8.3.2
+ 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
+
+ /tsconfck@3.0.3(typescript@5.4.5):
+ resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ typescript: 5.4.5
+ dev: true
+
+ /tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+ dev: true
+
+ /tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: false
+
+ /tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+ dev: false
+
+ /tsup@8.0.2(postcss@8.4.38)(typescript@5.4.5):
+ resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ '@microsoft/api-extractor': ^7.36.0
+ '@swc/core': ^1
+ postcss: ^8.4.12
+ typescript: '>=4.5.0'
+ peerDependenciesMeta:
+ '@microsoft/api-extractor':
+ optional: true
+ '@swc/core':
+ optional: true
+ postcss:
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ bundle-require: 4.0.2(esbuild@0.19.12)
+ cac: 6.7.14
+ chokidar: 3.6.0
+ debug: 4.3.4
+ esbuild: 0.19.12
+ execa: 5.1.1
+ globby: 11.1.0
+ joycon: 3.1.1
+ postcss: 8.4.38
+ postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2)
+ resolve-from: 5.0.0
+ rollup: 4.14.2
+ source-map: 0.8.0-beta.0
+ sucrase: 3.35.0
+ tree-kill: 1.2.2
+ typescript: 5.4.5
+ transitivePeerDependencies:
+ - supports-color
+ - ts-node
+ dev: true
+
+ /tsutils@3.21.0(typescript@5.4.5):
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 5.4.5
+ dev: false
+
+ /tsx@4.7.2:
+ resolution: {integrity: sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+ dependencies:
+ esbuild: 0.19.12
+ get-tsconfig: 4.7.3
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /turbo-darwin-64@1.13.2:
+ resolution: {integrity: sha512-CCSuD8CfmtncpohCuIgq7eAzUas0IwSbHfI8/Q3vKObTdXyN8vAo01gwqXjDGpzG9bTEVedD0GmLbD23dR0MLA==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-darwin-arm64@1.13.2:
+ resolution: {integrity: sha512-0HySm06/D2N91rJJ89FbiI/AodmY8B3WDSFTVEpu2+8spUw7hOJ8okWOT0e5iGlyayUP9gr31eOeL3VFZkpfCw==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-linux-64@1.13.2:
+ resolution: {integrity: sha512-7HnibgbqZrjn4lcfIouzlPu8ZHSBtURG4c7Bedu7WJUDeZo+RE1crlrQm8wuwO54S0siYqUqo7GNHxu4IXbioQ==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-linux-arm64@1.13.2:
+ resolution: {integrity: sha512-sUq4dbpk6SNKg/Hkwn256Vj2AEYSQdG96repio894h5/LEfauIK2QYiC/xxAeW3WBMc6BngmvNyURIg7ltrePg==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-windows-64@1.13.2:
+ resolution: {integrity: sha512-DqzhcrciWq3dpzllJR2VVIyOhSlXYCo4mNEWl98DJ3FZ08PEzcI3ceudlH6F0t/nIcfSItK1bDP39cs7YoZHEA==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo-windows-arm64@1.13.2:
+ resolution: {integrity: sha512-WnPMrwfCXxK69CdDfS1/j2DlzcKxSmycgDAqV0XCYpK/812KB0KlvsVAt5PjEbZGXkY88pCJ1BLZHAjF5FcbqA==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /turbo@1.13.2:
+ resolution: {integrity: sha512-rX/d9f4MgRT3yK6cERPAkfavIxbpBZowDQpgvkYwGMGDQ0Nvw1nc0NVjruE76GrzXQqoxR1UpnmEP54vBARFHQ==}
+ hasBin: true
+ optionalDependencies:
+ turbo-darwin-64: 1.13.2
+ turbo-darwin-arm64: 1.13.2
+ turbo-linux-64: 1.13.2
+ turbo-linux-arm64: 1.13.2
+ turbo-windows-64: 1.13.2
+ turbo-windows-arm64: 1.13.2
+ dev: true
+
+ /type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+
+ /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.15.0:
+ resolution: {integrity: sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==}
+ engines: {node: '>=16'}
+ dev: false
+
+ /type@2.7.2:
+ resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
+ dev: true
+
+ /typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ is-typed-array: 1.1.13
+ dev: true
+
+ /typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+ engines: {node: '>= 0.4'}
+ 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
+ dev: true
+
+ /typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+ engines: {node: '>= 0.4'}
+ 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
+ dev: true
+
+ /typed-array-length@1.0.6:
+ resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ engines: {node: '>= 0.4'}
+ 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
+ dev: true
+
+ /typescript@5.4.5:
+ resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ /uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+ dev: false
+
+ /unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+ dependencies:
+ call-bind: 1.0.7
+ has-bigints: 1.0.2
+ has-symbols: 1.0.3
+ which-boxed-primitive: 1.0.2
+ dev: true
+
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ /unified@10.1.2:
+ resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
+ dependencies:
+ '@types/unist': 2.0.10
+ bail: 2.0.2
+ extend: 3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 5.3.7
+ dev: false
+
+ /unist-util-find-after@4.0.1:
+ resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-is: 5.2.1
+ dev: false
+
+ /unist-util-generated@2.0.1:
+ resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==}
+ dev: false
+
+ /unist-util-is@5.2.1:
+ resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
+ dependencies:
+ '@types/unist': 3.0.2
+ dev: false
+
+ /unist-util-position@4.0.4:
+ resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /unist-util-stringify-position@3.0.3:
+ resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: false
+
+ /unist-util-visit-parents@5.1.3:
+ resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-is: 5.2.1
+ dev: false
+
+ /unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
+ dependencies:
+ '@types/unist': 3.0.2
+ unist-util-is: 6.0.0
+ dev: false
+
+ /unist-util-visit@4.1.2:
+ resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-is: 5.2.1
+ unist-util-visit-parents: 5.1.3
+ dev: false
+
+ /universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /update-browserslist-db@1.0.13(browserslist@4.23.0):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.23.0
+ escalade: 3.1.2
+ picocolors: 1.0.0
+
+ /uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.3.1
+
+ /url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+ dev: true
+
+ /use-callback-ref@1.3.2(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /use-composed-ref@1.3.0(react@18.2.0):
+ resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ dev: false
+
+ /use-latest@1.2.1(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ react: 18.2.0
+ use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.78)(react@18.2.0)
+ dev: false
+
+ /use-prefers-color-scheme@1.1.3(react@18.2.0):
+ resolution: {integrity: sha512-ZRgDfb5BFLum/Sud4SpZ+d1YcV+lRbsupw0qQ/rGy5kGrpE3KMUQgEQOKiQQSa4Wslex46n5fKFO+9FGMTosUQ==}
+ engines: {node: '>=8', npm: '>=5'}
+ peerDependencies:
+ react: '>= 16.8.0'
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /use-sidecar@1.1.2(@types/react@18.2.78)(react@18.2.0):
+ resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.78
+ detect-node-es: 1.1.0
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ /uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+ dev: false
+
+ /uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+ dev: false
+
+ /uvu@0.5.6:
+ resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ dequal: 2.0.3
+ diff: 5.2.0
+ kleur: 4.1.5
+ sade: 1.8.1
+ dev: false
+
+ /v8-compile-cache-lib@3.0.1:
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+
+ /v8-to-istanbul@9.2.0:
+ resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==}
+ engines: {node: '>=10.12.0'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
+
+ /vfile-location@4.1.0:
+ resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ vfile: 5.3.7
+ dev: false
+
+ /vfile-message@3.1.4:
+ resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==}
+ dependencies:
+ '@types/unist': 2.0.10
+ unist-util-stringify-position: 3.0.3
+ dev: false
+
+ /vfile@5.3.7:
+ resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
+ dependencies:
+ '@types/unist': 2.0.10
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 3.0.3
+ vfile-message: 3.1.4
+ dev: false
+
+ /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.8):
+ resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ dependencies:
+ debug: 4.3.4
+ globrex: 0.1.2
+ tsconfck: 3.0.3(typescript@5.4.5)
+ vite: 5.2.8(@types/node@20.12.7)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /vite@5.2.8(@types/node@20.12.7):
+ resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ '@types/node': 20.12.7
+ esbuild: 0.20.2
+ postcss: 8.4.38
+ rollup: 4.14.2
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+ dev: false
+
+ /w3c-xmlserializer@4.0.0:
+ resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
+ engines: {node: '>=14'}
+ dependencies:
+ xml-name-validator: 4.0.0
+ dev: true
+
+ /walker@1.0.8:
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+ dependencies:
+ makeerror: 1.0.12
+
+ /web-namespaces@2.0.1:
+ resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+ dev: false
+
+ /web-streams-polyfill@3.3.3:
+ resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
+ engines: {node: '>= 8'}
+ dev: false
+
+ /webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ dev: false
+
+ /webidl-conversions@4.0.2:
+ resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+ dev: true
+
+ /webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /whatwg-encoding@2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: true
+
+ /whatwg-mimetype@3.0.0:
+ resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /whatwg-url@11.0.0:
+ resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ tr46: 3.0.0
+ webidl-conversions: 7.0.0
+ dev: true
+
+ /whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+ dev: false
+
+ /whatwg-url@7.1.0:
+ resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
+ dependencies:
+ lodash.sortby: 4.7.0
+ tr46: 1.0.1
+ webidl-conversions: 4.0.2
+ dev: true
+
+ /which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ 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:
+ resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==}
+ engines: {node: '>= 0.4'}
+ 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.2
+ which-typed-array: 1.1.15
+ dev: true
+
+ /which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.3
+
+ /which-typed-array@1.1.15:
+ resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+ engines: {node: '>= 0.4'}
+ 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:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+
+ /wordwrap@1.0.0:
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
+ dev: true
+
+ /wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ /wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ /wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ /write-file-atomic@4.0.2:
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+
+ /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-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+ dev: true
+
+ /y-prosemirror@1.2.1(prosemirror-model@1.20.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.4)(y-protocols@1.0.6)(yjs@13.6.14):
+ resolution: {integrity: sha512-czMBfB1eL2awqmOSxQM8cS/fsUOGE6fjvyPLInrh4crPxFiw67wDpwIW+EGBYKRa04sYbS0ScGj7ZgvWuDrmBQ==}
+ peerDependencies:
+ prosemirror-model: ^1.7.1
+ prosemirror-state: ^1.2.3
+ prosemirror-view: ^1.9.10
+ y-protocols: ^1.0.1
+ yjs: ^13.5.38
+ dependencies:
+ lib0: 0.2.93
+ prosemirror-model: 1.20.0
+ prosemirror-state: 1.4.3
+ prosemirror-view: 1.33.4
+ y-protocols: 1.0.6(yjs@13.6.14)
+ yjs: 13.6.14
+ dev: false
+
+ /y-protocols@1.0.6(yjs@13.6.14):
+ resolution: {integrity: sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ peerDependencies:
+ yjs: ^13.0.0
+ dependencies:
+ lib0: 0.2.93
+ yjs: 13.6.14
+ dev: false
+
+ /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.4.1:
+ resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ /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'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.2
+ 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
+
+ /yjs@13.6.14:
+ resolution: {integrity: sha512-D+7KcUr0j+vBCUSKXXEWfA+bG4UQBviAwP3gYBhkstkgwy5+8diOPMx0iqLIOxNo/HxaREUimZRxqHGAHCL2BQ==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ dependencies:
+ lib0: 0.2.93
+ dev: false
+
+ /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'}
+
+ /zod@3.22.4:
+ resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
+
+ /zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+ dev: false
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 00000000..6503e72e
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,4 @@
+packages:
+ - "./gui"
+ - "./studio"
+ - "./config/*"
diff --git a/src/app/api/database/[database_id]/ops/route.ts b/src/app/api/database/[database_id]/ops/route.ts
deleted file mode 100644
index 5dfa76b1..00000000
--- a/src/app/api/database/[database_id]/ops/route.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { NextResponse } from "next/server";
-import withDatabaseOperation from "@/lib/with-database-ops";
-import { RequestDatabaseBody } from "@/lib/api/api-database-request";
-import handleRoleList from "./handle-role-list";
-import handleUserList from "./handle-users-list";
-import handleAssignUser from "./handle-assign-user";
-import handleDeleteUser from "./handle-delete-user";
-
-export const runtime = "edge";
-
-export const POST = withDatabaseOperation(async function (
- props
-) {
- const body = props.body;
-
- if (body.type === "roles") {
- return await handleRoleList(props);
- } else if (body.type === "users") {
- return await handleUserList(props);
- } else if (body.type === "assign-user") {
- return await handleAssignUser({ ...props, body });
- } else if (body.type === "delete-user") {
- return await handleDeleteUser({ ...props, body });
- }
-
- return NextResponse.json({ error: "Unknown command" }, { status: 500 });
-});
diff --git a/src/app/api/ops/[database_id]/route.ts b/src/app/api/ops/[database_id]/route.ts
deleted file mode 100644
index e0fb32b1..00000000
--- a/src/app/api/ops/[database_id]/route.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { NextResponse } from "next/server";
-import withDatabaseOperation from "@/lib/with-database-ops";
-import handleBatchRequest from "./handle-batch";
-import handleQueryRequest from "./handle-query";
-import handleSchemasRequest from "./handle-schemas";
-import handleSelectTableRequest from "./handle-select-table";
-import handleUpdateTableDataRequest from "./handle-update-table-data";
-import handleSchemaRequest from "./handle-schema";
-import { RequestOperationBody } from "@/lib/api/api-request-types";
-import handleTriggerRequest from "./handle-trigger";
-
-export const runtime = "edge";
-
-export const POST = withDatabaseOperation(async function (
- props
-) {
- const body = props.body;
-
- if (body.type === "batch") {
- return await handleBatchRequest({ ...props, body });
- } else if (body.type === "query") {
- return await handleQueryRequest({ ...props, body });
- } else if (body.type === "schemas") {
- return await handleSchemasRequest(props);
- } else if (body.type === "select-table") {
- return await handleSelectTableRequest({ ...props, body });
- } else if (body.type === "update-table-data") {
- return await handleUpdateTableDataRequest({ ...props, body });
- } else if (body.type === "schema") {
- return await handleSchemaRequest({ ...props, body });
- } else if (body.type === "trigger") {
- return await handleTriggerRequest({ ...props, body });
- }
-
- return NextResponse.json({ error: "Unknown command" }, { status: 500 });
-});
diff --git a/src/app/client/[[...driver]]/page-client.tsx b/src/app/client/[[...driver]]/page-client.tsx
deleted file mode 100644
index 65ebf4e7..00000000
--- a/src/app/client/[[...driver]]/page-client.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-"use client";
-
-import MainScreen from "@/components/main-connection";
-import { ConnectionConfigProvider } from "@/context/connection-config-provider";
-import TursoDriver from "@/drivers/turso-driver";
-import { useMemo } from "react";
-import {
- SavedConnectionItem,
- SavedConnectionItemConfigConfig,
- SupportedDriver,
-} from "../../connect/saved-connection-storage";
-import RqliteDriver from "@/drivers/rqlite-driver";
-import { DatabaseDriverProvider } from "@/context/DatabaseDriverProvider";
-import ValtownDriver from "@/drivers/valtown-driver";
-
-export default function ClientPageBody() {
- const driver = useMemo(() => {
- const config: SavedConnectionItemConfigConfig & {
- driver: SupportedDriver;
- } = JSON.parse(sessionStorage.getItem("connection") ?? "{}");
-
- if (config.driver === "rqlite") {
- return new RqliteDriver(config.url, config.username, config.password);
- } else if (config.driver === "valtown") {
- return new ValtownDriver(config.token);
- }
- return new TursoDriver(config.url, config.token as string, true);
- }, []);
-
- const config = useMemo(() => {
- const config: SavedConnectionItemConfigConfig & {
- driver: SupportedDriver;
- } = JSON.parse(sessionStorage.getItem("connection") ?? "{}");
-
- return {
- id: "quick-connect",
- name: (config?.url ?? "") as string,
- label: "blue",
- } as SavedConnectionItem;
- }, []);
-
- return (
-
-
-
-
-
- );
-}
diff --git a/src/app/client/r/page-client.tsx b/src/app/client/r/page-client.tsx
deleted file mode 100644
index 75ab7342..00000000
--- a/src/app/client/r/page-client.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-"use client";
-
-import { SavedConnectionItem } from "@/app/connect/saved-connection-storage";
-import MainScreen from "@/components/main-connection";
-import { DatabaseDriverProvider } from "@/context/DatabaseDriverProvider";
-import { ConnectionConfigProvider } from "@/context/connection-config-provider";
-import CollaborationDriver from "@/drivers/collaboration-driver";
-import RemoteDriver from "@/drivers/remote-driver";
-import { useSearchParams } from "next/navigation";
-import { useMemo } from "react";
-
-export default function ClientPageBody({
- token,
- config,
-}: Readonly<{
- token: string;
- config: SavedConnectionItem;
-}>) {
- const params = useSearchParams();
-
- const { driver, collaborator } = useMemo(() => {
- const databaseId = params.get("p");
- if (!databaseId) return { driver: null };
-
- return {
- driver: new RemoteDriver(databaseId, token),
- collaborator: new CollaborationDriver(databaseId, token),
- };
- }, [params, token]);
-
- if (!driver) {
- return Something wrong
;
- }
-
- return (
-
-
-
-
-
- );
-}
diff --git a/src/app/client/s/[[...driver]]/page-client.tsx b/src/app/client/s/[[...driver]]/page-client.tsx
deleted file mode 100644
index 512c63c8..00000000
--- a/src/app/client/s/[[...driver]]/page-client.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-"use client";
-
-import { SavedConnectionLocalStorage } from "@/app/connect/saved-connection-storage";
-import MainScreen from "@/components/main-connection";
-import { DatabaseDriverProvider } from "@/context/DatabaseDriverProvider";
-import { ConnectionConfigProvider } from "@/context/connection-config-provider";
-import RqliteDriver from "@/drivers/rqlite-driver";
-import TursoDriver from "@/drivers/turso-driver";
-import ValtownDriver from "@/drivers/valtown-driver";
-import { useSearchParams } from "next/navigation";
-import { useMemo } from "react";
-
-export default function ClientPageBody() {
- const params = useSearchParams();
- const conn = useMemo(() => {
- const connectionParams = params.get("p");
- if (!connectionParams) return null;
-
- const conn = SavedConnectionLocalStorage.get(connectionParams);
- return conn;
- }, [params]);
-
- const driver = useMemo(() => {
- if (!conn) return null;
- if (conn.driver === "rqlite") {
- return new RqliteDriver(
- conn.config.url,
- conn.config.username,
- conn.config.password
- );
- } else if (conn.driver === "valtown") {
- return new ValtownDriver(conn.config.token);
- }
-
- return new TursoDriver(conn.config.url, conn.config.token, true);
- }, [conn]);
-
- if (!driver || !conn) {
- return Something wrong
;
- }
-
- return (
-
-
-
-
-
- );
-}
diff --git a/src/app/storybook/connection_error/page.tsx b/src/app/storybook/connection_error/page.tsx
deleted file mode 100644
index 55b60622..00000000
--- a/src/app/storybook/connection_error/page.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-"use client";
-import ConnectingDialog from "@/components/connection-dialog";
-
-export default function ConnectionErrorMessageStory() {
- return (
-
-
-
-
- );
-}
diff --git a/src/app/storybook/opacity_loading/page.tsx b/src/app/storybook/opacity_loading/page.tsx
deleted file mode 100644
index c33d1748..00000000
--- a/src/app/storybook/opacity_loading/page.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import OpacityLoading from "@/components/loading-opacity";
-
-export default function OpacityLoadingStorybook() {
- return (
-
-
-
- );
-}
diff --git a/src/app/storybook/query_progress/page.tsx b/src/app/storybook/query_progress/page.tsx
deleted file mode 100644
index 955f0e1b..00000000
--- a/src/app/storybook/query_progress/page.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-"use client";
-import QueryProgressLog from "@/components/query-progress-log";
-import { useMemo } from "react";
-
-export default function QueryProgressStorybook() {
- const fakeProgress = useMemo(
- () => ({
- logs: [
- {
- order: 0,
- sql: 'INSERT INTO products(id, name) VALUES(20, "Book 1")',
- start: 1705664174179,
- end: 1705664179226,
- affectedRow: 1,
- },
- {
- order: 1,
- sql: 'INSERT INTO products(id, name) VALUES(21, "Book 2")',
- start: 1705664179226,
- end: 1705664184260,
- affectedRow: 1,
- },
- {
- order: 2,
- sql: 'INSERT INTO products(id, name) VALUES(22, "Book 3")',
- start: Date.now(),
- affectedRow: 1,
- },
- ],
- progress: 2,
- total: 3,
- }),
- []
- );
-
- const fakeProgressWithError = useMemo(
- () => ({
- logs: [
- {
- order: 0,
- sql: 'INSERT INTO products(id, name) VALUES(20, "Book 1")',
- start: 1705667823499,
- end: 1705667823534,
- error:
- "ResponseError: SQLite error: UNIQUE constraint failed: products.id",
- },
- ],
- progress: 0,
- total: 3,
- error: true,
- }),
- []
- );
-
- return (
-
- );
-}
diff --git a/src/components/sortable-tab.module.css b/src/components/sortable-tab.module.css
deleted file mode 100644
index 5623c96e..00000000
--- a/src/components/sortable-tab.module.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.tab .close {
- visibility: hidden;
-}
-
-.tab:hover .close {
- visibility: visible;
-}
diff --git a/src/context/DatabaseDriverProvider.tsx b/src/context/DatabaseDriverProvider.tsx
deleted file mode 100644
index d73fea5d..00000000
--- a/src/context/DatabaseDriverProvider.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { BaseDriver } from "@/drivers/base-driver";
-import CollaborationDriver from "@/drivers/collaboration-driver";
-import { PropsWithChildren, createContext, useContext } from "react";
-
-const DatabaseDriverContext = createContext<{
- databaseDriver: BaseDriver;
- collaborationDriver?: CollaborationDriver;
-}>({
- databaseDriver: {} as unknown as BaseDriver,
-});
-
-export function useDatabaseDriver() {
- return useContext(DatabaseDriverContext);
-}
-
-export function DatabaseDriverProvider({
- children,
- driver,
- collaborationDriver,
-}: PropsWithChildren<{
- driver: BaseDriver;
- collaborationDriver?: CollaborationDriver;
-}>) {
- return (
-
- {children}
-
- );
-}
diff --git a/.eslintrc.json b/studio/.eslintrc.json
similarity index 82%
rename from .eslintrc.json
rename to studio/.eslintrc.json
index 71717181..c2b948c3 100644
--- a/.eslintrc.json
+++ b/studio/.eslintrc.json
@@ -6,7 +6,8 @@
],
"rules": {
"@next/next/no-img-element": "off",
- "@typescript-eslint/no-explicit-any": "off"
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/ban-ts-comment": "off"
},
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
diff --git a/studio/.gitignore b/studio/.gitignore
new file mode 100644
index 00000000..00bba9bb
--- /dev/null
+++ b/studio/.gitignore
@@ -0,0 +1,37 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.yarn/install-state.gz
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*.local
+.env
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/studio/.prettierignore b/studio/.prettierignore
new file mode 100644
index 00000000..cbc9636e
--- /dev/null
+++ b/studio/.prettierignore
@@ -0,0 +1 @@
+drizzle/
diff --git a/studio/.prettierrc b/studio/.prettierrc
new file mode 100644
index 00000000..f0eb61e0
--- /dev/null
+++ b/studio/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "trailingComma": "es5",
+ "tabWidth": 2,
+ "semi": true,
+ "singleQuote": false
+}
diff --git a/studio/LICENSE b/studio/LICENSE
new file mode 100644
index 00000000..cc782a7f
--- /dev/null
+++ b/studio/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Visal .In
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/studio/README.md b/studio/README.md
new file mode 100644
index 00000000..2b7eaafe
--- /dev/null
+++ b/studio/README.md
@@ -0,0 +1,14 @@
+# LibSQL Studio
+
+LibSQL Studio is a lightweight LibSQL graphical client on your browser written using NextJS.
+
+Try [LibSQL Studio](https://libsqlstudio.com/) online here.
+
+![LibSQL Studo Screenshot](https://github.com/invisal/libsql-web-viewer/assets/4539653/82014129-2ea3-4619-9287-2dc756baba6c)
+
+**Features**
+
+- Optimize table result to view large query result
+- Edit your table data in spreadsheet-like editor
+- Query editor with basic syntax highlighting and basic auto complete
+- Basic connection management
diff --git a/components.json b/studio/components.json
similarity index 99%
rename from components.json
rename to studio/components.json
index 7b0e2798..05b33774 100644
--- a/components.json
+++ b/studio/components.json
@@ -14,4 +14,4 @@
"components": "@/components",
"utils": "@/lib/utils"
}
-}
\ No newline at end of file
+}
diff --git a/drizzle.config.ts b/studio/drizzle.config.ts
similarity index 85%
rename from drizzle.config.ts
rename to studio/drizzle.config.ts
index 50cc9fdc..0c1989d5 100644
--- a/drizzle.config.ts
+++ b/studio/drizzle.config.ts
@@ -1,12 +1,12 @@
-import { env } from "@/env";
-import type { Config } from "drizzle-kit";
-
-export default {
- schema: "./src/db/schema.ts",
- out: "./drizzle",
- driver: "turso",
- dbCredentials: {
- url: env.DATABASE_URL,
- authToken: env.DATABASE_AUTH_TOKEN,
- },
-} satisfies Config;
+import { env } from "@studio/env";
+import type { Config } from "drizzle-kit";
+
+export default {
+ schema: "./src/db/schema.ts",
+ out: "./drizzle",
+ driver: "turso",
+ dbCredentials: {
+ url: env.DATABASE_URL,
+ authToken: env.DATABASE_AUTH_TOKEN,
+ },
+} satisfies Config;
diff --git a/drizzle/0000_solid_scream.sql b/studio/drizzle/0000_solid_scream.sql
similarity index 100%
rename from drizzle/0000_solid_scream.sql
rename to studio/drizzle/0000_solid_scream.sql
diff --git a/drizzle/0001_crazy_eternals.sql b/studio/drizzle/0001_crazy_eternals.sql
similarity index 100%
rename from drizzle/0001_crazy_eternals.sql
rename to studio/drizzle/0001_crazy_eternals.sql
diff --git a/drizzle/0002_aspiring_shotgun.sql b/studio/drizzle/0002_aspiring_shotgun.sql
similarity index 100%
rename from drizzle/0002_aspiring_shotgun.sql
rename to studio/drizzle/0002_aspiring_shotgun.sql
diff --git a/drizzle/0003_dashing_marauders.sql b/studio/drizzle/0003_dashing_marauders.sql
similarity index 100%
rename from drizzle/0003_dashing_marauders.sql
rename to studio/drizzle/0003_dashing_marauders.sql
diff --git a/drizzle/0004_misty_the_professor.sql b/studio/drizzle/0004_misty_the_professor.sql
similarity index 100%
rename from drizzle/0004_misty_the_professor.sql
rename to studio/drizzle/0004_misty_the_professor.sql
diff --git a/drizzle/0005_fine_turbo.sql b/studio/drizzle/0005_fine_turbo.sql
similarity index 100%
rename from drizzle/0005_fine_turbo.sql
rename to studio/drizzle/0005_fine_turbo.sql
diff --git a/drizzle/0006_whole_tomorrow_man.sql b/studio/drizzle/0006_whole_tomorrow_man.sql
similarity index 100%
rename from drizzle/0006_whole_tomorrow_man.sql
rename to studio/drizzle/0006_whole_tomorrow_man.sql
diff --git a/drizzle/meta/0000_snapshot.json b/studio/drizzle/meta/0000_snapshot.json
similarity index 100%
rename from drizzle/meta/0000_snapshot.json
rename to studio/drizzle/meta/0000_snapshot.json
diff --git a/drizzle/meta/0001_snapshot.json b/studio/drizzle/meta/0001_snapshot.json
similarity index 100%
rename from drizzle/meta/0001_snapshot.json
rename to studio/drizzle/meta/0001_snapshot.json
diff --git a/drizzle/meta/0002_snapshot.json b/studio/drizzle/meta/0002_snapshot.json
similarity index 100%
rename from drizzle/meta/0002_snapshot.json
rename to studio/drizzle/meta/0002_snapshot.json
diff --git a/drizzle/meta/0003_snapshot.json b/studio/drizzle/meta/0003_snapshot.json
similarity index 100%
rename from drizzle/meta/0003_snapshot.json
rename to studio/drizzle/meta/0003_snapshot.json
diff --git a/drizzle/meta/0004_snapshot.json b/studio/drizzle/meta/0004_snapshot.json
similarity index 100%
rename from drizzle/meta/0004_snapshot.json
rename to studio/drizzle/meta/0004_snapshot.json
diff --git a/drizzle/meta/0005_snapshot.json b/studio/drizzle/meta/0005_snapshot.json
similarity index 100%
rename from drizzle/meta/0005_snapshot.json
rename to studio/drizzle/meta/0005_snapshot.json
diff --git a/drizzle/meta/0006_snapshot.json b/studio/drizzle/meta/0006_snapshot.json
similarity index 100%
rename from drizzle/meta/0006_snapshot.json
rename to studio/drizzle/meta/0006_snapshot.json
diff --git a/drizzle/meta/_journal.json b/studio/drizzle/meta/_journal.json
similarity index 100%
rename from drizzle/meta/_journal.json
rename to studio/drizzle/meta/_journal.json
diff --git a/jest.config.ts b/studio/jest.config.ts
similarity index 97%
rename from jest.config.ts
rename to studio/jest.config.ts
index bec66cf6..96d3d0fc 100644
--- a/jest.config.ts
+++ b/studio/jest.config.ts
@@ -1,18 +1,18 @@
-import type { Config } from "jest";
-import nextJest from "next/jest.js";
-
-const createJestConfig = nextJest({
- // Provide the path to your Next.js app to load next.config.js and .env files in your test environment
- dir: "./",
-});
-
-// Add any custom config to be passed to Jest
-const config: Config = {
- coveragePathIgnorePatterns: ["/.*.tsx$"],
- testEnvironment: "jsdom",
- // Add more setup options before each test is run
- // setupFilesAfterEnv: ['/jest.setup.ts'],
-};
-
-// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
-export default createJestConfig(config);
+import type { Config } from "jest";
+import nextJest from "next/jest.js";
+
+const createJestConfig = nextJest({
+ // Provide the path to your Next.js app to load next.config.js and .env files in your test environment
+ dir: "./",
+});
+
+// Add any custom config to be passed to Jest
+const config: Config = {
+ coveragePathIgnorePatterns: ["/.*.tsx$"],
+ testEnvironment: "jsdom",
+ // Add more setup options before each test is run
+ // setupFilesAfterEnv: ['/jest.setup.ts'],
+};
+
+// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
+export default createJestConfig(config);
diff --git a/studio/next.config.js b/studio/next.config.js
new file mode 100644
index 00000000..c6f6e2cc
--- /dev/null
+++ b/studio/next.config.js
@@ -0,0 +1,14 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ reactStrictMode: false,
+ transpilePackages: ["@libsqlstudio/gui"],
+ experimental: {
+ turbo: {
+ resolveAlias: {
+ "@libsqlstudio/gui": "../gui/src/index.tsx",
+ },
+ },
+ },
+};
+
+module.exports = nextConfig;
diff --git a/studio/package.json b/studio/package.json
new file mode 100644
index 00000000..86107791
--- /dev/null
+++ b/studio/package.json
@@ -0,0 +1,111 @@
+{
+ "name": "@libsqlstudio/studio",
+ "version": "0.3.1",
+ "private": false,
+ "scripts": {
+ "dev": "next dev --turbo",
+ "build": "pnpm run db:migrate && next build",
+ "start": "next start",
+ "tsc": "tsc --noEmit --skipLibCheck",
+ "test": "jest",
+ "test:coverage": "jest --coverage",
+ "test:watch": "jest --watch",
+ "db:generate": "drizzle-kit generate:sqlite",
+ "db:migrate": "tsx src/db/migrate.ts",
+ "generate-random-key": "tsx src/cli/generate-aes-key.ts",
+ "staged": "pnpm run typecheck && pnpm run lint && jest",
+ "typecheck": "tsc --noEmit --skipLibCheck",
+ "format": "prettier --check .",
+ "format:fix": "prettier --write .",
+ "lint": "next lint",
+ "lint:fix": "next lint --fix ."
+ },
+ "overrides": {
+ "@libsql/client": "^0.5.3"
+ },
+ "dependencies": {
+ "@aws-sdk/client-s3": "^3.540.0",
+ "@blocknote/core": "^0.12.1",
+ "@blocknote/react": "^0.12.2",
+ "@codemirror/lang-sql": "^6.5.5",
+ "@dnd-kit/core": "^6.1.0",
+ "@dnd-kit/sortable": "^8.0.0",
+ "@justmiracle/result": "^1.2.0",
+ "@lezer/common": "^1.2.1",
+ "@lezer/lr": "^1.4.0",
+ "@libsql/client": "^0.5.3",
+ "@libsqlstudio/gui": "workspace:*",
+ "@lucia-auth/adapter-sqlite": "^3.0.1",
+ "@radix-ui/react-alert-dialog": "^1.0.5",
+ "@radix-ui/react-avatar": "^1.0.4",
+ "@radix-ui/react-checkbox": "^1.0.4",
+ "@radix-ui/react-context-menu": "^2.1.5",
+ "@radix-ui/react-dialog": "^1.0.5",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-hover-card": "^1.0.7",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-label": "^2.0.2",
+ "@radix-ui/react-menubar": "^1.0.4",
+ "@radix-ui/react-navigation-menu": "^1.1.4",
+ "@radix-ui/react-popover": "^1.0.7",
+ "@radix-ui/react-radio-group": "^1.1.3",
+ "@radix-ui/react-scroll-area": "^1.0.5",
+ "@radix-ui/react-select": "^2.0.0",
+ "@radix-ui/react-separator": "^1.0.3",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-toggle": "^1.0.3",
+ "@radix-ui/react-toggle-group": "^1.0.4",
+ "@radix-ui/react-tooltip": "^1.0.7",
+ "@silevis/reactgrid": "^4.1.3",
+ "@t3-oss/env-nextjs": "^0.9.2",
+ "@uiw/codemirror-extensions-langs": "^4.21.24",
+ "@uiw/codemirror-themes": "^4.21.21",
+ "@uiw/react-codemirror": "^4.21.21",
+ "arctic": "^1.2.1",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.0",
+ "cmdk": "^0.2.0",
+ "cookies-next": "^4.1.1",
+ "deep-equal": "^2.2.3",
+ "dotenv": "^16.4.5",
+ "drizzle-orm": "^0.30.1",
+ "eslint-plugin-jest": "^27.6.3",
+ "lucia": "^3.1.1",
+ "lucide-react": "^0.309.0",
+ "magic-bytes.js": "^1.10.0",
+ "next": "14.2.1",
+ "oslo": "^1.1.3",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-resizable-panels": "^1.0.9",
+ "sonner": "^1.4.41",
+ "sql-query-identifier": "^2.6.0",
+ "tailwind-merge": "^2.2.2",
+ "tailwindcss-animate": "^1.0.7",
+ "zod": "^3.22.4"
+ },
+ "devDependencies": {
+ "@testing-library/jest-dom": "^6.2.1",
+ "@testing-library/react": "^14.1.2",
+ "@types/deep-equal": "^1.0.4",
+ "@types/jest": "^29.5.11",
+ "@types/node": "^20",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
+ "@typescript-eslint/parser": "^6.21.0",
+ "autoprefixer": "^10.4.19",
+ "drizzle-kit": "^0.20.14",
+ "eslint": "^8",
+ "eslint-config-next": "14.0.4",
+ "gui": "^0.15.3",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "postcss": "^8.4.38",
+ "prettier": "^3.2.5",
+ "tailwindcss": "^3.4.3",
+ "ts-node": "^10.9.2",
+ "tsx": "^4.7.1",
+ "typescript": "^5"
+ }
+}
diff --git a/postcss.config.js b/studio/postcss.config.cjs
similarity index 96%
rename from postcss.config.js
rename to studio/postcss.config.cjs
index 33ad091d..12a703d9 100644
--- a/postcss.config.js
+++ b/studio/postcss.config.cjs
@@ -3,4 +3,4 @@ module.exports = {
tailwindcss: {},
autoprefixer: {},
},
-}
+};
diff --git a/public/data-editor.png b/studio/public/data-editor.png
similarity index 100%
rename from public/data-editor.png
rename to studio/public/data-editor.png
diff --git a/public/edit-table.png b/studio/public/edit-table.png
similarity index 100%
rename from public/edit-table.png
rename to studio/public/edit-table.png
diff --git a/public/libsql-logo.png b/studio/public/libsql-logo.png
similarity index 100%
rename from public/libsql-logo.png
rename to studio/public/libsql-logo.png
diff --git a/public/logo.svg b/studio/public/logo.svg
similarity index 100%
rename from public/logo.svg
rename to studio/public/logo.svg
diff --git a/public/next.svg b/studio/public/next.svg
similarity index 100%
rename from public/next.svg
rename to studio/public/next.svg
diff --git a/public/open-source.png b/studio/public/open-source.png
similarity index 100%
rename from public/open-source.png
rename to studio/public/open-source.png
diff --git a/public/rqlite.png b/studio/public/rqlite.png
similarity index 100%
rename from public/rqlite.png
rename to studio/public/rqlite.png
diff --git a/public/screenshot.png b/studio/public/screenshot.png
similarity index 100%
rename from public/screenshot.png
rename to studio/public/screenshot.png
diff --git a/public/screenshot2.png b/studio/public/screenshot2.png
similarity index 100%
rename from public/screenshot2.png
rename to studio/public/screenshot2.png
diff --git a/public/sql-editor.png b/studio/public/sql-editor.png
similarity index 100%
rename from public/sql-editor.png
rename to studio/public/sql-editor.png
diff --git a/public/turso.jpeg b/studio/public/turso.jpeg
similarity index 100%
rename from public/turso.jpeg
rename to studio/public/turso.jpeg
diff --git a/public/turso.png b/studio/public/turso.png
similarity index 100%
rename from public/turso.png
rename to studio/public/turso.png
diff --git a/public/valtown.svg b/studio/public/valtown.svg
similarity index 100%
rename from public/valtown.svg
rename to studio/public/valtown.svg
diff --git a/public/vercel.svg b/studio/public/vercel.svg
similarity index 100%
rename from public/vercel.svg
rename to studio/public/vercel.svg
diff --git a/script.sh b/studio/script.sh
similarity index 100%
rename from script.sh
rename to studio/script.sh
diff --git a/sonar-project.properties b/studio/sonar-project.properties
similarity index 100%
rename from sonar-project.properties
rename to studio/sonar-project.properties
diff --git a/src/app/about/page.tsx b/studio/src/app/about/page.tsx
similarity index 96%
rename from src/app/about/page.tsx
rename to studio/src/app/about/page.tsx
index b2387457..67640afe 100644
--- a/src/app/about/page.tsx
+++ b/studio/src/app/about/page.tsx
@@ -1,3 +1,3 @@
-export default function BlogPage() {
- return Coming Soon
;
-}
+export default function BlogPage() {
+ return Coming Soon
;
+}
diff --git a/src/app/api/database/[database_id]/ops/handle-assign-user.ts b/studio/src/app/api/database/[database_id]/ops/handle-assign-user.ts
similarity index 84%
rename from src/app/api/database/[database_id]/ops/handle-assign-user.ts
rename to studio/src/app/api/database/[database_id]/ops/handle-assign-user.ts
index d03a9ec9..0bd192ae 100644
--- a/src/app/api/database/[database_id]/ops/handle-assign-user.ts
+++ b/studio/src/app/api/database/[database_id]/ops/handle-assign-user.ts
@@ -1,112 +1,112 @@
-import { HttpStatus } from "@/constants/http-status";
-import { db } from "@/db";
-import { database_role, database_user_role } from "@/db/schema-database";
-import { user as userTable } from "@/db/schema-user";
-import { ApiError } from "@/lib/api-error";
-import { RequestDatabaseAssignUser } from "@/lib/api/api-database-request";
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { and, eq } from "drizzle-orm";
-import { NextResponse } from "next/server";
-
-const handleAssignUser: DatabaseOperationHandler<
- RequestDatabaseAssignUser
-> = async ({ database: databaseInfo, body, user, permission }) => {
- const { roleId, userId } = body;
-
- // Validate if user input all fields
- if (!userId || !roleId)
- throw new ApiError({
- message: "Please provide user and role",
- status: HttpStatus.BAD_REQUEST,
- });
-
- if (!permission.isOwner) {
- throw new ApiError({
- message: "Only owner can assign other user access",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- if (user.id === userId) {
- throw new ApiError({
- message: "Cannot reassign yourself",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- // Check if role and user are valid
- const assignedRole = await db.query.database_role.findFirst({
- where: eq(database_role.id, roleId),
- });
-
- const assignedUser = await db.query.user.findFirst({
- where: eq(userTable.id, userId),
- });
-
- if (!assignedRole || assignedRole.databaseId !== databaseInfo.id) {
- throw new ApiError({
- message: "Role does not exist in this database",
- status: HttpStatus.BAD_REQUEST,
- });
- }
-
- if (!assignedUser) {
- throw new ApiError({
- message: "User does not exist",
- status: HttpStatus.BAD_REQUEST,
- });
- }
-
- const isOriginalOwner = user.id === databaseInfo.userId;
- if (assignedRole.isOwner && !isOriginalOwner) {
- throw new ApiError({
- message: "Only original owner can assign other owner",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- // Check if user already have previous role
- const existingRole = (
- await db
- .select()
- .from(database_user_role)
- .innerJoin(database_role, eq(database_role.id, database_user_role.roleId))
- .where(
- and(
- eq(database_user_role.databaseId, databaseInfo.id),
- eq(database_user_role.userId, userId)
- )
- )
- )[0];
-
- if (!existingRole) {
- await db.insert(database_user_role).values({
- userId,
- databaseId: databaseInfo.id,
- roleId,
- createdBy: user.id,
- createdAt: Date.now(),
- });
- } else {
- if (existingRole.database_role.isOwner && !isOriginalOwner) {
- throw new ApiError({
- message: "Only original owner can reassign other owner",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- await db
- .update(database_user_role)
- .set({ roleId, createdAt: Date.now(), createdBy: user.id })
- .where(
- and(
- eq(database_user_role.databaseId, databaseInfo.id),
- eq(database_user_role.userId, userId)
- )
- );
- }
-
- return NextResponse.json({ success: true });
-};
-
-export default handleAssignUser;
+import { HttpStatus } from "@studio/constants/http-status";
+import { db } from "@studio/db";
+import { database_role, database_user_role } from "@studio/db/schema-database";
+import { user as userTable } from "@studio/db/schema-user";
+import { ApiError } from "@studio/lib/api-error";
+import { RequestDatabaseAssignUser } from "@studio/lib/api/api-database-request";
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { and, eq } from "drizzle-orm";
+import { NextResponse } from "next/server";
+
+const handleAssignUser: DatabaseOperationHandler<
+ RequestDatabaseAssignUser
+> = async ({ database: databaseInfo, body, user, permission }) => {
+ const { roleId, userId } = body;
+
+ // Validate if user input all fields
+ if (!userId || !roleId)
+ throw new ApiError({
+ message: "Please provide user and role",
+ status: HttpStatus.BAD_REQUEST,
+ });
+
+ if (!permission.isOwner) {
+ throw new ApiError({
+ message: "Only owner can assign other user access",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ if (user.id === userId) {
+ throw new ApiError({
+ message: "Cannot reassign yourself",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ // Check if role and user are valid
+ const assignedRole = await db.query.database_role.findFirst({
+ where: eq(database_role.id, roleId),
+ });
+
+ const assignedUser = await db.query.user.findFirst({
+ where: eq(userTable.id, userId),
+ });
+
+ if (!assignedRole || assignedRole.databaseId !== databaseInfo.id) {
+ throw new ApiError({
+ message: "Role does not exist in this database",
+ status: HttpStatus.BAD_REQUEST,
+ });
+ }
+
+ if (!assignedUser) {
+ throw new ApiError({
+ message: "User does not exist",
+ status: HttpStatus.BAD_REQUEST,
+ });
+ }
+
+ const isOriginalOwner = user.id === databaseInfo.userId;
+ if (assignedRole.isOwner && !isOriginalOwner) {
+ throw new ApiError({
+ message: "Only original owner can assign other owner",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ // Check if user already have previous role
+ const existingRole = (
+ await db
+ .select()
+ .from(database_user_role)
+ .innerJoin(database_role, eq(database_role.id, database_user_role.roleId))
+ .where(
+ and(
+ eq(database_user_role.databaseId, databaseInfo.id),
+ eq(database_user_role.userId, userId)
+ )
+ )
+ )[0];
+
+ if (!existingRole) {
+ await db.insert(database_user_role).values({
+ userId,
+ databaseId: databaseInfo.id,
+ roleId,
+ createdBy: user.id,
+ createdAt: Date.now(),
+ });
+ } else {
+ if (existingRole.database_role.isOwner && !isOriginalOwner) {
+ throw new ApiError({
+ message: "Only original owner can reassign other owner",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ await db
+ .update(database_user_role)
+ .set({ roleId, createdAt: Date.now(), createdBy: user.id })
+ .where(
+ and(
+ eq(database_user_role.databaseId, databaseInfo.id),
+ eq(database_user_role.userId, userId)
+ )
+ );
+ }
+
+ return NextResponse.json({ success: true });
+};
+
+export default handleAssignUser;
diff --git a/src/app/api/database/[database_id]/ops/handle-delete-user.ts b/studio/src/app/api/database/[database_id]/ops/handle-delete-user.ts
similarity index 81%
rename from src/app/api/database/[database_id]/ops/handle-delete-user.ts
rename to studio/src/app/api/database/[database_id]/ops/handle-delete-user.ts
index c49e29be..2d92bff3 100644
--- a/src/app/api/database/[database_id]/ops/handle-delete-user.ts
+++ b/studio/src/app/api/database/[database_id]/ops/handle-delete-user.ts
@@ -1,78 +1,78 @@
-import { HttpStatus } from "@/constants/http-status";
-import { db } from "@/db";
-import { database_role, database_user_role } from "@/db/schema-database";
-import { ApiError } from "@/lib/api-error";
-import { RequestDatabaseDeleteUser } from "@/lib/api/api-database-request";
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { and, eq } from "drizzle-orm";
-import { NextResponse } from "next/server";
-
-const handleDeleteUser: DatabaseOperationHandler<
- RequestDatabaseDeleteUser
-> = async ({ database: databaseInfo, body, user, permission }) => {
- const { userId } = body;
-
- // Validate if user input all fields
- if (!userId)
- throw new ApiError({
- message: "Please provide user and role",
- status: HttpStatus.BAD_REQUEST,
- });
-
- if (!permission.isOwner) {
- throw new ApiError({
- message: "Only owner can delete other user access",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- if (user.id === userId) {
- throw new ApiError({
- message: "Cannot delete yourself",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- const isOriginalOwner = user.id === databaseInfo.userId;
-
- // Check if user already have previous role
- const existingRole = (
- await db
- .select()
- .from(database_user_role)
- .innerJoin(database_role, eq(database_role.id, database_user_role.roleId))
- .where(
- and(
- eq(database_user_role.databaseId, databaseInfo.id),
- eq(database_user_role.userId, userId)
- )
- )
- )[0];
-
- if (!existingRole) {
- throw new ApiError({
- message: "User does not belong to this database",
- status: HttpStatus.BAD_REQUEST,
- });
- }
-
- if (existingRole.database_role.isOwner && !isOriginalOwner) {
- throw new ApiError({
- message: "Only original owner can delete other owner",
- status: HttpStatus.FORBIDDEN,
- });
- }
-
- await db
- .delete(database_user_role)
- .where(
- and(
- eq(database_user_role.databaseId, databaseInfo.id),
- eq(database_user_role.userId, userId)
- )
- );
-
- return NextResponse.json({ success: true });
-};
-
-export default handleDeleteUser;
+import { HttpStatus } from "@studio/constants/http-status";
+import { db } from "@studio/db";
+import { database_role, database_user_role } from "@studio/db/schema-database";
+import { ApiError } from "@studio/lib/api-error";
+import { RequestDatabaseDeleteUser } from "@studio/lib/api/api-database-request";
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { and, eq } from "drizzle-orm";
+import { NextResponse } from "next/server";
+
+const handleDeleteUser: DatabaseOperationHandler<
+ RequestDatabaseDeleteUser
+> = async ({ database: databaseInfo, body, user, permission }) => {
+ const { userId } = body;
+
+ // Validate if user input all fields
+ if (!userId)
+ throw new ApiError({
+ message: "Please provide user and role",
+ status: HttpStatus.BAD_REQUEST,
+ });
+
+ if (!permission.isOwner) {
+ throw new ApiError({
+ message: "Only owner can delete other user access",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ if (user.id === userId) {
+ throw new ApiError({
+ message: "Cannot delete yourself",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ const isOriginalOwner = user.id === databaseInfo.userId;
+
+ // Check if user already have previous role
+ const existingRole = (
+ await db
+ .select()
+ .from(database_user_role)
+ .innerJoin(database_role, eq(database_role.id, database_user_role.roleId))
+ .where(
+ and(
+ eq(database_user_role.databaseId, databaseInfo.id),
+ eq(database_user_role.userId, userId)
+ )
+ )
+ )[0];
+
+ if (!existingRole) {
+ throw new ApiError({
+ message: "User does not belong to this database",
+ status: HttpStatus.BAD_REQUEST,
+ });
+ }
+
+ if (existingRole.database_role.isOwner && !isOriginalOwner) {
+ throw new ApiError({
+ message: "Only original owner can delete other owner",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+
+ await db
+ .delete(database_user_role)
+ .where(
+ and(
+ eq(database_user_role.databaseId, databaseInfo.id),
+ eq(database_user_role.userId, userId)
+ )
+ );
+
+ return NextResponse.json({ success: true });
+};
+
+export default handleDeleteUser;
diff --git a/src/app/api/database/[database_id]/ops/handle-role-list.ts b/studio/src/app/api/database/[database_id]/ops/handle-role-list.ts
similarity index 71%
rename from src/app/api/database/[database_id]/ops/handle-role-list.ts
rename to studio/src/app/api/database/[database_id]/ops/handle-role-list.ts
index 044dc1b2..48817c94 100644
--- a/src/app/api/database/[database_id]/ops/handle-role-list.ts
+++ b/studio/src/app/api/database/[database_id]/ops/handle-role-list.ts
@@ -1,20 +1,20 @@
-import { db } from "@/db";
-import { database_role } from "@/db/schema-database";
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { eq } from "drizzle-orm";
-import { NextResponse } from "next/server";
-
-const handleRoleList: DatabaseOperationHandler = async ({ database }) => {
- const roles = await db.query.database_role.findMany({
- where: eq(database_role.databaseId, database.id),
- });
-
- return NextResponse.json({
- roles: roles.map((role) => ({
- id: role.id,
- name: role.name,
- })),
- });
-};
-
-export default handleRoleList;
+import { db } from "@studio/db";
+import { database_role } from "@studio/db/schema-database";
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { eq } from "drizzle-orm";
+import { NextResponse } from "next/server";
+
+const handleRoleList: DatabaseOperationHandler = async ({ database }) => {
+ const roles = await db.query.database_role.findMany({
+ where: eq(database_role.databaseId, database.id),
+ });
+
+ return NextResponse.json({
+ roles: roles.map((role) => ({
+ id: role.id,
+ name: role.name,
+ })),
+ });
+};
+
+export default handleRoleList;
diff --git a/src/app/api/database/[database_id]/ops/handle-users-list.ts b/studio/src/app/api/database/[database_id]/ops/handle-users-list.ts
similarity index 80%
rename from src/app/api/database/[database_id]/ops/handle-users-list.ts
rename to studio/src/app/api/database/[database_id]/ops/handle-users-list.ts
index ba64a415..8e48a981 100644
--- a/src/app/api/database/[database_id]/ops/handle-users-list.ts
+++ b/studio/src/app/api/database/[database_id]/ops/handle-users-list.ts
@@ -1,40 +1,40 @@
-import { db } from "@/db";
-import { user } from "@/db/schema";
-import { database_role, database_user_role } from "@/db/schema-database";
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { eq } from "drizzle-orm";
-import { alias } from "drizzle-orm/sqlite-core";
-import { NextResponse } from "next/server";
-
-const handleUserList: DatabaseOperationHandler = async ({
- database: databaseInfo,
-}) => {
- const assigned_user = alias(user, "assigned_user");
-
- const users = await db
- .select({
- id: user.id,
- name: user.name,
- role: {
- id: database_role.id,
- name: database_role.name,
- },
- createdAt: database_user_role.createdAt,
- assignedBy: {
- id: assigned_user.id,
- name: assigned_user.name,
- },
- })
- .from(database_user_role)
- .innerJoin(user, eq(database_user_role.userId, user.id))
- .innerJoin(
- assigned_user,
- eq(database_user_role.createdBy, assigned_user.id)
- )
- .innerJoin(database_role, eq(database_user_role.roleId, database_role.id))
- .where(eq(database_user_role.databaseId, databaseInfo.id));
-
- return NextResponse.json({ users });
-};
-
-export default handleUserList;
+import { db } from "@studio/db";
+import { user } from "@studio/db/schema";
+import { database_role, database_user_role } from "@studio/db/schema-database";
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { eq } from "drizzle-orm";
+import { alias } from "drizzle-orm/sqlite-core";
+import { NextResponse } from "next/server";
+
+const handleUserList: DatabaseOperationHandler = async ({
+ database: databaseInfo,
+}) => {
+ const assigned_user = alias(user, "assigned_user");
+
+ const users = await db
+ .select({
+ id: user.id,
+ name: user.name,
+ role: {
+ id: database_role.id,
+ name: database_role.name,
+ },
+ createdAt: database_user_role.createdAt,
+ assignedBy: {
+ id: assigned_user.id,
+ name: assigned_user.name,
+ },
+ })
+ .from(database_user_role)
+ .innerJoin(user, eq(database_user_role.userId, user.id))
+ .innerJoin(
+ assigned_user,
+ eq(database_user_role.createdBy, assigned_user.id)
+ )
+ .innerJoin(database_role, eq(database_user_role.roleId, database_role.id))
+ .where(eq(database_user_role.databaseId, databaseInfo.id));
+
+ return NextResponse.json({ users });
+};
+
+export default handleUserList;
diff --git a/studio/src/app/api/database/[database_id]/ops/route.ts b/studio/src/app/api/database/[database_id]/ops/route.ts
new file mode 100644
index 00000000..a24e2842
--- /dev/null
+++ b/studio/src/app/api/database/[database_id]/ops/route.ts
@@ -0,0 +1,27 @@
+import { NextResponse } from "next/server";
+import withDatabaseOperation from "@studio/lib/with-database-ops";
+import { RequestDatabaseBody } from "@studio/lib/api/api-database-request";
+import handleRoleList from "./handle-role-list";
+import handleUserList from "./handle-users-list";
+import handleAssignUser from "./handle-assign-user";
+import handleDeleteUser from "./handle-delete-user";
+
+export const runtime = "edge";
+
+export const POST = withDatabaseOperation(
+ async function (props) {
+ const body = props.body;
+
+ if (body.type === "roles") {
+ return await handleRoleList(props);
+ } else if (body.type === "users") {
+ return await handleUserList(props);
+ } else if (body.type === "assign-user") {
+ return await handleAssignUser({ ...props, body });
+ } else if (body.type === "delete-user") {
+ return await handleDeleteUser({ ...props, body });
+ }
+
+ return NextResponse.json({ error: "Unknown command" }, { status: 500 });
+ }
+);
diff --git a/src/app/api/database/[database_id]/route.ts b/studio/src/app/api/database/[database_id]/route.ts
similarity index 86%
rename from src/app/api/database/[database_id]/route.ts
rename to studio/src/app/api/database/[database_id]/route.ts
index 4d2e0d4d..27cf2f94 100644
--- a/src/app/api/database/[database_id]/route.ts
+++ b/studio/src/app/api/database/[database_id]/route.ts
@@ -1,102 +1,102 @@
-import zod from "zod";
-import withDatabaseOperation from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { database } from "@/db/schema";
-import { eq } from "drizzle-orm";
-import { db } from "@/db";
-import { encrypt } from "@/lib/encryption-edge";
-import { env } from "@/env";
-import { SavedConnectionItemConfig } from "@/app/connect/saved-connection-storage";
-
-export const runtime = "edge";
-
-const databaseSchema = zod.object({
- name: zod.string().min(3).max(50),
- description: zod.string(),
- label: zod.enum(["gray", "red", "yellow", "green", "blue"]),
- config: zod.object({
- url: zod.string().min(5),
- token: zod.string().optional(),
- username: zod.string().optional(),
- password: zod.string().optional(),
- }),
-});
-
-export const GET = withDatabaseOperation(async ({ database: databaseInfo }) => {
- return NextResponse.json({
- id: databaseInfo.id,
- driver: databaseInfo.driver ?? "turso",
- name: databaseInfo.name,
- storage: databaseInfo.driver,
- description: databaseInfo.description,
- label: databaseInfo.color,
- config: {
- url: databaseInfo.host,
- token: "",
- },
- } as SavedConnectionItemConfig);
-});
-
-export const DELETE = withDatabaseOperation(
- async ({ database: databaseInfo, user }) => {
- const isOriginalOwner = databaseInfo.userId === user.id;
-
- if (!isOriginalOwner) {
- return NextResponse.json({ error: "Unauthorization" }, { status: 500 });
- }
-
- await db
- .update(database)
- .set({
- deletedAt: Date.now(),
- })
- .where(eq(database.id, databaseInfo.id));
-
- return NextResponse.json({ success: true });
- }
-);
-
-export const PUT = withDatabaseOperation(
- async ({ database: databaseInfo, body, user }) => {
- const parsed = databaseSchema.safeParse(body);
-
- if (!parsed.success) {
- return NextResponse.json(
- {
- error: parsed.error.formErrors,
- },
- { status: 500 }
- );
- }
-
- const data = parsed.data;
-
- const isOriginalOwner = databaseInfo.userId === user.id;
- if (!isOriginalOwner) {
- return NextResponse.json({ error: "Unauthorization" }, { status: 500 });
- }
-
- await db
- .update(database)
- .set({
- color: data.label,
- description: data.description,
- name: data.name,
- host: data.config.url,
- token: data.config.token
- ? await encrypt(env.ENCRYPTION_KEY, data.config.token)
- : undefined,
- username: data.config.username
- ? await encrypt(env.ENCRYPTION_KEY, data.config.username)
- : undefined,
- password: data.config.password
- ? await encrypt(env.ENCRYPTION_KEY, data.config.password)
- : undefined,
- })
- .where(eq(database.id, databaseInfo.id));
-
- return NextResponse.json({
- success: true,
- });
- }
-);
+import zod from "zod";
+import withDatabaseOperation from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { database } from "@studio/db/schema";
+import { eq } from "drizzle-orm";
+import { db } from "@studio/db";
+import { encrypt } from "@studio/lib/encryption-edge";
+import { env } from "@studio/env";
+import { SavedConnectionItemConfig } from "@studio/app/connect/saved-connection-storage";
+
+export const runtime = "edge";
+
+const databaseSchema = zod.object({
+ name: zod.string().min(3).max(50),
+ description: zod.string(),
+ label: zod.enum(["gray", "red", "yellow", "green", "blue"]),
+ config: zod.object({
+ url: zod.string().min(5),
+ token: zod.string().optional(),
+ username: zod.string().optional(),
+ password: zod.string().optional(),
+ }),
+});
+
+export const GET = withDatabaseOperation(async ({ database: databaseInfo }) => {
+ return NextResponse.json({
+ id: databaseInfo.id,
+ driver: databaseInfo.driver ?? "turso",
+ name: databaseInfo.name,
+ storage: databaseInfo.driver,
+ description: databaseInfo.description,
+ label: databaseInfo.color,
+ config: {
+ url: databaseInfo.host,
+ token: "",
+ },
+ } as SavedConnectionItemConfig);
+});
+
+export const DELETE = withDatabaseOperation(
+ async ({ database: databaseInfo, user }) => {
+ const isOriginalOwner = databaseInfo.userId === user.id;
+
+ if (!isOriginalOwner) {
+ return NextResponse.json({ error: "Unauthorization" }, { status: 500 });
+ }
+
+ await db
+ .update(database)
+ .set({
+ deletedAt: Date.now(),
+ })
+ .where(eq(database.id, databaseInfo.id));
+
+ return NextResponse.json({ success: true });
+ }
+);
+
+export const PUT = withDatabaseOperation(
+ async ({ database: databaseInfo, body, user }) => {
+ const parsed = databaseSchema.safeParse(body);
+
+ if (!parsed.success) {
+ return NextResponse.json(
+ {
+ error: parsed.error.formErrors,
+ },
+ { status: 500 }
+ );
+ }
+
+ const data = parsed.data;
+
+ const isOriginalOwner = databaseInfo.userId === user.id;
+ if (!isOriginalOwner) {
+ return NextResponse.json({ error: "Unauthorization" }, { status: 500 });
+ }
+
+ await db
+ .update(database)
+ .set({
+ color: data.label,
+ description: data.description,
+ name: data.name,
+ host: data.config.url,
+ token: data.config.token
+ ? await encrypt(env.ENCRYPTION_KEY, data.config.token)
+ : undefined,
+ username: data.config.username
+ ? await encrypt(env.ENCRYPTION_KEY, data.config.username)
+ : undefined,
+ password: data.config.password
+ ? await encrypt(env.ENCRYPTION_KEY, data.config.password)
+ : undefined,
+ })
+ .where(eq(database.id, databaseInfo.id));
+
+ return NextResponse.json({
+ success: true,
+ });
+ }
+);
diff --git a/src/app/api/database/route.ts b/studio/src/app/api/database/route.ts
similarity index 87%
rename from src/app/api/database/route.ts
rename to studio/src/app/api/database/route.ts
index e7068a10..809d8391 100644
--- a/src/app/api/database/route.ts
+++ b/studio/src/app/api/database/route.ts
@@ -1,116 +1,116 @@
-import zod from "zod";
-import withUser from "@/lib/with-user";
-import { db } from "@/db";
-import { generateId } from "lucia";
-import { database, database_role, database_user_role } from "@/db/schema";
-import { NextResponse } from "next/server";
-import { env } from "@/env";
-import { encrypt } from "@/lib/encryption-edge";
-import { SavedConnectionItem } from "@/app/connect/saved-connection-storage";
-
-export const runtime = "edge";
-
-const databaseSchema = zod.object({
- name: zod.string().min(3).max(50),
- description: zod.string(),
- label: zod.enum(["gray", "red", "yellow", "green", "blue"]),
- driver: zod.enum(["turso", "rqlite", "valtown"]),
- config: zod.object({
- url: zod.string().optional(),
- token: zod.string().optional(),
- username: zod.string().optional(),
- password: zod.string().optional(),
- }),
-});
-
-export const POST = withUser(async ({ user, req }) => {
- const body = await req.json();
- const parsed = databaseSchema.safeParse(body);
-
- if (!parsed.success) {
- return NextResponse.json(
- {
- error: parsed.error.formErrors,
- },
- { status: 500 }
- );
- }
-
- const data = parsed.data;
- const databaseId = generateId(15);
- const ownerRoleId = generateId(15);
- const editorRole = generateId(15);
- const now = Date.now();
-
- try {
- await db.batch([
- db.insert(database).values({
- id: databaseId,
- userId: user.id,
- color: data.label,
- createdAt: now,
- description: data.description,
- driver: data.driver,
- name: data.name,
- host: data.config.url,
- token: data.config.token
- ? await encrypt(env.ENCRYPTION_KEY, data.config.token)
- : undefined,
- username: data.config.username
- ? await encrypt(env.ENCRYPTION_KEY, data.config.username)
- : undefined,
- password: data.config.password
- ? await encrypt(env.ENCRYPTION_KEY, data.config.password)
- : undefined,
- }),
-
- db.insert(database_role).values({
- id: ownerRoleId,
- databaseId,
- name: "Owner",
- canExecuteQuery: 1,
- isOwner: 1,
- createdAt: now,
- createdBy: user.id,
- updatedAt: now,
- updatedBy: user.id,
- }),
-
- db.insert(database_role).values({
- id: editorRole,
- databaseId,
- name: "Editor",
- canExecuteQuery: 1,
- isOwner: 0,
- createdAt: Date.now(),
- createdBy: user.id,
- updatedAt: Date.now(),
- updatedBy: user.id,
- }),
-
- db.insert(database_user_role).values({
- databaseId,
- roleId: ownerRoleId,
- createdAt: Date.now(),
- createdBy: user.id,
- userId: user.id,
- }),
- ]);
-
- return NextResponse.json({
- success: true,
- data: {
- id: databaseId,
- driver: data.driver,
- name: data.name,
- label: data.label,
- description: data.description,
- storage: "remote",
- } as SavedConnectionItem,
- });
- } catch (e) {
- return NextResponse.json({
- success: false,
- });
- }
-});
+import zod from "zod";
+import withUser from "@studio/lib/with-user";
+import { db } from "@studio/db";
+import { generateId } from "lucia";
+import { database, database_role, database_user_role } from "@studio/db/schema";
+import { NextResponse } from "next/server";
+import { env } from "@studio/env";
+import { encrypt } from "@studio/lib/encryption-edge";
+import { SavedConnectionItem } from "@studio/app/connect/saved-connection-storage";
+
+export const runtime = "edge";
+
+const databaseSchema = zod.object({
+ name: zod.string().min(3).max(50),
+ description: zod.string(),
+ label: zod.enum(["gray", "red", "yellow", "green", "blue"]),
+ driver: zod.enum(["turso", "rqlite", "valtown"]),
+ config: zod.object({
+ url: zod.string().optional(),
+ token: zod.string().optional(),
+ username: zod.string().optional(),
+ password: zod.string().optional(),
+ }),
+});
+
+export const POST = withUser(async ({ user, req }) => {
+ const body = await req.json();
+ const parsed = databaseSchema.safeParse(body);
+
+ if (!parsed.success) {
+ return NextResponse.json(
+ {
+ error: parsed.error.formErrors,
+ },
+ { status: 500 }
+ );
+ }
+
+ const data = parsed.data;
+ const databaseId = generateId(15);
+ const ownerRoleId = generateId(15);
+ const editorRole = generateId(15);
+ const now = Date.now();
+
+ try {
+ await db.batch([
+ db.insert(database).values({
+ id: databaseId,
+ userId: user.id,
+ color: data.label,
+ createdAt: now,
+ description: data.description,
+ driver: data.driver,
+ name: data.name,
+ host: data.config.url,
+ token: data.config.token
+ ? await encrypt(env.ENCRYPTION_KEY, data.config.token)
+ : undefined,
+ username: data.config.username
+ ? await encrypt(env.ENCRYPTION_KEY, data.config.username)
+ : undefined,
+ password: data.config.password
+ ? await encrypt(env.ENCRYPTION_KEY, data.config.password)
+ : undefined,
+ }),
+
+ db.insert(database_role).values({
+ id: ownerRoleId,
+ databaseId,
+ name: "Owner",
+ canExecuteQuery: 1,
+ isOwner: 1,
+ createdAt: now,
+ createdBy: user.id,
+ updatedAt: now,
+ updatedBy: user.id,
+ }),
+
+ db.insert(database_role).values({
+ id: editorRole,
+ databaseId,
+ name: "Editor",
+ canExecuteQuery: 1,
+ isOwner: 0,
+ createdAt: Date.now(),
+ createdBy: user.id,
+ updatedAt: Date.now(),
+ updatedBy: user.id,
+ }),
+
+ db.insert(database_user_role).values({
+ databaseId,
+ roleId: ownerRoleId,
+ createdAt: Date.now(),
+ createdBy: user.id,
+ userId: user.id,
+ }),
+ ]);
+
+ return NextResponse.json({
+ success: true,
+ data: {
+ id: databaseId,
+ driver: data.driver,
+ name: data.name,
+ label: data.label,
+ description: data.description,
+ storage: "remote",
+ } as SavedConnectionItem,
+ });
+ } catch (e) {
+ return NextResponse.json({
+ success: false,
+ });
+ }
+});
diff --git a/src/app/api/databases/route.ts b/studio/src/app/api/databases/route.ts
similarity index 78%
rename from src/app/api/databases/route.ts
rename to studio/src/app/api/databases/route.ts
index 47c59fc8..7589e6ac 100644
--- a/src/app/api/databases/route.ts
+++ b/studio/src/app/api/databases/route.ts
@@ -1,43 +1,47 @@
-import { SavedConnectionItem } from "@/app/connect/saved-connection-storage";
-import { db } from "@/db";
-import { database, database_user_role, user as userTable } from "@/db/schema";
-import withUser from "@/lib/with-user";
-import { and, desc, eq, isNull } from "drizzle-orm";
-import { NextResponse } from "next/server";
-
-export const runtime = "edge";
-
-export const GET = withUser(async ({ user }) => {
- const dbs = await db
- .select()
- .from(database_user_role)
- .innerJoin(database, eq(database.id, database_user_role.databaseId))
- .innerJoin(userTable, eq(userTable.id, database.userId))
- .where(
- and(eq(database_user_role.userId, user.id), isNull(database.deletedAt))
- )
- .orderBy(desc(database.createdAt));
-
- return NextResponse.json({
- databases: dbs.map(
- (d) =>
- ({
- id: d.database.id,
- name: d.database.name,
- driver: d.database.driver,
- description: d.database.description,
- storage: "remote",
- label: d.database.color,
- shared:
- d.database.userId === d.database_user_role.userId
- ? undefined
- : {
- sharedBy: {
- id: d.user.id,
- name: d.user.name,
- },
- },
- } as SavedConnectionItem)
- ),
- });
-});
+import { SavedConnectionItem } from "@studio/app/connect/saved-connection-storage";
+import { db } from "@studio/db";
+import {
+ database,
+ database_user_role,
+ user as userTable,
+} from "@studio/db/schema";
+import withUser from "@studio/lib/with-user";
+import { and, desc, eq, isNull } from "drizzle-orm";
+import { NextResponse } from "next/server";
+
+export const runtime = "edge";
+
+export const GET = withUser(async ({ user }) => {
+ const dbs = await db
+ .select()
+ .from(database_user_role)
+ .innerJoin(database, eq(database.id, database_user_role.databaseId))
+ .innerJoin(userTable, eq(userTable.id, database.userId))
+ .where(
+ and(eq(database_user_role.userId, user.id), isNull(database.deletedAt))
+ )
+ .orderBy(desc(database.createdAt));
+
+ return NextResponse.json({
+ databases: dbs.map(
+ (d) =>
+ ({
+ id: d.database.id,
+ name: d.database.name,
+ driver: d.database.driver,
+ description: d.database.description,
+ storage: "remote",
+ label: d.database.color,
+ shared:
+ d.database.userId === d.database_user_role.userId
+ ? undefined
+ : {
+ sharedBy: {
+ id: d.user.id,
+ name: d.user.name,
+ },
+ },
+ }) as SavedConnectionItem
+ ),
+ });
+});
diff --git a/src/app/api/ops/[database_id]/handle-batch.ts b/studio/src/app/api/ops/[database_id]/handle-batch.ts
similarity index 80%
rename from src/app/api/ops/[database_id]/handle-batch.ts
rename to studio/src/app/api/ops/[database_id]/handle-batch.ts
index 86675933..14a5aabe 100644
--- a/src/app/api/ops/[database_id]/handle-batch.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-batch.ts
@@ -1,29 +1,29 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-import { RequestOperationBatch } from "@/lib/api/api-request-types";
-
-const handleBatchRequest: DatabaseOperationHandler<
- RequestOperationBatch
-> = async ({ permission, database, body }) => {
- if (!permission.canExecuteQuery) {
- return NextResponse.json(
- {
- error: "No permission to execute query",
- },
- { status: 500 }
- );
- }
-
- const client = await createTursoEdgeDriver(database);
-
- try {
- return NextResponse.json({
- data: await client.transaction(body.statements),
- });
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleBatchRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+import { RequestOperationBatch } from "@studio/lib/api/api-request-types";
+
+const handleBatchRequest: DatabaseOperationHandler<
+ RequestOperationBatch
+> = async ({ permission, database, body }) => {
+ if (!permission.canExecuteQuery) {
+ return NextResponse.json(
+ {
+ error: "No permission to execute query",
+ },
+ { status: 500 }
+ );
+ }
+
+ const client = await createTursoEdgeDriver(database);
+
+ try {
+ return NextResponse.json({
+ data: await client.transaction(body.statements),
+ });
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleBatchRequest;
diff --git a/src/app/api/ops/[database_id]/handle-query.ts b/studio/src/app/api/ops/[database_id]/handle-query.ts
similarity index 80%
rename from src/app/api/ops/[database_id]/handle-query.ts
rename to studio/src/app/api/ops/[database_id]/handle-query.ts
index b4c08f6e..9f148763 100644
--- a/src/app/api/ops/[database_id]/handle-query.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-query.ts
@@ -1,29 +1,29 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-import { RequestOperationQuery } from "@/lib/api/api-request-types";
-
-const handleQueryRequest: DatabaseOperationHandler<
- RequestOperationQuery
-> = async ({ permission, database, body }) => {
- if (!permission.canExecuteQuery) {
- return NextResponse.json(
- {
- error: "No permission to execute query",
- },
- { status: 500 }
- );
- }
-
- const client = await createTursoEdgeDriver(database);
-
- try {
- return NextResponse.json({
- data: await client.query(body.statement),
- });
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleQueryRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+import { RequestOperationQuery } from "@studio/lib/api/api-request-types";
+
+const handleQueryRequest: DatabaseOperationHandler<
+ RequestOperationQuery
+> = async ({ permission, database, body }) => {
+ if (!permission.canExecuteQuery) {
+ return NextResponse.json(
+ {
+ error: "No permission to execute query",
+ },
+ { status: 500 }
+ );
+ }
+
+ const client = await createTursoEdgeDriver(database);
+
+ try {
+ return NextResponse.json({
+ data: await client.query(body.statement),
+ });
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleQueryRequest;
diff --git a/src/app/api/ops/[database_id]/handle-schema.ts b/studio/src/app/api/ops/[database_id]/handle-schema.ts
similarity index 76%
rename from src/app/api/ops/[database_id]/handle-schema.ts
rename to studio/src/app/api/ops/[database_id]/handle-schema.ts
index 80384250..ff504298 100644
--- a/src/app/api/ops/[database_id]/handle-schema.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-schema.ts
@@ -1,20 +1,20 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-import { RequestOperationSchema } from "@/lib/api/api-request-types";
-
-const handleSchemaRequest: DatabaseOperationHandler<
- RequestOperationSchema
-> = async ({ database, body }) => {
- const client = await createTursoEdgeDriver(database);
-
- try {
- return NextResponse.json({
- data: await client.tableSchema(body.tableName),
- });
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleSchemaRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+import { RequestOperationSchema } from "@studio/lib/api/api-request-types";
+
+const handleSchemaRequest: DatabaseOperationHandler<
+ RequestOperationSchema
+> = async ({ database, body }) => {
+ const client = await createTursoEdgeDriver(database);
+
+ try {
+ return NextResponse.json({
+ data: await client.tableSchema(body.tableName),
+ });
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleSchemaRequest;
diff --git a/src/app/api/ops/[database_id]/handle-schemas.ts b/studio/src/app/api/ops/[database_id]/handle-schemas.ts
similarity index 89%
rename from src/app/api/ops/[database_id]/handle-schemas.ts
rename to studio/src/app/api/ops/[database_id]/handle-schemas.ts
index 74b2cd62..eb7a1c0e 100644
--- a/src/app/api/ops/[database_id]/handle-schemas.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-schemas.ts
@@ -1,30 +1,30 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-
-const handleSchemasRequest: DatabaseOperationHandler = async ({
- permission,
- database,
-}) => {
- const client = await createTursoEdgeDriver(database);
-
- try {
- let tables = await client.schemas();
-
- // If you don't have permssion to execute query
- // We will only allow you to see tables that
- // you have permission to
- if (!permission.canExecuteQuery) {
- const allowedTables = new Set(permission.roles.map((t) => t.tableName));
- tables = tables.filter((table) => allowedTables.has(table.name));
- }
-
- return NextResponse.json({
- data: tables,
- });
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleSchemasRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+
+const handleSchemasRequest: DatabaseOperationHandler = async ({
+ permission,
+ database,
+}) => {
+ const client = await createTursoEdgeDriver(database);
+
+ try {
+ let tables = await client.schemas();
+
+ // If you don't have permssion to execute query
+ // We will only allow you to see tables that
+ // you have permission to
+ if (!permission.canExecuteQuery) {
+ const allowedTables = new Set(permission.roles.map((t) => t.tableName));
+ tables = tables.filter((table) => allowedTables.has(table.name));
+ }
+
+ return NextResponse.json({
+ data: tables,
+ });
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleSchemasRequest;
diff --git a/src/app/api/ops/[database_id]/handle-select-table.ts b/studio/src/app/api/ops/[database_id]/handle-select-table.ts
similarity index 78%
rename from src/app/api/ops/[database_id]/handle-select-table.ts
rename to studio/src/app/api/ops/[database_id]/handle-select-table.ts
index a524ce62..efdea995 100644
--- a/src/app/api/ops/[database_id]/handle-select-table.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-select-table.ts
@@ -1,42 +1,42 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-import { RequestOperationSelectTable } from "@/lib/api/api-request-types";
-import { ApiError } from "@/lib/api-error";
-import { HttpStatus } from "@/constants/http-status";
-
-const handleSelectTableRequest: DatabaseOperationHandler<
- RequestOperationSelectTable
-> = async ({ database, body, permission }) => {
- const client = await createTursoEdgeDriver(database);
-
- if (body.options.whereRaw && !permission.canExecuteQuery) {
- return NextResponse.json(
- {
- error: "No permission to execute query",
- },
- { status: 500 }
- );
- }
-
- if (body.options.orderBy) {
- for (const orderOption of body.options.orderBy) {
- if (orderOption.by !== "DESC" && orderOption.by !== "ASC") {
- throw new ApiError({
- message: "Order by must be DESC or ASC",
- status: HttpStatus.FORBIDDEN,
- });
- }
- }
- }
-
- try {
- return NextResponse.json(
- await client.selectTable(body.tableName, body.options)
- );
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleSelectTableRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+import { RequestOperationSelectTable } from "@studio/lib/api/api-request-types";
+import { ApiError } from "@studio/lib/api-error";
+import { HttpStatus } from "@studio/constants/http-status";
+
+const handleSelectTableRequest: DatabaseOperationHandler<
+ RequestOperationSelectTable
+> = async ({ database, body, permission }) => {
+ const client = await createTursoEdgeDriver(database);
+
+ if (body.options.whereRaw && !permission.canExecuteQuery) {
+ return NextResponse.json(
+ {
+ error: "No permission to execute query",
+ },
+ { status: 500 }
+ );
+ }
+
+ if (body.options.orderBy) {
+ for (const orderOption of body.options.orderBy) {
+ if (orderOption.by !== "DESC" && orderOption.by !== "ASC") {
+ throw new ApiError({
+ message: "Order by must be DESC or ASC",
+ status: HttpStatus.FORBIDDEN,
+ });
+ }
+ }
+ }
+
+ try {
+ return NextResponse.json(
+ await client.selectTable(body.tableName, body.options)
+ );
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleSelectTableRequest;
diff --git a/src/app/api/ops/[database_id]/handle-trigger.ts b/studio/src/app/api/ops/[database_id]/handle-trigger.ts
similarity index 75%
rename from src/app/api/ops/[database_id]/handle-trigger.ts
rename to studio/src/app/api/ops/[database_id]/handle-trigger.ts
index ceaa5b85..e3b1a625 100644
--- a/src/app/api/ops/[database_id]/handle-trigger.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-trigger.ts
@@ -1,20 +1,20 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-import { RequestOperationTrigger } from "@/lib/api/api-request-types";
-
-const handleTriggerRequest: DatabaseOperationHandler<
- RequestOperationTrigger
-> = async ({ database, body }) => {
- const client = await createTursoEdgeDriver(database);
-
- try {
- return NextResponse.json({
- data: await client.trigger(body.name),
- });
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleTriggerRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+import { RequestOperationTrigger } from "@studio/lib/api/api-request-types";
+
+const handleTriggerRequest: DatabaseOperationHandler<
+ RequestOperationTrigger
+> = async ({ database, body }) => {
+ const client = await createTursoEdgeDriver(database);
+
+ try {
+ return NextResponse.json({
+ data: await client.trigger(body.name),
+ });
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleTriggerRequest;
diff --git a/src/app/api/ops/[database_id]/handle-update-table-data.ts b/studio/src/app/api/ops/[database_id]/handle-update-table-data.ts
similarity index 78%
rename from src/app/api/ops/[database_id]/handle-update-table-data.ts
rename to studio/src/app/api/ops/[database_id]/handle-update-table-data.ts
index 2c3fa360..367c7940 100644
--- a/src/app/api/ops/[database_id]/handle-update-table-data.ts
+++ b/studio/src/app/api/ops/[database_id]/handle-update-table-data.ts
@@ -1,23 +1,23 @@
-import { DatabaseOperationHandler } from "@/lib/with-database-ops";
-import { NextResponse } from "next/server";
-import { createTursoEdgeDriver } from "./turso-edge-client";
-import { RequestOperationUpdateTableData } from "@/lib/api/api-request-types";
-
-const handleUpdateTableDataRequest: DatabaseOperationHandler<
- RequestOperationUpdateTableData
-> = async ({ database, body }) => {
- const client = await createTursoEdgeDriver(database);
- const tableName = body.tableName;
-
- const tableSchema = await client.tableSchema(tableName);
-
- try {
- return NextResponse.json(
- await client.updateTableData(tableName, body.ops, tableSchema)
- );
- } catch (e) {
- return NextResponse.json({ error: (e as Error).message });
- }
-};
-
-export default handleUpdateTableDataRequest;
+import { DatabaseOperationHandler } from "@studio/lib/with-database-ops";
+import { NextResponse } from "next/server";
+import { createTursoEdgeDriver } from "./turso-edge-client";
+import { RequestOperationUpdateTableData } from "@studio/lib/api/api-request-types";
+
+const handleUpdateTableDataRequest: DatabaseOperationHandler<
+ RequestOperationUpdateTableData
+> = async ({ database, body }) => {
+ const client = await createTursoEdgeDriver(database);
+ const tableName = body.tableName;
+
+ const tableSchema = await client.tableSchema(tableName);
+
+ try {
+ return NextResponse.json(
+ await client.updateTableData(tableName, body.ops, tableSchema)
+ );
+ } catch (e) {
+ return NextResponse.json({ error: (e as Error).message });
+ }
+};
+
+export default handleUpdateTableDataRequest;
diff --git a/studio/src/app/api/ops/[database_id]/route.ts b/studio/src/app/api/ops/[database_id]/route.ts
new file mode 100644
index 00000000..98470700
--- /dev/null
+++ b/studio/src/app/api/ops/[database_id]/route.ts
@@ -0,0 +1,36 @@
+import { NextResponse } from "next/server";
+import withDatabaseOperation from "@studio/lib/with-database-ops";
+import handleBatchRequest from "./handle-batch";
+import handleQueryRequest from "./handle-query";
+import handleSchemasRequest from "./handle-schemas";
+import handleSelectTableRequest from "./handle-select-table";
+import handleUpdateTableDataRequest from "./handle-update-table-data";
+import handleSchemaRequest from "./handle-schema";
+import { RequestOperationBody } from "@studio/lib/api/api-request-types";
+import handleTriggerRequest from "./handle-trigger";
+
+export const runtime = "edge";
+
+export const POST = withDatabaseOperation(
+ async function (props) {
+ const body = props.body;
+
+ if (body.type === "batch") {
+ return await handleBatchRequest({ ...props, body });
+ } else if (body.type === "query") {
+ return await handleQueryRequest({ ...props, body });
+ } else if (body.type === "schemas") {
+ return await handleSchemasRequest(props);
+ } else if (body.type === "select-table") {
+ return await handleSelectTableRequest({ ...props, body });
+ } else if (body.type === "update-table-data") {
+ return await handleUpdateTableDataRequest({ ...props, body });
+ } else if (body.type === "schema") {
+ return await handleSchemaRequest({ ...props, body });
+ } else if (body.type === "trigger") {
+ return await handleTriggerRequest({ ...props, body });
+ }
+
+ return NextResponse.json({ error: "Unknown command" }, { status: 500 });
+ }
+);
diff --git a/src/app/api/ops/[database_id]/turso-edge-client.ts b/studio/src/app/api/ops/[database_id]/turso-edge-client.ts
similarity index 66%
rename from src/app/api/ops/[database_id]/turso-edge-client.ts
rename to studio/src/app/api/ops/[database_id]/turso-edge-client.ts
index 6fd6de10..a1e5884f 100644
--- a/src/app/api/ops/[database_id]/turso-edge-client.ts
+++ b/studio/src/app/api/ops/[database_id]/turso-edge-client.ts
@@ -1,27 +1,27 @@
-import { database } from "@/db/schema";
-import RqliteDriver from "@/drivers/rqlite-driver";
-import TursoDriver from "@/drivers/turso-driver";
-import ValtownDriver from "@/drivers/valtown-driver";
-import { env } from "@/env";
-import { decrypt } from "@/lib/encryption-edge";
-
-export async function createTursoEdgeDriver(db: typeof database.$inferSelect) {
- const url = db.host ?? "";
-
- if (db.driver === "rqlite") {
- return new RqliteDriver(
- url,
- db.username ? await decrypt(env.ENCRYPTION_KEY, db.username) : "",
- db.password ? await decrypt(env.ENCRYPTION_KEY, db.password) : ""
- );
- } else if (db.driver === "valtown") {
- return new ValtownDriver(
- db.token ? await decrypt(env.ENCRYPTION_KEY, db.token) : ""
- );
- }
-
- const token = db.token
- ? await decrypt(env.ENCRYPTION_KEY, db.token ?? "")
- : "";
- return new TursoDriver(url, token);
-}
+import { database } from "@studio/db/schema";
+import RqliteDriver from "@studio/drivers/rqlite-driver";
+import TursoDriver from "@studio/drivers/turso-driver";
+import ValtownDriver from "@studio/drivers/valtown-driver";
+import { env } from "@studio/env";
+import { decrypt } from "@studio/lib/encryption-edge";
+
+export async function createTursoEdgeDriver(db: typeof database.$inferSelect) {
+ const url = db.host ?? "";
+
+ if (db.driver === "rqlite") {
+ return new RqliteDriver(
+ url,
+ db.username ? await decrypt(env.ENCRYPTION_KEY, db.username) : "",
+ db.password ? await decrypt(env.ENCRYPTION_KEY, db.password) : ""
+ );
+ } else if (db.driver === "valtown") {
+ return new ValtownDriver(
+ db.token ? await decrypt(env.ENCRYPTION_KEY, db.token) : ""
+ );
+ }
+
+ const token = db.token
+ ? await decrypt(env.ENCRYPTION_KEY, db.token ?? "")
+ : "";
+ return new TursoDriver(url, token);
+}
diff --git a/src/app/api/upload/route.ts b/studio/src/app/api/upload/route.ts
similarity index 87%
rename from src/app/api/upload/route.ts
rename to studio/src/app/api/upload/route.ts
index 44e23d52..c1ee38ed 100644
--- a/src/app/api/upload/route.ts
+++ b/studio/src/app/api/upload/route.ts
@@ -1,16 +1,16 @@
-import { hash } from "@/lib/hash-edge";
-import { concat } from "@/lib/utils";
-import withUser from "@/lib/with-user";
+import { hash } from "@studio/lib/hash-edge";
+import { concat } from "@studio/lib/utils";
+import withUser from "@studio/lib/with-user";
import { NextResponse } from "next/server";
import { ok, err } from "@justmiracle/result";
-import { R2 } from "@/lib/r2";
-import { db } from "@/db";
-import { user as userTable, user_file } from "@/db/schema";
+import { R2 } from "@studio/lib/r2";
+import { db } from "@studio/db";
+import { user as userTable, user_file } from "@studio/db/schema";
import { eq, sql } from "drizzle-orm";
import { generateId } from "lucia";
-import { ApiError } from "@/lib/api-error";
-import { HttpStatus } from "@/constants/http-status";
-import { env } from "@/env";
+import { ApiError } from "@studio/lib/api-error";
+import { HttpStatus } from "@studio/constants/http-status";
+import { env } from "@studio/env";
import { filetypeinfo } from "magic-bytes.js";
export const runtime = "edge";
diff --git a/src/app/blog/page.tsx b/studio/src/app/blog/page.tsx
similarity index 96%
rename from src/app/blog/page.tsx
rename to studio/src/app/blog/page.tsx
index b2387457..67640afe 100644
--- a/src/app/blog/page.tsx
+++ b/studio/src/app/blog/page.tsx
@@ -1,3 +1,3 @@
-export default function BlogPage() {
- return Coming Soon
;
-}
+export default function BlogPage() {
+ return Coming Soon
;
+}
diff --git a/studio/src/app/client/[[...driver]]/page-client.tsx b/studio/src/app/client/[[...driver]]/page-client.tsx
new file mode 100644
index 00000000..4ae26905
--- /dev/null
+++ b/studio/src/app/client/[[...driver]]/page-client.tsx
@@ -0,0 +1,35 @@
+"use client";
+import TursoDriver from "@studio/drivers/turso-driver";
+import { useCallback, useMemo } from "react";
+import {
+ SavedConnectionItemConfigConfig,
+ SupportedDriver,
+} from "../../connect/saved-connection-storage";
+import RqliteDriver from "@studio/drivers/rqlite-driver";
+import ValtownDriver from "@studio/drivers/valtown-driver";
+import { Studio } from "@libsqlstudio/gui";
+import { useRouter } from "next/navigation";
+
+export default function ClientPageBody() {
+ const router = useRouter();
+ const driver = useMemo(() => {
+ const config: SavedConnectionItemConfigConfig & {
+ driver: SupportedDriver;
+ } = JSON.parse(sessionStorage.getItem("connection") ?? "{}");
+
+ if (config.driver === "rqlite") {
+ return new RqliteDriver(config.url, config.username, config.password);
+ } else if (config.driver === "valtown") {
+ return new ValtownDriver(config.token);
+ }
+ return new TursoDriver(config.url, config.token as string, true);
+ }, []);
+
+ const goBack = useCallback(() => {
+ router.push("/connect");
+ }, [router]);
+
+ return (
+
+ );
+}
diff --git a/src/app/client/s/[[...driver]]/page.tsx b/studio/src/app/client/[[...driver]]/page.tsx
similarity index 95%
rename from src/app/client/s/[[...driver]]/page.tsx
rename to studio/src/app/client/[[...driver]]/page.tsx
index 1d655796..6b532611 100644
--- a/src/app/client/s/[[...driver]]/page.tsx
+++ b/studio/src/app/client/[[...driver]]/page.tsx
@@ -1,9 +1,9 @@
-import dynamic from "next/dynamic";
-
-const ClientPageBody = dynamic(() => import("./page-client"), {
- ssr: false,
-});
-
-export default function SessionPage() {
- return ;
-}
+import dynamic from "next/dynamic";
+
+const ClientPageBody = dynamic(() => import("./page-client"), {
+ ssr: false,
+});
+
+export default function SessionPage() {
+ return ;
+}
diff --git a/studio/src/app/client/r/page-client.tsx b/studio/src/app/client/r/page-client.tsx
new file mode 100644
index 00000000..e7ec4d53
--- /dev/null
+++ b/studio/src/app/client/r/page-client.tsx
@@ -0,0 +1,50 @@
+"use client";
+
+import { SavedConnectionItem } from "@studio/app/connect/saved-connection-storage";
+import { useTheme } from "@studio/context/theme-provider";
+import CollaborationDriver from "@studio/drivers/collaboration-driver";
+import RemoteDriver from "@studio/drivers/remote-driver";
+import { Studio } from "@libsqlstudio/gui";
+import { useRouter, useSearchParams } from "next/navigation";
+import { useCallback, useMemo } from "react";
+
+export default function ClientPageBody({
+ token,
+ config,
+}: Readonly<{
+ token: string;
+ config: SavedConnectionItem;
+}>) {
+ const { theme } = useTheme();
+ const params = useSearchParams();
+ const router = useRouter();
+
+ const { driver, collaborator } = useMemo(() => {
+ const databaseId = params.get("p");
+ if (!databaseId) return { driver: null };
+
+ return {
+ driver: new RemoteDriver(databaseId, token),
+ collaborator: new CollaborationDriver(databaseId, token),
+ };
+ }, [params, token]);
+
+ const goBack = useCallback(() => {
+ router.push("/connect");
+ }, [router]);
+
+ if (!driver) {
+ return Something wrong
;
+ }
+
+ return (
+
+ );
+}
diff --git a/src/app/client/r/page.tsx b/studio/src/app/client/r/page.tsx
similarity index 78%
rename from src/app/client/r/page.tsx
rename to studio/src/app/client/r/page.tsx
index ffd80937..e4aec5c0 100644
--- a/src/app/client/r/page.tsx
+++ b/studio/src/app/client/r/page.tsx
@@ -1,44 +1,46 @@
-import { SavedConnectionLabel } from "@/app/connect/saved-connection-storage";
-import { db } from "@/db";
-import { database } from "@/db/schema";
-import { getSessionFromCookie } from "@/lib/auth";
-import { and, eq, isNotNull } from "drizzle-orm";
-import dynamic from "next/dynamic";
-
-const ClientPageBody = dynamic(() => import("./page-client"), {
- ssr: false,
-});
-
-export default async function SessionPage({
- searchParams,
-}: {
- searchParams: { p: string };
-}) {
- const { session } = await getSessionFromCookie();
-
- if (!session) {
- return Something wrong
;
- }
-
- const databaseId = searchParams?.p;
- const databaseInfo = await db.query.database.findFirst({
- where: and(eq(database.id, databaseId), isNotNull(database.id)),
- });
-
- if (!databaseInfo) {
- return Not found
;
- }
-
- return (
-
- );
-}
+import "@libsqlstudio/gui/css";
+
+import type { SavedConnectionLabel } from "@studio/app/connect/saved-connection-storage";
+import { db } from "@studio/db";
+import { database } from "@studio/db/schema";
+import { getSessionFromCookie } from "@studio/lib/auth";
+import { and, eq, isNotNull } from "drizzle-orm";
+import dynamic from "next/dynamic";
+
+const ClientPageBody = dynamic(() => import("./page-client"), {
+ ssr: false,
+});
+
+export default async function SessionPage({
+ searchParams,
+}: {
+ searchParams: { p: string };
+}) {
+ const { session } = await getSessionFromCookie();
+
+ if (!session) {
+ return Something wrong
;
+ }
+
+ const databaseId = searchParams?.p;
+ const databaseInfo = await db.query.database.findFirst({
+ where: and(eq(database.id, databaseId), isNotNull(database.id)),
+ });
+
+ if (!databaseInfo) {
+ return Not found
;
+ }
+
+ return (
+
+ );
+}
diff --git a/studio/src/app/client/s/[[...driver]]/page-client.tsx b/studio/src/app/client/s/[[...driver]]/page-client.tsx
new file mode 100644
index 00000000..3309de01
--- /dev/null
+++ b/studio/src/app/client/s/[[...driver]]/page-client.tsx
@@ -0,0 +1,59 @@
+"use client";
+
+import { SavedConnectionLocalStorage } from "@studio/app/connect/saved-connection-storage";
+import RqliteDriver from "@studio/drivers/rqlite-driver";
+import TursoDriver from "@studio/drivers/turso-driver";
+import ValtownDriver from "@studio/drivers/valtown-driver";
+import { Studio } from "@libsqlstudio/gui";
+import { useRouter, useSearchParams } from "next/navigation";
+import { useCallback, useMemo } from "react";
+
+// TODO: might have a way to include this in the Studio component
+import "@libsqlstudio/gui/css";
+import { useTheme } from "@studio/context/theme-provider";
+
+export default function ClientPageBody() {
+ const { theme } = useTheme();
+ const router = useRouter();
+ const params = useSearchParams();
+ const conn = useMemo(() => {
+ const connectionParams = params.get("p");
+ if (!connectionParams) return null;
+
+ const conn = SavedConnectionLocalStorage.get(connectionParams);
+ return conn;
+ }, [params]);
+
+ const driver = useMemo(() => {
+ if (!conn) return null;
+ if (conn.driver === "rqlite") {
+ return new RqliteDriver(
+ conn.config.url,
+ conn.config.username,
+ conn.config.password
+ );
+ } else if (conn.driver === "valtown") {
+ return new ValtownDriver(conn.config.token);
+ }
+
+ return new TursoDriver(conn.config.url, conn.config.token, true);
+ }, [conn]);
+
+ const goBack = useCallback(() => {
+ router.push("/connect");
+ }, [router]);
+
+ if (!driver || !conn) {
+ return Something wrong
;
+ }
+
+ return (
+
+ );
+}
diff --git a/src/app/client/[[...driver]]/page.tsx b/studio/src/app/client/s/[[...driver]]/page.tsx
similarity index 95%
rename from src/app/client/[[...driver]]/page.tsx
rename to studio/src/app/client/s/[[...driver]]/page.tsx
index 1d655796..6b532611 100644
--- a/src/app/client/[[...driver]]/page.tsx
+++ b/studio/src/app/client/s/[[...driver]]/page.tsx
@@ -1,9 +1,9 @@
-import dynamic from "next/dynamic";
-
-const ClientPageBody = dynamic(() => import("./page-client"), {
- ssr: false,
-});
-
-export default function SessionPage() {
- return ;
-}
+import dynamic from "next/dynamic";
+
+const ClientPageBody = dynamic(() => import("./page-client"), {
+ ssr: false,
+});
+
+export default function SessionPage() {
+ return ;
+}
diff --git a/src/app/connect/connection-list.tsx b/studio/src/app/connect/connection-list.tsx
similarity index 94%
rename from src/app/connect/connection-list.tsx
rename to studio/src/app/connect/connection-list.tsx
index acba7d6f..5b5f6a47 100644
--- a/src/app/connect/connection-list.tsx
+++ b/studio/src/app/connect/connection-list.tsx
@@ -1,229 +1,229 @@
-"use client";
-import { Button } from "@/components/ui/button";
-import {
- Dispatch,
- SetStateAction,
- useCallback,
- useEffect,
- useMemo,
- useState,
-} from "react";
-import SaveConnection from "./saved-connection";
-import {
- SavedConnectionItem,
- SavedConnectionLocalStorage,
- SupportedDriver,
-} from "@/app/connect/saved-connection-storage";
-import EditSavedConnection from "./saved-edit-connection";
-import RemoveSavedConnection from "./saved-remove-connection";
-import ConnectionItemCard from "./saved-connection-card";
-import { getDatabases } from "@/lib/api/fetch-databases";
-import { User } from "lucia";
-import QuickConnect from "./quick-connect";
-import { LucideChevronDown } from "lucide-react";
-import DriverDropdown from "./driver-dropdown";
-
-function ConnectionListSection({
- data,
- name,
- onRemove,
- onEdit,
-}: Readonly<{
- data: SavedConnectionItem[];
- name?: string;
- onRemove: Dispatch>;
- onEdit: Dispatch>;
-}>) {
- const body = useMemo(() => {
- if (data.length === 0)
- return (
-
- There is no connection. Please add new connection
-
- );
-
- return (
-
- {data.map((conn) => {
- return (
-