diff --git a/.browserslistrc b/.browserslistrc
deleted file mode 100755
index 214388fe..00000000
--- a/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-> 1%
-last 2 versions
-not dead
diff --git a/.cursorrules b/.cursorrules
new file mode 100644
index 00000000..abf98efd
--- /dev/null
+++ b/.cursorrules
@@ -0,0 +1,260 @@
+You are an expert senior software engineer specializing in modern web development, with deep expertise in TypeScript, React 19, Next.js 15 (App Router), Vercel AI SDK, Shadcn UI, Radix UI, and Tailwind CSS. You are thoughtful, precise, and focus on delivering high-quality, maintainable solutions.
+
+## Analysis Process
+
+Before responding to any request, follow these steps:
+
+1. Request Analysis
+
+ - Determine task type (code creation, debugging, architecture, etc.)
+ - Identify languages and frameworks involved
+ - Note explicit and implicit requirements
+ - Define core problem and desired outcome
+ - Consider project context and constraints
+
+2. Solution Planning
+
+ - Break down the solution into logical steps
+ - Consider modularity and reusability
+ - Identify necessary files and dependencies
+ - Evaluate alternative approaches
+ - Plan for testing and validation
+
+3. Implementation Strategy
+ - Choose appropriate design patterns
+ - Consider performance implications
+ - Plan for error handling and edge cases
+ - Ensure accessibility compliance
+ - Verify best practices alignment
+
+## Code Style and Structure
+
+### General Principles
+
+- Write concise, readable TypeScript code
+- Use functional and declarative programming patterns
+- Follow DRY (Don't Repeat Yourself) principle
+- Implement early returns for better readability
+- Structure components logically: exports, subcomponents, helpers, types
+
+### Naming Conventions
+
+- Use descriptive names with auxiliary verbs (isLoading, hasError)
+- Prefix event handlers with "handle" (handleClick, handleSubmit)
+- Use lowercase with dashes for directories (components/auth-wizard)
+- Favor named exports for components
+
+### TypeScript Usage
+
+- Use TypeScript for all code
+- Prefer interfaces over types
+- Avoid enums; use const maps instead
+- Implement proper type safety and inference
+- Use `satisfies` operator for type validation
+
+## React 19 and Next.js 15 Best Practices
+
+### Component Architecture
+
+- Favor React Server Components (RSC) where possible
+- Minimize 'use client' directives
+- Implement proper error boundaries
+- Use Suspense for async operations
+- Optimize for performance and Web Vitals
+
+### State Management
+
+- Use `useActionState` instead of deprecated `useFormState`
+- Leverage enhanced `useFormStatus` with new properties (data, method, action)
+- Implement URL state management with 'nuqs'
+- Minimize client-side state
+
+### Async Request APIs
+
+```typescript
+// Always use async versions of runtime APIs
+const cookieStore = await cookies();
+const headersList = await headers();
+const { isEnabled } = await draftMode();
+
+// Handle async params in layouts/pages
+const params = await props.params;
+const searchParams = await props.searchParams;
+```
+
+### Data Fetching
+
+- Fetch requests are no longer cached by default
+- Use `cache: 'force-cache'` for specific cached requests
+- Implement `fetchCache = 'default-cache'` for layout/page-level caching
+- Use appropriate fetching methods (Server Components, SWR, React Query)
+
+### Route Handlers
+
+```typescript
+// Cached route handler example
+export const dynamic = "force-static";
+
+export async function GET(request: Request) {
+ const params = await request.params;
+ // Implementation
+}
+```
+
+## Vercel AI SDK Integration
+
+### Core Concepts
+
+- Use the AI SDK for building AI-powered streaming text and chat UIs
+- Leverage three main packages:
+ 1. `ai` - Core functionality and streaming utilities
+ 2. `@ai-sdk/[provider]` - Model provider integrations (e.g., OpenAI)
+ 3. React hooks for UI components
+
+### Route Handler Setup
+
+```typescript
+import { openai } from "@ai-sdk/openai";
+import { streamText } from "ai";
+
+export const maxDuration = 30;
+
+export async function POST(req: Request) {
+ const { messages } = await req.json();
+
+ const result = await streamText({
+ model: openai("gpt-4-turbo"),
+ messages,
+ tools: {
+ // Tool definitions
+ },
+ });
+
+ return result.toDataStreamResponse();
+}
+```
+
+### Chat UI Implementation
+
+```typescript
+'use client';
+
+import { useChat } from 'ai/react';
+
+export default function Chat() {
+ const { messages, input, handleInputChange, handleSubmit } = useChat({
+ maxSteps: 5, // Enable multi-step interactions
+ });
+
+ return (
+
+ {messages.map(m => (
+
+ {m.role === 'user' ? 'User: ' : 'AI: '}
+ {m.toolInvocations ? (
+
{JSON.stringify(m.toolInvocations, null, 2)}
+ ) : (
+ m.content
+ )}
+
+ ))}
+
+
+
+ );
+}
+```
+
+## UI Development
+
+### Styling
+
+- Use Tailwind CSS with a mobile-first approach
+- Implement Shadcn UI and Radix UI components
+- Follow consistent spacing and layout patterns
+- Ensure responsive design across breakpoints
+- Use CSS variables for theme customization
+
+### Accessibility
+
+- Implement proper ARIA attributes
+- Ensure keyboard navigation
+- Provide appropriate alt text
+- Follow WCAG 2.1 guidelines
+- Test with screen readers
+
+### Performance
+
+- Optimize images (WebP, sizing, lazy loading)
+- Implement code splitting
+- Use `next/font` for font optimization
+- Configure `staleTimes` for client-side router cache
+- Monitor Core Web Vitals
+
+## Configuration
+
+### Next.js Config
+
+```typescript
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ // Stable features (formerly experimental)
+ bundlePagesRouterDependencies: true,
+ serverExternalPackages: ["package-name"],
+
+ // Router cache configuration
+ experimental: {
+ staleTimes: {
+ dynamic: 30,
+ static: 180,
+ },
+ },
+};
+```
+
+### TypeScript Config
+
+```json
+{
+ "compilerOptions": {
+ "strict": true,
+ "target": "ES2022",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "jsx": "preserve",
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "noEmit": true,
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
+```
+
+## Testing and Validation
+
+### Code Quality
+
+- Implement comprehensive error handling
+- Write maintainable, self-documenting code
+- Follow security best practices
+- Ensure proper type coverage
+- Use ESLint and Prettier
+- NEVER use semicolons
+
+### Testing Strategy
+
+- Plan for unit and integration tests
+- Implement proper test coverage
+- Consider edge cases and error scenarios
+- Validate accessibility compliance
+- Use React Testing Library
+
+Remember: Prioritize clarity and maintainability while delivering robust, accessible, and performant solutions aligned with the latest React 19, Next.js 15, and Vercel AI SDK features and best practices.
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100755
index c24743d0..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1,7 +0,0 @@
-[*.{js,jsx,ts,tsx,vue}]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-trim_trailing_whitespace = true
-insert_final_newline = true
-max_line_length = 100
diff --git a/.env.example b/.env.example
new file mode 100644
index 00000000..cedb7d3e
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,38 @@
+# Since the ".env" file is gitignored, you can use the ".env.example" file to
+# build a new ".env" file when you clone the repo. Keep this file up-to-date
+# when you add new variables to `.env`.
+
+# This file will be committed to version control, so make sure not to have any
+# secrets in it. If you are cloning this repo, create a copy of this file named
+# ".env" and populate it with your secrets.
+
+# When adding additional environment variables, the schema in "/src/env.js"
+# should be updated accordingly.
+
+# Example:
+# SERVERVAR="foo"
+# NEXT_PUBLIC_CLIENTVAR="bar"
+
+VERCEL_URL="http://localhost:3000"
+
+# For Sanity CRM
+NEXT_PUBLIC_SANITY_PROJECT_ID="" # paste your sanity project id here
+NEXT_PUBLIC_SANITY_DATASET="production"
+# For events map
+NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=""
+
+# If you want to handle Stripe membership subscriptions, add the following variables:
+STRIPE_SECRET_KEY=sk_test_...
+STRIPE_MEMBERSHIP_PRICE_ID=price_...
+
+# Google Analytics ID
+NEXT_PUBLIC_GA_ID="YOUR_GOOGLE_ANALYTICS_ID"
+
+# Prisma
+DATABASE_URL="postgresql://postgres:password@localhost:5432/schroedinger-hat-website"
+
+# Secret for securing cron job endpoints (generate a secure random string)
+CRON_SECRET="your-secure-random-string"
+
+# Postmark API key
+POSTMARK_API_KEY="your-postmark-api-key-here"
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 00000000..67a8ab4a
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,43 @@
+/** @type {import("eslint").Linter.Config} */
+const config = {
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: true,
+ },
+ plugins: ["@typescript-eslint"],
+ extends: [
+ "next/core-web-vitals",
+ "plugin:@typescript-eslint/recommended-type-checked",
+ "plugin:@typescript-eslint/stylistic-type-checked",
+ ],
+ rules: {
+ "@typescript-eslint/array-type": "off",
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-unsafe-assignment": "off",
+ "@typescript-eslint/no-unsafe-return": "off",
+ "@typescript-eslint/consistent-type-definitions": "off",
+ "@typescript-eslint/consistent-type-imports": [
+ "warn",
+ {
+ prefer: "type-imports",
+ fixStyle: "inline-type-imports",
+ },
+ ],
+ "@typescript-eslint/no-unused-vars": [
+ "warn",
+ {
+ argsIgnorePattern: "^_",
+ },
+ ],
+ "@typescript-eslint/require-await": "off",
+ "@typescript-eslint/no-misused-promises": [
+ "error",
+ {
+ checksVoidReturn: {
+ attributes: false,
+ },
+ },
+ ],
+ },
+};
+module.exports = config;
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..552e7c9d
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,27 @@
+on: [push]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18.x
+ cache: "npm"
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Build ladle
+ run: npm run build
+
+ - name: Serve ladle
+ run: npm run serve &
+
+ - name: Lost Pixel
+ uses: lost-pixel/lost-pixel@v3.4.0
diff --git a/.github/workflows/update-lost-pixel-baseline.yml b/.github/workflows/update-lost-pixel-baseline.yml
new file mode 100644
index 00000000..15b44bce
--- /dev/null
+++ b/.github/workflows/update-lost-pixel-baseline.yml
@@ -0,0 +1,39 @@
+on: workflow_dispatch
+
+jobs:
+ lost-pixel-update:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup Node
+ uses: actions/setup-node@v2
+ with:
+ node-version: 18.x
+ cache: "npm"
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Build ladle
+ run: npm run build
+
+ - name: Serve ladle
+ run: npm run serve &
+
+ - name: Lost Pixel
+ id: lp
+ uses: lost-pixel/lost-pixel@v3.8.0
+ env:
+ LOST_PIXEL_MODE: update
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v4
+ if: ${{ failure() && steps.lp.conclusion == 'failure' }}
+ with:
+ token: ${{ secrets.GH_TOKEN }}
+ commit-message: update lost-pixel baselines
+ delete-branch: true
+ branch: "lost-pixel-update/${{ github.ref_name }}"
+ title: "Lost Pixel update - ${{ github.ref_name }}"
+ body: Automated baseline update PR created by Lost Pixel
diff --git a/.gitignore b/.gitignore
old mode 100755
new mode 100644
index 506fc75a..d63699bc
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,49 @@
-.DS_Store
-node_modules
-/dist
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-/tests/e2e/videos/
-/tests/e2e/screenshots/
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
-# local env files
-.env.local
-.env.*.local
+# testing
+/coverage
+
+# database
+/prisma/db.sqlite
+/prisma/db.sqlite-journal
+db.sqlite
+
+# next.js
+/.next/
+/out/
+next-env.d.ts
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
-# Log files
+# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
-pnpm-debug.log*
+.pnpm-debug.log*
+
+# local env files
+# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables
+.env
+.env*.local
-# Editor directories and files
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+
+# idea files
.idea
-.vscode
-.zed
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
+
+# history VSC plugin
+.history
\ No newline at end of file
diff --git a/.lostpixel/.gitignore b/.lostpixel/.gitignore
new file mode 100644
index 00000000..a60a0897
--- /dev/null
+++ b/.lostpixel/.gitignore
@@ -0,0 +1,2 @@
+current
+difference
diff --git a/.lostpixel/baseline/association--about-us__[w1024px].png b/.lostpixel/baseline/association--about-us__[w1024px].png
new file mode 100644
index 00000000..6a3ccdfa
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w1024px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w1280px].png b/.lostpixel/baseline/association--about-us__[w1280px].png
new file mode 100644
index 00000000..9a41fb0a
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w1280px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w1440px].png b/.lostpixel/baseline/association--about-us__[w1440px].png
new file mode 100644
index 00000000..8b7ab0d4
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w1440px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w1920px].png b/.lostpixel/baseline/association--about-us__[w1920px].png
new file mode 100644
index 00000000..460169f6
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w1920px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w2560px].png b/.lostpixel/baseline/association--about-us__[w2560px].png
new file mode 100644
index 00000000..08b9995b
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w2560px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w375px].png b/.lostpixel/baseline/association--about-us__[w375px].png
new file mode 100644
index 00000000..509c9b7c
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w375px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w414px].png b/.lostpixel/baseline/association--about-us__[w414px].png
new file mode 100644
index 00000000..0d54c1fc
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w414px].png differ
diff --git a/.lostpixel/baseline/association--about-us__[w768px].png b/.lostpixel/baseline/association--about-us__[w768px].png
new file mode 100644
index 00000000..ce878a24
Binary files /dev/null and b/.lostpixel/baseline/association--about-us__[w768px].png differ
diff --git a/.lostpixel/baseline/association--join__[w1024px].png b/.lostpixel/baseline/association--join__[w1024px].png
new file mode 100644
index 00000000..40e1a276
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w1024px].png differ
diff --git a/.lostpixel/baseline/association--join__[w1280px].png b/.lostpixel/baseline/association--join__[w1280px].png
new file mode 100644
index 00000000..ca42b284
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w1280px].png differ
diff --git a/.lostpixel/baseline/association--join__[w1440px].png b/.lostpixel/baseline/association--join__[w1440px].png
new file mode 100644
index 00000000..b6951e7b
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w1440px].png differ
diff --git a/.lostpixel/baseline/association--join__[w1920px].png b/.lostpixel/baseline/association--join__[w1920px].png
new file mode 100644
index 00000000..ab3bb92e
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w1920px].png differ
diff --git a/.lostpixel/baseline/association--join__[w2560px].png b/.lostpixel/baseline/association--join__[w2560px].png
new file mode 100644
index 00000000..8b2e4bda
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w2560px].png differ
diff --git a/.lostpixel/baseline/association--join__[w375px].png b/.lostpixel/baseline/association--join__[w375px].png
new file mode 100644
index 00000000..d6bd46d2
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w375px].png differ
diff --git a/.lostpixel/baseline/association--join__[w414px].png b/.lostpixel/baseline/association--join__[w414px].png
new file mode 100644
index 00000000..c365b902
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w414px].png differ
diff --git a/.lostpixel/baseline/association--join__[w768px].png b/.lostpixel/baseline/association--join__[w768px].png
new file mode 100644
index 00000000..ad971db7
Binary files /dev/null and b/.lostpixel/baseline/association--join__[w768px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w1024px].png b/.lostpixel/baseline/association--press-kit__[w1024px].png
new file mode 100644
index 00000000..980d691b
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w1024px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w1280px].png b/.lostpixel/baseline/association--press-kit__[w1280px].png
new file mode 100644
index 00000000..e6625ceb
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w1280px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w1440px].png b/.lostpixel/baseline/association--press-kit__[w1440px].png
new file mode 100644
index 00000000..25ca43d0
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w1440px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w1920px].png b/.lostpixel/baseline/association--press-kit__[w1920px].png
new file mode 100644
index 00000000..728cee6c
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w1920px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w2560px].png b/.lostpixel/baseline/association--press-kit__[w2560px].png
new file mode 100644
index 00000000..f1871b77
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w2560px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w375px].png b/.lostpixel/baseline/association--press-kit__[w375px].png
new file mode 100644
index 00000000..cf9d895f
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w375px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w414px].png b/.lostpixel/baseline/association--press-kit__[w414px].png
new file mode 100644
index 00000000..19318355
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w414px].png differ
diff --git a/.lostpixel/baseline/association--press-kit__[w768px].png b/.lostpixel/baseline/association--press-kit__[w768px].png
new file mode 100644
index 00000000..48aa7fdd
Binary files /dev/null and b/.lostpixel/baseline/association--press-kit__[w768px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w1024px].png b/.lostpixel/baseline/contribute--as-individual__[w1024px].png
new file mode 100644
index 00000000..c2f2727a
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w1024px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w1280px].png b/.lostpixel/baseline/contribute--as-individual__[w1280px].png
new file mode 100644
index 00000000..d9b51efe
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w1280px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w1440px].png b/.lostpixel/baseline/contribute--as-individual__[w1440px].png
new file mode 100644
index 00000000..98131a0e
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w1440px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w1920px].png b/.lostpixel/baseline/contribute--as-individual__[w1920px].png
new file mode 100644
index 00000000..1a93697e
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w1920px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w2560px].png b/.lostpixel/baseline/contribute--as-individual__[w2560px].png
new file mode 100644
index 00000000..df9403c3
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w2560px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w375px].png b/.lostpixel/baseline/contribute--as-individual__[w375px].png
new file mode 100644
index 00000000..121c796d
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w375px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w414px].png b/.lostpixel/baseline/contribute--as-individual__[w414px].png
new file mode 100644
index 00000000..2189ff9f
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w414px].png differ
diff --git a/.lostpixel/baseline/contribute--as-individual__[w768px].png b/.lostpixel/baseline/contribute--as-individual__[w768px].png
new file mode 100644
index 00000000..ef76ac20
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-individual__[w768px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w1024px].png b/.lostpixel/baseline/contribute--as-partner__[w1024px].png
new file mode 100644
index 00000000..fd32589f
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w1024px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w1280px].png b/.lostpixel/baseline/contribute--as-partner__[w1280px].png
new file mode 100644
index 00000000..9729c1f7
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w1280px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w1440px].png b/.lostpixel/baseline/contribute--as-partner__[w1440px].png
new file mode 100644
index 00000000..a1396c3c
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w1440px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w1920px].png b/.lostpixel/baseline/contribute--as-partner__[w1920px].png
new file mode 100644
index 00000000..9ba98791
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w1920px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w2560px].png b/.lostpixel/baseline/contribute--as-partner__[w2560px].png
new file mode 100644
index 00000000..ad9a57c1
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w2560px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w375px].png b/.lostpixel/baseline/contribute--as-partner__[w375px].png
new file mode 100644
index 00000000..83fc7738
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w375px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w414px].png b/.lostpixel/baseline/contribute--as-partner__[w414px].png
new file mode 100644
index 00000000..41dd41ba
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w414px].png differ
diff --git a/.lostpixel/baseline/contribute--as-partner__[w768px].png b/.lostpixel/baseline/contribute--as-partner__[w768px].png
new file mode 100644
index 00000000..d1b549ea
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-partner__[w768px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w1024px].png b/.lostpixel/baseline/contribute--as-speaker__[w1024px].png
new file mode 100644
index 00000000..19988565
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w1024px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w1280px].png b/.lostpixel/baseline/contribute--as-speaker__[w1280px].png
new file mode 100644
index 00000000..a300563d
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w1280px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w1440px].png b/.lostpixel/baseline/contribute--as-speaker__[w1440px].png
new file mode 100644
index 00000000..c5d67bd9
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w1440px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w1920px].png b/.lostpixel/baseline/contribute--as-speaker__[w1920px].png
new file mode 100644
index 00000000..5904d61c
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w1920px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w2560px].png b/.lostpixel/baseline/contribute--as-speaker__[w2560px].png
new file mode 100644
index 00000000..938f1b9a
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w2560px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w375px].png b/.lostpixel/baseline/contribute--as-speaker__[w375px].png
new file mode 100644
index 00000000..d77d538e
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w375px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w414px].png b/.lostpixel/baseline/contribute--as-speaker__[w414px].png
new file mode 100644
index 00000000..53c52e81
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w414px].png differ
diff --git a/.lostpixel/baseline/contribute--as-speaker__[w768px].png b/.lostpixel/baseline/contribute--as-speaker__[w768px].png
new file mode 100644
index 00000000..6a697300
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-speaker__[w768px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w1024px].png b/.lostpixel/baseline/contribute--as-sponsor__[w1024px].png
new file mode 100644
index 00000000..81530666
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w1024px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w1280px].png b/.lostpixel/baseline/contribute--as-sponsor__[w1280px].png
new file mode 100644
index 00000000..0ad12613
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w1280px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w1440px].png b/.lostpixel/baseline/contribute--as-sponsor__[w1440px].png
new file mode 100644
index 00000000..d6ff35b0
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w1440px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w1920px].png b/.lostpixel/baseline/contribute--as-sponsor__[w1920px].png
new file mode 100644
index 00000000..f7d0754b
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w1920px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w2560px].png b/.lostpixel/baseline/contribute--as-sponsor__[w2560px].png
new file mode 100644
index 00000000..f9887b91
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w2560px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w375px].png b/.lostpixel/baseline/contribute--as-sponsor__[w375px].png
new file mode 100644
index 00000000..2d167ada
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w375px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w414px].png b/.lostpixel/baseline/contribute--as-sponsor__[w414px].png
new file mode 100644
index 00000000..1cf8dd09
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w414px].png differ
diff --git a/.lostpixel/baseline/contribute--as-sponsor__[w768px].png b/.lostpixel/baseline/contribute--as-sponsor__[w768px].png
new file mode 100644
index 00000000..67dde7ff
Binary files /dev/null and b/.lostpixel/baseline/contribute--as-sponsor__[w768px].png differ
diff --git a/.lostpixel/baseline/homepage__[w1024px].png b/.lostpixel/baseline/homepage__[w1024px].png
new file mode 100644
index 00000000..89ab3703
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w1024px].png differ
diff --git a/.lostpixel/baseline/homepage__[w1280px].png b/.lostpixel/baseline/homepage__[w1280px].png
new file mode 100644
index 00000000..e14edf09
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w1280px].png differ
diff --git a/.lostpixel/baseline/homepage__[w1440px].png b/.lostpixel/baseline/homepage__[w1440px].png
new file mode 100644
index 00000000..9d519818
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w1440px].png differ
diff --git a/.lostpixel/baseline/homepage__[w1920px].png b/.lostpixel/baseline/homepage__[w1920px].png
new file mode 100644
index 00000000..84e5de75
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w1920px].png differ
diff --git a/.lostpixel/baseline/homepage__[w2560px].png b/.lostpixel/baseline/homepage__[w2560px].png
new file mode 100644
index 00000000..6f56d3d7
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w2560px].png differ
diff --git a/.lostpixel/baseline/homepage__[w375px].png b/.lostpixel/baseline/homepage__[w375px].png
new file mode 100644
index 00000000..3e94fb5d
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w375px].png differ
diff --git a/.lostpixel/baseline/homepage__[w414px].png b/.lostpixel/baseline/homepage__[w414px].png
new file mode 100644
index 00000000..c683e491
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w414px].png differ
diff --git a/.lostpixel/baseline/homepage__[w768px].png b/.lostpixel/baseline/homepage__[w768px].png
new file mode 100644
index 00000000..07ebb854
Binary files /dev/null and b/.lostpixel/baseline/homepage__[w768px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1024px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1024px].png
new file mode 100644
index 00000000..b017974b
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1024px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1280px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1280px].png
new file mode 100644
index 00000000..0c081bc3
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1280px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1440px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1440px].png
new file mode 100644
index 00000000..b8de221e
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1440px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1920px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1920px].png
new file mode 100644
index 00000000..537ad666
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w1920px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w2560px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w2560px].png
new file mode 100644
index 00000000..707d3d6c
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w2560px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w375px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w375px].png
new file mode 100644
index 00000000..2cf94c22
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w375px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w414px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w414px].png
new file mode 100644
index 00000000..4853a84d
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w414px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w768px].png b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w768px].png
new file mode 100644
index 00000000..175505c7
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--open-source-day-2024__[w768px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1024px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1024px].png
new file mode 100644
index 00000000..17992c9f
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1024px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1280px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1280px].png
new file mode 100644
index 00000000..ece892e6
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1280px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1440px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1440px].png
new file mode 100644
index 00000000..9224ff17
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1440px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1920px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1920px].png
new file mode 100644
index 00000000..2a10e963
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w1920px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w2560px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w2560px].png
new file mode 100644
index 00000000..6283ef9c
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w2560px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w375px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w375px].png
new file mode 100644
index 00000000..cfc40d6d
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w375px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w414px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w414px].png
new file mode 100644
index 00000000..d1478991
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w414px].png differ
diff --git a/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w768px].png b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w768px].png
new file mode 100644
index 00000000..98616a67
Binary files /dev/null and b/.lostpixel/baseline/partecipate--events--sh-session-dev-devrel-nel-2024__[w768px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w1024px].png b/.lostpixel/baseline/partecipate-events__[w1024px].png
new file mode 100644
index 00000000..326863d9
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w1024px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w1280px].png b/.lostpixel/baseline/partecipate-events__[w1280px].png
new file mode 100644
index 00000000..aa784488
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w1280px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w1440px].png b/.lostpixel/baseline/partecipate-events__[w1440px].png
new file mode 100644
index 00000000..855220cf
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w1440px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w1920px].png b/.lostpixel/baseline/partecipate-events__[w1920px].png
new file mode 100644
index 00000000..15b70bba
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w1920px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w2560px].png b/.lostpixel/baseline/partecipate-events__[w2560px].png
new file mode 100644
index 00000000..fdc76692
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w2560px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w375px].png b/.lostpixel/baseline/partecipate-events__[w375px].png
new file mode 100644
index 00000000..ae8e6649
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w375px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w414px].png b/.lostpixel/baseline/partecipate-events__[w414px].png
new file mode 100644
index 00000000..d03cbd5a
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w414px].png differ
diff --git a/.lostpixel/baseline/partecipate-events__[w768px].png b/.lostpixel/baseline/partecipate-events__[w768px].png
new file mode 100644
index 00000000..95014542
Binary files /dev/null and b/.lostpixel/baseline/partecipate-events__[w768px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w1024px].png b/.lostpixel/baseline/partecipate-local-communities__[w1024px].png
new file mode 100644
index 00000000..cc909d43
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w1024px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w1280px].png b/.lostpixel/baseline/partecipate-local-communities__[w1280px].png
new file mode 100644
index 00000000..90802fcf
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w1280px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w1440px].png b/.lostpixel/baseline/partecipate-local-communities__[w1440px].png
new file mode 100644
index 00000000..6992d306
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w1440px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w1920px].png b/.lostpixel/baseline/partecipate-local-communities__[w1920px].png
new file mode 100644
index 00000000..8ba6078c
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w1920px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w2560px].png b/.lostpixel/baseline/partecipate-local-communities__[w2560px].png
new file mode 100644
index 00000000..2ec9bbaa
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w2560px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w375px].png b/.lostpixel/baseline/partecipate-local-communities__[w375px].png
new file mode 100644
index 00000000..fab649fb
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w375px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w414px].png b/.lostpixel/baseline/partecipate-local-communities__[w414px].png
new file mode 100644
index 00000000..8e835020
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w414px].png differ
diff --git a/.lostpixel/baseline/partecipate-local-communities__[w768px].png b/.lostpixel/baseline/partecipate-local-communities__[w768px].png
new file mode 100644
index 00000000..374e8f2c
Binary files /dev/null and b/.lostpixel/baseline/partecipate-local-communities__[w768px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w1024px].png b/.lostpixel/baseline/partecipate-projects__[w1024px].png
new file mode 100644
index 00000000..356d6155
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w1024px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w1280px].png b/.lostpixel/baseline/partecipate-projects__[w1280px].png
new file mode 100644
index 00000000..1d777d08
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w1280px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w1440px].png b/.lostpixel/baseline/partecipate-projects__[w1440px].png
new file mode 100644
index 00000000..42905aa3
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w1440px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w1920px].png b/.lostpixel/baseline/partecipate-projects__[w1920px].png
new file mode 100644
index 00000000..e4383b5c
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w1920px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w2560px].png b/.lostpixel/baseline/partecipate-projects__[w2560px].png
new file mode 100644
index 00000000..8e8cb14c
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w2560px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w375px].png b/.lostpixel/baseline/partecipate-projects__[w375px].png
new file mode 100644
index 00000000..6fa3919e
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w375px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w414px].png b/.lostpixel/baseline/partecipate-projects__[w414px].png
new file mode 100644
index 00000000..08f6baf2
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w414px].png differ
diff --git a/.lostpixel/baseline/partecipate-projects__[w768px].png b/.lostpixel/baseline/partecipate-projects__[w768px].png
new file mode 100644
index 00000000..4c4b93e3
Binary files /dev/null and b/.lostpixel/baseline/partecipate-projects__[w768px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w1024px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w1024px].png
new file mode 100644
index 00000000..d0698f12
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w1024px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w1280px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w1280px].png
new file mode 100644
index 00000000..11998edf
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w1280px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w1440px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w1440px].png
new file mode 100644
index 00000000..74a0aeaa
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w1440px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w1920px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w1920px].png
new file mode 100644
index 00000000..952e521b
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w1920px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w2560px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w2560px].png
new file mode 100644
index 00000000..454e2ef9
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w2560px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w375px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w375px].png
new file mode 100644
index 00000000..3daa4d7c
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w375px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w414px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w414px].png
new file mode 100644
index 00000000..6809c53d
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w414px].png differ
diff --git a/.lostpixel/baseline/speaker--costa-tsaousis__[w768px].png b/.lostpixel/baseline/speaker--costa-tsaousis__[w768px].png
new file mode 100644
index 00000000..29ffad39
Binary files /dev/null and b/.lostpixel/baseline/speaker--costa-tsaousis__[w768px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w1024px].png b/.lostpixel/baseline/watch--netdata-open-source__[w1024px].png
new file mode 100644
index 00000000..3e50bcdb
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w1024px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w1280px].png b/.lostpixel/baseline/watch--netdata-open-source__[w1280px].png
new file mode 100644
index 00000000..aa683333
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w1280px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w1440px].png b/.lostpixel/baseline/watch--netdata-open-source__[w1440px].png
new file mode 100644
index 00000000..bfa5d0e3
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w1440px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w1920px].png b/.lostpixel/baseline/watch--netdata-open-source__[w1920px].png
new file mode 100644
index 00000000..25bfcd1b
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w1920px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w2560px].png b/.lostpixel/baseline/watch--netdata-open-source__[w2560px].png
new file mode 100644
index 00000000..a4f272ec
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w2560px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w375px].png b/.lostpixel/baseline/watch--netdata-open-source__[w375px].png
new file mode 100644
index 00000000..1483fa23
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w375px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w414px].png b/.lostpixel/baseline/watch--netdata-open-source__[w414px].png
new file mode 100644
index 00000000..98a04bc2
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w414px].png differ
diff --git a/.lostpixel/baseline/watch--netdata-open-source__[w768px].png b/.lostpixel/baseline/watch--netdata-open-source__[w768px].png
new file mode 100644
index 00000000..c26518e9
Binary files /dev/null and b/.lostpixel/baseline/watch--netdata-open-source__[w768px].png differ
diff --git a/.lostpixel/baseline/watch__[w1024px].png b/.lostpixel/baseline/watch__[w1024px].png
new file mode 100644
index 00000000..04ff394b
Binary files /dev/null and b/.lostpixel/baseline/watch__[w1024px].png differ
diff --git a/.lostpixel/baseline/watch__[w1280px].png b/.lostpixel/baseline/watch__[w1280px].png
new file mode 100644
index 00000000..dd9413d1
Binary files /dev/null and b/.lostpixel/baseline/watch__[w1280px].png differ
diff --git a/.lostpixel/baseline/watch__[w1440px].png b/.lostpixel/baseline/watch__[w1440px].png
new file mode 100644
index 00000000..3463aea7
Binary files /dev/null and b/.lostpixel/baseline/watch__[w1440px].png differ
diff --git a/.lostpixel/baseline/watch__[w1920px].png b/.lostpixel/baseline/watch__[w1920px].png
new file mode 100644
index 00000000..5ebf5508
Binary files /dev/null and b/.lostpixel/baseline/watch__[w1920px].png differ
diff --git a/.lostpixel/baseline/watch__[w2560px].png b/.lostpixel/baseline/watch__[w2560px].png
new file mode 100644
index 00000000..942b8320
Binary files /dev/null and b/.lostpixel/baseline/watch__[w2560px].png differ
diff --git a/.lostpixel/baseline/watch__[w375px].png b/.lostpixel/baseline/watch__[w375px].png
new file mode 100644
index 00000000..889dbaa8
Binary files /dev/null and b/.lostpixel/baseline/watch__[w375px].png differ
diff --git a/.lostpixel/baseline/watch__[w414px].png b/.lostpixel/baseline/watch__[w414px].png
new file mode 100644
index 00000000..4c72e82e
Binary files /dev/null and b/.lostpixel/baseline/watch__[w414px].png differ
diff --git a/.lostpixel/baseline/watch__[w768px].png b/.lostpixel/baseline/watch__[w768px].png
new file mode 100644
index 00000000..853967b2
Binary files /dev/null and b/.lostpixel/baseline/watch__[w768px].png differ
diff --git a/.npmrc b/.npmrc
deleted file mode 100644
index b6f27f13..00000000
--- a/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-engine-strict=true
diff --git a/.nvmrc b/.nvmrc
deleted file mode 100644
index d5a15960..00000000
--- a/.nvmrc
+++ /dev/null
@@ -1 +0,0 @@
-20.10.0
diff --git a/.stylelintrc.json b/.stylelintrc.json
deleted file mode 100644
index b3676ec2..00000000
--- a/.stylelintrc.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "customSyntax": "postcss-html",
- "extends": [
- "stylelint-config-idiomatic-order",
- "stylelint-config-recommended-vue",
- "stylelint-config-standard-scss"
- ],
- "rules": {
- "scss/comment-no-empty": null
- },
- "ignoreFiles": [
- "src/components/SVGLogo.vue"
- ]
-}
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
deleted file mode 100644
index 456fe114..00000000
--- a/CONTRIBUTORS.md
+++ /dev/null
@@ -1,12 +0,0 @@
-## Contributors
-
-Current contributors:
-
-- [Angela Busato - AngyDev](https://github.com/AngyDev)
-- [Gabriele Puliti - Wabri](https://github.com/Wabri)
-- [Lorenzo Pieri - 404answernotfound](https://github.com/404answernotfound)
-- [Miki Lombardi - TheJoin95](https://github.com/TheJoin95)
-- [Nicola Puppa - Nicpuppa](https://github.com/nicpuppa)
-- [Patrick Raedler - Readpato](https://github.com/Readpato)
-
-Check out all [SH Contributors](https://github.com/schroedinger-Hat/schroedinger-hat-website/graphs/contributors)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 0ad25db4..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,661 +0,0 @@
- GNU AFFERO GENERAL PUBLIC LICENSE
- Version 3, 19 November 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU Affero General Public License is a free, copyleft license for
-software and other kinds of works, specifically designed to ensure
-cooperation with the community in the case of network server software.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-our General Public Licenses are intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- Developers that use our General Public Licenses protect your rights
-with two steps: (1) assert copyright on the software, and (2) offer
-you this License which gives you legal permission to copy, distribute
-and/or modify the software.
-
- A secondary benefit of defending all users' freedom is that
-improvements made in alternate versions of the program, if they
-receive widespread use, become available for other developers to
-incorporate. Many developers of free software are heartened and
-encouraged by the resulting cooperation. However, in the case of
-software used on network servers, this result may fail to come about.
-The GNU General Public License permits making a modified version and
-letting the public access it on a server without ever releasing its
-source code to the public.
-
- The GNU Affero General Public License is designed specifically to
-ensure that, in such cases, the modified source code becomes available
-to the community. It requires the operator of a network server to
-provide the source code of the modified version running there to the
-users of that server. Therefore, public use of a modified version, on
-a publicly accessible server, gives the public access to the source
-code of the modified version.
-
- An older license, called the Affero General Public License and
-published by Affero, was designed to accomplish similar goals. This is
-a different license, not a version of the Affero GPL, but Affero has
-released a new version of the Affero GPL which permits relicensing under
-this license.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU Affero General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Remote Network Interaction; Use with the GNU General Public License.
-
- Notwithstanding any other provision of this License, if you modify the
-Program, your modified version must prominently offer all users
-interacting with it remotely through a computer network (if your version
-supports such interaction) an opportunity to receive the Corresponding
-Source of your version by providing access to the Corresponding Source
-from a network server at no charge, through some standard or customary
-means of facilitating copying of software. This Corresponding Source
-shall include the Corresponding Source for any work covered by version 3
-of the GNU General Public License that is incorporated pursuant to the
-following paragraph.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the work with which it is combined will remain governed by version
-3 of the GNU General Public License.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU Affero General Public License from time to time. Such new versions
-will be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU Affero General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU Affero General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU Affero General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published
- by the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If your software can interact with users remotely through a computer
-network, you should also make sure that it provides a way for users to
-get its source. For example, if your program is a web application, its
-interface could display a "Source" link that leads users to an archive
-of the code. There are many ways you could offer source, and different
-solutions will be better for different programs; see section 13 for the
-specific requirements.
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU AGPL, see
- .
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
index d99e5863..5d16bdb2
--- a/README.md
+++ b/README.md
@@ -53,13 +53,12 @@
Project description
### Tech stack
-- [Vue.js](https://vuejs.org/) - [Repo](https://github.com/vuejs/core)
-- [Cypress](https://www.cypress.io/) - [Repo](https://github.com/cypress-io/cypress)
-- [SASS](https://sass-lang.com/) - [Repo](https://github.com/sass/sass)
-- [Typescript](https://www.typescriptlang.org/) - [Repo](https://github.com/microsoft/TypeScript)
-- [UnoCSS](https://unocss.dev/) - [Repo](https://github.com/unocss/unocss)
-- [Vite](https://vitejs.dev/) - [Repo](https://github.com/vitejs/vite)
-- [Vitest](https://vitest.dev/) - [Repo](https://github.com/vitest-dev/vitest)
+- [Next.js](https://nextjs.org)
+- [Tailwind CSS](https://tailwindcss.com)
+- [tRPC](https://trpc.io)
+- [Sanity](https://www.sanity.io/)
+- [Stripe](https://stripe.com/)
+- [Hugeicons](https://hugeicons.com/)
@@ -79,33 +78,6 @@ Then, after cloning the project run the command below in the installation folder
npm install
```
-### Install recommended VSCode extensions or LSP servers
-
-As we are utilizing Vue3 for this project, you will need to install [Vue Volar](https://github.com/vuejs/language-tools).
-
-For VSCode:
-
-[Install the marketplace extension](https://marketplace.visualstudio.com/items?itemName=Vue.volar) which will allow you to have the best Vue DX while coding.
-
-Don't forget to open the workspace of the project, which will apply specific rules and extension recommendations:
-
-```
-~/your-folder/schroedinger-hat-website code schroedinger-hat-website.code-workspace
-```
-
-For Neovim:
-
-Proceed with the installation of:
- - [Volar LSP](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#volar) as is stated here. (Take Over Mode included)
-
-- [Eslint LSP](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#eslint) that will allow you to format the files.
-
-For both editors:
-
-It is important that you activate the [Take Over Mode](https://vuejs.org/guide/typescript/overview.html#volar-takeover-mode) from Volar to get the best DX when using Typescript and Vue. For Neovim you can follow the same link stated above.
-
-Don't hesitate to ask the admins or contributors on how to set it up if you don't manage set it up.
-
### Compiles and hot-reloads for development
```
@@ -118,18 +90,6 @@ npm run dev
npm run build
```
-### Run your unit tests
-
-```
-npm run test
-```
-
-### Run your end-to-end tests
-
-```
-npm run cy:o
-```
-
### Lints and fixes files
```
@@ -139,7 +99,7 @@ npm run lint:fix
## Roadmap
-Currently aiming for the v2 release.
+Currently working on some improvements after initial release.
Check out the [milestone](https://github.com/schroedinger-Hat/schroedinger-hat-website/milestones) and the the [open issues](https://github.com/schroedinger-Hat/schroedinger-hat-website/issues) if you would like to contribute.
@@ -161,7 +121,6 @@ Don't forget to give the project a star! Thanks again!
## Contact
- Team - [Organization repo](https://github.com/orgs/schroedinger-Hat/people)
-- Instagram - [@schrodinger_hat](https://www.instagram.com/schrodinger_hat)
- LinkedIn - [Schrödinger Hat](https://www.linkedin.com/company/schroedinger-hat/mycompany/)
- Twitter - [@schrodinger_hat](https://twitter.com/schrodinger_hat)
@@ -173,4 +132,4 @@ Don't forget to give the project a star! Thanks again!
[forks-shield]: https://img.shields.io/github/forks/schroedinger-Hat/schroedinger-hat-website.svg?style=for-the-badge
[forks-url]: https://github.com/schroedinger-Hat/schroedinger-hat-website/network/members
[issues-shield]: https://img.shields.io/github/issues/schroedinger-Hat/schroedinger-hat-website.svg?style=for-the-badge
-[issues-url]: https://github.com/schroedinger-Hat/schroedinger-hat-website/issues
+[issues-url]: https://github.com/schroedinger-Hat/schroedinger-hat-website/issues
\ No newline at end of file
diff --git a/_redirects b/_redirects
deleted file mode 100644
index 1a8b8b3f..00000000
--- a/_redirects
+++ /dev/null
@@ -1,2 +0,0 @@
-https://schrodinger-hat.it/* https://schroedinger-hat.org/:splat 301!
-https://www.schrodinger-hat.it/* https://www.schroedinger-hat.org/:splat 301!
\ No newline at end of file
diff --git a/components.json b/components.json
new file mode 100644
index 00000000..a72f221c
--- /dev/null
+++ b/components.json
@@ -0,0 +1,21 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "default",
+ "rsc": true,
+ "tsx": true,
+ "tailwind": {
+ "config": "tailwind.config.ts",
+ "css": "src/styles/globals.css",
+ "baseColor": "neutral",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib",
+ "hooks": "@/hooks"
+ },
+ "iconLibrary": "lucide"
+}
\ No newline at end of file
diff --git a/cypress.config.ts b/cypress.config.ts
deleted file mode 100644
index 058a08dd..00000000
--- a/cypress.config.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { defineConfig } from 'cypress'
-
-export default defineConfig({
- e2e: {
- setupNodeEvents() {
- // implement node event listeners here
- },
- },
-})
diff --git a/cypress/e2e/spec.cy.ts b/cypress/e2e/spec.cy.ts
deleted file mode 100644
index 54ceb58d..00000000
--- a/cypress/e2e/spec.cy.ts
+++ /dev/null
@@ -1,1337 +0,0 @@
-///
-import messages from '@/i18n/messages'
-import type { EventMessageName } from '@/i18n/types'
-
-describe('English tests', {
- env: {
- discordURL: 'https://discord.gg/RTXr8A3eFn',
- facebookURL: 'https://www.facebook.com/schrodingerhat',
- githubURL: 'https://github.com/schroedinger-Hat',
- githubWebsiteRepoURL: 'https://github.com/schroedinger-Hat/schroedinger-hat-website/issues/new/choose',
- imageGoNordURL: 'https://ign.schroedinger-hat.org',
- instagramURL: 'https://www.instagram.com/schrodinger_hat/',
- linkedinURL: 'https://www.linkedin.com/company/schroedinger-hat/',
- // Modify with your local environment url
- localhost: 'http://localhost:5173',
- openCollectiveURL: 'https://opencollective.com/schrodinger-hat',
- spotifyURL: 'https://open.spotify.com/show/7yfkQCV6hrPIqflSqJDB2P',
- twitterURL: 'https://twitter.com/schrodinger_hat',
- youtubeURL: 'https://www.youtube.com/channel/UC1QLLgrGrPmlaFhS0orykCA',
- },
-}, () => {
- beforeEach(() => {
- // Sets the website language website to 'en_US'
- cy.visit(Cypress.env('localhost'), {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'en_US',
- })
- },
- })
- // Wait for mailchimp modal to appear.
- // As the modal is loaded async, edit the time depending on your situation.
- cy.wait(10000).then(() => {
- cy.get('.slide-in-container-inner .close').click()
- })
- })
- describe('Conduct page', () => {
- it('Assures al text is loaded correctly', () => {
- const conductMessages = messages.en.code_of_conduct
- cy.visit(`${Cypress.env('localhost')}/code-of-conduct`)
- cy.get('[data-test="conduct-main-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.main_title)
- cy.get('[data-test="conduct-short-version-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.short_version.title)
- cy.get('[data-test="conduct-short-version-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.short_version.description)
- cy.get('[data-test="conduct-long-version-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.longer_version.title)
- cy.get('[data-test="conduct-long-version-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.longer_version.description)
- cy.get('[data-test="conduct-full-version-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.title)
- cy.get('[data-test="conduct-full-version-subtitle"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.sub_title)
- cy.get('[data-test="conduct-full-version-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.description)
- cy.get('[data-test="conduct-full-version-rules"]').then(($rules) => {
- const totalRules = Object.keys(conductMessages.full_version.rules_list).length
- cy.wrap($rules).should('have.length', totalRules)
- })
- cy.get('[data-test="conduct-full-version-rules-paragraph"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.rules_paragraph)
- cy.get('[data-test="conduct-full-version-enforcement-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.enforcement.title)
- cy.get('[data-test="conduct-full-version-enforcement-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.enforcement.description)
- cy.get('[data-test="conduct-full-version-enforcement-second-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.enforcement.second_description)
- cy.get('[data-test="conduct-full-version-reporting-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.reporting.title)
- cy.get('[data-test="conduct-full-version-reporting-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.reporting.description)
- cy.get('[data-test="conduct-full-version-reporting-items-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.reporting.items_title)
- cy.get('[data-test="conduct-full-version-reporting-items"]').then(($rules) => {
- const totalRules = Object.keys(conductMessages.full_version.reporting.items).length
- cy.wrap($rules).should('have.length', totalRules)
- })
- cy.get('[data-test="conduct-full-version-final-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.final_description)
- })
- })
- describe('Contributing section', () => {
- it('Changes to mobile viewport and assures all elements are rendered correctly', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="contributing-section"]').should('be.visible').and('exist').scrollIntoView()
- // TODO: Rewrite test once nyan cat is disabled on mobile
- cy.get('[data-test="nyan-cat"]').then(($element) => {
- cy.wrap($element).should('not.have.class', 'loaded')
- cy.wait(300)
- cy.wrap($element).should('have.class', 'loaded')
- cy.wait(8000)
- cy.wrap($element).should('have.css', 'display', 'none')
- })
- cy.get('[data-test="contributing-title"]')
- .should('be.visible')
- .and('contain.text', messages.en.contributing.title)
- cy.get('[data-test="contributing-description"]')
- .should('be.visible')
- // TODO: Fix this way of assuring the text exists
- .and('contain.text', `Schrödinger Hat ${messages.en.contributing['is-a-project']} GitHub`)
- cy.get('[data-test="contributing-github-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-cta"]')
- .should('exist')
- .and('contain.text', `${messages.en.contributing.cta} ${messages.en.contributing['external-link']} ${messages.en.contributing['cta-2']}`)
- cy.get('[data-test="contributing-github-website-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubWebsiteRepoURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-social"]').should('be.visible')
- })
- it('Changes to desktop viewport and assures all elements are rendered correctly', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="contributing-section"]').should('be.visible').and('exist').scrollIntoView()
- // TODO: Rewrite test once nyan cat is disabled on mobile
- cy.get('[data-test="nyan-cat"]').then(($element) => {
- cy.wrap($element).should('not.have.class', 'loaded')
- cy.wait(300)
- cy.wrap($element).should('have.class', 'loaded')
- cy.wait(8000)
- cy.wrap($element).should('have.css', 'display', 'none')
- })
- cy.get('[data-test="contributing-title"]')
- .should('be.visible')
- .and('contain.text', messages.en.contributing.title)
- cy.get('[data-test="contributing-description"]')
- .should('be.visible')
- // TODO: Fix this way of assuring the text exists
- .and('contain.text', `Schrödinger Hat ${messages.en.contributing['is-a-project']} GitHub`)
- cy.get('[data-test="contributing-github-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-cta"]')
- .should('exist')
- .and('contain.text', `${messages.en.contributing.cta} ${messages.en.contributing['external-link']} ${messages.en.contributing['cta-2']}`)
- cy.get('[data-test="contributing-github-website-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubWebsiteRepoURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-social"]').should('be.visible')
- })
- it('Assures all social CTAs are rendered correctly', () => {
- cy.get('[data-test="contributing-social"]').should('be.visible').and('exist')
- cy.get('[data-test="contributing-open-collective"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('openCollectiveURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-open-collective-icon"]')
- .should('be.visible')
- .and('have.class', 'fas fa-donate external-link-color')
- cy.get('[data-test="contributing-facebook"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('facebookURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-facebook-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-facebook external-link-color')
- cy.get('[data-test="contributing-twitter"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('twitterURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-twitter-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-twitter external-link-color')
- cy.get('[data-test="contributing-linkedin"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('linkedinURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-linkedin-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-linkedin external-link-color')
- cy.get('[data-test="contributing-instagram"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('instagramURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-instagram-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-instagram external-link-color')
- cy.get('[data-test="contributing-discord"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('discordURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-discord-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-discord external-link-color')
- })
- it('Assures all contributing partners are rendered correctly', () => {
- cy.get('[data-test="contributing-partners-logo"]').should('be.visible')
- cy.get('[data-test="contributing-partners-logo"] > a').then(($elements) => {
- cy.wrap($elements)
- .should('be.visible')
- .should('not.have.attr', 'href', '')
- .and('have.attr', 'target', '_blank')
- cy.wrap($elements.children())
- .should('be.visible')
- .and('exist')
- .and('not.have.attr', 'src', '')
- .and('not.have.attr', 'alt', '')
- })
- })
- })
- describe('Events page', () => {
- const eventsMessages = messages.en.events
- const eventsKeys = Object.keys(eventsMessages)
- it('Changes to mobile and assuress content is loaded correctly', () => {
- cy.visit(`${Cypress.env('localhost')}/events`)
- cy.viewport('iphone-xr')
- cy.get('[data-test="events-header"]').should('contain.text', messages.en.navbar.events).and('exist').and('be.visible')
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.get(`[data-test="event-${key}-link"]`).should('exist').and('be.visible').and('have.attr', 'href', `/events/${key}`)
- cy.get(`[data-test="event-${key}-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- cy.get(`[data-test="event-${key}-date"]`).should('exist').and('be.visible').and('contain.text', `${eventsMessages[key].date} | ${eventsMessages[key].location}`)
- cy.get(`[data-test="event-${key}-subtitle"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].subtitle)
- cy.get(`[data-test="event-${key}-read-more"]`).should('exist').and('be.visible').and('contain.text', messages.en.message.common['read-more'])
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- })
- })
- it('Changes to desktop and assuress content is loaded correctly', () => {
- cy.visit(`${Cypress.env('localhost')}/events`)
- cy.viewport('macbook-16')
- cy.get('[data-test="events-header"]').should('contain.text', messages.en.navbar.events).and('exist').and('be.visible')
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.get(`[data-test="event-${key}-link"]`).should('exist').and('be.visible').and('have.attr', 'href', `/events/${key}`)
- cy.get(`[data-test="event-${key}-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- cy.get(`[data-test="event-${key}-date"]`).should('exist').and('be.visible').and('contain.text', `${eventsMessages[key].date} | ${eventsMessages[key].location}`)
- cy.get(`[data-test="event-${key}-subtitle"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].subtitle)
- cy.get(`[data-test="event-${key}-read-more"]`).should('exist').and('be.visible').and('contain.text', messages.en.message.common['read-more'])
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- })
- })
- })
- describe('Event specific page', () => {
- it('Changes to mobile, assures the single event content is loaded correctly', () => {
- cy.viewport('iphone-xr')
- const eventsMessages = messages.en.events
- const eventsKeys = Object.keys(eventsMessages)
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.visit(`${Cypress.env('localhost')}/events/${key}`)
- cy.get(`[data-test="${key}-title"]`).should('contain.text', eventsMessages[key].title).and('be.visible')
- cy.get(`[data-test="${key}-date"]`).should('contain.text', eventsMessages[key].date).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-location"]`).should('contain.text', eventsMessages[key].location).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-subtitle"]`).should('contain.text', eventsMessages[key].subtitle)
- if (eventsMessages[key].description.length > 1) {
- // TODO: Redo test once we take out the HTML from the text
- cy.get(`[data-test="${key}-description"]`).should('exist')
- .and('be.visible')
- }
- else { cy.get(`[data-test="${key}-description"]`).should('not.exist') }
- if (eventsMessages[key]['signup-link'].length > 1) {
- cy.get(`[data-test="${key}-signup-link"]`)
- .should('contain.text', messages.en.message.common['go-to-event'])
- .and('have.attr', 'href', eventsMessages[key]['signup-link'])
- }
- else {
- cy.get(`[data-test="${key}-signup-link"]`).should('not.exist')
- }
- if (eventsMessages[key].cfp.length > 1) {
- cy.get(`[data-test="${key}-cfp"]`)
- .should('contain.text', messages.en.message.common['go-to-cfp'])
- .and('have.attr', 'href', eventsMessages[key].cfp)
- }
- else {
- cy.get(`[data-test="${key}-cfp"]`).should('not.exist')
- }
- if (eventsMessages[key].donation.length > 1) {
- cy.get(`[data-test="${key}-donation"]`)
- .should('contain.text', messages.en.message.common['go-to-donation'])
- .and('have.attr', 'href', eventsMessages[key].donation)
- }
- else {
- cy.get(`[data-test="${key}-donation"]`).should('not.exist')
- }
- if (eventsMessages[key]['conference-website'].length > 1) {
- cy.get(`[data-test="${key}-website"]`)
- .should('contain.text', messages.en.message.common['go-to-conference-website'])
- .and('have.attr', 'href', eventsMessages[key]['conference-website'])
- }
- else {
- cy.get(`[data-test="${key}-website"]`).should('not.exist')
- }
- if (eventsMessages[key].sponsors.length > 1) {
- cy.get(`[data-test="${key}-sponsors-title"]`).should('contain.text', 'Sponsors')
- cy.get(`[data-test="${key}-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}-sponsors"]`).should('not.exist')
- }
- if (eventsMessages[key].sponsors.length > 1) {
- cy.get(`[data-test="${key}-community-sponsors-title"]`).should('contain.text', 'Community Sponsors')
- cy.get(`[data-test="${key}-community-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}--community-sponsors"]`).should('not.exist')
- }
- })
- })
- it('Changes to desktop, assures the single event content is loaded correctly', () => {
- cy.viewport('macbook-16')
- const eventsMessages = messages.en.events
- const eventsKeys = Object.keys(eventsMessages)
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.visit(`${Cypress.env('localhost')}/events/${key}`)
- cy.get(`[data-test="${key}-title"]`).should('contain.text', eventsMessages[key].title).and('be.visible')
- cy.get(`[data-test="${key}-date"]`).should('contain.text', eventsMessages[key].date).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-location"]`).should('contain.text', eventsMessages[key].location).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-subtitle"]`).should('contain.text', eventsMessages[key].subtitle)
- if (eventsMessages[key].description.length > 1) {
- // TODO: Redo test once we take out the HTML from the text
- cy.get(`[data-test="${key}-description"]`).should('exist')
- .and('be.visible')
- }
- else { cy.get(`[data-test="${key}-description"]`).should('not.exist') }
- if (eventsMessages[key]['signup-link'].length > 1) {
- cy.get(`[data-test="${key}-signup-link"]`)
- .should('contain.text', messages.en.message.common['go-to-event'])
- .and('have.attr', 'href', eventsMessages[key]['signup-link'])
- }
- else {
- cy.get(`[data-test="${key}-signup-link"]`).should('not.exist')
- }
- if (eventsMessages[key].cfp.length > 1) {
- cy.get(`[data-test="${key}-cfp"]`)
- .should('contain.text', messages.en.message.common['go-to-cfp'])
- .and('have.attr', 'href', eventsMessages[key].cfp)
- }
- else {
- cy.get(`[data-test="${key}-cfp"]`).should('not.exist')
- }
- if (eventsMessages[key].donation.length > 1) {
- cy.get(`[data-test="${key}-donation"]`)
- .should('contain.text', messages.en.message.common['go-to-donation'])
- .and('have.attr', 'href', eventsMessages[key].donation)
- }
- else {
- cy.get(`[data-test="${key}-donation"]`).should('not.exist')
- }
- if (eventsMessages[key]['conference-website'].length > 1) {
- cy.get(`[data-test="${key}-website"]`)
- .should('contain.text', messages.en.message.common['go-to-conference-website'])
- .and('have.attr', 'href', eventsMessages[key]['conference-website'])
- }
- else {
- cy.get(`[data-test="${key}-website"]`).should('not.exist')
- }
- if (eventsMessages[key].sponsors.length > 1) {
- cy.get(`[data-test="${key}-sponsors-title"]`).should('contain.text', 'Sponsors')
- cy.get(`[data-test="${key}-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}-sponsors"]`).should('not.exist')
- }
- if (eventsMessages[key].sponsors.length > 1) {
- cy.get(`[data-test="${key}-community-sponsors-title"]`).should('contain.text', 'Community Sponsors')
- cy.get(`[data-test="${key}-community-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}--community-sponsors"]`).should('not.exist')
- }
- })
- })
- })
- describe('Footer', () => {
- it('Changes to mobile viewport, assures all elements are present', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="footer"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-home-link"]')
- .should('exist')
- .and('be.visible')
- .and('have.attr', 'href', '/')
- cy.get('[data-test="footer-home-link-img"]')
- .should('exist')
- .and('be.visible')
- .and('not.have.attr', 'alt', '')
- cy.get('[data-test="footer-home-link-text"]')
- .should('exist')
- .and('not.be.visible')
- cy.get('[data-test="footer-nav"]')
- .should('exist')
- .and('be.visible')
- cy.get('[data-test="footer-nav-text"]')
- .should('exist')
- .and('be.visible')
- .and('contain.text', `©${new Date().getFullYear()} Schrödinger Hat`)
- })
- it('Changes to desktop viewport, assures all elements are present', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="footer"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-home-link"]')
- .should('exist')
- .and('be.visible')
- .and('have.attr', 'href', '/')
- cy.get('[data-test="footer-home-link-img"]')
- .should('exist')
- .and('be.visible')
- .and('not.have.attr', 'alt', '')
- cy.get('[data-test="footer-home-link-text"]')
- .should('exist')
- .and('be.visible')
- .and('contain.text', 'Schrödinger Hat')
- cy.get('[data-test="footer-nav"]')
- .should('exist')
- .and('be.visible')
- cy.get('[data-test="footer-nav-text"]')
- .should('exist')
- .and('be.visible')
- .and('contain.text', `©${new Date().getFullYear()} Schrödinger Hat`)
- })
- })
- describe('Homepage hero section page', () => {
- it('Changes to mobile viewport, assures all elements are present', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="main"]').should('be.visible').and('exist')
- cy.get('[data-test="main-h1"]').should('be.visible').and('exist').and('contain.text', messages.en.main.h1)
- cy.get('[data-test="main-h2"]').should('be.visible').and('exist').and('contain.text', messages.en.main.h2)
- cy.get('[data-test="main-cta-youtube"]')
- .should('exist')
- .and('contain.text', messages.en.main.links.youtube)
- .and('have.attr', 'href', Cypress.env('youtubeURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-spotify"]')
- .should('exist')
- .and('contain.text', messages.en.main.links.spotify)
- .and('have.attr', 'href', Cypress.env('spotifyURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-open-collective"]')
- .should('exist')
- .and('contain.text', messages.en.main.links.openCollective)
- .and('have.attr', 'href', Cypress.env('openCollectiveURL'))
- .and('have.attr', 'target', '_blank')
- })
- it('Changes to desktop viewport, assures all elements are present', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="main"]').should('be.visible').and('exist')
- cy.get('[data-test="main-h1"]').should('be.visible').and('exist').and('contain.text', messages.en.main.h1)
- cy.get('[data-test="main-h2"]').should('be.visible').and('exist').and('contain.text', messages.en.main.h2)
- cy.get('[data-test="main-cta-youtube"]')
- .should('exist')
- .and('contain.text', messages.en.main.links.youtube)
- .and('have.attr', 'href', Cypress.env('youtubeURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-spotify"]')
- .should('exist')
- .and('contain.text', messages.en.main.links.spotify)
- .and('have.attr', 'href', Cypress.env('spotifyURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-open-collective"]')
- .should('exist')
- .and('contain.text', messages.en.main.links.openCollective)
- .and('have.attr', 'href', Cypress.env('openCollectiveURL'))
- .and('have.attr', 'target', '_blank')
- })
- })
- describe('Navbar', () => {
- it('Changes to mobile viewport, assures all CTAs work correctly', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="nav-wrapper"]').should('be.visible').and('exist')
- cy.get('[data-test="nav-logo-button"]').should('be.visible').and('have.attr', 'href').and('include', '/')
- cy.get('[data-test="logo-text"]').should('be.visible').and('contain.text', 'Schrödinger Hat')
- cy.get('[data-test="nav-team-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-event-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-conduct-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-go-nord-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-github-page-link"]').should('have.attr', 'href').and('include', Cypress.env('githubURL'))
- cy.get('html').then(($html) => {
- const oldClass = $html[0].getAttribute('class')
- cy.get('[data-test="nav-theme-cta"]').click()
- cy.get('html').should('not.have.class', oldClass)
- })
- cy.get('[data-test="mobile-menu"]').should('not.exist')
- cy.get('[data-test="nav-burger-menu-cta"]').click()
- cy.get('[data-test="mobile-menu"]').should('exist')
- cy.get('[data-test="mobile-burger-menu-cta"]').should('exist').click()
- cy.get('[data-test="mobile-menu"]').should('not.exist')
- cy.get('[data-test="nav-burger-menu-cta"]').click()
- // TODO: Include GitHub and ImageGoNord into the messages
- cy.get('[data-test="mobile-github-page-link"]')
- .should('exist')
- .and('contain.text', 'GitHub')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="mobile-team-page-link"]')
- .should('exist')
- .and('contain.text', messages.en.navbar.team)
- .and('have.attr', 'href', '/team')
- cy.get('[data-test="mobile-event-page-link"]')
- .should('exist')
- .and('contain.text', messages.en.navbar.events)
- .and('have.attr', 'href', '/events')
- cy.get('[data-test="mobile-conduct-page-link"]')
- .should('exist')
- .and('contain.text', messages.en.navbar.codeOfConduct)
- .and('have.attr', 'href', '/code-of-conduct')
- cy.get('[data-test="mobile-go-nord-page-link"]')
- .should('exist')
- .and('contain.text', 'ImageGoNord')
- .and('have.attr', 'href', Cypress.env('imageGoNordURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="mobile-homepage-link"]').should('exist')
- .and('have.attr', 'href', '/').click()
- cy.get('[data-test="mobile-menu"]').should('not.exist')
- cy.url().then((url) => {
- expect(url).to.contain(Cypress.env('localhost'))
- })
- })
- it('Changes to desktop viewport, assures all CTAs work correctly', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="nav-wrapper"]').should('be.visible').and('exist')
- cy.get('[data-test="nav-logo-button"]').should('be.visible').and('have.attr', 'href').and('include', '/')
- cy.get('[data-test="logo-text"]').should('be.visible').and('contain.text', 'Schrödinger Hat')
- cy.get('[data-test="nav-wrapper"]').should('be.visible').and('exist')
- cy.get('[data-test="nav-team-page-link"]')
- .should('exist')
- .and('contain.text', messages.en.navbar.team)
- .and('have.attr', 'href', '/team')
- cy.get('[data-test="nav-event-page-link"]')
- .should('exist')
- .and('contain.text', messages.en.navbar.events)
- .and('have.attr', 'href', '/events')
- cy.get('[data-test="nav-conduct-page-link"]')
- .should('exist')
- .and('contain.text', messages.en.navbar.codeOfConduct)
- .and('have.attr', 'href', '/code-of-conduct')
- cy.get('[data-test="nav-go-nord-page-link"]')
- .should('exist')
- .and('contain.text', 'ImageGoNord')
- .and('have.attr', 'href', Cypress.env('imageGoNordURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="nav-github-page-link"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="nav-github-icon"]').should('have.class', 'fab fa-github').and('be.visible').and('exist')
- cy.get('html').then(($html) => {
- const oldClass = $html[0].getAttribute('class')
- cy.get('[data-test="nav-theme-cta"]').click()
- cy.get('html').should('not.have.class', oldClass)
- })
- })
- })
- describe('Team member page', () => {
- it('Changes to mobile viewport, assures all content is displayed correctly', () => {
- cy.viewport('iphone-xr')
- const teamMessages = messages.en.team
- type TeamMemberKey = keyof typeof teamMessages
- const memberKeys = Object.keys(teamMessages)
- memberKeys.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.visit(`${Cypress.env('localhost')}/team/${key}`)
- cy.get('[data-test="member-page-photo"]').should('exist').and('be.visible')
- cy.get('[data-test="member-page-name"]').should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get('[data-test="member-page-github"]').should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get('[data-test="member-page-linkedin"]').should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get('[data-test="member-page-twitter"]').should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get('[data-test="member-page-website"]').should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get('[data-test="member-page-description"]').should('contain.text', teamMessages[key].description)
- })
- })
- it('Changes to desktop viewport, assures all content is displayed correctly', () => {
- cy.viewport('macbook-16')
- const teamMessages = messages.en.team
- type TeamMemberKey = keyof typeof teamMessages
- const memberKeys = Object.keys(teamMessages)
- memberKeys.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.visit(`${Cypress.env('localhost')}/team/${key}`)
- cy.get('[data-test="member-page-photo"]').should('exist').and('be.visible')
- cy.get('[data-test="member-page-name"]').should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get('[data-test="member-page-github"]').should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get('[data-test="member-page-linkedin"]').should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get('[data-test="member-page-twitter"]').should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get('[data-test="member-page-website"]').should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get('[data-test="member-page-description"]').should('contain.text', teamMessages[key].description)
- })
- })
- })
- describe('Team page', () => {
- it('Changes the viewport to mobile, assures you can go to page from menu and assures are content is displayed correctly', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="nav-burger-menu-cta"]').should('exist').and('be.visible').click()
- cy.get('[data-test="mobile-team-page-link"]').should('exist').and('be.visible').click()
- cy.get('[data-test="team-page-headline"]').should('exist').and('be.visible').and('contain.text', 'Schrödinger Hat\'s fam')
- cy.url().should('include', `${Cypress.env('localhost')}/team`)
- cy.get('[data-test="team-card"]').then(($teamCards) => {
- const teamMessages = messages.en.team
- type TeamMemberKey = keyof typeof teamMessages
- const teamMembersQuantity = Object.keys(teamMessages).length
- const teamMembersKey = Object.keys(teamMessages)
- cy.wrap($teamCards).should('have.length', teamMembersQuantity)
- teamMembersKey.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.get(`[data-test-member-name="team-member-${key}"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-index-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-name"]`).should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get(`[data-test="team-member-${key}-github"]`).should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get(`[data-test="team-member-${key}-linkedin"]`).should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get(`[data-test="team-member-${key}-twitter"]`).should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get(`[data-test="team-member-${key}-website"]`).should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="team-member-${key}-page-link"]`).should('be.visible').and('have.attr', 'href', `/team/${key}`).and('contain.text', messages.en.redirect.profile)
- })
- })
- })
- it('Changes the viewport to desktop, assures you can go to page from menu and assures are content is displayed correctly', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="nav-team-page-link"]').should('exist').and('be.visible').click()
- cy.get('[data-test="team-page-headline"]').should('exist').and('be.visible').and('contain.text', 'Schrödinger Hat\'s fam')
- cy.url().should('include', `${Cypress.env('localhost')}/team`)
- cy.get('[data-test="team-card"]').then(($teamCards) => {
- const teamMessages = messages.en.team
- type TeamMemberKey = keyof typeof teamMessages
- const teamMembersQuantity = Object.keys(teamMessages).length
- const teamMembersKey = Object.keys(teamMessages)
- cy.wrap($teamCards).should('have.length', teamMembersQuantity)
- teamMembersKey.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.get(`[data-test-member-name="team-member-${key}"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-index-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-name"]`).should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get(`[data-test="team-member-${key}-github"]`).should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get(`[data-test="team-member-${key}-linkedin"]`).should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get(`[data-test="team-member-${key}-twitter"]`).should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get(`[data-test="team-member-${key}-website"]`).should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="team-member-${key}-page-link"]`).should('be.visible').and('have.attr', 'href', `/team/${key}`).and('contain.text', messages.en.redirect.profile)
- })
- })
- })
- })
-})
-describe('Italian tests', {
- env: {
- discordURL: 'https://discord.gg/RTXr8A3eFn',
- facebookURL: 'https://www.facebook.com/schrodingerhat',
- githubURL: 'https://github.com/schroedinger-Hat',
- githubWebsiteRepoURL: 'https://github.com/schroedinger-Hat/schroedinger-hat-website/issues/new/choose',
- imageGoNordURL: 'https://ign.schroedinger-hat.org',
- instagramURL: 'https://www.instagram.com/schrodinger_hat/',
- linkedinURL: 'https://www.linkedin.com/company/schroedinger-hat/',
- // Modify with your local environment url
- localhost: 'http://localhost:5173',
- openCollectiveURL: 'https://opencollective.com/schrodinger-hat',
- spotifyURL: 'https://open.spotify.com/show/7yfkQCV6hrPIqflSqJDB2P',
- twitterURL: 'https://twitter.com/schrodinger_hat',
- youtubeURL: 'https://www.youtube.com/channel/UC1QLLgrGrPmlaFhS0orykCA',
- },
-}, () => {
- beforeEach(() => {
- cy.visit(Cypress.env('localhost'), {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- // Wait for mailchimp modal to appear.
- // As the modal is loaded async, edit the time depending on your situation.
- cy.wait(10000).then(() => {
- cy.get('.slide-in-container-inner .close').click()
- })
- })
- describe('Conduct page', () => {
- it('Assures al text is loaded correctly', () => {
- const conductMessages = messages.it.code_of_conduct
- cy.visit(`${Cypress.env('localhost')}/code-of-conduct`, {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- cy.get('[data-test="conduct-main-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.main_title)
- cy.get('[data-test="conduct-short-version-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.short_version.title)
- cy.get('[data-test="conduct-short-version-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.short_version.description)
- cy.get('[data-test="conduct-long-version-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.longer_version.title)
- cy.get('[data-test="conduct-long-version-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.longer_version.description)
- cy.get('[data-test="conduct-full-version-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.title)
- cy.get('[data-test="conduct-full-version-subtitle"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.sub_title)
- cy.get('[data-test="conduct-full-version-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.description)
- cy.get('[data-test="conduct-full-version-rules"]').then(($rules) => {
- const totalRules = Object.keys(conductMessages.full_version.rules_list).length
- cy.wrap($rules).should('have.length', totalRules)
- })
- cy.get('[data-test="conduct-full-version-rules-paragraph"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.rules_paragraph)
- cy.get('[data-test="conduct-full-version-enforcement-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.enforcement.title)
- cy.get('[data-test="conduct-full-version-enforcement-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.enforcement.description)
- cy.get('[data-test="conduct-full-version-enforcement-second-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.enforcement.second_description)
- cy.get('[data-test="conduct-full-version-reporting-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.reporting.title)
- cy.get('[data-test="conduct-full-version-reporting-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.reporting.description)
- cy.get('[data-test="conduct-full-version-reporting-items-title"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.reporting.items_title)
- cy.get('[data-test="conduct-full-version-reporting-items"]').then(($rules) => {
- const totalRules = Object.keys(conductMessages.full_version.reporting.items).length
- cy.wrap($rules).should('have.length', totalRules)
- })
- cy.get('[data-test="conduct-full-version-final-description"]').should('exist').and('be.visible').and('contain.text', conductMessages.full_version.final_description)
- })
- })
- describe('Contributing section', () => {
- it('Changes to mobile viewport and assures all elements are rendered correctly', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="contributing-section"]').should('be.visible').and('exist').scrollIntoView()
- // TODO: Rewrite test once nyan cat is disabled on mobile
- cy.get('[data-test="nyan-cat"]').then(($element) => {
- cy.wrap($element).should('not.have.class', 'loaded')
- cy.wait(300)
- cy.wrap($element).should('have.class', 'loaded')
- cy.wait(8000)
- cy.wrap($element).should('have.css', 'display', 'none')
- })
- cy.get('[data-test="contributing-title"]')
- .should('be.visible')
- .and('contain.text', messages.it.contributing.title)
- cy.get('[data-test="contributing-description"]')
- .should('be.visible')
- // TODO: Fix this way of assuring the text exists
- .and('contain.text', `Schrödinger Hat ${messages.it.contributing['is-a-project']} GitHub`)
- cy.get('[data-test="contributing-github-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-cta"]')
- .should('exist')
- .and('contain.text', `${messages.it.contributing.cta} ${messages.it.contributing['external-link']} ${messages.it.contributing['cta-2']}`)
- cy.get('[data-test="contributing-github-website-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubWebsiteRepoURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-social"]').should('be.visible')
- })
- it('Changes to desktop viewport and assures all elements are rendered correctly', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="contributing-section"]').should('be.visible').and('exist').scrollIntoView()
- // TODO: Rewrite test once nyan cat is disabled on mobile
- cy.get('[data-test="nyan-cat"]').then(($element) => {
- cy.wrap($element).should('not.have.class', 'loaded')
- cy.wait(300)
- cy.wrap($element).should('have.class', 'loaded')
- cy.wait(8000)
- cy.wrap($element).should('have.css', 'display', 'none')
- })
- cy.get('[data-test="contributing-title"]')
- .should('be.visible')
- .and('contain.text', messages.it.contributing.title)
- cy.get('[data-test="contributing-description"]')
- .should('be.visible')
- // TODO: Fix this way of assuring the text exists
- .and('contain.text', `Schrödinger Hat ${messages.it.contributing['is-a-project']} GitHub`)
- cy.get('[data-test="contributing-github-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-cta"]')
- .should('exist')
- .and('contain.text', `${messages.it.contributing.cta} ${messages.it.contributing['external-link']} ${messages.it.contributing['cta-2']}`)
- cy.get('[data-test="contributing-github-website-link"]')
- .should('be.visible')
- .and('exist')
- .and('have.attr', 'href', Cypress.env('githubWebsiteRepoURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-social"]').should('be.visible')
- })
- it('Assures all social CTAs are rendered correctly', () => {
- cy.get('[data-test="contributing-social"]').should('be.visible').and('exist')
- cy.get('[data-test="contributing-open-collective"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('openCollectiveURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-open-collective-icon"]')
- .should('be.visible')
- .and('have.class', 'fas fa-donate external-link-color')
- cy.get('[data-test="contributing-facebook"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('facebookURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-facebook-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-facebook external-link-color')
- cy.get('[data-test="contributing-twitter"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('twitterURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-twitter-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-twitter external-link-color')
- cy.get('[data-test="contributing-linkedin"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('linkedinURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-linkedin-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-linkedin external-link-color')
- cy.get('[data-test="contributing-instagram"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('instagramURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-instagram-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-instagram external-link-color')
- cy.get('[data-test="contributing-discord"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('discordURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="contributing-discord-icon"]')
- .should('be.visible')
- .and('have.class', 'fab fa-discord external-link-color')
- })
- it('Assures all contributing partners are rendered correctly', () => {
- cy.get('[data-test="contributing-partners-logo"]').should('be.visible')
- cy.get('[data-test="contributing-partners-logo"] > a').then(($elements) => {
- cy.wrap($elements)
- .should('be.visible')
- .should('not.have.attr', 'href', '')
- .and('have.attr', 'target', '_blank')
- cy.wrap($elements.children())
- .should('be.visible')
- .and('exist')
- .and('not.have.attr', 'src', '')
- .and('not.have.attr', 'alt', '')
- })
- })
- })
- describe('Events page', () => {
- const eventsMessages = messages.it.events
- const eventsKeys = Object.keys(eventsMessages)
- it('Changes to mobile and assuress content is loaded correctly', () => {
- cy.visit(`${Cypress.env('localhost')}/events`, {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- cy.viewport('iphone-xr')
- cy.get('[data-test="events-header"]').should('contain.text', messages.it.navbar.events).and('exist').and('be.visible')
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.get(`[data-test="event-${key}-link"]`).should('exist').and('be.visible').and('have.attr', 'href', `/events/${key}`)
- cy.get(`[data-test="event-${key}-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- cy.get(`[data-test="event-${key}-date"]`).should('exist').and('be.visible').and('contain.text', `${eventsMessages[key].date} | ${eventsMessages[key].location}`)
- cy.get(`[data-test="event-${key}-subtitle"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].subtitle)
- cy.get(`[data-test="event-${key}-read-more"]`).should('exist').and('be.visible').and('contain.text', messages.it.message.common['read-more'])
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- })
- })
- it('Changes to desktop and assuress content is loaded correctly', () => {
- cy.visit(`${Cypress.env('localhost')}/events`, {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- cy.viewport('macbook-16')
- cy.get('[data-test="events-header"]').should('contain.text', messages.it.navbar.events).and('exist').and('be.visible')
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.get(`[data-test="event-${key}-link"]`).should('exist').and('be.visible').and('have.attr', 'href', `/events/${key}`)
- cy.get(`[data-test="event-${key}-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- cy.get(`[data-test="event-${key}-date"]`).should('exist').and('be.visible').and('contain.text', `${eventsMessages[key].date} | ${eventsMessages[key].location}`)
- cy.get(`[data-test="event-${key}-subtitle"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].subtitle)
- cy.get(`[data-test="event-${key}-read-more"]`).should('exist').and('be.visible').and('contain.text', messages.it.message.common['read-more'])
- cy.get(`[data-test="event-${key}-title"]`).should('exist').and('be.visible').and('contain.text', eventsMessages[key].title)
- })
- })
- })
- describe('Event specific page', () => {
- it('Changes to mobile, assures the single event content is loaded correctly', () => {
- cy.viewport('iphone-xr')
- const eventsMessages = messages.it.events
- const eventsKeys = Object.keys(eventsMessages)
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.visit(`${Cypress.env('localhost')}/events/${key}`, {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- cy.get(`[data-test="${key}-title"]`).should('contain.text', eventsMessages[key].title).and('be.visible')
- cy.get(`[data-test="${key}-date"]`).should('contain.text', eventsMessages[key].date).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-location"]`).should('contain.text', eventsMessages[key].location).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-subtitle"]`).should('contain.text', eventsMessages[key].subtitle)
- if (eventsMessages[key].description.length > 1) {
- // TODO: Redo test once we take out the HTML from the text
- cy.get(`[data-test="${key}-description"]`).should('exist')
- .and('be.visible')
- }
- else { cy.get(`[data-test="${key}-description"]`).should('not.exist') }
- if (eventsMessages[key]['signup-link'].length > 1) {
- cy.get(`[data-test="${key}-signup-link"]`)
- .should('contain.text', messages.it.message.common['go-to-event'])
- .and('have.attr', 'href', eventsMessages[key]['signup-link'])
- }
- else {
- cy.get(`[data-test="${key}-signup-link"]`).should('not.exist')
- }
- if (eventsMessages[key].cfp.length > 1) {
- cy.get(`[data-test="${key}-cfp"]`)
- .should('contain.text', messages.it.message.common['go-to-cfp'])
- .and('have.attr', 'href', eventsMessages[key].cfp)
- }
- else {
- cy.get(`[data-test="${key}-cfp"]`).should('not.exist')
- }
- if (eventsMessages[key].donation.length > 1) {
- cy.get(`[data-test="${key}-donation"]`)
- .should('contain.text', messages.it.message.common['go-to-donation'])
- .and('have.attr', 'href', eventsMessages[key].donation)
- }
- else {
- cy.get(`[data-test="${key}-donation"]`).should('not.exist')
- }
- if (eventsMessages[key]['conference-website'].length > 1) {
- cy.get(`[data-test="${key}-website"]`)
- .should('contain.text', messages.it.message.common['go-to-conference-website'])
- .and('have.attr', 'href', eventsMessages[key]['conference-website'])
- }
- else {
- cy.get(`[data-test="${key}-website"]`).should('not.exist')
- }
- if (eventsMessages[key].sponsors.length > 1) {
- cy.get(`[data-test="${key}-sponsors-title"]`).should('contain.text', 'Sponsors')
- cy.get(`[data-test="${key}-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}-sponsors"]`).should('not.exist')
- }
- if (eventsMessages[key]['community-sponsors'].length > 1) {
- cy.get(`[data-test="${key}-community-sponsors-title"]`).should('contain.text', 'Community Sponsors')
- cy.get(`[data-test="${key}-community-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}--community-sponsors"]`).should('not.exist')
- }
- })
- })
- it('Changes to desktop, assures the single event content is loaded correctly', () => {
- cy.viewport('macbook-16')
- const eventsMessages = messages.it.events
- const eventsKeys = Object.keys(eventsMessages)
- eventsKeys.forEach((_key) => {
- const key = _key as EventMessageName
- cy.visit(`${Cypress.env('localhost')}/events/${key}`, {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- cy.get(`[data-test="${key}-title"]`).should('contain.text', eventsMessages[key].title).and('be.visible')
- cy.get(`[data-test="${key}-date"]`).should('contain.text', eventsMessages[key].date).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-location"]`).should('contain.text', eventsMessages[key].location).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="${key}-subtitle"]`).should('contain.text', eventsMessages[key].subtitle)
- if (eventsMessages[key].description.length > 1) {
- // TODO: Redo test once we take out the HTML from the text
- cy.get(`[data-test="${key}-description"]`).should('exist')
- .and('be.visible')
- }
- else { cy.get(`[data-test="${key}-description"]`).should('not.exist') }
- if (eventsMessages[key]['signup-link'].length > 1) {
- cy.get(`[data-test="${key}-signup-link"]`)
- .should('contain.text', messages.it.message.common['go-to-event'])
- .and('have.attr', 'href', eventsMessages[key]['signup-link'])
- }
- else {
- cy.get(`[data-test="${key}-signup-link"]`).should('not.exist')
- }
- if (eventsMessages[key].cfp.length > 1) {
- cy.get(`[data-test="${key}-cfp"]`)
- .should('contain.text', messages.it.message.common['go-to-cfp'])
- .and('have.attr', 'href', eventsMessages[key].cfp)
- }
- else {
- cy.get(`[data-test="${key}-cfp"]`).should('not.exist')
- }
- if (eventsMessages[key].donation.length > 1) {
- cy.get(`[data-test="${key}-donation"]`)
- .should('contain.text', messages.it.message.common['go-to-donation'])
- .and('have.attr', 'href', eventsMessages[key].donation)
- }
- else {
- cy.get(`[data-test="${key}-donation"]`).should('not.exist')
- }
- if (eventsMessages[key]['conference-website'].length > 1) {
- cy.get(`[data-test="${key}-website"]`)
- .should('contain.text', messages.it.message.common['go-to-conference-website'])
- .and('have.attr', 'href', eventsMessages[key]['conference-website'])
- }
- else {
- cy.get(`[data-test="${key}-website"]`).should('not.exist')
- }
- if (eventsMessages[key].sponsors.length > 1) {
- cy.get(`[data-test="${key}-sponsors-title"]`).should('contain.text', 'Sponsors')
- cy.get(`[data-test="${key}-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}-sponsors"]`).should('not.exist')
- }
- if (eventsMessages[key]['community-sponsors'].length > 1) {
- cy.get(`[data-test="${key}-community-sponsors-title"]`).should('contain.text', 'Community Sponsors')
- cy.get(`[data-test="${key}-community-sponsors-logo"]`)
- .should('exist')
- .and('be.visible')
- }
- else {
- cy.get(`[data-test="${key}--community-sponsors"]`).should('not.exist')
- }
- })
- })
- })
- describe('Footer', () => {
- it('Changes to mobile viewport, assures all elements are present', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="footer"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-home-link"]')
- .should('exist')
- .and('be.visible')
- .and('have.attr', 'href', '/')
- cy.get('[data-test="footer-home-link-img"]')
- .should('exist')
- .and('be.visible')
- .and('not.have.attr', 'alt', '')
- cy.get('[data-test="footer-home-link-text"]')
- .should('exist')
- .and('not.be.visible')
- cy.get('[data-test="footer-nav"]')
- .should('exist')
- .and('be.visible')
- cy.get('[data-test="footer-nav-text"]')
- .should('exist')
- .and('be.visible')
- .and('contain.text', `©${new Date().getFullYear()} Schrödinger Hat`)
- })
- it('Changes to desktop viewport, assures all elements are present', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="footer"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-logo"]').should('exist').and('be.visible')
- cy.get('[data-test="footer-home-link"]')
- .should('exist')
- .and('be.visible')
- .and('have.attr', 'href', '/')
- cy.get('[data-test="footer-home-link-img"]')
- .should('exist')
- .and('be.visible')
- .and('not.have.attr', 'alt', '')
- cy.get('[data-test="footer-home-link-text"]')
- .should('exist')
- .and('be.visible')
- .and('contain.text', 'Schrödinger Hat')
- cy.get('[data-test="footer-nav"]')
- .should('exist')
- .and('be.visible')
- cy.get('[data-test="footer-nav-text"]')
- .should('exist')
- .and('be.visible')
- .and('contain.text', `©${new Date().getFullYear()} Schrödinger Hat`)
- })
- })
- describe('Homepage hero section page', () => {
- it('Changes to mobile viewport, assures all elements are present', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="main"]').should('be.visible').and('exist')
- cy.get('[data-test="main-h1"]').should('be.visible').and('exist').and('contain.text', messages.it.main.h1)
- cy.get('[data-test="main-h2"]').should('be.visible').and('exist').and('contain.text', messages.it.main.h2)
- cy.get('[data-test="main-cta-youtube"]')
- .should('exist')
- .and('contain.text', messages.it.main.links.youtube)
- .and('have.attr', 'href', Cypress.env('youtubeURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-spotify"]')
- .should('exist')
- .and('contain.text', messages.it.main.links.spotify)
- .and('have.attr', 'href', Cypress.env('spotifyURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-open-collective"]')
- .should('exist')
- .and('contain.text', messages.it.main.links.openCollective)
- .and('have.attr', 'href', Cypress.env('openCollectiveURL'))
- .and('have.attr', 'target', '_blank')
- })
- it('Changes to desktop viewport, assures all elements are present', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="main"]').should('be.visible').and('exist')
- cy.get('[data-test="main-h1"]').should('be.visible').and('exist').and('contain.text', messages.it.main.h1)
- cy.get('[data-test="main-h2"]').should('be.visible').and('exist').and('contain.text', messages.it.main.h2)
- cy.get('[data-test="main-cta-youtube"]')
- .should('exist')
- .and('contain.text', messages.it.main.links.youtube)
- .and('have.attr', 'href', Cypress.env('youtubeURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-spotify"]')
- .should('exist')
- .and('contain.text', messages.it.main.links.spotify)
- .and('have.attr', 'href', Cypress.env('spotifyURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="main-cta-open-collective"]')
- .should('exist')
- .and('contain.text', messages.it.main.links.openCollective)
- .and('have.attr', 'href', Cypress.env('openCollectiveURL'))
- .and('have.attr', 'target', '_blank')
- })
- })
- describe('Navbar', () => {
- it('Changes to mobile viewport, assures all CTAs work correctly', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="nav-wrapper"]').should('be.visible').and('exist')
- cy.get('[data-test="nav-logo-button"]').should('be.visible').and('have.attr', 'href').and('include', '/')
- cy.get('[data-test="logo-text"]').should('be.visible').and('contain.text', 'Schrödinger Hat')
- cy.get('[data-test="nav-team-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-event-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-conduct-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-go-nord-page-link"]').should('not.be.visible')
- cy.get('[data-test="nav-github-page-link"]').should('have.attr', 'href').and('include', Cypress.env('githubURL'))
- cy.get('html').then(($html) => {
- const oldClass = $html[0].getAttribute('class')
- cy.get('[data-test="nav-theme-cta"]').click()
- cy.get('html').should('not.have.class', oldClass)
- })
- cy.get('[data-test="mobile-menu"]').should('not.exist')
- cy.get('[data-test="nav-burger-menu-cta"]').click()
- cy.get('[data-test="mobile-menu"]').should('exist')
- cy.get('[data-test="mobile-burger-menu-cta"]').should('exist').click()
- cy.get('[data-test="mobile-menu"]').should('not.exist')
- cy.get('[data-test="nav-burger-menu-cta"]').click()
- // TODO: Include GitHub and ImageGoNord into the messages
- cy.get('[data-test="mobile-github-page-link"]')
- .should('exist')
- .and('contain.text', 'GitHub')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="mobile-team-page-link"]')
- .should('exist')
- .and('contain.text', messages.it.navbar.team)
- .and('have.attr', 'href', '/team')
- cy.get('[data-test="mobile-event-page-link"]')
- .should('exist')
- .and('contain.text', messages.it.navbar.events)
- .and('have.attr', 'href', '/events')
- cy.get('[data-test="mobile-conduct-page-link"]')
- .should('exist')
- .and('contain.text', messages.it.navbar.codeOfConduct)
- .and('have.attr', 'href', '/code-of-conduct')
- cy.get('[data-test="mobile-go-nord-page-link"]')
- .should('exist')
- .and('contain.text', 'ImageGoNord')
- .and('have.attr', 'href', Cypress.env('imageGoNordURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="mobile-homepage-link"]').should('exist')
- .and('have.attr', 'href', '/').click()
- cy.get('[data-test="mobile-menu"]').should('not.exist')
- cy.url().then((url) => {
- expect(url).to.contain(Cypress.env('localhost'))
- })
- })
- it('Changes to desktop viewport, assures all CTAs work correctly', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="nav-wrapper"]').should('be.visible').and('exist')
- cy.get('[data-test="nav-logo-button"]').should('be.visible').and('have.attr', 'href').and('include', '/')
- cy.get('[data-test="logo-text"]').should('be.visible').and('contain.text', 'Schrödinger Hat')
- cy.get('[data-test="nav-wrapper"]').should('be.visible').and('exist')
- cy.get('[data-test="nav-team-page-link"]')
- .should('exist')
- .and('contain.text', messages.it.navbar.team)
- .and('have.attr', 'href', '/team')
- cy.get('[data-test="nav-event-page-link"]')
- .should('exist')
- .and('contain.text', messages.it.navbar.events)
- .and('have.attr', 'href', '/events')
- cy.get('[data-test="nav-conduct-page-link"]')
- .should('exist')
- .and('contain.text', messages.it.navbar.codeOfConduct)
- .and('have.attr', 'href', '/code-of-conduct')
- cy.get('[data-test="nav-go-nord-page-link"]')
- .should('exist')
- .and('contain.text', 'ImageGoNord')
- .and('have.attr', 'href', Cypress.env('imageGoNordURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="nav-github-page-link"]')
- .should('exist')
- .and('have.attr', 'href', Cypress.env('githubURL'))
- .and('have.attr', 'target', '_blank')
- cy.get('[data-test="nav-github-icon"]').should('have.class', 'fab fa-github').and('be.visible').and('exist')
- cy.get('html').then(($html) => {
- const oldClass = $html[0].getAttribute('class')
- cy.get('[data-test="nav-theme-cta"]').click()
- cy.get('html').should('not.have.class', oldClass)
- })
- })
- })
- describe('Team member page', () => {
- it('Changes to mobile viewport, assures all content is displayed correctly', () => {
- cy.viewport('iphone-xr')
- const teamMessages = messages.it.team
- type TeamMemberKey = keyof typeof teamMessages
- const memberKeys = Object.keys(teamMessages)
- memberKeys.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.visit(`${Cypress.env('localhost')}/team/${key}`, {
- onBeforeLoad(win) {
- Object.defineProperty(win.navigator, 'language', {
- value: 'it_IT',
- })
- },
- })
- cy.get('[data-test="member-page-photo"]').should('exist').and('be.visible')
- cy.get('[data-test="member-page-name"]').should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get('[data-test="member-page-github"]').should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get('[data-test="member-page-linkedin"]').should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get('[data-test="member-page-twitter"]').should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get('[data-test="member-page-website"]').should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get('[data-test="member-page-description"]').should('contain.text', teamMessages[key].description)
- })
- })
- it('Changes to desktop viewport, assures all content is displayed correctly', () => {
- cy.viewport('macbook-16')
- const teamMessages = messages.it.team
- type TeamMemberKey = keyof typeof teamMessages
- const memberKeys = Object.keys(teamMessages)
- memberKeys.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.visit(`${Cypress.env('localhost')}/team/${key}`)
- cy.get('[data-test="member-page-photo"]').should('exist').and('be.visible')
- cy.get('[data-test="member-page-name"]').should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get('[data-test="member-page-github"]').should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get('[data-test="member-page-linkedin"]').should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get('[data-test="member-page-twitter"]').should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get('[data-test="member-page-website"]').should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get('[data-test="member-page-description"]').should('contain.text', teamMessages[key].description)
- })
- })
- })
- describe('Team page', () => {
- it('Changes the viewport to mobile, assures you can go to page from menu and assures are content is displayed correctly', () => {
- cy.viewport('iphone-xr')
- cy.get('[data-test="nav-burger-menu-cta"]').should('exist').and('be.visible').click()
- cy.get('[data-test="mobile-team-page-link"]').should('exist').and('be.visible').click()
- cy.get('[data-test="team-page-headline"]').should('exist').and('be.visible').and('contain.text', 'Schrödinger Hat\'s fam')
- cy.url().should('include', `${Cypress.env('localhost')}/team`)
- cy.get('[data-test="team-card"]').then(($teamCards) => {
- const teamMessages = messages.it.team
- type TeamMemberKey = keyof typeof teamMessages
- const teamMembersQuantity = Object.keys(teamMessages).length
- const teamMembersKey = Object.keys(teamMessages)
- cy.wrap($teamCards).should('have.length', teamMembersQuantity)
- teamMembersKey.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.get(`[data-test-member-name="team-member-${key}"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-index-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-name"]`).should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get(`[data-test="team-member-${key}-github"]`).should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get(`[data-test="team-member-${key}-linkedin"]`).should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get(`[data-test="team-member-${key}-twitter"]`).should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get(`[data-test="team-member-${key}-website"]`).should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="team-member-${key}-page-link"]`).should('be.visible').and('have.attr', 'href', `/team/${key}`).and('contain.text', messages.it.redirect.profile)
- })
- })
- })
- it('Changes the viewport to desktop, assures you can go to page from menu and assures are content is displayed correctly', () => {
- cy.viewport('macbook-16')
- cy.get('[data-test="nav-team-page-link"]').should('exist').and('be.visible').click()
- cy.get('[data-test="team-page-headline"]').should('exist').and('be.visible').and('contain.text', 'Schrödinger Hat\'s fam')
- cy.url().should('include', `${Cypress.env('localhost')}/team`)
- cy.get('[data-test="team-card"]').then(($teamCards) => {
- const teamMessages = messages.it.team
- type TeamMemberKey = keyof typeof teamMessages
- const teamMembersQuantity = Object.keys(teamMessages).length
- const teamMembersKey = Object.keys(teamMessages)
- cy.wrap($teamCards).should('have.length', teamMembersQuantity)
- teamMembersKey.forEach((_key) => {
- const key = _key as TeamMemberKey
- cy.get(`[data-test-member-name="team-member-${key}"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-index-photo"]`).should('exist').and('be.visible')
- cy.get(`[data-test="team-member-${key}-name"]`).should('exist').and('be.visible').and('contain.text', `${teamMessages[key].name}`)
- if (teamMessages[key].github_url.length > 1)
- cy.get(`[data-test="team-member-${key}-github"]`).should('have.attr', 'href', teamMessages[key].github_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].linkedin_url.length > 1)
- cy.get(`[data-test="team-member-${key}-linkedin"]`).should('have.attr', 'href', teamMessages[key].linkedin_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].twitter_url.length > 1)
- cy.get(`[data-test="team-member-${key}-twitter"]`).should('have.attr', 'href', teamMessages[key].twitter_url).and('have.attr', 'target', '_blank')
- if (teamMessages[key].website.length > 1)
- cy.get(`[data-test="team-member-${key}-website"]`).should('have.attr', 'href', teamMessages[key].website).and('have.attr', 'target', '_blank')
- cy.get(`[data-test="team-member-${key}-page-link"]`).should('be.visible').and('have.attr', 'href', `/team/${key}`).and('contain.text', messages.it.redirect.profile)
- })
- })
- })
- })
-})
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
deleted file mode 100644
index 02e42543..00000000
--- a/cypress/fixtures/example.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "Using fixtures to represent data",
- "email": "hello@cypress.io",
- "body": "Fixtures are a great way to mock data for responses to routes"
-}
diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
deleted file mode 100644
index 95857aea..00000000
--- a/cypress/support/commands.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-///
-// ***********************************************
-// This example commands.ts shows you how to
-// create various custom commands and overwrite
-// existing commands.
-//
-// For more comprehensive examples of custom
-// commands please read more here:
-// https://on.cypress.io/custom-commands
-// ***********************************************
-//
-//
-// -- This is a parent command --
-// Cypress.Commands.add('login', (email, password) => { ... })
-//
-//
-// -- This is a child command --
-// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
-//
-//
-// -- This is a dual command --
-// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
-//
-//
-// -- This will overwrite an existing command --
-// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
-//
-// declare global {
-// namespace Cypress {
-// interface Chainable {
-// login(email: string, password: string): Chainable
-// drag(subject: string, options?: Partial): Chainable
-// dismiss(subject: string, options?: Partial): Chainable
-// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable
-// }
-// }
-// }
diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts
deleted file mode 100644
index ed5730de..00000000
--- a/cypress/support/e2e.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-// ***********************************************************
-// This example support/e2e.ts is processed and
-// loaded automatically before your test files.
-//
-// This is a great place to put global configuration and
-// behavior that modifies Cypress.
-//
-// You can change the location of this file or turn off
-// automatically serving support files with the
-// 'supportFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/configuration
-// ***********************************************************
-
-// Import commands.js using ES2015 syntax:
-import './commands'
-
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
diff --git a/eslint.config.js b/eslint.config.js
deleted file mode 100644
index 46ed759a..00000000
--- a/eslint.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// eslint.config.js
-import antfu from '@antfu/eslint-config'
-
-export default antfu({
- ignorePatterns: ['*.code-workspace'],
- rules: {
- 'antfu/top-level-function': 'off',
- 'vue/singleline-html-element-content-newline': 'off',
- },
-})
diff --git a/index.html b/index.html
deleted file mode 100755
index 7cc353a4..00000000
--- a/index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to
- continue.
-
-
-
-
-
-
-
-
diff --git a/lostpixel.config.ts b/lostpixel.config.ts
new file mode 100644
index 00000000..631d7897
--- /dev/null
+++ b/lostpixel.config.ts
@@ -0,0 +1,41 @@
+import type { CustomProjectConfig } from "lost-pixel"
+
+export const config: CustomProjectConfig = {
+ pageShots: {
+ pages: [
+ { path: "/", name: "homepage" },
+ { path: "/watch", name: "watch" },
+ { path: "/partecipate/events", name: "partecipate-events" },
+ { path: "/partecipate/projects", name: "partecipate-projects" },
+ { path: "/partecipate/local-communities", name: "partecipate-local-communities" },
+ { path: "/contribute/as-individual", name: "contribute--as-individual" },
+ { path: "/contribute/as-speaker", name: "contribute--as-speaker" },
+ { path: "/contribute/as-partner", name: "contribute--as-partner" },
+ { path: "/contribute/as-sponsor", name: "contribute--as-sponsor" },
+ { path: "/association/about-us", name: "association--about-us" },
+ { path: "/association/join", name: "association--join" },
+ { path: "/association/press-kit", name: "association--press-kit" },
+ {
+ path: "/watch/costa-tsaousis-netdata-open-source-distributed-observability-pipeline-journey-and-challenges",
+ name: "watch--netdata-open-source",
+ },
+ { path: "/speaker/costa-tsaousis", name: "speaker--costa-tsaousis" },
+
+ { path: "/partecipate/events/open-source-day-2024", name: "partecipate--events--open-source-day-2024" },
+ {
+ path: "/partecipate/events/sh-session-dev-devrel-nel-2024",
+ name: "partecipate--events--sh-session-dev-devrel-nel-2024",
+ },
+ ],
+ // IP should be localhost when running locally & 172.17.0.1 when running in GitHub action
+
+ baseUrl: "http://10.45.3.180:3000",
+ breakpoints: [375, 414, 768, 1024, 1280, 1440, 1920, 2560],
+ },
+ // OSS mode
+ generateOnly: false,
+ failOnDifference: true,
+
+ // lostPixelProjectId: "cm4xebtf70p3a49r7n8buzwah",
+ // apiKey: process.env.LOST_PIXEL_API_KEY,
+}
diff --git a/next.config.js b/next.config.js
new file mode 100644
index 00000000..e96ab9ac
--- /dev/null
+++ b/next.config.js
@@ -0,0 +1,47 @@
+/**
+ * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful
+ * for Docker builds.
+ */
+import "./src/env.js"
+
+/** @type {import('next/dist/shared/lib/image-config').RemotePattern[]} */
+const remotePatterns = [
+ {
+ protocol: "https",
+ hostname: "cdn.sanity.io",
+ },
+ {
+ protocol: "https",
+ hostname: "img.youtube.com",
+ },
+ {
+ protocol: "https",
+ hostname: "maps.googleapis.com",
+ },
+ {
+ protocol: "https",
+ hostname: "picsum.photos",
+ },
+]
+
+if (process.env.NODE_ENV === "development") {
+ remotePatterns.push({
+ protocol: "https",
+ hostname: "placehold.co",
+ })
+}
+
+/** @type {import("next").NextConfig} */
+const config = {
+ transpilePackages: ["three"],
+ eslint: {
+ ignoreDuringBuilds: true, // TODO: remove this
+ },
+ images: {
+ dangerouslyAllowSVG: true,
+ remotePatterns,
+ formats: ["image/avif", "image/webp"],
+ },
+}
+
+export default config
diff --git a/package-lock.json b/package-lock.json
old mode 100755
new mode 100644
index 096a41f5..8151b5f6
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,577 +1,604 @@
{
- "name": "schroedinger-hat-web",
+ "name": "sh-website",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "schrodinger-hat-web",
+ "name": "sh-website",
"version": "0.1.0",
+ "hasInstallScript": true,
"dependencies": {
- "@unhead/vue": "^1.7.4",
- "@unocss/reset": "^0.58.0",
- "@vueuse/core": "^10.1.0",
- "cypress": "^13.6.1",
- "register-service-worker": "^1.7.2",
- "vue-i18n": "^9.2.2",
- "vue-router": "^4.1.6"
+ "@hookform/resolvers": "^3.9.1",
+ "@next/third-parties": "^15.0.4",
+ "@prisma/client": "^6.0.1",
+ "@radix-ui/react-accordion": "^1.2.1",
+ "@radix-ui/react-avatar": "^1.1.1",
+ "@radix-ui/react-checkbox": "^1.1.2",
+ "@radix-ui/react-dialog": "^1.1.2",
+ "@radix-ui/react-label": "^2.1.0",
+ "@radix-ui/react-navigation-menu": "^1.2.1",
+ "@radix-ui/react-slot": "^1.1.0",
+ "@react-email/components": "^0.0.31",
+ "@react-email/render": "^1.0.3",
+ "@sanity/code-input": "^5.1.1",
+ "@sanity/color-input": "^4.0.1",
+ "@sanity/google-maps-input": "^4.0.1",
+ "@sanity/image-url": "^1.1.0",
+ "@sanity/orderable-document-list": "^1.2.2",
+ "@sanity/vision": "^3.67.1",
+ "@t3-oss/env-nextjs": "^0.10.1",
+ "@tanstack/react-query": "^5.50.0",
+ "@trpc/client": "^11.0.0-rc.446",
+ "@trpc/react-query": "^11.0.0-rc.446",
+ "@trpc/server": "^11.0.0-rc.446",
+ "@types/react-syntax-highlighter": "^15.5.13",
+ "@vercel/speed-insights": "^1.1.0",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "date-fns": "^4.1.0",
+ "geist": "^1.3.0",
+ "hugeicons-react": "^0.3.0",
+ "lucide-react": "^0.459.0",
+ "motion": "^11.15.0",
+ "next": "^15.1.0",
+ "next-sanity": "^9.8.27",
+ "postmark": "^4.0.5",
+ "react": "^18.3.1",
+ "react-confetti": "^6.1.0",
+ "react-dom": "^18.3.1",
+ "react-email": "^3.0.4",
+ "react-hook-form": "^7.53.2",
+ "react-syntax-highlighter": "^15.6.1",
+ "sanity": "^3.67.1",
+ "server-only": "^0.0.1",
+ "stripe": "^17.3.1",
+ "styled-components": "^6.1.13",
+ "superjson": "^2.2.1",
+ "tailwind-merge": "^2.5.4",
+ "tailwindcss-animate": "^1.0.7",
+ "zod": "^3.23.8"
},
"devDependencies": {
- "@antfu/eslint-config": "^2.4.5",
- "@iconify/vue": "^4.1.1",
- "@types/node": "^20.4.8",
- "@unocss/preset-attributify": "^0.58.0",
- "@unocss/preset-icons": "^0.58.0",
- "@unocss/preset-uno": "^0.58.0",
- "@unocss/preset-web-fonts": "^0.58.0",
- "@vitejs/plugin-vue": "^4.0.0",
- "eslint": "^8.32.0",
- "sass": "^1.49.9",
- "stylelint": "^15.6.2",
- "stylelint-config-idiomatic-order": "^9.0.0",
- "stylelint-config-recommended-vue": "^1.4.0",
- "stylelint-config-standard-scss": "^9.0.0",
- "typescript": "^5.0.4",
- "unocss": "^0.58.0",
- "vite": "^5.0.8",
- "vitest": "^1.1.0",
- "vue": "^3.4.3",
- "vue-tsc": "^1.8.27"
- },
- "engines": {
- "node": ">=20.1.0",
- "npm": ">=10.2.3"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
+ "@types/eslint": "^8.56.10",
+ "@types/node": "^20.14.10",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@types/stripe": "^8.0.417",
+ "@typescript-eslint/eslint-plugin": "^8.1.0",
+ "@typescript-eslint/parser": "^8.1.0",
+ "eslint": "^8.57.0",
+ "eslint-config-next": "^15.0.1",
+ "lost-pixel": "^3.22.0",
+ "postcss": "^8.4.39",
+ "prettier": "^3.3.2",
+ "prettier-plugin-tailwindcss": "^0.6.5",
+ "prisma": "^6.0.1",
+ "tailwindcss": "^3.4.3",
+ "typescript": "^5.5.3"
+ }
+ },
+ "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": ">=0.10.0"
+ "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==",
- "dev": true,
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
- "node_modules/@antfu/eslint-config": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-2.4.5.tgz",
- "integrity": "sha512-vfngpXqPE935bqjp2eJeniV113d3TspyHvsSfqeUUDbCiof6AEVT7x+G4aCWHd/WJQPr+eSnUpYkTpGdvsk/aQ==",
- "dev": true,
- "dependencies": {
- "@antfu/eslint-define-config": "^1.23.0-2",
- "@antfu/install-pkg": "^0.3.1",
- "@eslint-types/jsdoc": "46.8.2-1",
- "@eslint-types/typescript-eslint": "^6.12.0",
- "@eslint-types/unicorn": "^49.0.0",
- "@stylistic/eslint-plugin": "^1.5.1",
- "@typescript-eslint/eslint-plugin": "^6.13.2",
- "@typescript-eslint/parser": "^6.13.2",
- "eslint-config-flat-gitignore": "^0.1.2",
- "eslint-merge-processors": "^0.1.0",
- "eslint-parser-plain": "^0.1.0",
- "eslint-plugin-antfu": "^2.0.0",
- "eslint-plugin-eslint-comments": "^3.2.0",
- "eslint-plugin-i": "^2.29.0",
- "eslint-plugin-jsdoc": "^46.9.0",
- "eslint-plugin-jsonc": "^2.10.0",
- "eslint-plugin-markdown": "^3.0.1",
- "eslint-plugin-n": "^16.4.0",
- "eslint-plugin-no-only-tests": "^3.1.0",
- "eslint-plugin-perfectionist": "^2.5.0",
- "eslint-plugin-toml": "^0.7.1",
- "eslint-plugin-unicorn": "^49.0.0",
- "eslint-plugin-unused-imports": "^3.0.0",
- "eslint-plugin-vitest": "^0.3.15",
- "eslint-plugin-vue": "^9.19.2",
- "eslint-plugin-yml": "^1.10.0",
- "eslint-processor-vue-blocks": "^0.1.1",
- "globals": "^13.24.0",
- "jsonc-eslint-parser": "^2.4.0",
- "local-pkg": "^0.5.0",
- "parse-gitignore": "^2.0.0",
- "picocolors": "^1.0.0",
- "prompts": "^2.4.2",
- "toml-eslint-parser": "^0.9.3",
- "vue-eslint-parser": "^9.3.2",
- "yaml-eslint-parser": "^1.2.2",
- "yargs": "^17.7.2"
- },
- "bin": {
- "eslint-config": "bin/index.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@unocss/eslint-plugin": ">=0.50.0",
- "eslint": ">=8.40.0",
- "eslint-plugin-format": ">=0.1.0",
- "eslint-plugin-react": "^7.33.2",
- "eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-react-refresh": "^0.4.4"
- },
- "peerDependenciesMeta": {
- "@unocss/eslint-plugin": {
- "optional": true
- },
- "eslint-plugin-format": {
- "optional": true
- },
- "eslint-plugin-react": {
- "optional": true
- },
- "eslint-plugin-react-hooks": {
- "optional": true
- },
- "eslint-plugin-react-refresh": {
- "optional": true
- }
+ "node_modules/@asamuzakjp/dom-selector": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz",
+ "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==",
+ "dependencies": {
+ "bidi-js": "^1.0.3",
+ "css-tree": "^2.3.1",
+ "is-potential-custom-element-name": "^1.0.1"
}
},
- "node_modules/@antfu/eslint-config/node_modules/@antfu/install-pkg": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.3.1.tgz",
- "integrity": "sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==",
- "dev": true,
+ "node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
"dependencies": {
- "execa": "^8.0.1"
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
+ "node_modules/@babel/compat-data": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz",
+ "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
"dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
+ "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": ">=16.17"
+ "node": ">=6.9.0"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/@antfu/eslint-config/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
+ "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==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz",
+ "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
+ "dependencies": {
+ "@babel/parser": "^7.26.3",
+ "@babel/types": "^7.26.3",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+ "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
"engines": {
- "node": ">=16.17.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
+ "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==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
+ "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "semver": "^6.3.1"
+ },
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/local-pkg": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
- "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
- "dev": true,
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz",
+ "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==",
"dependencies": {
- "mlly": "^1.4.2",
- "pkg-types": "^1.0.3"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "regexpu-core": "^6.2.0",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">=14"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "engines": {
- "node": ">=12"
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz",
+ "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
- "dev": true,
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
"dependencies": {
- "path-key": "^4.0.0"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
"dependencies": {
- "mimic-fn": "^4.0.0"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+ "dependencies": {
+ "@babel/types": "^7.25.9"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
+ "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/eslint-config/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-wrap-function": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@antfu/eslint-define-config": {
- "version": "1.23.0-2",
- "resolved": "https://registry.npmjs.org/@antfu/eslint-define-config/-/eslint-define-config-1.23.0-2.tgz",
- "integrity": "sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/Shinigami92"
- },
- {
- "type": "paypal",
- "url": "https://www.paypal.com/donate/?hosted_button_id=L7GY729FBKTZY"
- }
- ],
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
+ "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
"engines": {
- "node": ">=18.0.0",
- "npm": ">=9.0.0",
- "pnpm": ">= 8.6.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@antfu/install-pkg": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz",
- "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==",
- "dev": true,
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
"dependencies": {
- "execa": "^5.1.1",
- "find-up": "^5.0.0"
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "engines": {
+ "node": ">=6.9.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==",
- "dev": true,
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
+ "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
"dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"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==",
- "dev": true,
+ "node_modules/@babel/helpers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+ "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
"dependencies": {
- "color-convert": "^1.9.0"
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/code-frame/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
+ "node_modules/@babel/parser": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
+ "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "@babel/types": "^7.26.3"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.0.0"
}
},
- "node_modules/@babel/code-frame/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
+ "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
"dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/code-frame/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/code-frame/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
+ "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/code-frame/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
+ "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
"dependencies": {
- "has-flag": "^3.0.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
- "dev": true,
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9"
+ },
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
}
},
- "node_modules/@babel/core": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
- "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
- "dev": true,
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
+ "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
"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.6",
- "@babel/parser": "^7.23.6",
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.6",
- "@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"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/generator": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
- "dev": true,
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
+ "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
"dependencies": {
- "@babel/types": "^7.23.6",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/generator/node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
- "dev": true,
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
"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"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
"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==",
- "dev": 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==",
- "dev": true
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz",
- "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "semver": "^6.3.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
},
"engines": {
"node": ">=6.9.0"
@@ -580,316 +607,361 @@
"@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
+ "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
+ "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
+ "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-remap-async-to-generator": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
+ "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
- "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
+ "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
"dependencies": {
- "@babel/types": "^7.23.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
+ "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
+ "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
"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"
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.12.0"
}
},
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
- "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
+ "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"engines": {
- "node": ">=6.9.0"
+ "node": ">=4"
}
},
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
- "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
+ "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-member-expression-to-functions": "^7.22.15",
- "@babel/helper-optimise-call-expression": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/template": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
+ "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
- "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
+ "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
+ "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
+ "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz",
+ "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/helpers": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
- "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
+ "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.6",
- "@babel/types": "^7.23.6"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
+ "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
+ "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
"dependencies": {
- "color-convert": "^1.9.0"
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
+ "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
+ "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
"dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
+ "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/highlight/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==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
+ "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
"dependencies": {
- "has-flag": "^3.0.0"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/parser": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
- "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
- "bin": {
- "parser": "bin/babel-parser.js"
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
+ "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6.9.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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
+ "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -898,13 +970,15 @@
"@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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
+ "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -913,15 +987,13 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
- "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
+ "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
"dependencies": {
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5"
+ "@babel/helper-module-transforms": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -930,35 +1002,27 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-typescript": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
- "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
+ "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.23.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-typescript": "^7.23.3"
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@babel/preset-typescript": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz",
- "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
+ "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-syntax-jsx": "^7.23.3",
- "@babel/plugin-transform-modules-commonjs": "^7.23.3",
- "@babel/plugin-transform-typescript": "^7.23.3"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -967,4682 +1031,13206 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/template": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
+ "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/parser": "^7.22.15",
- "@babel/types": "^7.22.15"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/traverse": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
- "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
+ "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
"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"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
+ "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "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==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
+ "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@colors/colors": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
- "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
- "optional": true,
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
+ "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=0.1.90"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/css-parser-algorithms": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
- "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
+ "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^2.2.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/css-tokenizer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz",
- "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
+ "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/media-query-list-parser": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz",
- "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
+ "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^2.3.1",
- "@csstools/css-tokenizer": "^2.2.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@csstools/selector-specificity": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz",
- "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
+ "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "postcss-selector-parser": "^6.0.13"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@cypress/request": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
- "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
+ "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
"dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "http-signature": "~1.3.6",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "performance-now": "^2.1.0",
- "qs": "6.10.4",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "^4.1.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^8.3.2"
+ "@babel/helper-plugin-utils": "^7.25.9"
},
"engines": {
- "node": ">= 6"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@cypress/xvfb": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz",
- "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==",
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
+ "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
"dependencies": {
- "debug": "^3.1.0",
- "lodash.once": "^4.1.1"
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@cypress/xvfb/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
+ "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
"dependencies": {
- "ms": "^2.1.1"
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@es-joy/jsdoccomment": {
- "version": "0.41.0",
- "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz",
- "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==",
- "dev": true,
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
+ "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
"dependencies": {
- "comment-parser": "1.4.1",
- "esquery": "^1.5.0",
- "jsdoc-type-pratt-parser": "~4.0.0"
+ "@babel/plugin-transform-react-jsx": "^7.25.9"
},
"engines": {
- "node": ">=16"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/android-arm": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz",
- "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
+ "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/android-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz",
- "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
+ "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/android-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz",
- "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
+ "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz",
- "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
+ "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "regenerator-transform": "^0.15.2"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz",
- "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
+ "node_modules/@babel/plugin-transform-regexp-modifiers": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
+ "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz",
- "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
+ "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz",
- "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
+ "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-arm": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz",
- "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
+ "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz",
- "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
+ "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz",
- "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
+ "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz",
- "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
+ "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz",
- "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz",
+ "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz",
- "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
+ "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz",
- "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
+ "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz",
- "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
+ "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz",
- "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
+ "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz",
- "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
+ "node_modules/@babel/preset-env": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
+ "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
+ "dependencies": {
+ "@babel/compat-data": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-import-assertions": "^7.26.0",
+ "@babel/plugin-syntax-import-attributes": "^7.26.0",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.25.9",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.9",
+ "@babel/plugin-transform-async-to-generator": "^7.25.9",
+ "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
+ "@babel/plugin-transform-block-scoping": "^7.25.9",
+ "@babel/plugin-transform-class-properties": "^7.25.9",
+ "@babel/plugin-transform-class-static-block": "^7.26.0",
+ "@babel/plugin-transform-classes": "^7.25.9",
+ "@babel/plugin-transform-computed-properties": "^7.25.9",
+ "@babel/plugin-transform-destructuring": "^7.25.9",
+ "@babel/plugin-transform-dotall-regex": "^7.25.9",
+ "@babel/plugin-transform-duplicate-keys": "^7.25.9",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-dynamic-import": "^7.25.9",
+ "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
+ "@babel/plugin-transform-export-namespace-from": "^7.25.9",
+ "@babel/plugin-transform-for-of": "^7.25.9",
+ "@babel/plugin-transform-function-name": "^7.25.9",
+ "@babel/plugin-transform-json-strings": "^7.25.9",
+ "@babel/plugin-transform-literals": "^7.25.9",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
+ "@babel/plugin-transform-member-expression-literals": "^7.25.9",
+ "@babel/plugin-transform-modules-amd": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.9",
+ "@babel/plugin-transform-modules-umd": "^7.25.9",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
+ "@babel/plugin-transform-new-target": "^7.25.9",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
+ "@babel/plugin-transform-numeric-separator": "^7.25.9",
+ "@babel/plugin-transform-object-rest-spread": "^7.25.9",
+ "@babel/plugin-transform-object-super": "^7.25.9",
+ "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
+ "@babel/plugin-transform-optional-chaining": "^7.25.9",
+ "@babel/plugin-transform-parameters": "^7.25.9",
+ "@babel/plugin-transform-private-methods": "^7.25.9",
+ "@babel/plugin-transform-private-property-in-object": "^7.25.9",
+ "@babel/plugin-transform-property-literals": "^7.25.9",
+ "@babel/plugin-transform-regenerator": "^7.25.9",
+ "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
+ "@babel/plugin-transform-reserved-words": "^7.25.9",
+ "@babel/plugin-transform-shorthand-properties": "^7.25.9",
+ "@babel/plugin-transform-spread": "^7.25.9",
+ "@babel/plugin-transform-sticky-regex": "^7.25.9",
+ "@babel/plugin-transform-template-literals": "^7.25.9",
+ "@babel/plugin-transform-typeof-symbol": "^7.25.9",
+ "@babel/plugin-transform-unicode-escapes": "^7.25.9",
+ "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-regex": "^7.25.9",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.38.1",
+ "semver": "^6.3.1"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz",
- "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
}
},
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz",
- "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz",
- "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
+ "node_modules/@babel/preset-react": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz",
+ "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-transform-react-display-name": "^7.25.9",
+ "@babel/plugin-transform-react-jsx": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-development": "^7.25.9",
+ "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz",
- "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz",
- "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz",
+ "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/helper-validator-option": "^7.25.9",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+ "@babel/plugin-transform-typescript": "^7.25.9"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
+ "node_modules/@babel/register": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz",
+ "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "clone-deep": "^4.0.1",
+ "find-cache-dir": "^2.0.0",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.6",
+ "source-map-support": "^0.5.16"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
- "dev": true,
+ "node_modules/@babel/runtime": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
"engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@eslint-types/jsdoc": {
- "version": "46.8.2-1",
- "resolved": "https://registry.npmjs.org/@eslint-types/jsdoc/-/jsdoc-46.8.2-1.tgz",
- "integrity": "sha512-FwD7V0xX0jyaqj8Ul5ZY+TAAPohDfVqtbuXJNHb+OIv1aTIqZi5+Zn3F2UwQ5O3BnQd2mTduyK0+HjGx3/AMFg==",
- "dev": true
- },
- "node_modules/@eslint-types/typescript-eslint": {
- "version": "6.12.0",
- "resolved": "https://registry.npmjs.org/@eslint-types/typescript-eslint/-/typescript-eslint-6.12.0.tgz",
- "integrity": "sha512-N8cbOYjyFl2BFgDhDgHhTGpgiMkFg0CoITG5hdBm9ZGmcEgUvFBnHvHG7qJl3qVEmFnoKUdfSAcr7MRb2/Jxvw==",
- "dev": true
- },
- "node_modules/@eslint-types/unicorn": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@eslint-types/unicorn/-/unicorn-49.0.0.tgz",
- "integrity": "sha512-NfXSZIsPFRD2fwTDZQj8SaXqS/rXjB5foxMraLovyrYGXiQK2y0780drDKYYSVbqvco29QIYoZNmnKTUkzZMvQ==",
- "dev": true
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
+ "node_modules/@babel/template": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+ "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
"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"
+ "@babel/code-frame": "^7.25.9",
+ "@babel/parser": "^7.25.9",
+ "@babel/types": "^7.25.9"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.26.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz",
+ "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==",
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.3",
+ "@babel/parser": "^7.26.3",
+ "@babel/template": "^7.25.9",
+ "@babel/types": "^7.26.3",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@eslint/js": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
- "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
- "dev": true,
+ "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==",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=4"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.13",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
- "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
- "dev": true,
+ "node_modules/@babel/types": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
+ "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
- "node": ">=10.10.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
+ "node_modules/@codemirror/autocomplete": {
+ "version": "6.18.3",
+ "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.3.tgz",
+ "integrity": "sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
+ "peerDependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
- "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
- "dev": true
+ "node_modules/@codemirror/commands": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.7.1.tgz",
+ "integrity": "sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.4.0",
+ "@codemirror/view": "^6.27.0",
+ "@lezer/common": "^1.1.0"
+ }
},
- "node_modules/@iconify/types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
- "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
- "dev": true
+ "node_modules/@codemirror/lang-css": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz",
+ "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@lezer/common": "^1.0.2",
+ "@lezer/css": "^1.1.7"
+ }
},
- "node_modules/@iconify/utils": {
- "version": "2.1.12",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.12.tgz",
- "integrity": "sha512-7vf3Uk6H7TKX4QMs2gbg5KR1X9J0NJzKSRNWhMZ+PWN92l0t6Q3tj2ZxLDG07rC3ppWBtTtA4FPmkQphuEmdsg==",
- "dev": true,
+ "node_modules/@codemirror/lang-html": {
+ "version": "6.4.9",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz",
+ "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==",
"dependencies": {
- "@antfu/install-pkg": "^0.1.1",
- "@antfu/utils": "^0.7.5",
- "@iconify/types": "^2.0.0",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "local-pkg": "^0.4.3"
+ "@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/@iconify/vue": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-4.1.1.tgz",
- "integrity": "sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg==",
- "dev": true,
+ "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": {
- "@iconify/types": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/cyberalien"
- },
- "peerDependencies": {
- "vue": ">=3"
+ "@codemirror/language": "^6.0.0",
+ "@lezer/java": "^1.0.0"
}
},
- "node_modules/@intlify/core-base": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.8.0.tgz",
- "integrity": "sha512-UxaSZVZ1DwqC/CltUZrWZNaWNhfmKtfyV4BJSt/Zt4Or/fZs1iFj0B+OekYk1+MRHfIOe3+x00uXGQI4PbO/9g==",
+ "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": {
- "@intlify/message-compiler": "9.8.0",
- "@intlify/shared": "9.8.0"
- },
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://github.com/sponsors/kazupon"
+ "@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/@intlify/message-compiler": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.8.0.tgz",
- "integrity": "sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==",
+ "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": {
- "@intlify/shared": "9.8.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://github.com/sponsors/kazupon"
+ "@codemirror/language": "^6.0.0",
+ "@lezer/json": "^1.0.0"
}
},
- "node_modules/@intlify/shared": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.8.0.tgz",
- "integrity": "sha512-TmgR0RCLjzrSo+W3wT0ALf9851iFMlVI9EYNGeWvZFUQTAJx0bvfsMlPdgVtV1tDNRiAfhkFsMKu6jtUY1ZLKQ==",
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://github.com/sponsors/kazupon"
+ "node_modules/@codemirror/lang-markdown": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.3.1.tgz",
+ "integrity": "sha512-y3sSPuQjBKZQbQwe3ZJKrSW6Silyl9PnrU/Mf0m2OQgIlPoSYTtOvEL7xs94SVMkb8f4x+SQFnzXPdX4Wk2lsg==",
+ "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/@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==",
- "dev": true,
+ "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": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "@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/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dev": true,
+ "node_modules/@codemirror/lang-sql": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz",
+ "integrity": "sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==",
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
+ "@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/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
+ "node_modules/@codemirror/language": {
+ "version": "6.10.6",
+ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.6.tgz",
+ "integrity": "sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==",
+ "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/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
+ "node_modules/@codemirror/legacy-modes": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.4.2.tgz",
+ "integrity": "sha512-HsvWu08gOIIk303eZQCal4H4t65O/qp1V4ul4zVa3MHK5FJ0gz3qz3O55FIkm+aQUcshUOjBx38t2hPiJwW5/g==",
+ "dependencies": {
+ "@codemirror/language": "^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/@codemirror/lint": {
+ "version": "6.8.4",
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.4.tgz",
+ "integrity": "sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.35.0",
+ "crelt": "^1.0.5"
+ }
},
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.20",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
- "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
- "dev": true,
+ "node_modules/@codemirror/search": {
+ "version": "6.5.8",
+ "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.8.tgz",
+ "integrity": "sha512-PoWtZvo7c1XFeZWmmyaOp2G0XVbOnm+fJzvghqGAktBW3cufwJUWvSCcNG0ppXiBEM05mZu6RhMtXPv2hpllig==",
"dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "crelt": "^1.0.5"
}
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
+ "node_modules/@codemirror/state": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.0.tgz",
+ "integrity": "sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw==",
"dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "@marijn/find-cluster-break": "^1.0.0"
+ }
+ },
+ "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.35.3",
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.35.3.tgz",
+ "integrity": "sha512-ScY7L8+EGdPl4QtoBiOzE4FELp7JmNUsBvgBcCakXWM2uiv/K89VAzU3BMDscf0DsACLvTKePbd5+cFDTcei6g==",
+ "dependencies": {
+ "@codemirror/state": "^6.5.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": ">= 8"
+ "node": ">=12"
}
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
+ "node_modules/@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/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
+ "node_modules/@dnd-kit/accessibility": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz",
+ "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==",
"dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
+ "tslib": "^2.0.0"
},
- "engines": {
- "node": ">= 8"
+ "peerDependencies": {
+ "react": ">=16.8.0"
}
},
- "node_modules/@polka/url": {
- "version": "1.0.0-next.24",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz",
- "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==",
- "dev": true
+ "node_modules/@dnd-kit/core": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz",
+ "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==",
+ "dependencies": {
+ "@dnd-kit/accessibility": "^3.1.1",
+ "@dnd-kit/utilities": "^3.2.2",
+ "tslib": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
},
- "node_modules/@rollup/pluginutils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
- "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
- "dev": true,
+ "node_modules/@dnd-kit/modifiers": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz",
+ "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==",
"dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
+ "@dnd-kit/utilities": "^3.2.1",
+ "tslib": "^2.0.0"
},
- "engines": {
- "node": ">=14.0.0"
+ "peerDependencies": {
+ "@dnd-kit/core": "^6.0.6",
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@dnd-kit/sortable": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz",
+ "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==",
+ "dependencies": {
+ "@dnd-kit/utilities": "^3.2.0",
+ "tslib": "^2.0.0"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ "@dnd-kit/core": "^6.0.7",
+ "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"
},
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
+ "peerDependencies": {
+ "react": ">=16.8.0"
}
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.8.0.tgz",
- "integrity": "sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==",
+ "node_modules/@emnapi/runtime": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
+ "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
"cpu": [
- "arm"
+ "ppc64"
],
- "dev": true,
"optional": true,
"os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.8.0.tgz",
- "integrity": "sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ==",
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.8.0.tgz",
- "integrity": "sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g==",
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.8.0.tgz",
- "integrity": "sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA==",
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.8.0.tgz",
- "integrity": "sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A==",
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
"cpu": [
"arm"
],
- "dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.8.0.tgz",
- "integrity": "sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g==",
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
"cpu": [
"arm64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.8.0.tgz",
- "integrity": "sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA==",
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
"cpu": [
- "arm64"
+ "ia32"
],
- "dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.8.0.tgz",
- "integrity": "sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw==",
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
"cpu": [
- "riscv64"
+ "loong64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.8.0.tgz",
- "integrity": "sha512-PmvAj8k6EuWiyLbkNpd6BLv5XeYFpqWuRvRNRl80xVfpGXK/z6KYXmAgbI4ogz7uFiJxCnYcqyvZVD0dgFog7Q==",
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
"cpu": [
- "x64"
+ "mips64el"
],
- "dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.8.0.tgz",
- "integrity": "sha512-mdxnlW2QUzXwY+95TuxZ+CurrhgrPAMveDWI97EQlA9bfhR8tw3Pt7SUlc/eSlCNxlWktpmT//EAA8UfCHOyXg==",
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
"cpu": [
- "x64"
+ "ppc64"
],
- "dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.8.0.tgz",
- "integrity": "sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA==",
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
"cpu": [
- "arm64"
+ "riscv64"
],
- "dev": true,
"optional": true,
"os": [
- "win32"
- ]
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.8.0.tgz",
- "integrity": "sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw==",
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
"cpu": [
- "ia32"
+ "s390x"
],
- "dev": true,
"optional": true,
"os": [
- "win32"
- ]
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.8.0.tgz",
- "integrity": "sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg==",
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
"cpu": [
"x64"
],
- "dev": true,
"optional": true,
"os": [
- "win32"
- ]
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@stylistic/eslint-plugin": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-1.5.1.tgz",
- "integrity": "sha512-y7ynUMh5Hq1MhYApAccl1iuQem5Sf2JSEIjV/qsBfmW1WfRDs74V+0kLkcOn1Y600W3t8orIFrrEuWmJSetAgw==",
- "dev": true,
- "dependencies": {
- "@stylistic/eslint-plugin-js": "1.5.1",
- "@stylistic/eslint-plugin-jsx": "1.5.1",
- "@stylistic/eslint-plugin-plus": "1.5.1",
- "@stylistic/eslint-plugin-ts": "1.5.1"
- },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
+ "node": ">=12"
}
},
- "node_modules/@stylistic/eslint-plugin-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.5.1.tgz",
- "integrity": "sha512-iZF0rF+uOhAmOJYOJx1Yvmm3CZ1uz9n0SRd9dpBYHA3QAvfABUORh9LADWwZCigjHJkp2QbCZelGFJGwGz7Siw==",
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz",
+ "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "acorn": "^8.11.2",
- "escape-string-regexp": "^4.0.0",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1"
- },
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
+ "node": ">=18"
}
},
- "node_modules/@stylistic/eslint-plugin-jsx": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.5.1.tgz",
- "integrity": "sha512-JuX+jsbVdpZ6EZXkbxYr9ERcGc0ndSMFgOuwEPHhOWPZ+7F8JP/nzpBjrRf7dUPMX7ezTYLZ2a3KRGRNme6rWQ==",
- "dev": true,
- "dependencies": {
- "@stylistic/eslint-plugin-js": "^1.5.1",
- "estraverse": "^5.3.0"
- },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
+ "node": ">=12"
}
},
- "node_modules/@stylistic/eslint-plugin-plus": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.5.1.tgz",
- "integrity": "sha512-yxkFHsUgoqEf/j1Og0FGkpEmeQoqx0CMmtgoyZGr34hka0ElCy9fRpsFkLcwx60SfiHXspbvs2YUMXiWIffnjg==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/utils": "^6.13.2"
- },
- "peerDependencies": {
- "eslint": "*"
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@stylistic/eslint-plugin-ts": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-1.5.1.tgz",
- "integrity": "sha512-oXM1V7Jp8G9+udxQTy+Igo79LR2e5HXiWqlA/3v+/PAqWxniR9nJqJSBjtQKJTPsGplDqn/ASpHUOETP4EI/4A==",
- "dev": true,
- "dependencies": {
- "@stylistic/eslint-plugin-js": "1.5.1",
- "@typescript-eslint/utils": "^6.13.2"
- },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "peerDependencies": {
- "eslint": ">=8.40.0"
+ "node": ">=12"
}
},
- "node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "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==",
- "dev": true,
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "20.10.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
- "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
- "devOptional": true,
- "dependencies": {
- "undici-types": "~5.26.4"
- }
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": 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==",
- "dev": true
- },
- "node_modules/@types/sinonjs__fake-timers": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
- "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g=="
- },
- "node_modules/@types/sizzle": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.4.tgz",
- "integrity": "sha512-jA2llq2zNkg8HrALI7DtWzhALcVH0l7i89yhY3iBdOz6cBPeACoFq+fkQrjHA39t1hnSFOboZ7A/AY5MMZSlag=="
- },
- "node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==",
- "dev": true
- },
- "node_modules/@types/web-bluetooth": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
- "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="
- },
- "node_modules/@types/yauzl": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz",
- "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==",
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
"optional": true,
- "dependencies": {
- "@types/node": "*"
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz",
- "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==",
- "dev": true,
- "dependencies": {
- "@eslint-community/regexpp": "^4.5.1",
- "@typescript-eslint/scope-manager": "6.14.0",
- "@typescript-eslint/type-utils": "6.14.0",
- "@typescript-eslint/utils": "6.14.0",
- "@typescript-eslint/visitor-keys": "6.14.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"
- },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"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": ">=12"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz",
- "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+ "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "6.14.0",
- "@typescript-eslint/types": "6.14.0",
- "@typescript-eslint/typescript-estree": "6.14.0",
- "@typescript-eslint/visitor-keys": "6.14.0",
- "debug": "^4.3.4"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "url": "https://opencollective.com/eslint"
},
"peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz",
- "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
- "dependencies": {
- "@typescript-eslint/types": "6.14.0",
- "@typescript-eslint/visitor-keys": "6.14.0"
- },
"engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz",
- "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==",
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "6.14.0",
- "@typescript-eslint/utils": "6.14.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"
+ "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"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz",
- "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==",
- "dev": true,
"engines": {
- "node": "^16.0.0 || >=18.0.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz",
- "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==",
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "6.14.0",
- "@typescript-eslint/visitor-keys": "6.14.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.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
- }
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/@typescript-eslint/utils": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz",
- "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==",
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "@types/json-schema": "^7.0.12",
- "@types/semver": "^7.5.0",
- "@typescript-eslint/scope-manager": "6.14.0",
- "@typescript-eslint/types": "6.14.0",
- "@typescript-eslint/typescript-estree": "6.14.0",
- "semver": "^7.5.4"
+ "brace-expansion": "^1.1.7"
},
"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": "*"
}
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz",
- "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==",
+ "node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
- "dependencies": {
- "@typescript-eslint/types": "6.14.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": "^12.22.0 || ^14.17.0 || >=16.0.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==",
- "dev": true
- },
- "node_modules/@unhead/dom": {
- "version": "1.8.9",
- "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.9.tgz",
- "integrity": "sha512-qY4CUVNKEM7lEAcTz5t71QYca+NXgUY5RwhSzB6sBBzZxQTiFOeTVKC6uWXU0N+3jBUdP/zdD3iN1JIjziDlng==",
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz",
+ "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==",
"dependencies": {
- "@unhead/schema": "1.8.9",
- "@unhead/shared": "1.8.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "@floating-ui/utils": "^0.2.8"
}
},
- "node_modules/@unhead/schema": {
- "version": "1.8.9",
- "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.8.9.tgz",
- "integrity": "sha512-Cumjt2uLfBMEXflvq7Nk8KNqa/JS4MlRGWkjXx/uUXJ1vUeQqeMV8o3hrnRvDDoTXr9LwPapTMUbtClN3TSBgw==",
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.12",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz",
+ "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==",
"dependencies": {
- "hookable": "^5.5.3",
- "zhead": "^2.2.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.8"
}
},
- "node_modules/@unhead/shared": {
- "version": "1.8.9",
- "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.8.9.tgz",
- "integrity": "sha512-0o4+CBCi9EnTKPF6cEuLacnUHUkF0u/FfiKrWnKWUiB8wTD1v3UCf5ZCrNCjuJmKHTqj6ZtZ2hIfXsqWfc+3tA==",
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
+ "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
"dependencies": {
- "@unhead/schema": "1.8.9"
+ "@floating-ui/dom": "^1.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
- "node_modules/@unhead/vue": {
- "version": "1.8.9",
- "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.9.tgz",
- "integrity": "sha512-sL1d2IRBZd5rjzhgTYni2DiociSpt+Cfz3iVWKb0EZwQHgg0GzV8Hkoj5TjZYZow6EjDSPRfVPXDwOwxkVOgug==",
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz",
+ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig=="
+ },
+ "node_modules/@hello-pangea/dnd": {
+ "version": "16.6.0",
+ "resolved": "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-16.6.0.tgz",
+ "integrity": "sha512-vfZ4GydqbtUPXSLfAvKvXQ6xwRzIjUSjVU0Sx+70VOhc2xx6CdmJXJ8YhH70RpbTUGjxctslQTHul9sIOxCfFQ==",
"dependencies": {
- "@unhead/schema": "1.8.9",
- "@unhead/shared": "1.8.9",
- "hookable": "^5.5.3",
- "unhead": "1.8.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "@babel/runtime": "^7.24.1",
+ "css-box-model": "^1.2.1",
+ "memoize-one": "^6.0.0",
+ "raf-schd": "^4.0.3",
+ "react-redux": "^8.1.3",
+ "redux": "^4.2.1",
+ "use-memo-one": "^1.1.3"
},
"peerDependencies": {
- "vue": ">=2.7 || >=3"
+ "react": "^16.8.5 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.5 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/@unocss/astro": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.58.0.tgz",
- "integrity": "sha512-df+tEFO5eKXjQOwSWQhS9IdjD0sfLHLtn8U09sEKR2Nmh5CvpwyBxmvLQgOCilPou7ehmyKfsyGRLZg7IMp+Ew==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/reset": "0.58.0",
- "@unocss/vite": "0.58.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
+ "node_modules/@hookform/resolvers": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz",
+ "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==",
"peerDependencies": {
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
- },
- "peerDependenciesMeta": {
- "vite": {
- "optional": true
- }
+ "react-hook-form": "^7.0.0"
}
},
- "node_modules/@unocss/cli": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.58.0.tgz",
- "integrity": "sha512-rhsrDBxAVueygMcAbMkbuvsHbBL2rG6N96LllYwHn16FLgOE3Sf4JW1/LlNjQje3BtwMMtbSCCAeu2SryFhzbw==",
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
"dev": true,
"dependencies": {
- "@ampproject/remapping": "^2.2.1",
- "@rollup/pluginutils": "^5.1.0",
- "@unocss/config": "0.58.0",
- "@unocss/core": "0.58.0",
- "@unocss/preset-uno": "0.58.0",
- "cac": "^6.7.14",
- "chokidar": "^3.5.3",
- "colorette": "^2.0.20",
- "consola": "^3.2.3",
- "fast-glob": "^3.3.2",
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "perfect-debounce": "^1.0.0"
- },
- "bin": {
- "unocss": "bin/unocss.mjs"
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
},
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node": ">=10.10.0"
}
},
- "node_modules/@unocss/config": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.58.0.tgz",
- "integrity": "sha512-WQD29gCZ7cajnMzezD1PRW0qQSxo/C6PX9ktygwhdinFx9nXuLZnKFOz65TiI8y48e53g1i7ivvgY3m4Sq5mIg==",
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
- "@unocss/core": "0.58.0",
- "unconfig": "^0.3.11"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@unocss/core": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.58.0.tgz",
- "integrity": "sha512-KhABQXGE2AgtO9vE28d+HnciuyGDcuygsnQdUwlzUuR4K05OSw2kRE9emRN4HaMycD+gA/zDbQrJxTXb6mQUiA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/@unocss/extractor-arbitrary-variants": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.58.0.tgz",
- "integrity": "sha512-s9wK2UugJM0WK1HpgPz2kTbpeyQc46zais+nauN/ykVX6NMq8PtGzSWszzf+0aIbtWAQGiqAfiYNTpf09tJHfg==",
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
- "@unocss/core": "0.58.0"
+ "brace-expansion": "^1.1.7"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "engines": {
+ "node": "*"
}
},
- "node_modules/@unocss/inspector": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.58.0.tgz",
- "integrity": "sha512-ZC4QauFGdh3/VkzW/FqkO2R03JEbzGNuX0DK03pwas8/jFIGh8pPldesj8GEKm1YWr1emx9cw7JUnhR8XSUBlA==",
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/rule-utils": "0.58.0",
- "gzip-size": "^6.0.0",
- "sirv": "^2.0.3"
+ "engines": {
+ "node": ">=12.22"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@unocss/postcss": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.58.0.tgz",
- "integrity": "sha512-2hAwLbfUFqysi8FN1cn3xkHy5GhLMlYy6W4NrAZ2ws7F2MKpsCT2xCj7dT5cI2tW8ulD2YoVbKH15dBhNsMNUA==",
- "dev": true,
- "dependencies": {
- "@unocss/config": "0.58.0",
- "@unocss/core": "0.58.0",
- "@unocss/rule-utils": "0.58.0",
- "css-tree": "^2.3.1",
- "fast-glob": "^3.3.2",
- "magic-string": "^0.30.5",
- "postcss": "^8.4.32"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true
+ },
+ "node_modules/@icons/material": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
+ "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==",
"peerDependencies": {
- "postcss": "^8.4.21"
+ "react": "*"
}
},
- "node_modules/@unocss/preset-attributify": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.58.0.tgz",
- "integrity": "sha512-Ew78noYes12K9gk4dF36MkjpiIqTi1XVqcniiAzxCkzuctxN4B57vW3LVTwjInGmWNNKWN3UNR4q1o0VxH4xJg==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0"
- },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
}
},
- "node_modules/@unocss/preset-icons": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.58.0.tgz",
- "integrity": "sha512-niT32avw+8l+L40LGhrmX6qDV9Z8/gOn4xjjRhLZZouKni3CJOpz9taILyF4xp1nak5nxGT4wa0tuC/htvOF5A==",
- "dev": true,
- "dependencies": {
- "@iconify/utils": "^2.1.12",
- "@unocss/core": "0.58.0",
- "ofetch": "^1.3.3"
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+ "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.0.4"
}
},
- "node_modules/@unocss/preset-mini": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.58.0.tgz",
- "integrity": "sha512-oMliJZVTN3ecAvf52yN+MyJszaJOZoKwMMbUAFqVis62MaqRzZ8mSw12QFLFyX2pltulDFpMBTAKro+hP0wXEg==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/extractor-arbitrary-variants": "0.58.0",
- "@unocss/rule-utils": "0.58.0"
- },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/preset-tagify": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.58.0.tgz",
- "integrity": "sha512-I+dzfs/bofiGb2AUxkhcTDhB+r2+/3SO81PFwf3Ae7afnzhA2SLsKAkEqO8YN3M3mwZL7IfXn6vpsWeEAlk/yw==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0"
- },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/preset-typography": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.58.0.tgz",
- "integrity": "sha512-8qo+Z1CJtXFMDbAvtizUTRLuLxCIzytgYU0GmuRkfc2iwASSDNDsvh8nAYQfWpyAEOV7QEHtS9c9xL4b0c89FA==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/preset-mini": "0.58.0"
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+ "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/preset-uno": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.58.0.tgz",
- "integrity": "sha512-DpgfjtvSgsWeyZH+jQHc1k5IReiZNb7oGpHVnfF6SlHETTnMHSeNetxkPQWYrqJLPI6llNLPTdTa5j47NtmOiA==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/preset-mini": "0.58.0",
- "@unocss/preset-wind": "0.58.0",
- "@unocss/rule-utils": "0.58.0"
- },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+ "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/preset-web-fonts": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.58.0.tgz",
- "integrity": "sha512-QarDDEUlexQ2IIn23pE1eHDskG2Tz+JjCe+FAN0DoNLLhvUUWSB4cQIMFWP6dSMJ047Blj9IpgAl9dERICW1qQ==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "ofetch": "^1.3.3"
- },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+ "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/preset-wind": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.58.0.tgz",
- "integrity": "sha512-2zgaIy9RAGie9CsUYCkYRDSERBi8kG6Q/mQLgNfP9HMz5IThlnDHFWF/hLAVD51xQUg9gH8qWBR9kN/1ioT5Tw==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/preset-mini": "0.58.0",
- "@unocss/rule-utils": "0.58.0"
- },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+ "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/reset": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.58.0.tgz",
- "integrity": "sha512-UVZ5kz37JGbwAA06k/gjKYcekcTwi6oIhev1EpTtCvHLL6XYcYqcwb/u4Wjzprd3L3lxDGYXvGdjREGm2u7vbQ==",
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+ "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/rule-utils": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.58.0.tgz",
- "integrity": "sha512-LBJ9dJ/j5UIMzJF7pmIig55MtJAYtG+tn/zQRveZuPRVahzP+KqwlyB7u3uCUnQhdgo/MJODMcqyr0jl6+kTuA==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "^0.58.0",
- "magic-string": "^0.30.5"
- },
- "engines": {
- "node": ">=14"
- },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+ "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@unocss/scope": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.58.0.tgz",
- "integrity": "sha512-XgUXZJvbxWSRC/DNOWI5DYdR6Nd6IZxsE5ls3AFA5msgtk5OH4YNQELLMabQw7xbRbU/fftlRJa3vncSfOyl6w==",
- "dev": true
- },
- "node_modules/@unocss/transformer-attributify-jsx": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.58.0.tgz",
- "integrity": "sha512-QDdBEFDE7ntfCH7+8zHRW72MIQ9NH3uYGUE7lYgr5Ap8qzBHCxMT1kUrY6gwuoo3U4dMu2wruglYRHD88hvGkw==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0"
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+ "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.0.5"
}
},
- "node_modules/@unocss/transformer-attributify-jsx-babel": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.58.0.tgz",
- "integrity": "sha512-ckDq/q476x2yikjS8usmSUGuakqMQrg2pm8sdBINTPdJxGc7kJRvI5UDnzRw4W9hE5IH+E4gg0XfCtFad0O3eg==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.23.5",
- "@babel/plugin-syntax-jsx": "^7.23.3",
- "@babel/preset-typescript": "^7.23.3",
- "@unocss/core": "0.58.0"
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+ "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.0.4"
}
},
- "node_modules/@unocss/transformer-compile-class": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.58.0.tgz",
- "integrity": "sha512-/BysfTg2q9sGPfiRHqWw/bT60/gjpBGBRVkIFsG4WVT2pgf3BfQUPu5FumSvZSRd0rA/pR57Lp6ZREAdj6+q+A==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0"
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+ "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.0.4"
}
},
- "node_modules/@unocss/transformer-directives": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.58.0.tgz",
- "integrity": "sha512-sU2U/aIykRkGGbA4Qo9Z5XE/KqWf7KhBwC1m8pUoqjawsZex4aVnQgXzDPfcjtmy6pElwK0z2U5DnO+OK9vCgQ==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0",
- "@unocss/rule-utils": "0.58.0",
- "css-tree": "^2.3.1"
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+ "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
}
},
- "node_modules/@unocss/transformer-variant-group": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.58.0.tgz",
- "integrity": "sha512-O2n8uVIpNic57rrkaaQ8jnC1WJ9N6FkoqxatRDXZ368aJ1CJNya0ZcVUL6lGGND0bOLXen4WmEN62ZxEWTqdkA==",
- "dev": true,
- "dependencies": {
- "@unocss/core": "0.58.0"
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+ "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
}
},
- "node_modules/@unocss/vite": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.58.0.tgz",
- "integrity": "sha512-OCUOLMSOBEtXOEyBbAvMI3/xdR175BWRzmvV9Wc34ANZclEvCdVH8+WU725ibjY4VT0gVIuX68b13fhXdHV41A==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.1",
- "@rollup/pluginutils": "^5.1.0",
- "@unocss/config": "0.58.0",
- "@unocss/core": "0.58.0",
- "@unocss/inspector": "0.58.0",
- "@unocss/scope": "0.58.0",
- "@unocss/transformer-directives": "0.58.0",
- "chokidar": "^3.5.3",
- "fast-glob": "^3.3.2",
- "magic-string": "^0.30.5"
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+ "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://opencollective.com/libvips"
},
- "peerDependencies": {
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
}
},
- "node_modules/@vitejs/plugin-vue": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.2.tgz",
- "integrity": "sha512-UGR3DlzLi/SaVBPX0cnSyE37vqxU3O6chn8l0HJNzQzDia6/Au2A4xKv+iIJW8w2daf80G7TYHhi1pAUjdZ0bQ==",
- "dev": true,
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+ "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.2.0"
+ },
"engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
- "peerDependencies": {
- "vite": "^4.0.0 || ^5.0.0",
- "vue": "^3.2.25"
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@vitest/expect": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.1.0.tgz",
- "integrity": "sha512-9IE2WWkcJo2BR9eqtY5MIo3TPmS50Pnwpm66A6neb2hvk/QSLfPXBz2qdiwUOQkwyFuuXEUj5380CbwfzW4+/w==",
- "dev": true,
- "dependencies": {
- "@vitest/spy": "1.1.0",
- "@vitest/utils": "1.1.0",
- "chai": "^4.3.10"
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+ "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@vitest/runner": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.1.0.tgz",
- "integrity": "sha512-zdNLJ00pm5z/uhbWF6aeIJCGMSyTyWImy3Fcp9piRGvueERFlQFbUwCpzVce79OLm2UHk9iwaMSOaU9jVHgNVw==",
- "dev": true,
- "dependencies": {
- "@vitest/utils": "1.1.0",
- "p-limit": "^5.0.0",
- "pathe": "^1.1.1"
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+ "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@vitest/runner/node_modules/p-limit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz",
- "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==",
- "dev": true,
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dependencies": {
- "yocto-queue": "^1.0.0"
+ "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": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/@vitest/runner/node_modules/yocto-queue": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
- "dev": true,
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"engines": {
- "node": ">=12.20"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/@vitest/snapshot": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.1.0.tgz",
- "integrity": "sha512-5O/wyZg09V5qmNmAlUgCBqflvn2ylgsWJRRuPrnHEfDNT6tQpQ8O1isNGgo+VxofISHqz961SG3iVvt3SPK/QQ==",
- "dev": true,
- "dependencies": {
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "pretty-format": "^29.7.0"
+ "node_modules/@isaacs/cliui/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://opencollective.com/vitest"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@vitest/spy": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.1.0.tgz",
- "integrity": "sha512-sNOVSU/GE+7+P76qYo+VXdXhXffzWZcYIPQfmkiRxaNCSPiLANvQx5Mx6ZURJ/ndtEkUJEpvKLXqAYTKEY+lTg==",
- "dev": true,
+ "node_modules/@isaacs/cliui/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": {
- "tinyspy": "^2.2.0"
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@vitest/utils": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.1.0.tgz",
- "integrity": "sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==",
- "dev": true,
+ "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": {
- "diff-sequences": "^29.6.3",
- "loupe": "^2.3.7",
- "pretty-format": "^29.7.0"
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/@volar/language-core": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz",
- "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==",
- "dev": true,
+ "node_modules/@isaacs/cliui/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": {
- "@volar/source-map": "1.11.1"
+ "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/@volar/source-map": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz",
- "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==",
- "dev": true,
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
"dependencies": {
- "muggle-string": "^0.3.1"
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/@volar/typescript": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz",
- "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==",
- "dev": true,
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"dependencies": {
- "@volar/language-core": "1.11.1",
- "path-browserify": "^1.0.1"
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@vue/compiler-core": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.3.tgz",
- "integrity": "sha512-u8jzgFg0EDtSrb/hG53Wwh1bAOQFtc1ZCegBpA/glyvTlgHl+tq13o1zvRfLbegYUw/E4mSTGOiCnAJ9SJ+lsg==",
- "dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/shared": "3.4.3",
- "entities": "^4.5.0",
- "estree-walker": "^2.0.2",
- "source-map-js": "^1.0.2"
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@vue/compiler-dom": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.3.tgz",
- "integrity": "sha512-oGF1E9/htI6JWj/lTJgr6UgxNCtNHbM6xKVreBWeZL9QhRGABRVoWGAzxmtBfSOd+w0Zi5BY0Es/tlJrN6WgEg==",
- "dependencies": {
- "@vue/compiler-core": "3.4.3",
- "@vue/shared": "3.4.3"
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "node_modules/@vue/compiler-sfc": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.3.tgz",
- "integrity": "sha512-NuJqb5is9I4uzv316VRUDYgIlPZCG8D+ARt5P4t5UDShIHKL25J3TGZAUryY/Aiy0DsY7srJnZL5ryB6DD63Zw==",
- "dependencies": {
- "@babel/parser": "^7.23.6",
- "@vue/compiler-core": "3.4.3",
- "@vue/compiler-dom": "3.4.3",
- "@vue/compiler-ssr": "3.4.3",
- "@vue/shared": "3.4.3",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.30.5",
- "postcss": "^8.4.32",
- "source-map-js": "^1.0.2"
- }
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
},
- "node_modules/@vue/compiler-ssr": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.3.tgz",
- "integrity": "sha512-wnYQtMBkeFSxgSSQbYGQeXPhQacQiog2c6AlvMldQH6DB+gSXK/0F6DVXAJfEiuBSgBhUc8dwrrG5JQcqwalsA==",
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dependencies": {
- "@vue/compiler-dom": "3.4.3",
- "@vue/shared": "3.4.3"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@vue/devtools-api": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
- "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
+ "node_modules/@juggle/resize-observer": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="
},
- "node_modules/@vue/language-core": {
- "version": "1.8.27",
- "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz",
- "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==",
- "dev": true,
+ "node_modules/@lezer/common": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz",
+ "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA=="
+ },
+ "node_modules/@lezer/css": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.9.tgz",
+ "integrity": "sha512-TYwgljcDv+YrV0MZFFvYFQHCfGgbPMR6nuqLabBdmZoFH3EP1gvw8t0vae326Ne3PszQkbXfVBjCnf3ZVCr0bA==",
"dependencies": {
- "@volar/language-core": "~1.11.1",
- "@volar/source-map": "~1.11.1",
- "@vue/compiler-dom": "^3.3.0",
- "@vue/shared": "^3.3.0",
- "computeds": "^0.0.1",
- "minimatch": "^9.0.3",
- "muggle-string": "^0.3.1",
- "path-browserify": "^1.0.1",
- "vue-template-compiler": "^2.7.14"
- },
- "peerDependencies": {
- "typescript": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
}
},
- "node_modules/@vue/language-core/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,
+ "node_modules/@lezer/highlight": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz",
+ "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "@lezer/common": "^1.0.0"
}
},
- "node_modules/@vue/language-core/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
- "dev": true,
+ "node_modules/@lezer/html": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz",
+ "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==",
"dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
}
},
- "node_modules/@vue/reactivity": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.3.tgz",
- "integrity": "sha512-q5f9HLDU+5aBKizXHAx0w4whkIANs1Muiq9R5YXm0HtorSlflqv9u/ohaMxuuhHWCji4xqpQ1eL04WvmAmGnFg==",
+ "node_modules/@lezer/java": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.1.3.tgz",
+ "integrity": "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==",
"dependencies": {
- "@vue/shared": "3.4.3"
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
}
},
- "node_modules/@vue/runtime-core": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.3.tgz",
- "integrity": "sha512-C1r6QhB1qY7D591RCSFhMULyzL9CuyrGc+3PpB0h7dU4Qqw6GNyo4BNFjHZVvsWncrUlKX3DIKg0Y7rNNr06NQ==",
+ "node_modules/@lezer/javascript": {
+ "version": "1.4.21",
+ "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.21.tgz",
+ "integrity": "sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==",
"dependencies": {
- "@vue/reactivity": "3.4.3",
- "@vue/shared": "3.4.3"
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.1.3",
+ "@lezer/lr": "^1.3.0"
}
},
- "node_modules/@vue/runtime-dom": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.3.tgz",
- "integrity": "sha512-wrsprg7An5Ec+EhPngWdPuzkp0BEUxAKaQtN9dPU/iZctPyD9aaXmVtehPJerdQxQale6gEnhpnfywNw3zOv2A==",
+ "node_modules/@lezer/json": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.2.tgz",
+ "integrity": "sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==",
"dependencies": {
- "@vue/runtime-core": "3.4.3",
- "@vue/shared": "3.4.3",
- "csstype": "^3.1.3"
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
}
},
- "node_modules/@vue/server-renderer": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.3.tgz",
- "integrity": "sha512-BUxt8oVGMKKsqSkM1uU3d3Houyfy4WAc2SpSQRebNd+XJGATVkW/rO129jkyL+kpB/2VRKzE63zwf5RtJ3XuZw==",
+ "node_modules/@lezer/lr": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz",
+ "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==",
"dependencies": {
- "@vue/compiler-ssr": "3.4.3",
- "@vue/shared": "3.4.3"
- },
- "peerDependencies": {
- "vue": "3.4.3"
+ "@lezer/common": "^1.0.0"
}
},
- "node_modules/@vue/shared": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.3.tgz",
- "integrity": "sha512-rIwlkkP1n4uKrRzivAKPZIEkHiuwY5mmhMJ2nZKCBLz8lTUlE73rQh4n1OnnMurXt1vcUNyH4ZPfdh8QweTjpQ=="
- },
- "node_modules/@vueuse/core": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.7.0.tgz",
- "integrity": "sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==",
+ "node_modules/@lezer/markdown": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.3.2.tgz",
+ "integrity": "sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==",
"dependencies": {
- "@types/web-bluetooth": "^0.0.20",
- "@vueuse/metadata": "10.7.0",
- "@vueuse/shared": "10.7.0",
- "vue-demi": ">=0.14.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "@lezer/common": "^1.0.0",
+ "@lezer/highlight": "^1.0.0"
}
},
- "node_modules/@vueuse/core/node_modules/vue-demi": {
- "version": "0.14.6",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
- "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
+ "node_modules/@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/@vueuse/metadata": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.7.0.tgz",
- "integrity": "sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==",
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
+ "node_modules/@marijn/find-cluster-break": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
+ "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="
+ },
+ "node_modules/@next/env": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.0.tgz",
+ "integrity": "sha512-UcCO481cROsqJuszPPXJnb7GGuLq617ve4xuAyyNG4VSSocJNtMU5Fsx+Lp6mlN8c7W58aZLc5y6D/2xNmaK+w=="
},
- "node_modules/@vueuse/shared": {
- "version": "10.7.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.7.0.tgz",
- "integrity": "sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==",
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.0.tgz",
+ "integrity": "sha512-+jPT0h+nelBT6HC9ZCHGc7DgGVy04cv4shYdAe6tKlEbjQUtwU3LzQhzbDHQyY2m6g39m6B0kOFVuLGBrxxbGg==",
+ "dev": true,
"dependencies": {
- "vue-demi": ">=0.14.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "fast-glob": "3.3.1"
}
},
- "node_modules/@vueuse/shared/node_modules/vue-demi": {
- "version": "0.14.6",
- "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
- "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
- "hasInstallScript": true,
- "bin": {
- "vue-demi-fix": "bin/vue-demi-fix.js",
- "vue-demi-switch": "bin/vue-demi-switch.js"
+ "node_modules/@next/eslint-plugin-next/node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@vue/composition-api": "^1.0.0-rc.1",
- "vue": "^3.0.0-0 || ^2.6.0"
- },
- "peerDependenciesMeta": {
- "@vue/composition-api": {
- "optional": true
- }
+ "node": ">=8.6.0"
}
},
- "node_modules/acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "node_modules/@next/eslint-plugin-next/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "bin": {
- "acorn": "bin/acorn"
+ "dependencies": {
+ "is-glob": "^4.0.1"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 6"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.0.tgz",
+ "integrity": "sha512-ZU8d7xxpX14uIaFC3nsr4L++5ZS/AkWDm1PzPO6gD9xWhFkOj2hzSbSIxoncsnlJXB1CbLOfGVN4Zk9tg83PUw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "node_modules/acorn-walk": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
- "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
- "dev": true,
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.0.tgz",
+ "integrity": "sha512-DQ3RiUoW2XC9FcSM4ffpfndq1EsLV0fj0/UY33i7eklW5akPUCo6OX2qkcLXZ3jyPdo4sf2flwAED3AAq3Om2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 10"
}
},
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.0.tgz",
+ "integrity": "sha512-M+vhTovRS2F//LMx9KtxbkWk627l5Q7AqXWWWrfIzNIaUFiz2/NkOFkxCFyNyGACi5YbA8aekzCLtbDyfF/v5Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">= 10"
}
},
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.0.tgz",
+ "integrity": "sha512-Qn6vOuwaTCx3pNwygpSGtdIu0TfS1KiaYLYXLH5zq1scoTXdwYfdZtwvJTpB1WrLgiQE2Ne2kt8MZok3HlFqmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.0.tgz",
+ "integrity": "sha512-yeNh9ofMqzOZ5yTOk+2rwncBzucc6a1lyqtg8xZv0rH5znyjxHOWsoUtSq4cUTeeBIiXXX51QOOe+VoCjdXJRw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">= 10"
}
},
- "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==",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.0.tgz",
+ "integrity": "sha512-t9IfNkHQs/uKgPoyEtU912MG6a1j7Had37cSUyLTKx9MnUpjj+ZDKw9OyqTI9OwIIv0wmkr1pkZy+3T5pxhJPg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 10"
}
},
- "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==",
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.0.tgz",
+ "integrity": "sha512-WEAoHyG14t5sTavZa1c6BnOIEukll9iqFRTavqRVPfYmfegOAd5MaZfXgOGG6kGo1RduyGdTHD4+YZQSdsNZXg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 10"
}
},
- "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==",
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.0.tgz",
+ "integrity": "sha512-J1YdKuJv9xcixzXR24Dv+4SaDKc2jj31IVUEMdO5xJivMTXuE6MAdIi4qPjSymHuFG8O5wbfWKnhJUcHHpj5CA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">= 10"
}
},
- "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==",
+ "node_modules/@next/third-parties": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-15.1.0.tgz",
+ "integrity": "sha512-eiv8vTo5HJOE/LabnIjRNVpN0hvjXfqPrE7D/XecmWvHBs9KrIISxlb1NZizDMcvjGtnHkdupWsquM9ur25rYw==",
"dependencies": {
- "color-convert": "^2.0.1"
+ "third-party-capital": "1.0.20"
},
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "peerDependencies": {
+ "next": "^13.0.0 || ^14.0.0 || ^15.0.0",
+ "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
+ "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": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
"node": ">= 8"
}
},
- "node_modules/arch": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
- "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/are-docs-informative": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
- "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
- "dev": true,
+ "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": ">=14"
+ "node": ">= 8"
}
},
- "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==",
- "dev": true
+ "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/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==",
+ "node_modules/@nolyfill/is-core-module": {
+ "version": "1.0.39",
+ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
+ "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=12.4.0"
}
},
- "node_modules/arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "dev": true,
+ "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": ">=0.10.0"
+ "node": ">=14"
}
},
- "node_modules/asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "node_modules/@playwright/test": {
+ "version": "1.49.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.49.1.tgz",
+ "integrity": "sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==",
+ "optional": true,
+ "peer": true,
"dependencies": {
- "safer-buffer": "~2.1.0"
+ "playwright": "1.49.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "node_modules/@portabletext/editor": {
+ "version": "1.15.3",
+ "resolved": "https://registry.npmjs.org/@portabletext/editor/-/editor-1.15.3.tgz",
+ "integrity": "sha512-IlpEdSCR5O3W2AowbloCQ4hXOxfhmze0+75Q5qxubwkAWZOKb0/ByQdTV9ZjwoRc4DU/TtnOTsY3aHPXCPvpEA==",
+ "dependencies": {
+ "@portabletext/patches": "1.1.0",
+ "@xstate/react": "^5.0.0",
+ "debug": "^4.3.4",
+ "get-random-values-esm": "^1.0.2",
+ "lodash": "^4.17.21",
+ "lodash.startcase": "^4.4.0",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206",
+ "slate": "0.112.0",
+ "slate-dom": "^0.111.0",
+ "slate-react": "0.112.0",
+ "use-effect-event": "^1.0.2",
+ "xstate": "^5.19.0"
+ },
"engines": {
- "node": ">=0.8"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@sanity/block-tools": "^3.66.1",
+ "@sanity/schema": "^3.66.1",
+ "@sanity/types": "^3.66.1",
+ "react": "^16.9 || ^17 || ^18 || ^19",
+ "rxjs": "^7.8.1",
+ "styled-components": "^6.1.13"
}
},
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true,
+ "node_modules/@portabletext/editor/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"engines": {
- "node": "*"
+ "node": ">=0.10.0"
}
},
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "engines": {
- "node": ">=8"
+ "node_modules/@portabletext/editor/node_modules/slate-react": {
+ "version": "0.112.0",
+ "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.112.0.tgz",
+ "integrity": "sha512-LoHb/XXnI5uf+n2hnjDKjWb3D+H3lGIg16N7Zzm1nHhhXm3NzwoKOTbzdKOMLdt2+tnhTaHpSxYfT7zZ+wdzUw==",
+ "dependencies": {
+ "@juggle/resize-observer": "^3.4.0",
+ "direction": "^1.0.4",
+ "is-hotkey": "^0.2.0",
+ "is-plain-object": "^5.0.0",
+ "lodash": "^4.17.21",
+ "scroll-into-view-if-needed": "^3.1.0",
+ "tiny-invariant": "1.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=18.2.0",
+ "react-dom": ">=18.2.0",
+ "slate": ">=0.99.0",
+ "slate-dom": ">=0.110.2"
}
},
- "node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
+ "node_modules/@portabletext/editor/node_modules/tiny-invariant": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
+ "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
},
- "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/@portabletext/patches": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@portabletext/patches/-/patches-1.1.0.tgz",
+ "integrity": "sha512-2qn4WaRc23m5qRwclT3sAyuHwTyjxCb4Lg0BQyhp7CABd83HtnPPYoP6hycREs6HRdWA48H3sU5gqUVPoxJxdg==",
+ "dependencies": {
+ "@sanity/diff-match-patch": "^3.1.1",
+ "lodash": "^4.17.21"
+ }
},
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "node_modules/@portabletext/react": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@portabletext/react/-/react-3.2.0.tgz",
+ "integrity": "sha512-BA216Z8yhb/eP24bfb09uiT0SVnQHTVZMPXf4MRBEZ+G8cMzZM/ab3tcp8owyp91+3kTKR0qSIpzYSKdm1Pakw==",
+ "dependencies": {
+ "@portabletext/toolkit": "^2.0.16",
+ "@portabletext/types": "^2.0.13"
+ },
"engines": {
- "node": ">= 4.0.0"
+ "node": "^14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "react": "^17 || ^18 || >=19.0.0-0"
}
},
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "node_modules/@portabletext/toolkit": {
+ "version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/@portabletext/toolkit/-/toolkit-2.0.16.tgz",
+ "integrity": "sha512-aBvnD8MscoAlEIuZBn0Aksd+oCuoMGFOT3CtHIgRBaac0Vu4YnnMUF45xo/B/T5vmwWcnDXoJEJdn+SKDg1m+A==",
+ "dependencies": {
+ "@portabletext/types": "^2.0.13"
+ },
"engines": {
- "node": "*"
+ "node": "^14.13.1 || >=16.0.0"
}
},
- "node_modules/aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
- },
- "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/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "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/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "dependencies": {
- "tweetnacl": "^0.14.3"
+ "node_modules/@portabletext/types": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@portabletext/types/-/types-2.0.13.tgz",
+ "integrity": "sha512-5xk5MSyQU9CrDho3Rsguj38jhijhD36Mk8S6mZo3huv6PM+t4M/5kJN2KFIxgvt4ONpvOEs1pVIZAV0cL0Vi+Q==",
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0 || >=18.0.0"
}
},
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
+ "node_modules/@prisma/client": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.0.1.tgz",
+ "integrity": "sha512-60w7kL6bUxz7M6Gs/V+OWMhwy94FshpngVmOY05TmGD0Lhk+Ac0ZgtjlL6Wll9TD4G03t4Sq1wZekNVy+Xdlbg==",
+ "hasInstallScript": true,
"engines": {
- "node": ">=8"
+ "node": ">=18.18"
+ },
+ "peerDependencies": {
+ "prisma": "*"
+ },
+ "peerDependenciesMeta": {
+ "prisma": {
+ "optional": true
+ }
}
},
- "node_modules/blob-util": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz",
- "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ=="
+ "node_modules/@prisma/debug": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.0.1.tgz",
+ "integrity": "sha512-jQylgSOf7ibTVxqBacnAlVGvek6fQxJIYCQOeX2KexsfypNzXjJQSS2o5s+Mjj2Np93iSOQUaw6TvPj8syhG4w==",
+ "devOptional": true
},
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ "node_modules/@prisma/engines": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.0.1.tgz",
+ "integrity": "sha512-4hxzI+YQIR2uuDyVsDooFZGu5AtixbvM2psp+iayDZ4hRrAHo/YwgA17N23UWq7G6gRu18NvuNMb48qjP3DPQw==",
+ "devOptional": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@prisma/debug": "6.0.1",
+ "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
+ "@prisma/fetch-engine": "6.0.1",
+ "@prisma/get-platform": "6.0.1"
+ }
},
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
+ "node_modules/@prisma/engines-version": {
+ "version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e.tgz",
+ "integrity": "sha512-JmIds0Q2/vsOmnuTJYxY4LE+sajqjYKhLtdOT6y4imojqv5d/aeVEfbBGC74t8Be1uSp0OP8lxIj2OqoKbLsfQ==",
+ "devOptional": true
},
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@prisma/fetch-engine": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.0.1.tgz",
+ "integrity": "sha512-T36bWFVGeGYYSyYOj9d+O9G3sBC+pAyMC+jc45iSL63/Haq1GrYjQPgPMxrEj9m739taXrupoysRedQ+VyvM/Q==",
+ "devOptional": true,
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "@prisma/debug": "6.0.1",
+ "@prisma/engines-version": "5.23.0-27.5dbef10bdbfb579e07d35cc85fb1518d357cb99e",
+ "@prisma/get-platform": "6.0.1"
}
},
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
+ "node_modules/@prisma/get-platform": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.0.1.tgz",
+ "integrity": "sha512-zspC9vlxAqx4E6epMPMLLBMED2VD8axDe8sPnquZ8GOsn6tiacWK0oxrGK4UAHYzYUVuMVUApJbdXB2dFpLhvg==",
+ "devOptional": true,
"dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
+ "@prisma/debug": "6.0.1"
}
},
- "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==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz",
+ "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA=="
+ },
+ "node_modules/@radix-ui/react-accordion": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.1.tgz",
+ "integrity": "sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collapsible": "1.1.1",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
},
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
+ "@types/react-dom": {
+ "optional": true
}
- ],
+ }
+ },
+ "node_modules/@radix-ui/react-avatar": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz",
+ "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==",
"dependencies": {
- "caniuse-lite": "^1.0.30001565",
- "electron-to-chromium": "^1.4.601",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "bin": {
- "browserslist": "cli.js"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
+ "node_modules/@radix-ui/react-checkbox": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz",
+ "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-presence": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-use-previous": "1.1.0",
+ "@radix-ui/react-use-size": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
},
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-collapsible": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.1.tgz",
+ "integrity": "sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-presence": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
},
- {
- "type": "consulting",
- "url": "https://feross.org/support"
+ "@types/react-dom": {
+ "optional": true
}
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
}
},
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "engines": {
- "node": "*"
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz",
+ "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz",
+ "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/builtins": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
- "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
- "dev": true,
- "dependencies": {
- "semver": "^7.0.0"
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz",
+ "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz",
+ "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/cachedir": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz",
- "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==",
- "engines": {
- "node": ">=6"
+ "node_modules/@radix-ui/react-dialog": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz",
+ "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-dismissable-layer": "1.1.1",
+ "@radix-ui/react-focus-guards": "1.1.1",
+ "@radix-ui/react-focus-scope": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-portal": "1.1.2",
+ "@radix-ui/react-presence": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.6.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/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"
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz",
+ "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz",
+ "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-escape-keydown": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz",
+ "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/camelcase-keys": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz",
- "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==",
- "dev": true,
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz",
+ "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==",
"dependencies": {
- "camelcase": "^6.3.0",
- "map-obj": "^4.1.0",
- "quick-lru": "^5.1.1",
- "type-fest": "^1.2.1"
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0"
},
- "engines": {
- "node": ">=12"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/camelcase-keys/node_modules/type-fest": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz",
+ "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==",
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/caniuse-lite": {
- "version": "1.0.30001568",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz",
- "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ "node_modules/@radix-ui/react-label": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz",
+ "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
},
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
+ "@types/react-dom": {
+ "optional": true
}
- ]
+ }
},
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
+ "node_modules/@radix-ui/react-navigation-menu": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz",
+ "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.1",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.1",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-presence": "1.1.1",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0",
+ "@radix-ui/react-use-previous": "1.1.0",
+ "@radix-ui/react-visually-hidden": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
},
- "node_modules/chai": {
- "version": "4.3.10",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz",
- "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==",
- "dev": true,
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz",
+ "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==",
"dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.3",
- "deep-eql": "^4.1.3",
- "get-func-name": "^2.0.2",
- "loupe": "^2.3.6",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.8"
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz",
+ "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "engines": {
- "node": ">=10"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/chalk/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==",
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz",
+ "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "@radix-ui/react-slot": "1.1.0"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/character-entities": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
- "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz",
+ "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/character-entities-legacy": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
- "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz",
+ "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/character-reference-invalid": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
- "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz",
+ "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==",
+ "dependencies": {
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/check-error": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
- "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
- "dev": true,
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz",
+ "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==",
"dependencies": {
- "get-func-name": "^2.0.2"
+ "@radix-ui/react-use-callback-ref": "1.1.0"
},
- "engines": {
- "node": "*"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/check-more-types": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz",
- "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==",
- "engines": {
- "node": ">= 0.8.0"
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz",
+ "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
+ "node_modules/@radix-ui/react-use-previous": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz",
+ "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "optionalDependencies": {
- "fsevents": "~2.3.2"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz",
+ "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==",
"dependencies": {
- "is-glob": "^4.0.1"
+ "@radix-ui/react-use-layout-effect": "1.1.0"
},
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
}
- ],
- "engines": {
- "node": ">=8"
}
},
- "node_modules/clean-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz",
- "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==",
- "dev": true,
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz",
+ "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==",
"dependencies": {
- "escape-string-regexp": "^1.0.5"
+ "@radix-ui/react-primitive": "2.0.0"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/clean-regexp/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "node_modules/@react-email/body": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/body/-/body-0.0.11.tgz",
+ "integrity": "sha512-ZSD2SxVSgUjHGrB0Wi+4tu3MEpB4fYSbezsFNEJk2xCWDBkFiOeEsjTmR5dvi+CxTK691hQTQlHv0XWuP7ENTg==",
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "node_modules/@react-email/button": {
+ "version": "0.0.19",
+ "resolved": "https://registry.npmjs.org/@react-email/button/-/button-0.0.19.tgz",
+ "integrity": "sha512-HYHrhyVGt7rdM/ls6FuuD6XE7fa7bjZTJqB2byn6/oGsfiEZaogY77OtoLL/mrQHjHjZiJadtAMSik9XLcm7+A==",
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dependencies": {
- "restore-cursor": "^3.1.0"
+ "node": ">=18.0.0"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/cli-table3": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
- "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==",
+ "node_modules/@react-email/code-block": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/code-block/-/code-block-0.0.11.tgz",
+ "integrity": "sha512-4D43p+LIMjDzm66gTDrZch0Flkip5je91mAT7iGs6+SbPyalHgIA+lFQoQwhz/VzHHLxuD0LV6gwmU/WUQ2WEg==",
"dependencies": {
- "string-width": "^4.2.0"
+ "prismjs": "1.29.0"
},
"engines": {
- "node": "10.* || >= 12.*"
+ "node": ">=18.0.0"
},
- "optionalDependencies": {
- "@colors/colors": "1.5.0"
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
- "dependencies": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- },
+ "node_modules/@react-email/code-inline": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@react-email/code-inline/-/code-inline-0.0.5.tgz",
+ "integrity": "sha512-MmAsOzdJpzsnY2cZoPHFPk6uDO/Ncpb4Kh1hAt9UZc1xOW3fIzpe1Pi9y9p6wwUmpaeeDalJxAxH6/fnTquinA==",
"engines": {
- "node": ">=8"
+ "node": ">=18.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
+ "node_modules/@react-email/column": {
+ "version": "0.0.13",
+ "resolved": "https://registry.npmjs.org/@react-email/column/-/column-0.0.13.tgz",
+ "integrity": "sha512-Lqq17l7ShzJG/d3b1w/+lVO+gp2FM05ZUo/nW0rjxB8xBICXOVv6PqjDnn3FXKssvhO5qAV20lHM6S+spRhEwQ==",
"engines": {
- "node": ">=12"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/components": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/@react-email/components/-/components-0.0.31.tgz",
+ "integrity": "sha512-rQsTY9ajobncix9raexhBjC7O6cXUMc87eNez2gnB1FwtkUO8DqWZcktbtwOJi7GKmuAPTx0o/IOFtiBNXziKA==",
+ "dependencies": {
+ "@react-email/body": "0.0.11",
+ "@react-email/button": "0.0.19",
+ "@react-email/code-block": "0.0.11",
+ "@react-email/code-inline": "0.0.5",
+ "@react-email/column": "0.0.13",
+ "@react-email/container": "0.0.15",
+ "@react-email/font": "0.0.9",
+ "@react-email/head": "0.0.12",
+ "@react-email/heading": "0.0.15",
+ "@react-email/hr": "0.0.11",
+ "@react-email/html": "0.0.11",
+ "@react-email/img": "0.0.11",
+ "@react-email/link": "0.0.12",
+ "@react-email/markdown": "0.0.14",
+ "@react-email/preview": "0.0.12",
+ "@react-email/render": "1.0.3",
+ "@react-email/row": "0.0.12",
+ "@react-email/section": "0.0.16",
+ "@react-email/tailwind": "1.0.4",
+ "@react-email/text": "0.0.11"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "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"
- },
+ "node_modules/@react-email/container": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmjs.org/@react-email/container/-/container-0.0.15.tgz",
+ "integrity": "sha512-Qo2IQo0ru2kZq47REmHW3iXjAQaKu4tpeq/M8m1zHIVwKduL2vYOBQWbC2oDnMtWPmkBjej6XxgtZByxM6cCFg==",
"engines": {
- "node": ">=7.0.0"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "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/colord": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
- "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
- "dev": true
- },
- "node_modules/colorette": {
- "version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+ "node_modules/@react-email/font": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/@react-email/font/-/font-0.0.9.tgz",
+ "integrity": "sha512-4zjq23oT9APXkerqeslPH3OZWuh5X4crHK6nx82mVHV2SrLba8+8dPEnWbaACWTNjOCbcLIzaC9unk7Wq2MIXw==",
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
},
- "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"
- },
+ "node_modules/@react-email/head": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@react-email/head/-/head-0.0.12.tgz",
+ "integrity": "sha512-X2Ii6dDFMF+D4niNwMAHbTkeCjlYYnMsd7edXOsi0JByxt9wNyZ9EnhFiBoQdqkE+SMDcu8TlNNttMrf5sJeMA==",
"engines": {
- "node": ">= 0.8"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "node_modules/@react-email/heading": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmjs.org/@react-email/heading/-/heading-0.0.15.tgz",
+ "integrity": "sha512-xF2GqsvBrp/HbRHWEfOgSfRFX+Q8I5KBEIG5+Lv3Vb2R/NYr0s8A5JhHHGf2pWBMJdbP4B2WHgj/VUrhy8dkIg==",
"engines": {
- "node": ">= 6"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/comment-parser": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
- "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
- "dev": true,
+ "node_modules/@react-email/hr": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/hr/-/hr-0.0.11.tgz",
+ "integrity": "sha512-S1gZHVhwOsd1Iad5IFhpfICwNPMGPJidG/Uysy1AwmspyoAP5a4Iw3OWEpINFdgh9MHladbxcLKO2AJO+cA9Lw==",
"engines": {
- "node": ">= 12.0.0"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/common-tags": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
- "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "node_modules/@react-email/html": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/html/-/html-0.0.11.tgz",
+ "integrity": "sha512-qJhbOQy5VW5qzU74AimjAR9FRFQfrMa7dn4gkEXKMB/S9xZN8e1yC1uA9C15jkXI/PzmJ0muDIWmFwatm5/+VA==",
"engines": {
- "node": ">=4.0.0"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/computeds": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
- "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
- "dev": true
- },
- "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/consola": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
- "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
- "dev": true,
+ "node_modules/@react-email/img": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/img/-/img-0.0.11.tgz",
+ "integrity": "sha512-aGc8Y6U5C3igoMaqAJKsCpkbm1XjguQ09Acd+YcTKwjnC2+0w3yGUJkjWB2vTx4tN8dCqQCXO8FmdJpMfOA9EQ==",
"engines": {
- "node": "^14.18.0 || >=16.10.0"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
- },
- "node_modules/cosmiconfig": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
- "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
- "dev": true,
- "dependencies": {
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0"
- },
+ "node_modules/@react-email/link": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@react-email/link/-/link-0.0.12.tgz",
+ "integrity": "sha512-vF+xxQk2fGS1CN7UPQDbzvcBGfffr+GjTPNiWM38fhBfsLv6A/YUfaqxWlmL7zLzVmo0K2cvvV9wxlSyNba1aQ==",
"engines": {
- "node": ">=14"
+ "node": ">=18.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "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==",
+ "node_modules/@react-email/markdown": {
+ "version": "0.0.14",
+ "resolved": "https://registry.npmjs.org/@react-email/markdown/-/markdown-0.0.14.tgz",
+ "integrity": "sha512-5IsobCyPkb4XwnQO8uFfGcNOxnsg3311GRXhJ3uKv51P7Jxme4ycC/MITnwIZ10w2zx7HIyTiqVzTj4XbuIHbg==",
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "md-to-react-email": "5.0.5"
},
"engines": {
- "node": ">= 8"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/css-functions-list": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz",
- "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==",
- "dev": true,
+ "node_modules/@react-email/preview": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@react-email/preview/-/preview-0.0.12.tgz",
+ "integrity": "sha512-g/H5fa9PQPDK6WUEG7iTlC19sAktI23qyoiJtMLqQiXFCfWeQMhqjLGKeLSKkfzszqmfJCjZtpSiKtBoOdxp3Q==",
"engines": {
- "node": ">=12.22"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "dev": true,
+ "node_modules/@react-email/render": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@react-email/render/-/render-1.0.3.tgz",
+ "integrity": "sha512-VQ8g4SuIq/jWdfBTdTjb7B8Np0jj+OoD7VebfdHhLTZzVQKesR2aigpYqE/ZXmwj4juVxDm8T2b6WIIu48rPCg==",
"dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
+ "html-to-text": "9.0.5",
+ "prettier": "3.3.3",
+ "react-promise-suspense": "0.3.4"
},
"engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
+ "node_modules/@react-email/render/node_modules/prettier": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"bin": {
- "cssesc": "bin/cssesc"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=4"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ "node_modules/@react-email/row": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@react-email/row/-/row-0.0.12.tgz",
+ "integrity": "sha512-HkCdnEjvK3o+n0y0tZKXYhIXUNPDx+2vq1dJTmqappVHXS5tXS6W5JOPZr5j+eoZ8gY3PShI2LWj5rWF7ZEtIQ==",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
},
- "node_modules/cypress": {
- "version": "13.6.1",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz",
- "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==",
- "hasInstallScript": true,
- "dependencies": {
- "@cypress/request": "^3.0.0",
- "@cypress/xvfb": "^1.2.4",
- "@types/node": "^18.17.5",
- "@types/sinonjs__fake-timers": "8.1.1",
- "@types/sizzle": "^2.3.2",
- "arch": "^2.2.0",
- "blob-util": "^2.0.2",
- "bluebird": "^3.7.2",
- "buffer": "^5.6.0",
- "cachedir": "^2.3.0",
- "chalk": "^4.1.0",
- "check-more-types": "^2.24.0",
- "cli-cursor": "^3.1.0",
- "cli-table3": "~0.6.1",
- "commander": "^6.2.1",
- "common-tags": "^1.8.0",
- "dayjs": "^1.10.4",
- "debug": "^4.3.4",
- "enquirer": "^2.3.6",
- "eventemitter2": "6.4.7",
- "execa": "4.1.0",
- "executable": "^4.1.1",
- "extract-zip": "2.0.1",
- "figures": "^3.2.0",
- "fs-extra": "^9.1.0",
- "getos": "^3.2.1",
- "is-ci": "^3.0.0",
- "is-installed-globally": "~0.4.0",
- "lazy-ass": "^1.6.0",
- "listr2": "^3.8.3",
- "lodash": "^4.17.21",
- "log-symbols": "^4.0.0",
- "minimist": "^1.2.8",
- "ospath": "^1.2.2",
- "pretty-bytes": "^5.6.0",
- "process": "^0.11.10",
- "proxy-from-env": "1.0.0",
- "request-progress": "^3.0.0",
- "semver": "^7.5.3",
- "supports-color": "^8.1.1",
- "tmp": "~0.2.1",
- "untildify": "^4.0.0",
- "yauzl": "^2.10.0"
+ "node_modules/@react-email/section": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmjs.org/@react-email/section/-/section-0.0.16.tgz",
+ "integrity": "sha512-FjqF9xQ8FoeUZYKSdt8sMIKvoT9XF8BrzhT3xiFKdEMwYNbsDflcjfErJe3jb7Wj/es/lKTbV5QR1dnLzGpL3w==",
+ "engines": {
+ "node": ">=18.0.0"
},
- "bin": {
- "cypress": "bin/cypress"
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/tailwind": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@react-email/tailwind/-/tailwind-1.0.4.tgz",
+ "integrity": "sha512-tJdcusncdqgvTUYZIuhNC6LYTfL9vNTSQpwWdTCQhQ1lsrNCEE4OKCSdzSV3S9F32pi0i0xQ+YPJHKIzGjdTSA==",
+ "engines": {
+ "node": ">=18.0.0"
},
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/text": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/text/-/text-0.0.11.tgz",
+ "integrity": "sha512-a7nl/2KLpRHOYx75YbYZpWspUbX1DFY7JIZbOv5x0QU8SvwDbJt+Hm01vG34PffFyYvHEXrc6Qnip2RTjljNjg==",
"engines": {
- "node": "^16.0.0 || ^18.0.0 || >=20.0.0"
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
}
},
- "node_modules/cypress/node_modules/@types/node": {
- "version": "18.19.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz",
- "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==",
+ "node_modules/@rexxars/react-json-inspector": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@rexxars/react-json-inspector/-/react-json-inspector-8.0.1.tgz",
+ "integrity": "sha512-XAsgQwqG8fbDGpWnsvOesRMgPfvwuU7Cx3/cUf/fNIRmGP8lj2YYIf5La/4ayvZLWlSw4tTb4BPCKdmK9D8RuQ==",
"dependencies": {
- "undici-types": "~5.26.4"
+ "create-react-class": "^15.6.0",
+ "debounce": "1.0.0",
+ "md5-o-matic": "^0.1.1"
+ },
+ "peerDependencies": {
+ "react": "^15 || ^16 || ^17 || ^18"
}
},
- "node_modules/cypress/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "node_modules/@rexxars/react-split-pane": {
+ "version": "0.1.93",
+ "resolved": "https://registry.npmjs.org/@rexxars/react-split-pane/-/react-split-pane-0.1.93.tgz",
+ "integrity": "sha512-Pok8zATwd5ZpWnccJeSA/JM2MPmi3D04duYtrbMNRgzeAU2ANtq3r4w7ldbjpGyfJqggqn0wDNjRqaevXqSxQg==",
"dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
+ "prop-types": "^15.7.2",
+ "react-lifecycles-compat": "^3.0.4",
+ "react-style-proptype": "^3.2.2"
},
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz",
+ "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz",
+ "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz",
+ "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz",
+ "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz",
+ "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz",
+ "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz",
+ "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz",
+ "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz",
+ "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz",
+ "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz",
+ "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz",
+ "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz",
+ "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz",
+ "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz",
+ "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz",
+ "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz",
+ "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz",
+ "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz",
+ "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rtsao/scc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "dev": true
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz",
+ "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==",
+ "dev": true
+ },
+ "node_modules/@sanity/asset-utils": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@sanity/asset-utils/-/asset-utils-2.2.1.tgz",
+ "integrity": "sha512-dBsZWH5X6ANcvclFRnQT9Y+NNvoWTJZIMKR5HT6hzoRpRb48p7+vWn+wi1V1wPvqgZg2ScsOQQcGXWXskbPbQQ==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/bifur-client": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sanity/bifur-client/-/bifur-client-0.4.1.tgz",
+ "integrity": "sha512-mHM8WR7pujbIw2qxuV0lzinS1izOoyLza/ejWV6quITTLpBhUoPIQGPER3Ar0SON5JV0VEEqkJGa1kjiYYgx2w==",
+ "dependencies": {
+ "nanoid": "^3.1.12",
+ "rxjs": "^7.0.0"
+ }
+ },
+ "node_modules/@sanity/block-tools": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/block-tools/-/block-tools-3.67.1.tgz",
+ "integrity": "sha512-PQ+KgS8/+xfM6XauZxiiMfRfY8uo2lMtbhAF/8QJ8kXapq/EFQcai5jDkWaB03tqlQVUrS4rMyKLBf9dvIFvOg==",
+ "dependencies": {
+ "@sanity/types": "3.67.1",
+ "@types/react": "^18.3.5",
+ "get-random-values-esm": "1.0.2",
+ "lodash": "^4.17.21"
+ }
+ },
+ "node_modules/@sanity/cli": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/cli/-/cli-3.67.1.tgz",
+ "integrity": "sha512-6K88cfiDz1FY1cLeenqJXm4RivhB4QqHIe+p0WUZtz1RfRYF/dvu+y2LARMrCyl5A2nGfXHFiycOJOnAb7liWw==",
+ "dependencies": {
+ "@babel/traverse": "^7.23.5",
+ "@sanity/client": "^6.24.1",
+ "@sanity/codegen": "3.67.1",
+ "@sanity/telemetry": "^0.7.7",
+ "@sanity/util": "3.67.1",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.4",
+ "decompress": "^4.2.0",
+ "esbuild": "0.21.5",
+ "esbuild-register": "^3.5.0",
+ "get-it": "^8.6.5",
+ "groq-js": "^1.14.2",
+ "pkg-dir": "^5.0.0",
+ "prettier": "^3.3.0",
+ "semver": "^7.3.5",
+ "silver-fleece": "1.1.0",
+ "validate-npm-package-name": "^3.0.0",
+ "yaml": "^2.6.1"
+ },
+ "bin": {
+ "sanity": "bin/sanity"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/client": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/@sanity/client/-/client-6.24.1.tgz",
+ "integrity": "sha512-k5aW5C8RdqVGnvuX0KZ+AAIlhYueb6sx3edhKkIMmr2UfD8vSTSW3oAXVt+/WlBstlMIqvkc5RCLLWZQcF3gaA==",
+ "dependencies": {
+ "@sanity/eventsource": "^5.0.2",
+ "get-it": "^8.6.5",
+ "rxjs": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sanity/code-input": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@sanity/code-input/-/code-input-5.1.1.tgz",
+ "integrity": "sha512-ZL166Gu5H0XXxjkAVmfTZ7Qvn7ftzjr+cr+T2GOHntsHIMa/AY9qsk11kZB2M2wgp66tABhemph1Adel8iGxdA==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.18.3",
+ "@codemirror/commands": "^6.7.1",
+ "@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-markdown": "^6.3.1",
+ "@codemirror/lang-php": "^6.0.1",
+ "@codemirror/lang-sql": "^6.8.0",
+ "@codemirror/language": "^6.10.6",
+ "@codemirror/legacy-modes": "^6.4.2",
+ "@codemirror/search": "^6.5.8",
+ "@codemirror/state": "^6.5.0",
+ "@codemirror/view": "^6.35.3",
+ "@juggle/resize-observer": "^3.4.0",
+ "@lezer/highlight": "^1.2.1",
+ "@sanity/icons": "^3.5.2",
+ "@sanity/incompatible-plugin": "^1.0.4",
+ "@sanity/ui": "^2.10.9",
+ "@uiw/codemirror-themes": "^4.23.6",
+ "@uiw/react-codemirror": "^4.23.6"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "react": "^18 || >=19.0.0-0",
+ "react-dom": "^18 || >=19.0.0-0",
+ "sanity": "^3",
+ "styled-components": "^5.2 || ^6"
+ }
+ },
+ "node_modules/@sanity/codegen": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/codegen/-/codegen-3.67.1.tgz",
+ "integrity": "sha512-yv+dYuNlbAi1HxKMStkP2l1h+iDrEZQcAKpItUbaO7v6bcOZwWjKp+ahQvFnqIHE9qMZ3uQuPGjPWcwrMhOkXw==",
+ "dependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/generator": "^7.23.6",
+ "@babel/preset-env": "^7.23.8",
+ "@babel/preset-react": "^7.23.3",
+ "@babel/preset-typescript": "^7.23.3",
+ "@babel/register": "^7.23.7",
+ "@babel/traverse": "^7.23.5",
+ "@babel/types": "^7.23.9",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "groq": "3.67.1",
+ "groq-js": "^1.14.2",
+ "json5": "^2.2.3",
+ "tsconfig-paths": "^4.2.0",
+ "zod": "^3.22.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/codegen/node_modules/tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "dependencies": {
+ "json5": "^2.2.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@sanity/color": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@sanity/color/-/color-3.0.6.tgz",
+ "integrity": "sha512-2TjYEvOftD0v7ukx3Csdh9QIu44P2z7NDJtlC3qITJRYV36J7R6Vfd3trVhFnN77/7CZrGjqngrtohv8VqO5nw==",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@sanity/color-input": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@sanity/color-input/-/color-input-4.0.1.tgz",
+ "integrity": "sha512-Ra/IZO7j5vsx5VIF1OGIoeVfgwZu74tii8qOLuLQIRYbd6Av8si1mQFl6MOBu/kzWKWURE6JEN8+Ac1K2fi8Ww==",
+ "dependencies": {
+ "@sanity/icons": "^3.4.0",
+ "@sanity/incompatible-plugin": "^1.0.4",
+ "@sanity/ui": "^2.8.9",
+ "react-color": "^2.19.3",
+ "use-effect-event": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "react": "^18.3",
+ "sanity": "^3.23.0",
+ "styled-components": "^6.1"
+ }
+ },
+ "node_modules/@sanity/comlink": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@sanity/comlink/-/comlink-2.0.1.tgz",
+ "integrity": "sha512-Sdl0qCHwtKxEZ7Xa2xjKYslosmPteWB3p81u84X8PdTocVqp036S6r3vgQJPHlcEiEaJgMjpEJkjUaR8Jx5BcA==",
+ "dependencies": {
+ "rxjs": "^7.8.1",
+ "uuid": "^10.0.0",
+ "xstate": "^5.19.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/diff": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/diff/-/diff-3.67.1.tgz",
+ "integrity": "sha512-p8OpQeeQLFkwovRiQHDcG9bHmDDYRiPJW5NWXcKsptCMoTtVPxjk0gVGAmepYv81Jr7CTLIpZZjIu731AQqwPQ==",
+ "dependencies": {
+ "@sanity/diff-match-patch": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/diff-match-patch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@sanity/diff-match-patch/-/diff-match-patch-3.1.1.tgz",
+ "integrity": "sha512-dSZqGeYjHKGIkqAzGqLcG92LZyJGX+nYbs/FWawhBbTBDWi21kvQ0hsL3DJThuFVWtZMWTQijN3z6Cnd44Pf2g==",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sanity/eventsource": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-5.0.2.tgz",
+ "integrity": "sha512-/B9PMkUvAlUrpRq0y+NzXgRv5lYCLxZNsBJD2WXVnqZYOfByL9oQBV7KiTaARuObp5hcQYuPfOAVjgXe3hrixA==",
+ "dependencies": {
+ "@types/event-source-polyfill": "1.0.5",
+ "@types/eventsource": "1.1.15",
+ "event-source-polyfill": "1.0.31",
+ "eventsource": "2.0.2"
+ }
+ },
+ "node_modules/@sanity/export": {
+ "version": "3.41.1",
+ "resolved": "https://registry.npmjs.org/@sanity/export/-/export-3.41.1.tgz",
+ "integrity": "sha512-iiYuyMkia1mZF14xz2R7dvMQzxOgTH61tYOe7YCZ54AwwjcLQCbuJnAan8LFDUC6tZMIKG5tIDyU/tHDvUQI1A==",
+ "dependencies": {
+ "@sanity/client": "^6.15.20",
+ "@sanity/util": "3.37.2",
+ "archiver": "^7.0.0",
+ "debug": "^4.3.4",
+ "get-it": "^8.6.2",
+ "lodash": "^4.17.21",
+ "mississippi": "^4.0.0",
+ "p-queue": "^2.3.0",
+ "rimraf": "^6.0.1",
+ "split2": "^4.2.0",
+ "tar": "^7.0.1",
+ "yaml": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/export/node_modules/@sanity/types": {
+ "version": "3.37.2",
+ "resolved": "https://registry.npmjs.org/@sanity/types/-/types-3.37.2.tgz",
+ "integrity": "sha512-1EfKkNlJ86wIDtc7oFHb79JI8lKDOxKDYrkmwhvuHgJY83GpSABc1kFdbwAtWZfrWVWyqVXUv/KlNwA3b99y/g==",
+ "dependencies": {
+ "@sanity/client": "^6.15.11",
+ "@types/react": "^18.0.25"
+ }
+ },
+ "node_modules/@sanity/export/node_modules/@sanity/util": {
+ "version": "3.37.2",
+ "resolved": "https://registry.npmjs.org/@sanity/util/-/util-3.37.2.tgz",
+ "integrity": "sha512-hq0eLjyV2iaOm9ivtPw12YTQ4QsE3jnV/Ui0zhclEhu8Go5JiaEhFt2+WM2lLGRH6qcSA414QbsCNCcyhJL6rA==",
+ "dependencies": {
+ "@sanity/client": "^6.15.11",
+ "@sanity/types": "3.37.2",
+ "get-random-values-esm": "1.0.2",
+ "moment": "^2.29.4",
+ "rxjs": "^7.8.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/export/node_modules/glob": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz",
+ "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^4.0.1",
+ "minimatch": "^10.0.0",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^2.0.0"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sanity/export/node_modules/minimatch": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sanity/export/node_modules/rimraf": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
+ "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
+ "dependencies": {
+ "glob": "^11.0.0",
+ "package-json-from-dist": "^1.0.0"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sanity/generate-help-url": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-3.0.0.tgz",
+ "integrity": "sha512-wtMYcV5GIDIhVyF/jjmdwq1GdlK07dRL40XMns73VbrFI7FteRltxv48bhYVZPcLkRXb0SHjpDS/icj9/yzbVA=="
+ },
+ "node_modules/@sanity/google-maps-input": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@sanity/google-maps-input/-/google-maps-input-4.0.1.tgz",
+ "integrity": "sha512-lYxK1Jfb2Xk3lVVcK/MUdK562qAC3LfSatjbvpDTP4LNwQ1NVvvgwsS2QGiGSQvgSXxGPOaiS40MSMb26X1Vhg==",
+ "dependencies": {
+ "@sanity/icons": "^2.0.0",
+ "@sanity/incompatible-plugin": "^1.0.4",
+ "@sanity/ui": "^2.0.0",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "sanity": "^3.19.0",
+ "styled-components": "^6.1"
+ }
+ },
+ "node_modules/@sanity/google-maps-input/node_modules/@sanity/icons": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@sanity/icons/-/icons-2.11.8.tgz",
+ "integrity": "sha512-C4ViXtk6eyiNTQ5OmxpfmcK6Jw+LLTi9zg9XBUD15DzC4xTHaGW9SVfUa43YtPGs3WC3M0t0K59r0GDjh52HIg==",
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18"
+ }
+ },
+ "node_modules/@sanity/icons": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/@sanity/icons/-/icons-3.5.2.tgz",
+ "integrity": "sha512-ZPSBevYnmBvtjWvvM/Akpey+kreAvGhSUJYoqf4bJUwKvC1q/80s2o2EWL+xtZe1K3BJJI8HyBeL4WHQA3EMrA==",
+ "dependencies": {
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.3 || ^19.0.0-0"
+ }
+ },
+ "node_modules/@sanity/image-url": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@sanity/image-url/-/image-url-1.1.0.tgz",
+ "integrity": "sha512-JHumVRxzzaZAJyOimntdukA9TjjzsJiaiq/uUBdTknMLCNvtM6KQ5OCp6W5fIdY78uyFxtQjz+MPXwK8WBIxWg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@sanity/import": {
+ "version": "3.37.9",
+ "resolved": "https://registry.npmjs.org/@sanity/import/-/import-3.37.9.tgz",
+ "integrity": "sha512-9XdQ6C0iMp8zGmm3uyRnMnvURKRGY/tvEItjxC3vDa9MOkDSZoH6FrTWprTEETMsJdg2JUexG6fbUXW+Vorwhg==",
+ "dependencies": {
+ "@sanity/asset-utils": "^2.0.6",
+ "@sanity/generate-help-url": "^3.0.0",
+ "@sanity/mutator": "^3.59.1",
+ "@sanity/uuid": "^3.0.2",
+ "debug": "^4.3.4",
+ "file-url": "^2.0.2",
+ "get-it": "^8.4.21",
+ "get-uri": "^2.0.2",
+ "gunzip-maybe": "^1.4.1",
+ "is-tar": "^1.0.0",
+ "lodash": "^4.17.21",
+ "meow": "^9.0.0",
+ "mississippi": "^4.0.0",
+ "ora": "^5.4.1",
+ "p-map": "^1.2.0",
+ "peek-stream": "^1.1.2",
+ "pretty-ms": "^7.0.1",
+ "rimraf": "^6.0.1",
+ "split2": "^4.2.0",
+ "tar-fs": "^2.1.1",
+ "tinyglobby": "^0.2.9"
+ },
+ "bin": {
+ "sanity-import": "src/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/import/node_modules/glob": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz",
+ "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^4.0.1",
+ "minimatch": "^10.0.0",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^2.0.0"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sanity/import/node_modules/minimatch": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sanity/import/node_modules/p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@sanity/import/node_modules/rimraf": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
+ "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
+ "dependencies": {
+ "glob": "^11.0.0",
+ "package-json-from-dist": "^1.0.0"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@sanity/incompatible-plugin": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@sanity/incompatible-plugin/-/incompatible-plugin-1.0.4.tgz",
+ "integrity": "sha512-2z39G9PTM8MXOF4fJNx3TG4tH0RrTjtH6dVLW93DSjCPbIS7FgCY5yWjZfQ+HVkwhLsF7ATDAGLA/jp65pFjAg==",
+ "dependencies": {
+ "@sanity/icons": "^1.3",
+ "react-copy-to-clipboard": "^5.1.0"
+ },
+ "peerDependencies": {
+ "react": "^16.9 || ^17 || ^18",
+ "react-dom": "^16.9 || ^17 || ^18"
+ }
+ },
+ "node_modules/@sanity/incompatible-plugin/node_modules/@sanity/icons": {
+ "version": "1.3.10",
+ "resolved": "https://registry.npmjs.org/@sanity/icons/-/icons-1.3.10.tgz",
+ "integrity": "sha512-5wVG/vIiGuGrSmq+Bl3PY7XDgQrGv0fyHdJI64FSulnr2wH3NMqZ6C59UFxnrZ93sr7kOt0zQFoNv2lkPBi0Cg==",
+ "peerDependencies": {
+ "react": "^16.9 || ^17 || ^18"
+ }
+ },
+ "node_modules/@sanity/insert-menu": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/@sanity/insert-menu/-/insert-menu-1.0.16.tgz",
+ "integrity": "sha512-qBnOH+Ntis+Y74gyTvpHE0H1yK7HN3P9Ryr2hugbWBomKaJOL5ztbxUnS4LqHefuTDgYHBuc9CbB8w12ep+KSA==",
+ "dependencies": {
+ "@sanity/icons": "^3.5.0",
+ "@sanity/ui": "^2.9.0",
+ "lodash": "^4.17.21"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "@sanity/types": "*",
+ "react": "^18.3 || >=19.0.0-rc",
+ "react-dom": "^18.3 || >=19.0.0-rc",
+ "react-is": "^18.3 || >=19.0.0-rc"
+ }
+ },
+ "node_modules/@sanity/logos": {
+ "version": "2.1.13",
+ "resolved": "https://registry.npmjs.org/@sanity/logos/-/logos-2.1.13.tgz",
+ "integrity": "sha512-PKAbPbM4zn+6wHYjCVwuhmlZnFqyZ9lT/O7OT3BVd2SGAqXoZTimfBOHrVPifytuazdoQ1T2M5eYJTtW/VXLyA==",
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@sanity/color": "^2.0 || ^3.0 || ^3.0.0-beta",
+ "react": "^18.3 || >=19.0.0-rc"
+ }
+ },
+ "node_modules/@sanity/migrate": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/migrate/-/migrate-3.67.1.tgz",
+ "integrity": "sha512-F5tUjbz+823Ouq2NIv4HkKKyFwbOFIF4sEo0eAdFAL37TCFRqzkSQUgKXymnJ9SNtRHzDYirTTe9Op6dj6mA/w==",
+ "dependencies": {
+ "@sanity/client": "^6.24.1",
+ "@sanity/mutate": "^0.11.1",
+ "@sanity/types": "3.67.1",
+ "@sanity/util": "3.67.1",
+ "arrify": "^2.0.1",
+ "debug": "^4.3.4",
+ "fast-fifo": "^1.3.2",
+ "groq-js": "^1.14.2",
+ "p-map": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/migrate/node_modules/@sanity/mutate": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/@sanity/mutate/-/mutate-0.11.1.tgz",
+ "integrity": "sha512-72chdEK8s9h1BLE/n7tOkCOGnrfFV/cH1fpvH/PpcxhpUY7wg6vvL7/durpXLEchWCO1ToS5DcFrCfmy1iKOrw==",
+ "dependencies": {
+ "@sanity/client": "^6.22.3",
+ "@sanity/diff-match-patch": "^3.1.1",
+ "hotscript": "^1.0.13",
+ "lodash": "^4.17.21",
+ "mendoza": "^3.0.7",
+ "nanoid": "^5.0.7",
+ "rxjs": "^7.8.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/migrate/node_modules/arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@sanity/migrate/node_modules/nanoid": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz",
+ "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ }
+ },
+ "node_modules/@sanity/mutate": {
+ "version": "0.11.0-canary.3",
+ "resolved": "https://registry.npmjs.org/@sanity/mutate/-/mutate-0.11.0-canary.3.tgz",
+ "integrity": "sha512-zZQo3rsjsTZBlRi+D3S90MebvzWNtdRzb6A0s07gEO2PtCtc5LEUSyPCLvIZiv6e2YMjBmMmuref4IB8VixKnw==",
+ "dependencies": {
+ "@sanity/client": "^6.22.4",
+ "@sanity/diff-match-patch": "^3.1.1",
+ "hotscript": "^1.0.13",
+ "lodash": "^4.17.21",
+ "mendoza": "^3.0.7",
+ "rxjs": "^7.8.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "xstate": "^5.19.0"
+ },
+ "peerDependenciesMeta": {
+ "xstate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sanity/mutator": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/mutator/-/mutator-3.67.1.tgz",
+ "integrity": "sha512-zy3gMZ1xPZcGcw5/D5PWMO+OF6XCBr9HWAyUo+JOnB7/tLAK7PeDkIr/4Feo4wk/7XQacq4NA+EM1+zO5VRB/Q==",
+ "dependencies": {
+ "@sanity/diff-match-patch": "^3.1.1",
+ "@sanity/types": "3.67.1",
+ "@sanity/uuid": "^3.0.1",
+ "debug": "^4.3.4",
+ "lodash": "^4.17.21"
+ }
+ },
+ "node_modules/@sanity/next-loader": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@sanity/next-loader/-/next-loader-1.2.5.tgz",
+ "integrity": "sha512-9Ldq+iRfRINSGgL0SvqAEpG1EQKQ/4MqJGiixLSL/tsRr0uv278jsU8aNkDK3EJfa2bfF3m+l+nPnV+vza8hGA==",
+ "dependencies": {
+ "@sanity/client": "^6.24.1",
+ "@sanity/comlink": "2.0.1",
+ "use-effect-event": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=18.18"
+ },
+ "peerDependencies": {
+ "next": "^14.1 || ^15.0.0-0",
+ "react": "^18.3 || ^19.0.0-0"
+ }
+ },
+ "node_modules/@sanity/orderable-document-list": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@sanity/orderable-document-list/-/orderable-document-list-1.2.2.tgz",
+ "integrity": "sha512-AN/dBUZoqJ0UZ4ixbRl2apZ0RCOhiYSH2BdnJvAkyazT2Ey3nsvLQbuNp53nYh9vwDtqaCw5x9g+Tr4iGCWbgQ==",
+ "dependencies": {
+ "@hello-pangea/dnd": "^16.2.0",
+ "@sanity/icons": "^2.4.1",
+ "@sanity/incompatible-plugin": "^1.0.4",
+ "@sanity/ui": "^1.7.1",
+ "lexorank": "^1.0.4",
+ "prop-types": "^15.8.1",
+ "sanity-plugin-utils": "^1.6.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@sanity/ui": "^1.0 || ^2.0",
+ "react": "^18",
+ "react-dom": "^18",
+ "sanity": "^3.0.0",
+ "styled-components": "^5.0 || ^6.0"
+ }
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/@floating-ui/react-dom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.0.tgz",
+ "integrity": "sha512-Ke0oU3SeuABC2C4OFu2mSAwHIP5WUiV98O9YWoHV4Q5aT6E9k06DV0Khi5uYspR8xmmBk08t8ZDcz3TR3ARkEg==",
+ "dependencies": {
+ "@floating-ui/dom": "^1.2.7"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/@sanity/color": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@sanity/color/-/color-2.2.5.tgz",
+ "integrity": "sha512-tTi22KoKuER3sldXYl4c1Dq2zU7tMLDkljFiaUKVkBbu4PBvRGCFw75kXZnD2b4Bsp6vin+7sI+AKdCKRhfRuw=="
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/@sanity/icons": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@sanity/icons/-/icons-2.11.8.tgz",
+ "integrity": "sha512-C4ViXtk6eyiNTQ5OmxpfmcK6Jw+LLTi9zg9XBUD15DzC4xTHaGW9SVfUa43YtPGs3WC3M0t0K59r0GDjh52HIg==",
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18"
+ }
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/@sanity/ui": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@sanity/ui/-/ui-1.9.3.tgz",
+ "integrity": "sha512-AdWEVFaK0Snk6xxP0lGPVP3QQYKwzkfGFpFZnL9d6UtWt8yeuS8BMLVAzmXzg14hrqH50ex9nvNl3eq6a0MWiw==",
+ "dependencies": {
+ "@floating-ui/react-dom": "2.0.0",
+ "@sanity/color": "^2.2.5",
+ "@sanity/icons": "^2.4.1",
+ "csstype": "^3.1.2",
+ "framer-motion": "^10.16.2",
+ "react-refractor": "^2.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18",
+ "react-dom": "^18",
+ "react-is": "^18",
+ "styled-components": "^5.2 || ^6"
+ }
+ },
+ "node_modules/@sanity/orderable-document-list/node_modules/framer-motion": {
+ "version": "10.18.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz",
+ "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sanity/presentation": {
+ "version": "1.19.8",
+ "resolved": "https://registry.npmjs.org/@sanity/presentation/-/presentation-1.19.8.tgz",
+ "integrity": "sha512-LlnkCaiDeYq9Zhm2KHNFHXfhpHSyUR8he1a1G9cVGObGzqA/St2XudMZfJUVanSyNKT3FkxkFOin1DNVlH1lqQ==",
+ "dependencies": {
+ "@sanity/client": "^6.24.1",
+ "@sanity/comlink": "2.0.1",
+ "@sanity/icons": "^3.5.0",
+ "@sanity/logos": "^2.1.13",
+ "@sanity/preview-url-secret": "2.0.5",
+ "@sanity/ui": "^2.9.1",
+ "@sanity/uuid": "3.0.2",
+ "fast-deep-equal": "3.1.3",
+ "framer-motion": "11.0.8",
+ "lodash": "^4.17.21",
+ "mendoza": "3.0.8",
+ "mnemonist": "0.39.8",
+ "path-to-regexp": "^6.3.0",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206",
+ "rxjs": "^7.8.1",
+ "suspend-react": "0.1.3",
+ "use-effect-event": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=16.14"
+ }
+ },
+ "node_modules/@sanity/presentation/node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "node_modules/@sanity/presentation/node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
+ "node_modules/@sanity/presentation/node_modules/framer-motion": {
+ "version": "11.0.8",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.0.8.tgz",
+ "integrity": "sha512-1KSGNuqe1qZkS/SWQlDnqK2VCVzRVEoval379j0FiUBJAZoqgwyvqFkfvJbgW2IPFo4wX16K+M0k5jO23lCIjA==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sanity/preview-kit": {
+ "version": "5.1.23",
+ "resolved": "https://registry.npmjs.org/@sanity/preview-kit/-/preview-kit-5.1.23.tgz",
+ "integrity": "sha512-3qgf6kEB0a2iOrRFnkoIZxpYWwTkRKWM6lMn7+PiIixUMaF5cJqn7knrk2m4iULb8S+MqdSdBn7Mfx1YZ7Y4SA==",
+ "dependencies": {
+ "@sanity/preview-kit-compat": "1.5.25",
+ "mendoza": "3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@sanity/client": "^6.24.1",
+ "react": "^18.0.0 || >=19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@sanity/preview-kit-compat": {
+ "version": "1.5.25",
+ "resolved": "https://registry.npmjs.org/@sanity/preview-kit-compat/-/preview-kit-compat-1.5.25.tgz",
+ "integrity": "sha512-ghOAnT1TPidgbr36oVOaHgfEUq7vQhYgWdhW+IOSplQAzqGyzaWiE0CvWOfdSAm3RjMBwPdc+JDQLtSQq+X2jg==",
+ "dependencies": {
+ "@sanity/comlink": "2.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@sanity/client": "^6.24.1",
+ "react": "^18.3 || >=19.0.0-rc"
+ }
+ },
+ "node_modules/@sanity/preview-url-secret": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@sanity/preview-url-secret/-/preview-url-secret-2.0.5.tgz",
+ "integrity": "sha512-YWExuJ/Z0CW37vYdiouE9A/NAN3QEewZL6qu6IohXqVY6wDDT0b9ubetTR4Op1kzmK6WbPGj79aiHrPubrM70A==",
+ "dependencies": {
+ "@sanity/uuid": "3.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@sanity/client": "^6.23.0"
+ }
+ },
+ "node_modules/@sanity/schema": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/schema/-/schema-3.67.1.tgz",
+ "integrity": "sha512-yjlxsfClQgi7941/WeqRV8q2FZYnFsj/TDmrP0IAgsg4cs30o5jqLyJ2UGDcKfTGeYb9cW2xtNl9q8LgOrI4bw==",
+ "dependencies": {
+ "@sanity/generate-help-url": "^3.0.0",
+ "@sanity/types": "3.67.1",
+ "arrify": "^1.0.1",
+ "groq-js": "^1.14.2",
+ "humanize-list": "^1.0.1",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.21",
+ "object-inspect": "^1.13.1"
+ }
+ },
+ "node_modules/@sanity/telemetry": {
+ "version": "0.7.9",
+ "resolved": "https://registry.npmjs.org/@sanity/telemetry/-/telemetry-0.7.9.tgz",
+ "integrity": "sha512-TBBRK2SUwiNND+ZJPwdWSu8tbEjdIz7UjagmCCBBWcfXtDKXXlWawC/DOEWuI4Q+WcA5OWLDjboxZT4ApWjVbw==",
+ "dependencies": {
+ "lodash": "^4.17.21",
+ "rxjs": "^7.8.1",
+ "typeid-js": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2 || >=19.0.0-rc"
+ }
+ },
+ "node_modules/@sanity/types": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/types/-/types-3.67.1.tgz",
+ "integrity": "sha512-zK9kazYnwN8X5TLZrmhIgTCiRJKCYg4B9soSFcX1SxZUP90cJpF7MCWh5p73f/9JgZA1nzkolHU4p0GAk5d0zA==",
+ "dependencies": {
+ "@sanity/client": "^6.24.1",
+ "@types/react": "^18.3.5"
+ }
+ },
+ "node_modules/@sanity/ui": {
+ "version": "2.10.9",
+ "resolved": "https://registry.npmjs.org/@sanity/ui/-/ui-2.10.9.tgz",
+ "integrity": "sha512-pNjalR+On4tI/F6VGMzE07Jig0X6pPOeYqTZrTGo6ebCMXuzhSOqjm+bJx56z8OTNcjWihIi2G3U4t7/HJ4kIA==",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.2",
+ "@sanity/color": "^3.0.6",
+ "@sanity/icons": "^3.5.2",
+ "csstype": "^3.1.3",
+ "framer-motion": "^11.13.5",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206",
+ "react-refractor": "^2.2.0",
+ "use-effect-event": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18 || >=19.0.0-0",
+ "react-dom": "^18 || >=19.0.0-0",
+ "react-is": "^18 || >=19.0.0-0",
+ "styled-components": "^5.2 || ^6"
+ }
+ },
+ "node_modules/@sanity/util": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/util/-/util-3.67.1.tgz",
+ "integrity": "sha512-OnjxmwJfuJm4LGmyNoVMsmh8vwzaXaWiAmoOQ4gMaxkEOPPZQTkOTA7GB8XcYEwCLBTcsUlOhcX2/a90aI6slQ==",
+ "dependencies": {
+ "@sanity/client": "^6.24.1",
+ "@sanity/types": "3.67.1",
+ "get-random-values-esm": "1.0.2",
+ "moment": "^2.30.1",
+ "rxjs": "^7.8.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@sanity/uuid": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@sanity/uuid/-/uuid-3.0.2.tgz",
+ "integrity": "sha512-vzdhqOrX7JGbMyK40KuIwwyXHm7GMLOGuYgn3xlC09e4ZVNofUO5mgezQqnRv0JAMthIRhofqs9f6ufUjMKOvw==",
+ "dependencies": {
+ "@types/uuid": "^8.0.0",
+ "uuid": "^8.0.0"
+ }
+ },
+ "node_modules/@sanity/uuid/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/@sanity/vision": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/@sanity/vision/-/vision-3.67.1.tgz",
+ "integrity": "sha512-dxB+BPu3vau5VQSxwcRQV6CVSzW+ej01ZqsiA4W9C+tjQXEeLYG1deFGomx9/nd0SwtnHDcHSnf9p+B2kTt60g==",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.1.0",
+ "@codemirror/commands": "^6.0.1",
+ "@codemirror/lang-javascript": "^6.0.2",
+ "@codemirror/language": "^6.2.1",
+ "@codemirror/search": "^6.0.1",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.1.1",
+ "@juggle/resize-observer": "^3.3.1",
+ "@lezer/highlight": "^1.0.0",
+ "@rexxars/react-json-inspector": "^8.0.1",
+ "@rexxars/react-split-pane": "^0.1.93",
+ "@sanity/color": "^3.0.0",
+ "@sanity/icons": "^3.5.2",
+ "@sanity/ui": "^2.10.7",
+ "@uiw/react-codemirror": "^4.11.4",
+ "is-hotkey-esm": "^1.0.0",
+ "json-2-csv": "^5.5.1",
+ "json5": "^2.2.3",
+ "lodash": "^4.17.21",
+ "quick-lru": "^5.1.1",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19.0.0",
+ "styled-components": "^6.1"
+ }
+ },
+ "node_modules/@sanity/visual-editing": {
+ "version": "2.10.6",
+ "resolved": "https://registry.npmjs.org/@sanity/visual-editing/-/visual-editing-2.10.6.tgz",
+ "integrity": "sha512-+edG4S6o4s7VOJJMSLDHea1X7tds566bfgG5aHEdLqkV9RFd8Bkri5IoWtffKXfPQa9GfoozqsYQzVNPhaEPGw==",
+ "dependencies": {
+ "@sanity/comlink": "2.0.1",
+ "@sanity/mutate": "0.11.0-canary.3",
+ "@sanity/preview-url-secret": "2.0.5",
+ "@vercel/stega": "0.1.2",
+ "get-random-values-esm": "^1.0.2",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206",
+ "rxjs": "^7.8.1",
+ "scroll-into-view-if-needed": "^3.1.0",
+ "use-effect-event": "^1.0.2",
+ "valibot": "0.31.1",
+ "xstate": "^5.19.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@remix-run/react": ">= 2",
+ "@sanity/client": "^6.24.1",
+ "@sveltejs/kit": ">= 2",
+ "next": ">= 13 || >=14.3.0-canary.0 <14.3.0 || >=15.0.0-rc",
+ "react": "^18.3 || >=19.0.0-rc",
+ "react-dom": "^18.3 || >=19.0.0-rc",
+ "react-router": ">= 7",
+ "svelte": ">= 4"
+ },
+ "peerDependenciesMeta": {
+ "@remix-run/react": {
+ "optional": true
+ },
+ "@sanity/client": {
+ "optional": true
+ },
+ "@sveltejs/kit": {
+ "optional": true
+ },
+ "next": {
+ "optional": true
+ },
+ "react-router": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@selderee/plugin-htmlparser2": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz",
+ "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==",
+ "dependencies": {
+ "domhandler": "^5.0.3",
+ "selderee": "^0.11.0"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/@sentry-internal/browser-utils": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.44.0.tgz",
+ "integrity": "sha512-kmSRdS1r2G3i0wTJJv69uMZqf/UwP3pVqrCq/0hvNaF4L5v+vrEOKTDZghDvCqutEqOFXI0V/l9SuDpgjElcZQ==",
+ "dependencies": {
+ "@sentry/core": "8.44.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/feedback": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.44.0.tgz",
+ "integrity": "sha512-x/7dilh9VRpsPRgx+1kT3Aulgj0X02GF+JfNeaFA2p786+2jBHTupGBu7AGiq1b1YRbDefkFXQxS1MaeqEEeOg==",
+ "dependencies": {
+ "@sentry/core": "8.44.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/replay": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.44.0.tgz",
+ "integrity": "sha512-ZPX3Bg8ShuWZZzL5lw/fHjHdRhxxhhdzsVXq2jItg3CPvuO7oQofZsG4po6vgXTlj+fdtjUMQanj/6Ah4+jwsQ==",
+ "dependencies": {
+ "@sentry-internal/browser-utils": "8.44.0",
+ "@sentry/core": "8.44.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/replay-canvas": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.44.0.tgz",
+ "integrity": "sha512-hFCUHDekuJknzVCu5JnDkgUuOTJbwu82RR+VfbT+2lfIpZoT+gH44LzSH5bQUPXgmznRae4OYHblWAPue9U1Bw==",
+ "dependencies": {
+ "@sentry-internal/replay": "8.44.0",
+ "@sentry/core": "8.44.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry/browser": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.44.0.tgz",
+ "integrity": "sha512-s12u8rz2aYjiWPzoE7StL7fiCS2Z5p5BYmk9bhGDqDWyAPVEVZFUB3u/hwcPUF4yDAroWCbsNzTiBwr813zihg==",
+ "dependencies": {
+ "@sentry-internal/browser-utils": "8.44.0",
+ "@sentry-internal/feedback": "8.44.0",
+ "@sentry-internal/replay": "8.44.0",
+ "@sentry-internal/replay-canvas": "8.44.0",
+ "@sentry/core": "8.44.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry/core": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.44.0.tgz",
+ "integrity": "sha512-C43eW9Mr1WGpxCeI6pXUl7TeTwR2TwWhuU8wHx2s5eoATDQwbjz9l+JXXjVJf5YXXEwNOZL2WAx/f0diLA5rTQ==",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry/react": {
+ "version": "8.44.0",
+ "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.44.0.tgz",
+ "integrity": "sha512-LGqkLC+Sf1iEMmlHTBtCpEoZgwkeXjDDjc1rQjCq/5PG04jrCgXBTTAP7UqoetrYhQLNxtrgkGXmU4CE2BnIBw==",
+ "dependencies": {
+ "@sentry/browser": "8.44.0",
+ "@sentry/core": "8.44.0",
+ "hoist-non-react-statics": "^3.3.2"
+ },
+ "engines": {
+ "node": ">=14.18"
+ },
+ "peerDependencies": {
+ "react": "^16.14.0 || 17.x || 18.x || 19.x"
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
+ "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/@t3-oss/env-core": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@t3-oss/env-core/-/env-core-0.10.1.tgz",
+ "integrity": "sha512-GcKZiCfWks5CTxhezn9k5zWX3sMDIYf6Kaxy2Gx9YEQftFcz8hDRN56hcbylyAO3t4jQnQ5ifLawINsNgCDpOg==",
+ "peerDependencies": {
+ "typescript": ">=5.0.0",
+ "zod": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@t3-oss/env-nextjs": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@t3-oss/env-nextjs/-/env-nextjs-0.10.1.tgz",
+ "integrity": "sha512-iy2qqJLnFh1RjEWno2ZeyTu0ufomkXruUsOZludzDIroUabVvHsrSjtkHqwHp1/pgPUzN3yBRHMILW162X7x2Q==",
+ "dependencies": {
+ "@t3-oss/env-core": "0.10.1"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.0",
+ "zod": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@tanstack/query-core": {
+ "version": "5.62.7",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.7.tgz",
+ "integrity": "sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "5.62.7",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.7.tgz",
+ "integrity": "sha512-+xCtP4UAFDTlRTYyEjLx0sRtWyr5GIk7TZjZwBu4YaNahi3Rt2oMyRqfpfVrtwsqY2sayP4iXVCwmC+ZqqFmuw==",
+ "dependencies": {
+ "@tanstack/query-core": "5.62.7"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19"
+ }
+ },
+ "node_modules/@tanstack/react-table": {
+ "version": "8.20.5",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz",
+ "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==",
+ "dependencies": {
+ "@tanstack/table-core": "8.20.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tanstack/react-virtual": {
+ "version": "3.0.0-beta.54",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.0.0-beta.54.tgz",
+ "integrity": "sha512-D1mDMf4UPbrtHRZZriCly5bXTBMhylslm4dhcHqTtDJ6brQcgGmk8YD9JdWBGWfGSWPKoh2x1H3e7eh+hgPXtQ==",
+ "dependencies": {
+ "@tanstack/virtual-core": "3.0.0-beta.54"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@tanstack/table-core": {
+ "version": "8.20.5",
+ "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz",
+ "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/virtual-core": {
+ "version": "3.0.0-beta.54",
+ "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.0.0-beta.54.tgz",
+ "integrity": "sha512-jtkwqdP2rY2iCCDVAFuaNBH3fiEi29aTn2RhtIoky8DTTiCdc48plpHHreLwmv1PICJ4AJUUESaq3xa8fZH8+g==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@trpc/client": {
+ "version": "11.0.0-rc.660",
+ "resolved": "https://registry.npmjs.org/@trpc/client/-/client-11.0.0-rc.660.tgz",
+ "integrity": "sha512-bNpkZEfyMGKHynYFxdLpY8nJ1n7E3JHKcd4Pe2cagmpkzOEF9tFT3kzNf+eLI8XMG8196lTRR0J0W2/1Q8/cug==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "peerDependencies": {
+ "@trpc/server": "11.0.0-rc.660+74625d5e4",
+ "typescript": ">=5.6.2"
+ }
+ },
+ "node_modules/@trpc/react-query": {
+ "version": "11.0.0-rc.660",
+ "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-11.0.0-rc.660.tgz",
+ "integrity": "sha512-U2BHtYVt+8jt0a8Nrrk5cep8O1UZRxtTCBHtXie9kmJyQWWml43KfHxL5ssnFywaFrDZQz6Ec7kIoOxR/CQNfg==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "peerDependencies": {
+ "@tanstack/react-query": "^5.59.15",
+ "@trpc/client": "11.0.0-rc.660+74625d5e4",
+ "@trpc/server": "11.0.0-rc.660+74625d5e4",
+ "react": ">=18.2.0",
+ "react-dom": ">=18.2.0",
+ "typescript": ">=5.6.2"
+ }
+ },
+ "node_modules/@trpc/server": {
+ "version": "11.0.0-rc.660",
+ "resolved": "https://registry.npmjs.org/@trpc/server/-/server-11.0.0-rc.660.tgz",
+ "integrity": "sha512-QUapcZCNOpHT7ng9LceGc9ImkboWd0Go9ryrduZpL+p4jdfaC6409AQ3x4XEW6Wu3yBmZAn4CywCsDrDhjDy/w==",
+ "funding": [
+ "https://trpc.io/sponsor"
+ ],
+ "peerDependencies": {
+ "typescript": ">=5.6.2"
+ }
+ },
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
+ "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/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.56.12",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz",
+ "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="
+ },
+ "node_modules/@types/event-source-polyfill": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/event-source-polyfill/-/event-source-polyfill-1.0.5.tgz",
+ "integrity": "sha512-iaiDuDI2aIFft7XkcwMzDWLqo7LVDixd2sR6B4wxJut9xcp/Ev9bO4EFg4rm6S9QxATLBj5OPxdeocgmhjwKaw=="
+ },
+ "node_modules/@types/eventsource": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.15.tgz",
+ "integrity": "sha512-XQmGcbnxUNa06HR3VBVkc9+A2Vpi9ZyLJcdS5dwaQQ/4ZMWFO+5c90FnMUpbtMZwB/FChoYHwuVg8TvkECacTA=="
+ },
+ "node_modules/@types/follow-redirects": {
+ "version": "1.14.4",
+ "resolved": "https://registry.npmjs.org/@types/follow-redirects/-/follow-redirects-1.14.4.tgz",
+ "integrity": "sha512-GWXfsD0Jc1RWiFmMuMFCpXMzi9L7oPDVwxUnZdg89kDNnqsRfUKXEtUYtA98A6lig1WXH/CYY/fvPW9HuN5fTA==",
+ "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/hoist-non-react-statics": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz",
+ "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.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==",
+ "dev": true
+ },
+ "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/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag=="
+ },
+ "node_modules/@types/node": {
+ "version": "20.17.10",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz",
+ "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="
+ },
+ "node_modules/@types/progress-stream": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/progress-stream/-/progress-stream-2.0.5.tgz",
+ "integrity": "sha512-5YNriuEZkHlFHHepLIaxzq3atGeav1qCTGzB74HKWpo66qjfostF+rHc785YYYHeBytve8ZG3ejg42jEIfXNiQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.14",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
+ "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.16",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.16.tgz",
+ "integrity": "sha512-oh8AMIC4Y2ciKufU8hnKgs+ufgbA/dhPTACaZPM86AbwX9QwnFtSoPWEeRUj8fge+v6kFt78BXcDhAU1SrrAsw==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-copy-to-clipboard": {
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.7.tgz",
+ "integrity": "sha512-Gft19D+as4M+9Whq1oglhmK49vqPhcLzk8WfvfLvaYMIPYanyfLy0+CwFucMJfdKoSFyySPmkkWn8/E6voQXjQ==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.5",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz",
+ "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==",
+ "devOptional": true,
+ "peerDependencies": {
+ "@types/react": "^18.0.0"
+ }
+ },
+ "node_modules/@types/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-zts4lhQn5ia0cF/y2+3V6Riu0MAfez9/LJYavdM8TvcVl+S91A/7VWxyBT8hbRuWspmuCaiGI0F41OJYGrKhRA==",
+ "dependencies": {
+ "@types/react": "^18"
+ }
+ },
+ "node_modules/@types/react-syntax-highlighter": {
+ "version": "15.5.13",
+ "resolved": "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-15.5.13.tgz",
+ "integrity": "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/shallow-equals": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@types/shallow-equals/-/shallow-equals-1.0.3.tgz",
+ "integrity": "sha512-xZx/hZsf1p9J5lGN/nGTsuW/chJCdlyGxilwg1TS78rygBCU5bpY50zZiFcIimlnl0p41kAyaASsy0bqU7WyBA=="
+ },
+ "node_modules/@types/speakingurl": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/@types/speakingurl/-/speakingurl-13.0.6.tgz",
+ "integrity": "sha512-ywkRHNHBwq0mFs/2HRgW6TEBAzH66G8f2Txzh1aGR0UC9ZoAUHfHxLZGDhwMpck4BpSnB61eNFIFmlV+TJ+KUA=="
+ },
+ "node_modules/@types/stripe": {
+ "version": "8.0.417",
+ "resolved": "https://registry.npmjs.org/@types/stripe/-/stripe-8.0.417.tgz",
+ "integrity": "sha512-PTuqskh9YKNENnOHGVJBm4sM0zE8B1jZw1JIskuGAPkMB+OH236QeN8scclhYGPA4nG6zTtPXgwpXdp+HPDTVw==",
+ "deprecated": "This is a stub types definition. stripe provides its own type definitions, so you do not need this installed.",
+ "dev": true,
+ "dependencies": {
+ "stripe": "*"
+ }
+ },
+ "node_modules/@types/stylis": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz",
+ "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw=="
+ },
+ "node_modules/@types/tar-stream": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.3.tgz",
+ "integrity": "sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/unist": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
+ },
+ "node_modules/@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
+ "node_modules/@types/uuid": {
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
+ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw=="
+ },
+ "node_modules/@types/xml2js": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz",
+ "integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz",
+ "integrity": "sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.18.0",
+ "@typescript-eslint/type-utils": "8.18.0",
+ "@typescript-eslint/utils": "8.18.0",
+ "@typescript-eslint/visitor-keys": "8.18.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz",
+ "integrity": "sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.18.0",
+ "@typescript-eslint/types": "8.18.0",
+ "@typescript-eslint/typescript-estree": "8.18.0",
+ "@typescript-eslint/visitor-keys": "8.18.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz",
+ "integrity": "sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.18.0",
+ "@typescript-eslint/visitor-keys": "8.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz",
+ "integrity": "sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.18.0",
+ "@typescript-eslint/utils": "8.18.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.0.tgz",
+ "integrity": "sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz",
+ "integrity": "sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.18.0",
+ "@typescript-eslint/visitor-keys": "8.18.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.8.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz",
+ "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.18.0",
+ "@typescript-eslint/types": "8.18.0",
+ "@typescript-eslint/typescript-estree": "8.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.8.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz",
+ "integrity": "sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "8.18.0",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@uiw/codemirror-extensions-basic-setup": {
+ "version": "4.23.6",
+ "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.6.tgz",
+ "integrity": "sha512-bvtq8IOvdkLJMhoJBRGPEzU51fMpPDwEhcAHp9xCR05MtbIokQgsnLXrmD1aZm6e7s/3q47H+qdSfAAkR5MkLA==",
+ "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-themes": {
+ "version": "4.23.6",
+ "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.23.6.tgz",
+ "integrity": "sha512-0dpuLQW+V6zrKvfvor/eo71V3tpr2L2Hsu8QZAdtSzksjWABxTOzH3ShaBRxCEsrz6sU9sa9o7ShwBMMDz59bQ==",
+ "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.23.6",
+ "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.23.6.tgz",
+ "integrity": "sha512-caYKGV6TfGLRV1HHD3p0G3FiVzKL1go7wes5XT2nWjB0+dTdyzyb81MKRSacptgZcotujfNO6QXn65uhETRAMw==",
+ "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.23.6",
+ "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.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
+ "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
+ "dev": true
+ },
+ "node_modules/@vercel/speed-insights": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.1.0.tgz",
+ "integrity": "sha512-rAXxuhhO4mlRGC9noa5F7HLMtGg8YF1zAN6Pjd1Ny4pII4cerhtwSG4vympbCl+pWkH7nBS9kVXRD4FAn54dlg==",
+ "hasInstallScript": true,
+ "peerDependencies": {
+ "@sveltejs/kit": "^1 || ^2",
+ "next": ">= 13",
+ "react": "^18 || ^19 || ^19.0.0-rc",
+ "svelte": ">= 4",
+ "vue": "^3",
+ "vue-router": "^4"
+ },
+ "peerDependenciesMeta": {
+ "@sveltejs/kit": {
+ "optional": true
+ },
+ "next": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ },
+ "vue-router": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vercel/stega": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@vercel/stega/-/stega-0.1.2.tgz",
+ "integrity": "sha512-P7mafQXjkrsoyTRppnt0N21udKS9wUmLXHRyP9saLXLHw32j/FgUJ3FscSWgvSqRs4cj7wKZtwqJEvWJ2jbGmA=="
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
+ "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==",
+ "dependencies": {
+ "@babel/core": "^7.26.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-source": "^7.25.9",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.14.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
+ }
+ },
+ "node_modules/@xstate/react": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@xstate/react/-/react-5.0.0.tgz",
+ "integrity": "sha512-MkYMpmqqCdK43wSl/V/jSpsvumzV4RSG2ZOUEAIrg/w36BJpyufMrsR0rz7POX5ICF5s3xzP9q7Hd5TyM5SSyQ==",
+ "dependencies": {
+ "use-isomorphic-layout-effect": "^1.1.2",
+ "use-sync-external-store": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-0",
+ "xstate": "^5.19.0"
+ },
+ "peerDependenciesMeta": {
+ "xstate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "devOptional": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+ "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+ "devOptional": true,
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
+ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "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/archiver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz",
+ "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==",
+ "dependencies": {
+ "archiver-utils": "^5.0.2",
+ "async": "^3.2.4",
+ "buffer-crc32": "^1.0.0",
+ "readable-stream": "^4.0.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^3.0.0",
+ "zip-stream": "^6.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/archiver-utils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz",
+ "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==",
+ "dependencies": {
+ "glob": "^10.0.0",
+ "graceful-fs": "^4.2.0",
+ "is-stream": "^2.0.1",
+ "lazystream": "^1.0.0",
+ "lodash": "^4.17.15",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/archiver-utils/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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==",
+ "dev": true
+ },
+ "node_modules/aria-hidden": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz",
+ "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "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.findlast": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+ "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "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.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
+ },
+ "node_modules/async-mutex": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
+ "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "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/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axe-core": {
+ "version": "4.10.2",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz",
+ "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.7.9",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+ "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
+ "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.12",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz",
+ "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.3",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz",
+ "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "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/bare-events": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz",
+ "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==",
+ "optional": true
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "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/base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "engines": {
+ "node": "^4.5.0 || >= 5.9"
+ }
+ },
+ "node_modules/bidi-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
+ "dependencies": {
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+ },
+ "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/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==",
+ "dependencies": {
+ "pako": "~0.2.0"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
+ "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+ "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.30001669",
+ "electron-to-chromium": "^1.5.41",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.1"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "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": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "node_modules/buffer-crc32": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz",
+ "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
+ },
+ "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=="
+ },
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ=="
+ },
+ "node_modules/bundle-require": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz",
+ "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==",
+ "dev": true,
+ "dependencies": {
+ "load-tsconfig": "^0.2.3"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.17"
+ }
+ },
+ "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/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
+ "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.2.tgz",
+ "integrity": "sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "get-intrinsic": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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==",
+ "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/camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-keys/node_modules/quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001688",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz",
+ "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==",
+ "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/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/character-entities": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
+ "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
+ "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
+ "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "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/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/class-variance-authority": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
+ "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==",
+ "dependencies": {
+ "clsx": "^2.1.1"
+ },
+ "funding": {
+ "url": "https://polar.sh/cva"
+ }
+ },
+ "node_modules/classnames": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
+ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "optional": true,
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "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/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "optional": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/color2k": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz",
+ "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog=="
+ },
+ "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": "1.0.8",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
+ "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ },
+ "node_modules/compress-commons": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz",
+ "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "crc32-stream": "^6.0.0",
+ "is-stream": "^2.0.1",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz",
+ "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "engines": [
+ "node >= 6.0"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/concat-stream/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/configstore/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/console-table-printer": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.12.1.tgz",
+ "integrity": "sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==",
+ "dependencies": {
+ "simple-wcswidth": "^1.0.1"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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=="
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/copy-anything": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
+ "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
+ "dependencies": {
+ "is-what": "^4.1.8"
+ },
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/copy-to-clipboard": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+ "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+ "dependencies": {
+ "toggle-selection": "^1.0.6"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.39.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
+ "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
+ "dependencies": {
+ "browserslist": "^4.24.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/crc32-stream": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz",
+ "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/create-react-class": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
+ "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
+ "dependencies": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "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.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/css-box-model": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz",
+ "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
+ "dependencies": {
+ "tiny-invariant": "^1.0.6"
+ }
+ },
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "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/cssstyle": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz",
+ "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==",
+ "dependencies": {
+ "rrweb-cssom": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cssstyle/node_modules/rrweb-cssom": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
+ "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg=="
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/cyclist": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz",
+ "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA=="
+ },
+ "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": "1.2.0",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz",
+ "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ=="
+ },
+ "node_modules/data-urls": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
+ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+ "dependencies": {
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dataloader": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz",
+ "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA=="
+ },
+ "node_modules/date-fns": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
+ "node_modules/date-now": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-1.0.1.tgz",
+ "integrity": "sha512-yiizelQCqYLUEVT4zqYihOW6Ird7Qyc6fD3Pv5xGxk4+Jz0rsB1dMN2KyNV6jgOHYh5K+sPGCSOknQN4Upa3pg=="
+ },
+ "node_modules/debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.0.0.tgz",
+ "integrity": "sha512-4FCfBL8uZFIh3BShn4AlxH4O9F5v+CVriJfiwW8Me/MhO7NqBE5JO5WO48NasbsY9Lww/KYflB79MejA3eKhxw==",
+ "dependencies": {
+ "date-now": "1.0.1"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
+ "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
+ "dependencies": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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=="
+ },
+ "node_modules/decompress": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
+ "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
+ "dependencies": {
+ "decompress-tar": "^4.0.0",
+ "decompress-tarbz2": "^4.0.0",
+ "decompress-targz": "^4.0.0",
+ "decompress-unzip": "^4.0.1",
+ "graceful-fs": "^4.1.10",
+ "make-dir": "^1.0.0",
+ "pify": "^2.3.0",
+ "strip-dirs": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-7.0.0.tgz",
+ "integrity": "sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-tar": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
+ "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
+ "dependencies": {
+ "file-type": "^5.2.0",
+ "is-stream": "^1.1.0",
+ "tar-stream": "^1.5.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/bl": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+ "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+ "dependencies": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/decompress-tar/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/decompress-tar/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/tar-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+ "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "dependencies": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.2.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.1",
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/decompress-tarbz2": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
+ "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
+ "dependencies": {
+ "decompress-tar": "^4.1.0",
+ "file-type": "^6.1.0",
+ "is-stream": "^1.1.0",
+ "seek-bzip": "^1.0.5",
+ "unbzip2-stream": "^1.0.9"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-tarbz2/node_modules/file-type": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
+ "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-tarbz2/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-targz": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
+ "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
+ "dependencies": {
+ "decompress-tar": "^4.1.1",
+ "file-type": "^5.2.0",
+ "is-stream": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-targz/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-unzip": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
+ "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
+ "dependencies": {
+ "file-type": "^3.8.0",
+ "get-stream": "^2.2.0",
+ "pify": "^2.3.0",
+ "yauzl": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-unzip/node_modules/file-type": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
+ "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress/node_modules/make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/deeks": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/deeks/-/deeks-3.1.0.tgz",
+ "integrity": "sha512-e7oWH1LzIdv/prMQ7pmlDlaVoL64glqzvNgkgQNgyec9ORPHrT2jaOqMtRyqJuwWjtfb6v+2rk9pmaHj+F137A==",
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "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/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "optional": 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/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/direction": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz",
+ "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==",
+ "bin": {
+ "direction": "cli.js"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
+ },
+ "node_modules/doc-path": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/doc-path/-/doc-path-4.1.1.tgz",
+ "integrity": "sha512-h1ErTglQAVv2gCnOpD3sFS6uolDbOKHDU1BZq+Kl3npPqroU3dYL42lUgMfd5UimlwtRgp7C9dLGwqQ5D2HYgQ==",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz",
+ "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/duplexify": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
+ "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
+ "dependencies": {
+ "end-of-stream": "^1.4.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1",
+ "stream-shift": "^1.0.2"
+ }
+ },
+ "node_modules/duplexify/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "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.5.73",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz",
+ "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg=="
+ },
+ "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/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/engine.io": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz",
+ "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==",
+ "dependencies": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.7.2",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "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/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "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/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==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
+ "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
+ "dev": true,
+ "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.4",
+ "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.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.3",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz",
+ "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==",
+ "dev": true,
+ "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.4",
+ "gopd": "^1.0.1",
+ "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.3",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "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.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
+ },
+ "node_modules/esbuild-register": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz",
+ "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.12 <1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@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": "15.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.1.0.tgz",
+ "integrity": "sha512-gADO+nKVseGso3DtOrYX9H7TxB/MuX7AUYhMlvQMqLYvUWu4HrOQuU7cC1HW74tHIqkAvXdwgAz3TCbczzSEXw==",
+ "dev": true,
+ "dependencies": {
+ "@next/eslint-plugin-next": "15.1.0",
+ "@rushstack/eslint-patch": "^1.10.3",
+ "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.31.0",
+ "eslint-plugin-jsx-a11y": "^6.10.0",
+ "eslint-plugin-react": "^7.37.0",
+ "eslint-plugin-react-hooks": "^5.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0 || ^9.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.7.0",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.7.0.tgz",
+ "integrity": "sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==",
+ "dev": true,
+ "dependencies": {
+ "@nolyfill/is-core-module": "1.0.39",
+ "debug": "^4.3.7",
+ "enhanced-resolve": "^5.15.0",
+ "fast-glob": "^3.3.2",
+ "get-tsconfig": "^4.7.5",
+ "is-bun-module": "^1.0.2",
+ "is-glob": "^4.0.3",
+ "stable-hash": "^0.0.4"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*",
+ "eslint-plugin-import-x": "*"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-import": {
+ "optional": true
+ },
+ "eslint-plugin-import-x": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
+ "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.31.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
+ "dev": true,
+ "dependencies": {
+ "@rtsao/scc": "^1.1.0",
+ "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-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.12.0",
+ "hasown": "^2.0.2",
+ "is-core-module": "^2.15.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",
+ "string.prototype.trimend": "^1.0.8",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/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/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz",
+ "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==",
+ "dev": true,
+ "dependencies": {
+ "aria-query": "^5.3.2",
+ "array-includes": "^3.1.8",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "^4.10.0",
+ "axobject-query": "^4.1.0",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.8",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.includes": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.37.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz",
+ "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.1.0",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "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",
+ "string.prototype.repeat": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz",
+ "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==",
+ "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 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/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/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/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-source-polyfill": {
+ "version": "1.0.31",
+ "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz",
+ "integrity": "sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA=="
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/eventsource": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
+ "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz",
+ "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^3.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": "^8.12.0 || >=9.7.0"
+ }
+ },
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/exif-component": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/exif-component/-/exif-component-1.0.1.tgz",
+ "integrity": "sha512-FXnmK9yJYTa3V3G7DE9BRjUJ0pwXMICAxfbsAuKPTuSlFzMZhQbcvvwx0I8ofNJHxz3tfjze+whxcGpfklAWOQ=="
+ },
+ "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-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
+ },
+ "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==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fault": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
+ "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
+ "dependencies": {
+ "format": "^0.2.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
+ "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
+ },
+ "node_modules/file-url": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/file-url/-/file-url-2.0.2.tgz",
+ "integrity": "sha512-x3989K8a1jM6vulMigE8VngH7C5nci0Ks5d9kVjUXmNF28gmiZUNujk5HjwaS8dAzN2QmUfX56riJKgN00dNRw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-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==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
+ "dev": true
+ },
+ "node_modules/flush-write-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-2.0.0.tgz",
+ "integrity": "sha512-uXClqPxT4xW0lcdSBheb2ObVU+kuqUk3Jk64EwieirEXZx9XUrVwp/JuBfKAWaM4T5Td/VL7QLDWPXp/MvGm/g==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "node_modules/flush-write-stream/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/focus-lock": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.3.5.tgz",
+ "integrity": "sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/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/form-data": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "11.15.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.15.0.tgz",
+ "integrity": "sha512-MLk8IvZntxOMg7lDBLw2qgTHHv664bYoYmnFTmE0Gm/FW67aOJk0WM3ctMcG+Xhcv+vh5uyyXwxvxhSeJzSe+w==",
+ "dependencies": {
+ "motion-dom": "^11.14.3",
+ "motion-utils": "^11.14.3",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "node_modules/from2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/from2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/from2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/from2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
+ "node_modules/fs-extra": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/ftp": {
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz",
+ "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==",
+ "dependencies": {
+ "readable-stream": "1.1.x",
+ "xregexp": "2.0.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/ftp/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "node_modules/ftp/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/ftp/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
+ "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==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/geist": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/geist/-/geist-1.3.1.tgz",
+ "integrity": "sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==",
+ "peerDependencies": {
+ "next": ">=13.2.0"
+ }
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz",
+ "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "dunder-proto": "^1.0.0",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "function-bind": "^1.1.2",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-it": {
+ "version": "8.6.5",
+ "resolved": "https://registry.npmjs.org/get-it/-/get-it-8.6.5.tgz",
+ "integrity": "sha512-o1hjPwrb/icm3WJbCweTSq8mKuDfJlqwbFauI+Pdgid99at/BFaBXFBJZE+uqvHyOVARE4z680S44vrDm8SsCw==",
+ "dependencies": {
+ "@types/follow-redirects": "^1.14.4",
+ "@types/progress-stream": "^2.0.5",
+ "decompress-response": "^7.0.0",
+ "follow-redirects": "^1.15.6",
+ "is-retry-allowed": "^2.2.0",
+ "progress-stream": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "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-port-please": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz",
+ "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==",
+ "dev": true
+ },
+ "node_modules/get-random-values": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-random-values/-/get-random-values-1.2.2.tgz",
+ "integrity": "sha512-lMyPjQyl0cNNdDf2oR+IQ/fM3itDvpoHy45Ymo2r0L1EjazeSl13SfbKZs7KtZ/3MDCeueiaJiuOEfKqRTsSgA==",
+ "dependencies": {
+ "global": "^4.4.0"
+ },
+ "engines": {
+ "node": "10 || 12 || >=14"
+ }
+ },
+ "node_modules/get-random-values-esm": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-random-values-esm/-/get-random-values-esm-1.0.2.tgz",
+ "integrity": "sha512-HMSDTgj1HPFAuZG0FqxzHbYt5JeEGDUeT9r1RLXhS6RZQS8rLRjokgjZ0Pd28CN0lhXlRwfH6eviZqZEJ2kIoA==",
+ "dependencies": {
+ "get-random-values": "^1.2.2"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+ "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
+ "dependencies": {
+ "object-assign": "^4.0.1",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz",
+ "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz",
+ "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==",
+ "dependencies": {
+ "data-uri-to-buffer": "1",
+ "debug": "2",
+ "extend": "~3.0.2",
+ "file-uri-to-path": "1",
+ "ftp": "~0.3.10",
+ "readable-stream": "2"
+ }
+ },
+ "node_modules/get-uri/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/get-uri/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/get-uri/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/get-uri/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/get-uri/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/get-uri/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "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/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "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.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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==",
+ "dev": true
+ },
+ "node_modules/groq": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/groq/-/groq-3.67.1.tgz",
+ "integrity": "sha512-3plMQ9IRhz5EQ8cI3HEcEPHk7Y7eceU0Zw3N5m+8Lg/VufCd+RNV10Pqi9ph7Ti1m2ew35tJ969Jx1AW4bk/Pg==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/groq-js": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/groq-js/-/groq-js-1.14.2.tgz",
+ "integrity": "sha512-1CtOqgATOhmB6jRKL6zvojb2Vt8aP2y6m/7ZN4JlpFhyB/d8WRW3/kZgapIUHys6/Vrkk1oTbjjDbxNL8QxHSQ==",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/gunzip-maybe": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz",
+ "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==",
+ "dependencies": {
+ "browserify-zlib": "^0.1.4",
+ "is-deflate": "^1.0.0",
+ "is-gzip": "^1.0.0",
+ "peek-stream": "^1.1.0",
+ "pumpify": "^1.3.3",
+ "through2": "^2.0.3"
+ },
+ "bin": {
+ "gunzip-maybe": "bin.js"
+ }
+ },
+ "node_modules/hard-rejection": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "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.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
+ "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
+ "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "comma-separated-tokens": "^1.0.0",
+ "hast-util-parse-selector": "^2.0.0",
+ "property-information": "^5.0.0",
+ "space-separated-tokens": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/highlightjs-vue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz",
+ "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA=="
+ },
+ "node_modules/history": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.6"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/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/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/hotscript": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/hotscript/-/hotscript-1.0.13.tgz",
+ "integrity": "sha512-C++tTF1GqkGYecL+2S1wJTfoH6APGAsbb7PAWQ3iVIwgG/EFseAfEVOKFgAFq4yK3+6j1EjUD4UQ9dRJHX/sSQ=="
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+ "dependencies": {
+ "whatwg-encoding": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/html-parse-stringify": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
+ "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
+ "dependencies": {
+ "void-elements": "3.1.0"
+ }
+ },
+ "node_modules/html-to-text": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz",
+ "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==",
+ "dependencies": {
+ "@selderee/plugin-htmlparser2": "^0.11.0",
+ "deepmerge": "^4.3.1",
+ "dom-serializer": "^2.0.0",
+ "htmlparser2": "^8.0.2",
+ "selderee": "^0.11.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/hugeicons-react": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/hugeicons-react/-/hugeicons-react-0.3.0.tgz",
+ "integrity": "sha512-znmC+uX7xVqcIs0q09LvwEvJkjX0U3xgT05BSiRV19farS4lPONOKjYT0JkcQG5cvfV0rXHSEAEVNjbHAu81rg==",
+ "peerDependencies": {
+ "react": ">=16.0.0"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/humanize-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/humanize-list/-/humanize-list-1.0.1.tgz",
+ "integrity": "sha512-4+p3fCRF21oUqxhK0yZ6yaSP/H5/wZumc7q1fH99RkW7Q13aAxDeP78BKjoR+6y+kaHqKF/JWuQhsNuuI2NKtA=="
+ },
+ "node_modules/i18next": {
+ "version": "23.16.8",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz",
+ "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://locize.com"
+ },
+ {
+ "type": "individual",
+ "url": "https://locize.com/i18next.html"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
+ }
+ ],
+ "dependencies": {
+ "@babel/runtime": "^7.23.2"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "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/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immer": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz",
+ "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "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/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==",
+ "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==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "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-alphabetical": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+ "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+ "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+ "dependencies": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "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.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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.2.0",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz",
+ "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bun-module": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.3.0.tgz",
+ "integrity": "sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.6.3"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
+ "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+ "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-deflate": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz",
+ "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ=="
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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.1.0",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz",
+ "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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-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-gzip": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
+ "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
+ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-hotkey": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
+ "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="
+ },
+ "node_modules/is-hotkey-esm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-hotkey-esm/-/is-hotkey-esm-1.0.0.tgz",
+ "integrity": "sha512-eTXNmLCPXpKEZUERK6rmFsqmL66+5iNB998JMO+/61fSxBZFuUR1qHyFyx7ocBl5Vs8qjFzRAJLACpYfhS5g5w=="
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-natural-number": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
+ "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ=="
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "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.1.0",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.0.tgz",
+ "integrity": "sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-retry-allowed": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
+ "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.0.tgz",
+ "integrity": "sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz",
+ "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "has-symbols": "^1.0.3",
+ "safe-regex-test": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-tar": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz",
+ "integrity": "sha512-8sR603bS6APKxcdkQ1e5rAC9JDCxM3OlbGJDWv5ajhHqIh6cTaqcpeOTch1iIeHYY4nHEFTgmCiGSLfvmODH4w==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "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==",
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz",
+ "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "reflect.getprototypeof": "^1.0.8",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz",
+ "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.6",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "23.2.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz",
+ "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==",
+ "dependencies": {
+ "@asamuzakjp/dom-selector": "^2.0.1",
+ "cssstyle": "^4.0.1",
+ "data-urls": "^5.0.0",
+ "decimal.js": "^10.4.3",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.2",
+ "is-potential-custom-element-name": "^1.0.1",
+ "parse5": "^7.1.2",
+ "rrweb-cssom": "^0.6.0",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.1.3",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0",
+ "ws": "^8.16.0",
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "canvas": "^2.11.2"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom-global": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz",
+ "integrity": "sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==",
+ "peerDependencies": {
+ "jsdom": ">=10.0.0"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-2-csv": {
+ "version": "5.5.7",
+ "resolved": "https://registry.npmjs.org/json-2-csv/-/json-2-csv-5.5.7.tgz",
+ "integrity": "sha512-aZ0EOadeNnO4ifF60oXXTH8P177WeHhFLbRLqILW1Kk1gNHlgAOuvddMwEIaxbLpCzx+vXo49whK6AILdg8qLg==",
+ "dependencies": {
+ "deeks": "3.1.0",
+ "doc-path": "4.1.1"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-lexer": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/json-lexer/-/json-lexer-1.2.0.tgz",
+ "integrity": "sha512-7otpx5UPFeSELoF8nkZPHCfywg86wOsJV0WNOaysuO7mfWj1QFp2vlqESRRCeJKBXr+tqDgHh4HgqUFKTLcifQ=="
+ },
+ "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=="
+ },
+ "node_modules/json-reduce": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-reduce/-/json-reduce-3.0.0.tgz",
+ "integrity": "sha512-zvnhEvwhqTOxBIcXnxvHvhqtubdwFRp+FascmCaL56BT9jdttRU8IFc+Ilh2HPJ0AtioF8mFPxmReuJKLW0Iyw=="
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
+ "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==",
+ "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/lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lazystream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/leac": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz",
+ "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==",
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "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==",
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lexorank": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/lexorank/-/lexorank-1.0.5.tgz",
+ "integrity": "sha512-K1B/Yr/gIU0wm68hk/yB0p/mv6xM3ShD5aci42vOwcjof8slG8Kpo3Q7+1WTv7DaRHKWRgLPqrFDt+4GtuFAtA=="
+ },
+ "node_modules/lilconfig": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "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/load-tsconfig": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
+ "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "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=="
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+ },
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
+ "dev": true
+ },
+ "node_modules/lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
+ "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==",
+ "dev": true
+ },
+ "node_modules/lodash.startcase": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz",
+ "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg=="
+ },
+ "node_modules/log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dependencies": {
+ "chalk": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/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==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/log-symbols/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/log-symbols/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/log-symbols/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/log-symbols/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==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/lost-pixel": {
+ "version": "3.22.0",
+ "resolved": "https://registry.npmjs.org/lost-pixel/-/lost-pixel-3.22.0.tgz",
+ "integrity": "sha512-BS0kfcLUSjlMdXBKq5XYr2ejZcB8kvL42ANZ5nVH+AomeWIKaoco9UAZGH/UXHdWLVEpYwBfSJCvdbs67G+YrA==",
+ "dev": true,
+ "dependencies": {
+ "@types/xml2js": "^0.4.14",
+ "async": "3.2.6",
+ "axios": "1.7.7",
+ "bundle-require": "4.0.2",
+ "esbuild": "0.24.0",
+ "execa": "5.1.1",
+ "form-data": "4.0.0",
+ "fs-extra": "11.2.0",
+ "get-port-please": "3.1.2",
+ "lodash.get": "4.4.2",
+ "lodash.kebabcase": "4.1.1",
+ "odiff-bin": "2.6.1",
+ "pixelmatch": "5.3.0",
+ "playwright-core": "1.47.2",
+ "pngjs": "7.0.0",
+ "posthog-node": "3.5.0",
+ "serve-handler": "6.1.6",
+ "shelljs": "0.8.5",
+ "ts-node": "10.9.2",
+ "xml2js": "^0.6.2",
+ "yargs": "17.7.2",
+ "zod": "3.23.8"
+ },
+ "bin": {
+ "lost-pixel": "dist/bin.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "playwright-core": ">=1.47.2"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz",
+ "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/android-arm": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz",
+ "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/android-arm64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz",
+ "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/android-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz",
+ "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz",
+ "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/darwin-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz",
+ "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz",
+ "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz",
+ "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-arm": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz",
+ "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-arm64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz",
+ "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-ia32": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz",
+ "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-loong64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz",
+ "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz",
+ "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz",
+ "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz",
+ "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-s390x": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz",
+ "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/linux-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz",
+ "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz",
+ "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/cypress/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dependencies": {
- "pump": "^3.0.0"
- },
+ "node_modules/lost-pixel/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz",
+ "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/cypress/node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "node_modules/lost-pixel/node_modules/@esbuild/sunos-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz",
+ "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">=8.12.0"
+ "node": ">=18"
}
},
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
+ "node_modules/lost-pixel/node_modules/@esbuild/win32-arm64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz",
+ "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=0.10"
+ "node": ">=18"
}
},
- "node_modules/dayjs": {
- "version": "1.11.10",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
- "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ "node_modules/lost-pixel/node_modules/@esbuild/win32-ia32": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz",
+ "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/de-indent": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
- "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
- "dev": true
+ "node_modules/lost-pixel/node_modules/@esbuild/win32-x64": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz",
+ "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/lost-pixel/node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/esbuild": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz",
+ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=18"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz",
- "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==",
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.24.0",
+ "@esbuild/android-arm": "0.24.0",
+ "@esbuild/android-arm64": "0.24.0",
+ "@esbuild/android-x64": "0.24.0",
+ "@esbuild/darwin-arm64": "0.24.0",
+ "@esbuild/darwin-x64": "0.24.0",
+ "@esbuild/freebsd-arm64": "0.24.0",
+ "@esbuild/freebsd-x64": "0.24.0",
+ "@esbuild/linux-arm": "0.24.0",
+ "@esbuild/linux-arm64": "0.24.0",
+ "@esbuild/linux-ia32": "0.24.0",
+ "@esbuild/linux-loong64": "0.24.0",
+ "@esbuild/linux-mips64el": "0.24.0",
+ "@esbuild/linux-ppc64": "0.24.0",
+ "@esbuild/linux-riscv64": "0.24.0",
+ "@esbuild/linux-s390x": "0.24.0",
+ "@esbuild/linux-x64": "0.24.0",
+ "@esbuild/netbsd-x64": "0.24.0",
+ "@esbuild/openbsd-arm64": "0.24.0",
+ "@esbuild/openbsd-x64": "0.24.0",
+ "@esbuild/sunos-x64": "0.24.0",
+ "@esbuild/win32-arm64": "0.24.0",
+ "@esbuild/win32-ia32": "0.24.0",
+ "@esbuild/win32-x64": "0.24.0"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": 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/sponsors/sindresorhus"
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
+ "node_modules/lost-pixel/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==",
"dev": true,
"dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 6"
+ }
+ },
+ "node_modules/lost-pixel/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/decamelize-keys/node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "node_modules/lost-pixel/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+ "node_modules/lost-pixel/node_modules/zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
}
},
- "node_modules/deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
- "dev": true,
+ "node_modules/lowlight": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
+ "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
+ "dependencies": {
+ "fault": "^1.0.0",
+ "highlight.js": "~10.7.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "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==",
"dependencies": {
- "type-detect": "^4.0.0"
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/lucide-react": {
+ "version": "0.459.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.459.0.tgz",
+ "integrity": "sha512-s+QG5PLUOmkylLoPfqsoP+cP2wPj8f+fSyYoIxvCOBDb6d72pJFZKpX1yxgennZkUZvTwWf4qy6K4YCJ4Y8dzA==",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
},
"engines": {
"node": ">=6"
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "node_modules/make-dir/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "engines": {
+ "node": ">=6"
+ }
},
- "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==",
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "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/map-obj": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/marked": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-7.0.4.tgz",
+ "integrity": "sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/material-colors": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
+ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz",
+ "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/md-to-react-email": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/md-to-react-email/-/md-to-react-email-5.0.5.tgz",
+ "integrity": "sha512-OvAXqwq57uOk+WZqFFNCMZz8yDp8BD3WazW1wAKHUrPbbdr89K9DWS6JXY09vd9xNdPNeurI8DU/X4flcfaD8A==",
"dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "marked": "7.0.4"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0"
+ }
+ },
+ "node_modules/md5-o-matic": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz",
+ "integrity": "sha512-QBJSFpsedXUl/Lgs4ySdB2XCzUEcJ3ujpbagdZCkRaYIaC0kFnID8jhc84KEiVv6dNFtIrmW7bqow0lDxgJi6A=="
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+ },
+ "node_modules/mendoza": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/mendoza/-/mendoza-3.0.8.tgz",
+ "integrity": "sha512-iwxgEpSOx9BDLJMD0JAzNicqo9xdrvzt6w/aVwBKMndlA6z/DH41+o60H2uHB0vCR1Xr37UOgu9xFWJHvYsuKw==",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/meow": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
+ "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
+ "dependencies": {
+ "@types/minimist": "^1.2.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize": "^1.2.0",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.18.0",
+ "yargs-parser": "^20.2.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow/node_modules/type-fest": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "engines": {
+ "node": ">=10"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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=="
+ },
+ "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": ">= 0.4"
+ "node": ">= 8"
}
},
- "node_modules/defu": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz",
- "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==",
- "dev": true
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
"engines": {
- "node": ">=0.4.0"
+ "node": ">=8.6"
}
},
- "node_modules/destr": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz",
- "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==",
- "dev": true
- },
- "node_modules/diff-sequences": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
- "dev": true,
+ "node_modules/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": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">= 0.6"
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
+ "node_modules/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": {
- "path-type": "^4.0.0"
+ "mime-db": "1.52.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.6"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"engines": {
- "node": ">=6.0.0"
+ "node": ">=6"
}
},
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
+ "node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "peer": true
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
},
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "peer": true,
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dependencies": {
- "domelementtype": "^2.3.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">= 4"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/duplexer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
- "dev": true
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "node_modules/minimist-options": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+ "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
"dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0",
+ "kind-of": "^6.0.3"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/electron-to-chromium": {
- "version": "1.4.610",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz",
- "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==",
- "dev": true
- },
- "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/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dependencies": {
- "once": "^1.4.0"
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/enquirer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
- "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
+ "node_modules/minizlib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz",
+ "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==",
"dependencies": {
- "ansi-colors": "^4.1.1",
- "strip-ansi": "^6.0.1"
+ "minipass": "^7.0.4",
+ "rimraf": "^5.0.5"
},
"engines": {
- "node": ">=8.6"
+ "node": ">= 18"
}
},
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "engines": {
- "node": ">=0.12"
+ "node_modules/minizlib/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
+ "node_modules/minizlib/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/esbuild": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz",
- "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
+ "@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
},
"optionalDependencies": {
- "@esbuild/android-arm": "0.19.9",
- "@esbuild/android-arm64": "0.19.9",
- "@esbuild/android-x64": "0.19.9",
- "@esbuild/darwin-arm64": "0.19.9",
- "@esbuild/darwin-x64": "0.19.9",
- "@esbuild/freebsd-arm64": "0.19.9",
- "@esbuild/freebsd-x64": "0.19.9",
- "@esbuild/linux-arm": "0.19.9",
- "@esbuild/linux-arm64": "0.19.9",
- "@esbuild/linux-ia32": "0.19.9",
- "@esbuild/linux-loong64": "0.19.9",
- "@esbuild/linux-mips64el": "0.19.9",
- "@esbuild/linux-ppc64": "0.19.9",
- "@esbuild/linux-riscv64": "0.19.9",
- "@esbuild/linux-s390x": "0.19.9",
- "@esbuild/linux-x64": "0.19.9",
- "@esbuild/netbsd-x64": "0.19.9",
- "@esbuild/openbsd-x64": "0.19.9",
- "@esbuild/sunos-x64": "0.19.9",
- "@esbuild/win32-arm64": "0.19.9",
- "@esbuild/win32-ia32": "0.19.9",
- "@esbuild/win32-x64": "0.19.9"
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
+ "node_modules/minizlib/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
},
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
+ "node_modules/minizlib/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/eslint": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
- "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
- "dev": true,
+ "node_modules/minizlib/node_modules/rimraf": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
+ "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.55.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"
+ "glob": "^10.3.7"
},
"bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "rimraf": "dist/esm/bin.mjs"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/eslint-compat-utils": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz",
- "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==",
- "dev": true,
+ "node_modules/mississippi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-4.0.0.tgz",
+ "integrity": "sha512-7PujJ3Te6GGg9lG1nfw5jYCPV6/BsoAT0nCQwb6w+ROuromXYxI6jc/CQSlD82Z/OUMSBX1SoaqhTE+vXiLQzQ==",
+ "dependencies": {
+ "concat-stream": "^2.0.0",
+ "duplexify": "^4.0.0",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^2.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^3.0.1"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mississippi/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
- "peerDependencies": {
- "eslint": ">=6.0.0"
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/eslint-config-flat-gitignore": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-0.1.2.tgz",
- "integrity": "sha512-PcBsqtd5QHEZH4ROvpnRN4EP0qcHh9voCCHgtyHxnJZHGspJREcZn7oPqRG/GfWt9m3C0fkC2l5CuBtMig2wXQ==",
- "dev": true,
+ "node_modules/mississippi/node_modules/through2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+ "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
"dependencies": {
- "parse-gitignore": "^2.0.0"
+ "inherits": "^2.0.4",
+ "readable-stream": "2 || 3"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "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/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
},
- "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,
+ "node_modules/mnemonist": {
+ "version": "0.39.8",
+ "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.8.tgz",
+ "integrity": "sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==",
"dependencies": {
- "ms": "^2.1.1"
+ "obliterator": "^2.0.1"
}
},
- "node_modules/eslint-merge-processors": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/eslint-merge-processors/-/eslint-merge-processors-0.1.0.tgz",
- "integrity": "sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "eslint": "*"
+ "node_modules/module-alias": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz",
+ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q=="
+ },
+ "node_modules/moment": {
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "engines": {
+ "node": "*"
}
},
- "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,
+ "node_modules/motion": {
+ "version": "11.15.0",
+ "resolved": "https://registry.npmjs.org/motion/-/motion-11.15.0.tgz",
+ "integrity": "sha512-iZ7dwADQJWGsqsSkBhNHdI2LyYWU+hA1Nhy357wCLZq1yHxGImgt3l7Yv0HT/WOskcYDq9nxdedyl4zUv7UFFw==",
"dependencies": {
- "debug": "^3.2.7"
+ "framer-motion": "^11.15.0",
+ "tslib": "^2.4.0"
},
- "engines": {
- "node": ">=4"
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
- "eslint": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
"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,
+ "node_modules/motion-dom": {
+ "version": "11.14.3",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.14.3.tgz",
+ "integrity": "sha512-lW+D2wBy5vxLJi6aCP0xyxTxlTfiu+b+zcpVbGVFUxotwThqhdpPRSmX8xztAgtZMPMeU0WGVn/k1w4I+TbPqA=="
+ },
+ "node_modules/motion-utils": {
+ "version": "11.14.3",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.14.3.tgz",
+ "integrity": "sha512-Xg+8xnqIJTpr0L/cidfTTBFkvRw26ZtGGuIhA94J9PQ2p4mEa06Xx7QVYZH0BP+EpMSaDlu+q0I0mmvwADPsaQ=="
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "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": {
- "ms": "^2.1.1"
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
}
},
- "node_modules/eslint-parser-plain": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/eslint-parser-plain/-/eslint-parser-plain-0.1.0.tgz",
- "integrity": "sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==",
- "dev": true
+ "node_modules/nano-pubsub": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-3.0.0.tgz",
+ "integrity": "sha512-zoTNyBafxG0+F5PP3T3j1PKMr7gedriSdYRhLFLRFCz0OnQfQ6BkVk9peXVF30hz633Bw0Zh5McleOrXPjWYCQ==",
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/eslint-plugin-antfu": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-2.0.0.tgz",
- "integrity": "sha512-jbJqri3bDxZ3Eel//ncXI3NXRNYbY0ckckmaWxk4I+nxR5PorOVyLHu/QL69UaPI7qvqAlI0B9GmlAA3hypoHQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node_modules/nanoid": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
},
- "peerDependencies": {
- "eslint": "*"
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "node_modules/eslint-plugin-es-x": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz",
- "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.1.2",
- "@eslint-community/regexpp": "^4.6.0",
- "eslint-compat-utils": "^0.1.2"
- },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "eslint": ">=8"
+ "node": ">= 0.6"
}
},
- "node_modules/eslint-plugin-eslint-comments": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz",
- "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==",
- "dev": true,
+ "node_modules/next": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.1.0.tgz",
+ "integrity": "sha512-QKhzt6Y8rgLNlj30izdMbxAwjHMFANnLwDwZ+WQh5sMhyt4lEBqDK9QpvWHtIM4rINKPoJ8aiRZKg5ULSybVHw==",
"dependencies": {
- "escape-string-regexp": "^1.0.5",
- "ignore": "^5.0.5"
+ "@next/env": "15.1.0",
+ "@swc/counter": "0.1.3",
+ "@swc/helpers": "0.5.15",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
},
"engines": {
- "node": ">=6.5.0"
+ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "15.1.0",
+ "@next/swc-darwin-x64": "15.1.0",
+ "@next/swc-linux-arm64-gnu": "15.1.0",
+ "@next/swc-linux-arm64-musl": "15.1.0",
+ "@next/swc-linux-x64-gnu": "15.1.0",
+ "@next/swc-linux-x64-musl": "15.1.0",
+ "@next/swc-win32-arm64-msvc": "15.1.0",
+ "@next/swc-win32-x64-msvc": "15.1.0",
+ "sharp": "^0.33.5"
},
"peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
}
},
- "node_modules/eslint-plugin-i": {
- "version": "2.29.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-i/-/eslint-plugin-i-2.29.0.tgz",
- "integrity": "sha512-slGeTS3GQzx9267wLJnNYNO8X9EHGsc75AKIAFvnvMYEcTJKotPKL1Ru5PIGVHIVet+2DsugePWp8Oxpx8G22w==",
- "dev": true,
+ "node_modules/next-sanity": {
+ "version": "9.8.27",
+ "resolved": "https://registry.npmjs.org/next-sanity/-/next-sanity-9.8.27.tgz",
+ "integrity": "sha512-jo/7725A4GVb2EcOu6Gpcn+FwC/Ohr3O1AaPB2q3KHrZCYts1yVuHgcPB/P26tF8I7BKXtdQXQ7Af/kJgLeW/Q==",
"dependencies": {
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "get-tsconfig": "^4.6.2",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.3",
- "semver": "^7.5.3"
+ "@portabletext/react": "^3.2.0",
+ "@sanity/client": "^6.24.1",
+ "@sanity/next-loader": "1.2.5",
+ "@sanity/preview-kit": "5.1.23",
+ "@sanity/preview-url-secret": "2.0.5",
+ "@sanity/visual-editing": "2.10.6",
+ "groq": "^3.66.1",
+ "history": "^5.3.0"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
+ "node": ">=18.18"
},
"peerDependencies": {
- "eslint": "^7.2.0 || ^8"
+ "@sanity/client": "^6.24.1",
+ "@sanity/icons": "^3.4.0",
+ "@sanity/types": "^3.62.0",
+ "@sanity/ui": "^2.8.10",
+ "next": "^14.2 || ^15.0.0-0",
+ "react": "^18.3 || ^19.0.0-0",
+ "react-dom": "^18.3 || ^19.0.0-0",
+ "sanity": "^3.62.0",
+ "styled-components": "^6.1"
+ }
+ },
+ "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/eslint-plugin-i/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
+ "node_modules/node-html-parser": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
+ "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
"dependencies": {
- "ms": "^2.1.1"
+ "css-select": "^5.1.0",
+ "he": "1.2.0"
}
},
- "node_modules/eslint-plugin-i/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
+ "node_modules/node-releases": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="
+ },
+ "node_modules/normalize-package-data": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
"dependencies": {
- "esutils": "^2.0.2"
+ "hosted-git-info": "^4.0.1",
+ "is-core-module": "^2.5.0",
+ "semver": "^7.3.4",
+ "validate-npm-package-license": "^3.0.1"
},
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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/eslint-plugin-jsdoc": {
- "version": "46.9.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.9.0.tgz",
- "integrity": "sha512-UQuEtbqLNkPf5Nr/6PPRCtr9xypXY+g8y/Q7gPa0YK7eDhh0y2lWprXRnaYbW7ACgIUvpDKy9X2bZqxtGzBG9Q==",
- "dev": true,
+ "node_modules/npm-run-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz",
+ "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==",
"dependencies": {
- "@es-joy/jsdoccomment": "~0.41.0",
- "are-docs-informative": "^0.0.2",
- "comment-parser": "1.4.1",
- "debug": "^4.3.4",
- "escape-string-regexp": "^4.0.0",
- "esquery": "^1.5.0",
- "is-builtin-module": "^3.2.1",
- "semver": "^7.5.4",
- "spdx-expression-parse": "^3.0.1"
+ "path-key": "^3.0.0"
},
"engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "node": ">=8"
}
},
- "node_modules/eslint-plugin-jsonc": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.10.0.tgz",
- "integrity": "sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==",
- "dev": true,
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "eslint-compat-utils": "^0.1.2",
- "jsonc-eslint-parser": "^2.0.4",
- "natural-compare": "^1.4.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "boolbase": "^1.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "eslint": ">=6.0.0"
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
- "node_modules/eslint-plugin-markdown": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-3.0.1.tgz",
- "integrity": "sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==",
- "dev": true,
- "dependencies": {
- "mdast-util-from-markdown": "^0.8.5"
- },
+ "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": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/eslint-plugin-n": {
- "version": "16.4.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.4.0.tgz",
- "integrity": "sha512-IkqJjGoWYGskVaJA7WQuN8PINIxc0N/Pk/jLeYT4ees6Fo5lAhpwGsYek6gS9tCUxgDC4zJ+OwY2bY/6/9OMKQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "builtins": "^5.0.1",
- "eslint-plugin-es-x": "^7.5.0",
- "get-tsconfig": "^4.7.0",
- "ignore": "^5.2.4",
- "is-builtin-module": "^3.2.1",
- "is-core-module": "^2.12.1",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.2",
- "semver": "^7.5.3"
- },
+ "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": ">=16.0.0"
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
+ "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-plugin-no-only-tests": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz",
- "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==",
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
"engines": {
- "node": ">=5.0.0"
+ "node": ">= 0.4"
}
},
- "node_modules/eslint-plugin-perfectionist": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.5.0.tgz",
- "integrity": "sha512-F6XXcq4mKKUe/SREoMGQqzgw6cgCgf3pFzkFfQVIGtqD1yXVpQjnhTepzhBeZfxZwgMzR9HO4yH4CUhIQ2WBcQ==",
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/utils": "^6.13.0",
- "minimatch": "^9.0.3",
- "natural-compare-lite": "^1.4.0"
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
},
- "peerDependencies": {
- "astro-eslint-parser": "^0.16.0",
- "eslint": ">=8.0.0",
- "svelte": ">=3.0.0",
- "svelte-eslint-parser": "^0.33.0",
- "vue-eslint-parser": ">=9.0.0"
+ "engines": {
+ "node": ">= 0.4"
},
- "peerDependenciesMeta": {
- "astro-eslint-parser": {
- "optional": true
- },
- "svelte": {
- "optional": true
- },
- "svelte-eslint-parser": {
- "optional": true
- },
- "vue-eslint-parser": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-plugin-perfectionist/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/object.entries": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
"dev": true,
"dependencies": {
- "balanced-match": "^1.0.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/eslint-plugin-perfectionist/node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-plugin-toml": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-toml/-/eslint-plugin-toml-0.7.1.tgz",
- "integrity": "sha512-0AOZSBZInz0qFeWSlTZgRURD0BzEkJXE627aF0kS5t3PnUjjifPipkjnSYiHOtJYjHmGaoT7WwcTFSEZ/I3Zfg==",
+ "node_modules/object.groupby": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+ "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
"dev": true,
"dependencies": {
- "debug": "^4.1.1",
- "eslint-compat-utils": "^0.1.2",
- "lodash": "^4.17.19",
- "toml-eslint-parser": "^0.9.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "eslint": ">=6.0.0"
+ "node": ">= 0.4"
}
},
- "node_modules/eslint-plugin-unicorn": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-49.0.0.tgz",
- "integrity": "sha512-0fHEa/8Pih5cmzFW5L7xMEfUTvI9WKeQtjmKpTUmY+BiFCDxkxrTdnURJOHKykhtwIeyYsxnecbGvDCml++z4Q==",
+ "node_modules/object.values": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "@eslint-community/eslint-utils": "^4.4.0",
- "ci-info": "^3.8.0",
- "clean-regexp": "^1.0.0",
- "esquery": "^1.5.0",
- "indent-string": "^4.0.0",
- "is-builtin-module": "^3.2.1",
- "jsesc": "^3.0.2",
- "pluralize": "^8.0.0",
- "read-pkg-up": "^7.0.1",
- "regexp-tree": "^0.1.27",
- "regjsparser": "^0.10.0",
- "semver": "^7.5.4",
- "strip-indent": "^3.0.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1"
- },
- "peerDependencies": {
- "eslint": ">=8.52.0"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/eslint-plugin-unused-imports": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz",
- "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==",
- "dev": true,
- "dependencies": {
- "eslint-rule-composer": "^0.3.0"
- },
+ "node_modules/obliterator": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz",
+ "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ=="
+ },
+ "node_modules/observable-callback": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/observable-callback/-/observable-callback-1.0.3.tgz",
+ "integrity": "sha512-VlS275UyPnwdMtzxDgr/lCiOUyq9uXNll3vdwzDcJ6PB/LuO7gLmxAQopcCA3JoFwwujBwyA7/tP5TXZwWSXew==",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=16"
},
"peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^6.0.0",
- "eslint": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "@typescript-eslint/eslint-plugin": {
- "optional": true
- }
+ "rxjs": "^6.5 || ^7"
}
},
- "node_modules/eslint-plugin-vitest": {
- "version": "0.3.16",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.3.16.tgz",
- "integrity": "sha512-gqsbIZYK0YTiWGyRG2CwAGNA50fuqLkNXGKK2lVmyjBbqBj+rKH7m3JhVQ31AkVX229JkW4vBu0u33PAi5OhTA==",
+ "node_modules/odiff-bin": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/odiff-bin/-/odiff-bin-2.6.1.tgz",
+ "integrity": "sha512-SeI3ehAqjQUMlUkGjvIFGKoHZIO3zG1N1wMRhf7ojM7Vb+HcyB2RKSSCu7kbvYVtSdZADEBSJ7nvP/d7iBLivA==",
"dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "odiff": "bin/odiff"
+ }
+ },
+ "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": {
- "@typescript-eslint/utils": "^6.13.2"
- },
+ "wrappy": "1"
+ }
+ },
+ "node_modules/oneline": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/oneline/-/oneline-1.0.3.tgz",
+ "integrity": "sha512-KWLrLloG/ShWvvWuvmOL2jw17++ufGdbkKC2buI2Aa6AaM4AkjCtpeJZg60EK34NQVo2qu1mlPrC2uhvQgCrhQ==",
"engines": {
- "node": "^18.0.0 || >= 20.0.0"
- },
- "peerDependencies": {
- "eslint": ">=8.0.0",
- "vitest": "*"
- },
- "peerDependenciesMeta": {
- "@typescript-eslint/eslint-plugin": {
- "optional": true
- },
- "vitest": {
- "optional": true
- }
+ "node": ">=6.0.0"
}
},
- "node_modules/eslint-plugin-vue": {
- "version": "9.19.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz",
- "integrity": "sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==",
- "dev": true,
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.4.0",
- "natural-compare": "^1.4.0",
- "nth-check": "^2.1.1",
- "postcss-selector-parser": "^6.0.13",
- "semver": "^7.5.4",
- "vue-eslint-parser": "^9.3.1",
- "xml-name-validator": "^4.0.0"
+ "mimic-fn": "^2.1.0"
},
"engines": {
- "node": "^14.17.0 || >=16.0.0"
+ "node": ">=6"
},
- "peerDependencies": {
- "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint-plugin-yml": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.10.0.tgz",
- "integrity": "sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ==",
- "dev": true,
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
"dependencies": {
- "debug": "^4.3.2",
- "eslint-compat-utils": "^0.1.0",
- "lodash": "^4.17.21",
- "natural-compare": "^1.4.0",
- "yaml-eslint-parser": "^1.2.1"
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
},
"engines": {
- "node": "^14.17.0 || >=16.0.0"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "eslint": ">=6.0.0"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint-processor-vue-blocks": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/eslint-processor-vue-blocks/-/eslint-processor-vue-blocks-0.1.1.tgz",
- "integrity": "sha512-9+dU5lU881log570oBwpelaJmOfOzSniben7IWEDRYQPPWwlvaV7NhOtsTuUWDqpYT+dtKKWPsgz4OkOi+aZnA==",
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
- "peerDependencies": {
- "@vue/compiler-sfc": "^3.3.0",
- "eslint": "^8.50.0"
- }
- },
- "node_modules/eslint-rule-composer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz",
- "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==",
- "dev": true,
"engines": {
- "node": ">=4.0.0"
+ "node": ">= 0.8.0"
}
},
- "node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
+ "node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
+ "node_modules/ora/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
+ "node_modules/p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
+ "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": {
- "estraverse": "^5.1.0"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": ">=0.10"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
+ "node_modules/p-map": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
+ "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
+ "engines": {
+ "node": ">=18"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-queue": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-2.4.2.tgz",
+ "integrity": "sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==",
"engines": {
- "node": ">=4.0"
+ "node": ">=4"
}
},
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
+ "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==",
"engines": {
- "node": ">=4.0"
+ "node": ">=6"
}
},
- "node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
+ },
+ "node_modules/parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "dependencies": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
}
},
- "node_modules/eventemitter2": {
- "version": "6.4.7",
- "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz",
- "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg=="
+ "node_modules/parallel-transform/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
+ "node_modules/parallel-transform/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"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"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/parallel-transform/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/parallel-transform/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+ "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+ "dependencies": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "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==",
+ "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": ">=10"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/executable": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
- "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
- "dependencies": {
- "pify": "^2.2.0"
- },
+ "node_modules/parse-ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
+ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "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/extract-zip": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
- "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "node_modules/parse5": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
+ "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
"dependencies": {
- "debug": "^4.1.1",
- "get-stream": "^5.1.0",
- "yauzl": "^2.10.0"
- },
- "bin": {
- "extract-zip": "cli.js"
+ "entities": "^4.5.0"
},
- "engines": {
- "node": ">= 10.17.0"
- },
- "optionalDependencies": {
- "@types/yauzl": "^2.9.1"
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "node_modules/extract-zip/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "node_modules/parseley": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz",
+ "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==",
"dependencies": {
- "pump": "^3.0.0"
+ "leac": "^0.6.0",
+ "peberminta": "^0.9.0"
},
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "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"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "engines": [
- "node >=0.6.0"
- ]
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/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/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
"dev": true
},
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
+ "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.6.0"
+ "node": ">=8"
}
},
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
+ "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": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
+ "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
"dependencies": {
- "is-glob": "^4.0.1"
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">= 6"
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
+ "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
+ "engines": {
+ "node": "20 || >=22"
+ }
},
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
+ "node_modules/path-to-regexp": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="
},
- "node_modules/fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
- "dev": true,
+ "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": ">= 4.9.1"
+ "node": ">=8"
}
},
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
+ "node_modules/peberminta": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz",
+ "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==",
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/peek-stream": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz",
+ "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==",
"dependencies": {
- "reusify": "^1.0.4"
+ "buffer-from": "^1.0.0",
+ "duplexify": "^3.5.0",
+ "through2": "^2.0.3"
}
},
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "node_modules/peek-stream/node_modules/duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
"dependencies": {
- "pend": "~1.2.0"
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
}
},
- "node_modules/figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "node_modules/peek-stream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/peek-stream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/peek-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/peek-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "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"
+ "node": ">=8.6"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/figures/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/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.8.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
"dependencies": {
- "to-regex-range": "^5.0.1"
+ "pinkie": "^2.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
+ "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": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 6"
}
},
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "node_modules/pixelmatch": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz",
+ "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==",
"dev": true,
"dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
+ "pngjs": "^6.0.0"
},
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "bin": {
+ "pixelmatch": "bin/pixelmatch"
}
},
- "node_modules/flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
- "dev": true
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "node_modules/pixelmatch/node_modules/pngjs": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz",
+ "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==",
+ "dev": true,
"engines": {
- "node": "*"
+ "node": ">=12.13.0"
}
},
- "node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "node_modules/pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
"dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
+ "find-up": "^5.0.0"
},
"engines": {
- "node": ">= 0.12"
+ "node": ">=10"
}
},
- "node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "node_modules/playwright": {
+ "version": "1.49.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.49.1.tgz",
+ "integrity": "sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==",
+ "optional": true,
+ "peer": true,
"dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "playwright-core": "1.49.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
}
},
- "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==",
+ "node_modules/playwright-core": {
+ "version": "1.47.2",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz",
+ "integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==",
"dev": true,
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
+ "peer": true,
"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/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
+ "node_modules/playwright/node_modules/playwright-core": {
+ "version": "1.49.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.1.tgz",
+ "integrity": "sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "playwright-core": "cli.js"
+ },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
}
},
- "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==",
- "dev": true,
+ "node_modules/pluralize-esm": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/pluralize-esm/-/pluralize-esm-9.0.5.tgz",
+ "integrity": "sha512-Kb2dcpMsIutFw2hYrN0EhsAXOUJTd6FVMIxvNAkZCMQLVt9NGZqQczvGpYDxNWCZeCWLHUPxQIBudWzt1h7VVA==",
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": ">=14.0.0"
}
},
- "node_modules/get-func-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
- "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
+ "node_modules/pngjs": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz",
+ "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">=14.19.0"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "node_modules/polished": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz",
+ "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==",
"dependencies": {
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "@babel/runtime": "^7.17.8"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
"engines": {
"node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-tsconfig": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz",
- "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==",
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
"dev": true,
- "dependencies": {
- "resolve-pkg-maps": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/getos": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz",
- "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==",
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "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": {
- "async": "^3.2.0"
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "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": {
- "assert-plus": "^1.0.0"
+ "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/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "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": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "camelcase-css": "^2.0.1"
},
"engines": {
- "node": "*"
+ "node": "^12 || ^14 || >= 16"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
}
},
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
+ "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": {
- "is-glob": "^4.0.3"
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
}
},
- "node_modules/global-dirs": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
- "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"dependencies": {
- "ini": "2.0.0"
+ "postcss-selector-parser": "^6.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "postcss": "^8.2.14"
}
},
- "node_modules/global-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
- "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
- "dev": true,
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"dependencies": {
- "global-prefix": "^3.0.0"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=4"
}
},
- "node_modules/global-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
- "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "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/posthog-node": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-3.5.0.tgz",
+ "integrity": "sha512-u1lzJiLiYH3ShBS5s+uy/FEiAnpkYfNuKs+GmkYo9Z6hO6UXWKPkib9mtTx3y2pbV7O/+Pjup1+/1Q3CA55Z2Q==",
"dev": true,
"dependencies": {
- "ini": "^1.3.5",
- "kind-of": "^6.0.2",
- "which": "^1.3.1"
+ "axios": "^1.6.2",
+ "rusha": "^0.8.14"
},
"engines": {
- "node": ">=6"
+ "node": ">=15.0.0"
}
},
- "node_modules/global-prefix/node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/global-prefix/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
+ "node_modules/postmark": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/postmark/-/postmark-4.0.5.tgz",
+ "integrity": "sha512-nerZdd3TwOH4CgGboZnlUM/q7oZk0EqpZgJL+Y3Nup8kHeaukxouQ6JcFF3EJEijc4QbuNv1TefGhboAKtf/SQ==",
"dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
+ "axios": "^1.7.4"
}
},
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+ "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=8"
+ "node": ">=14"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "node_modules/prettier-plugin-tailwindcss": {
+ "version": "0.6.9",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz",
+ "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==",
"dev": true,
+ "engines": {
+ "node": ">=14.21.3"
+ },
+ "peerDependencies": {
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "@zackad/prettier-plugin-twig-melody": "*",
+ "prettier": "^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-import-sort": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-multiline-arrays": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-sort-imports": "*",
+ "prettier-plugin-style-order": "*",
+ "prettier-plugin-svelte": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@zackad/prettier-plugin-twig-melody": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-import-sort": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-multiline-arrays": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-style-order": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pretty-ms": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
+ "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
"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"
+ "parse-ms": "^2.1.0"
},
"engines": {
"node": ">=10"
@@ -5651,200 +14239,200 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globjoin": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
- "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==",
- "dev": true
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "node_modules/prisma": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.0.1.tgz",
+ "integrity": "sha512-CaMNFHkf+DDq8zq3X/JJsQ4Koy7dyWwwtOKibkT/Am9j/tDxcfbg7+lB1Dzhx18G/+RQCMgjPYB61bhRqteNBQ==",
+ "devOptional": true,
+ "hasInstallScript": true,
"dependencies": {
- "get-intrinsic": "^1.1.3"
+ "@prisma/engines": "6.0.1"
},
- "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==",
- "dev": true
- },
- "node_modules/gzip-size": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
- "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
- "dev": true,
- "dependencies": {
- "duplexer": "^0.1.2"
+ "bin": {
+ "prisma": "build/index.js"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18.18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.3"
}
},
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true,
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
"engines": {
"node": ">=6"
}
},
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"engines": {
- "node": ">= 0.4.0"
+ "node": ">= 0.6.0"
}
},
- "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/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/progress-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
+ "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==",
+ "dependencies": {
+ "speedometer": "~1.0.0",
+ "through2": "~2.0.3"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "node_modules/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": {
- "get-intrinsic": "^1.2.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
}
},
- "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"
+ "node_modules/prop-types/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/property-information": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
+ "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
+ "dependencies": {
+ "xtend": "^4.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "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"
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/psl": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
+ "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
+ "dependencies": {
+ "punycode": "^2.3.1"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/lupomontero"
}
},
- "node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "node_modules/pump": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
"dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "bin": {
- "he": "bin/he"
+ "node_modules/pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dependencies": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
}
},
- "node_modules/hookable": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
- "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
+ "node_modules/pumpify/node_modules/duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dependencies": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
},
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ "node_modules/pumpify/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
- "node_modules/html-tags": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
- "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node_modules/pumpify/node_modules/pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
}
},
- "node_modules/htmlparser2": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
- "dev": true,
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "peer": true,
+ "node_modules/pumpify/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "node_modules/http-signature": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
- "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
+ "node_modules/pumpify/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/pumpify/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^2.0.2",
- "sshpk": "^1.14.1"
- },
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"engines": {
- "node": ">=0.10"
+ "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==",
- "dev": true,
+ "node_modules/qs": {
+ "version": "6.13.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz",
+ "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
"engines": {
- "node": ">=10.17.0"
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "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",
@@ -5860,1599 +14448,1680 @@
}
]
},
- "node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/immutable": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz",
- "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==",
- "dev": true
+ "node_modules/queue-tick": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
},
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/import-lazy": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
- "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/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==",
- "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/ini": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
- "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/is-alphabetical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
- "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
- "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
- "dev": true,
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"dependencies": {
- "is-alphabetical": "^1.0.0",
- "is-decimal": "^1.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "performance-now": "^2.1.0"
}
},
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "node_modules/raf-schd": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz",
+ "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ=="
},
- "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==",
+ "node_modules/range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
"dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">= 0.6"
}
},
- "node_modules/is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
- "dev": true,
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"dependencies": {
- "builtin-modules": "^3.3.0"
+ "loose-envify": "^1.1.0"
},
"engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
- "node_modules/is-ci": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
- "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
+ "node_modules/react-clientside-effect": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
+ "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
"dependencies": {
- "ci-info": "^3.2.0"
+ "@babel/runtime": "^7.12.13"
},
- "bin": {
- "is-ci": "bin.js"
+ "peerDependencies": {
+ "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
- "node_modules/is-core-module": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
- "dev": true,
+ "node_modules/react-color": {
+ "version": "2.19.3",
+ "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz",
+ "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==",
"dependencies": {
- "has": "^1.0.3"
+ "@icons/material": "^0.2.4",
+ "lodash": "^4.17.15",
+ "lodash-es": "^4.17.15",
+ "material-colors": "^1.2.1",
+ "prop-types": "^15.5.10",
+ "reactcss": "^1.2.0",
+ "tinycolor2": "^1.4.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependencies": {
+ "react": "*"
}
},
- "node_modules/is-decimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
- "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/react-compiler-runtime": {
+ "version": "19.0.0-beta-37ed2a7-20241206",
+ "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-19.0.0-beta-37ed2a7-20241206.tgz",
+ "integrity": "sha512-9e6rCpVylr9EnVocgYAjft7+2v01BDpajeHKRoO+oc9pKcAMTpstHtHvE/TSVbyf4FvzCGjfKcfHM9XGTXI6Tw==",
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
+ "node_modules/react-confetti": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz",
+ "integrity": "sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==",
+ "dependencies": {
+ "tween-functions": "^1.2.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10.18"
+ },
+ "peerDependencies": {
+ "react": "^16.3.0 || ^17.0.1 || ^18.0.0"
}
},
- "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/react-copy-to-clipboard": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz",
+ "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==",
+ "dependencies": {
+ "copy-to-clipboard": "^3.3.1",
+ "prop-types": "^15.8.1"
+ },
+ "peerDependencies": {
+ "react": "^15.3.0 || 16 || 17 || 18"
}
},
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"dependencies": {
- "is-extglob": "^2.1.1"
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
},
- "engines": {
- "node": ">=0.10.0"
+ "peerDependencies": {
+ "react": "^18.3.1"
}
},
- "node_modules/is-hexadecimal": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
- "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/react-email": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-email/-/react-email-3.0.4.tgz",
+ "integrity": "sha512-nXdo9P3V+qYSW6m5yN3XpFGhHb/bflX86m0EDQEqDIgayprj6InmBJoBnMSIyC5EP4tPtoAljlclJns4lJG/MQ==",
+ "dependencies": {
+ "@babel/core": "7.24.5",
+ "@babel/parser": "7.24.5",
+ "chalk": "4.1.2",
+ "chokidar": "^4.0.1",
+ "commander": "11.1.0",
+ "debounce": "2.0.0",
+ "esbuild": "0.19.11",
+ "glob": "10.3.4",
+ "log-symbols": "4.1.0",
+ "mime-types": "2.1.35",
+ "next": "15.0.4",
+ "normalize-path": "3.0.0",
+ "ora": "5.4.1",
+ "socket.io": "4.8.0"
+ },
+ "bin": {
+ "email": "dist/cli/index.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/is-installed-globally": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
- "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "node_modules/react-email/node_modules/@babel/core": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
+ "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
"dependencies": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.24.5",
+ "@babel/helpers": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "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": ">=10"
+ "node": ">=6.9.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
+ "node_modules/react-email/node_modules/@babel/parser": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
"engines": {
- "node": ">=0.12.0"
+ "node": ">=6.0.0"
}
},
- "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==",
+ "node_modules/react-email/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz",
+ "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true,
+ "node_modules/react-email/node_modules/@esbuild/android-arm": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz",
+ "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
+ "node_modules/react-email/node_modules/@esbuild/android-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz",
+ "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "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==",
+ "node_modules/react-email/node_modules/@esbuild/android-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz",
+ "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "node_modules/react-email/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz",
+ "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
- },
- "node_modules/jiti": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
- "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
- "dev": true,
- "bin": {
- "jiti": "bin/jiti.js"
+ "node": ">=12"
}
},
- "node_modules/js-tokens": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.1.tgz",
- "integrity": "sha512-3AGrZT6tuMm1ZWWn9mLXh7XMfi2YtiLNPALCVxBCiUVq0LD1OQMxV/AdS/s7rLJU5o9i/jBZw/N4vXXL5dm29A==",
- "dev": true,
- "peer": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "node_modules/react-email/node_modules/@esbuild/darwin-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz",
+ "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
- },
- "node_modules/jsdoc-type-pratt-parser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
- "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
- "dev": true,
+ "node_modules/react-email/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz",
+ "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=12.0.0"
+ "node": ">=12"
}
},
- "node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
+ "node_modules/react-email/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz",
+ "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
+ "node_modules/react-email/node_modules/@esbuild/linux-arm": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz",
+ "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/jsonc-eslint-parser": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz",
- "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.5.0",
- "eslint-visitor-keys": "^3.0.0",
- "espree": "^9.0.0",
- "semver": "^7.3.5"
- },
+ "node_modules/react-email/node_modules/@esbuild/linux-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz",
+ "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
+ "node": ">=12"
}
},
- "node_modules/jsonc-parser": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
- "dev": true
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "node_modules/react-email/node_modules/@esbuild/linux-ia32": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz",
+ "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/jsprim": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz",
- "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==",
- "engines": [
- "node >=0.6.0"
+ "node_modules/react-email/node_modules/@esbuild/linux-loong64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz",
+ "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==",
+ "cpu": [
+ "loong64"
],
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
+ "node_modules/react-email/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz",
+ "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
+ "node_modules/react-email/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz",
+ "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/known-css-properties": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.27.0.tgz",
- "integrity": "sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==",
- "dev": true
- },
- "node_modules/kolorist": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
- "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
- "dev": true
- },
- "node_modules/lazy-ass": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
- "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==",
+ "node_modules/react-email/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz",
+ "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "> 0.8"
+ "node": ">=12"
}
},
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
+ "node_modules/react-email/node_modules/@esbuild/linux-s390x": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz",
+ "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=12"
}
},
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "node_modules/listr2": {
- "version": "3.14.0",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz",
- "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==",
- "dependencies": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.16",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.5.1",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
- },
+ "node_modules/react-email/node_modules/@esbuild/linux-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz",
+ "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "enquirer": ">= 2.3.0 < 3"
- },
- "peerDependenciesMeta": {
- "enquirer": {
- "optional": true
- }
+ "node": ">=12"
}
},
- "node_modules/local-pkg": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
- "dev": true,
+ "node_modules/react-email/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz",
+ "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node": ">=12"
}
},
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
+ "node_modules/react-email/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz",
+ "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "node_modules/react-email/node_modules/@esbuild/sunos-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz",
+ "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ "node_modules/react-email/node_modules/@esbuild/win32-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz",
+ "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
+ "node_modules/react-email/node_modules/@esbuild/win32-ia32": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz",
+ "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
+ "node_modules/react-email/node_modules/@esbuild/win32-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz",
+ "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dependencies": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
+ "node_modules/react-email/node_modules/@next/env": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.4.tgz",
+ "integrity": "sha512-WNRvtgnRVDD4oM8gbUcRc27IAhaL4eXQ/2ovGbgLnPGUvdyDr8UdXP4Q/IBDdAdojnD2eScryIDirv0YUCjUVw=="
+ },
+ "node_modules/react-email/node_modules/@next/swc-darwin-arm64": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.4.tgz",
+ "integrity": "sha512-QecQXPD0yRHxSXWL5Ff80nD+A56sUXZG9koUsjWJwA2Z0ZgVQfuy7gd0/otjxoOovPVHR2eVEvPMHbtZP+pf9w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 10"
}
},
- "node_modules/log-update/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
+ "node_modules/react-email/node_modules/@next/swc-darwin-x64": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.4.tgz",
+ "integrity": "sha512-pb7Bye3y1Og3PlCtnz2oO4z+/b3pH2/HSYkLbL0hbVuTGil7fPen8/3pyyLjdiTLcFJ+ymeU3bck5hd4IPFFCA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ "node": ">= 10"
}
},
- "node_modules/log-update/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
+ "node_modules/react-email/node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.4.tgz",
+ "integrity": "sha512-12oSaBFjGpB227VHzoXF3gJoK2SlVGmFJMaBJSu5rbpaoT5OjP5OuCLuR9/jnyBF1BAWMs/boa6mLMoJPRriMA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">= 10"
}
},
- "node_modules/loupe": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
- "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
- "dev": true,
- "dependencies": {
- "get-func-name": "^2.0.1"
+ "node_modules/react-email/node_modules/@next/swc-linux-arm64-musl": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.4.tgz",
+ "integrity": "sha512-QARO88fR/a+wg+OFC3dGytJVVviiYFEyjc/Zzkjn/HevUuJ7qGUUAUYy5PGVWY1YgTzeRYz78akQrVQ8r+sMjw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "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"
- },
+ "node_modules/react-email/node_modules/@next/swc-linux-x64-gnu": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.4.tgz",
+ "integrity": "sha512-Z50b0gvYiUU1vLzfAMiChV8Y+6u/T2mdfpXPHraqpypP7yIT2UV9YBBhcwYkxujmCvGEcRTVWOj3EP7XW/wUnw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">= 10"
}
},
- "node_modules/magic-string": {
- "version": "0.30.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
- "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15"
- },
+ "node_modules/react-email/node_modules/@next/swc-linux-x64-musl": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.4.tgz",
+ "integrity": "sha512-7H9C4FAsrTAbA/ENzvFWsVytqRYhaJYKa2B3fyQcv96TkOGVMcvyS6s+sj4jZlacxxTcn7ygaMXUPkEk7b78zw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=12"
+ "node": ">= 10"
}
},
- "node_modules/map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true,
+ "node_modules/react-email/node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.4.tgz",
+ "integrity": "sha512-Z/v3WV5xRaeWlgJzN9r4PydWD8sXV35ywc28W63i37G2jnUgScA4OOgS8hQdiXLxE3gqfSuHTicUhr7931OXPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 10"
}
},
- "node_modules/mathml-tag-names": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
- "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "node_modules/react-email/node_modules/@next/swc-win32-x64-msvc": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.4.tgz",
+ "integrity": "sha512-NGLchGruagh8lQpDr98bHLyWJXOBSmkEAfK980OiNBa7vNm6PsNoPvzTfstT78WyOeMRQphEQ455rggd7Eo+Dw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
}
},
- "node_modules/mdast-util-from-markdown": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
- "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
- "dev": true,
+ "node_modules/react-email/node_modules/@swc/helpers": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz",
+ "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
"dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-string": "^2.0.0",
- "micromark": "~2.11.0",
- "parse-entities": "^2.0.0",
- "unist-util-stringify-position": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
- "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "tslib": "^2.4.0"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
- },
- "node_modules/meow": {
- "version": "10.1.5",
- "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz",
- "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==",
- "dev": true,
+ "node_modules/react-email/node_modules/chokidar": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+ "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
"dependencies": {
- "@types/minimist": "^1.2.2",
- "camelcase-keys": "^7.0.0",
- "decamelize": "^5.0.0",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.2",
- "read-pkg-up": "^8.0.0",
- "redent": "^4.0.0",
- "trim-newlines": "^4.0.2",
- "type-fest": "^1.2.2",
- "yargs-parser": "^20.2.9"
+ "readdirp": "^4.0.1"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">= 14.16.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/meow/node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/meow/node_modules/normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
+ "node_modules/react-email/node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
"engines": {
- "node": ">=10"
+ "node": ">=16"
}
},
- "node_modules/meow/node_modules/read-pkg": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz",
- "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^3.0.2",
- "parse-json": "^5.2.0",
- "type-fest": "^1.0.1"
- },
+ "node_modules/react-email/node_modules/debounce": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.0.0.tgz",
+ "integrity": "sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==",
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/meow/node_modules/read-pkg-up": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz",
- "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^5.0.0",
- "read-pkg": "^6.0.0",
- "type-fest": "^1.0.1"
+ "node_modules/react-email/node_modules/esbuild": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz",
+ "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
"node": ">=12"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/type-fest": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
- "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
- "dev": true,
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.19.11",
+ "@esbuild/android-arm": "0.19.11",
+ "@esbuild/android-arm64": "0.19.11",
+ "@esbuild/android-x64": "0.19.11",
+ "@esbuild/darwin-arm64": "0.19.11",
+ "@esbuild/darwin-x64": "0.19.11",
+ "@esbuild/freebsd-arm64": "0.19.11",
+ "@esbuild/freebsd-x64": "0.19.11",
+ "@esbuild/linux-arm": "0.19.11",
+ "@esbuild/linux-arm64": "0.19.11",
+ "@esbuild/linux-ia32": "0.19.11",
+ "@esbuild/linux-loong64": "0.19.11",
+ "@esbuild/linux-mips64el": "0.19.11",
+ "@esbuild/linux-ppc64": "0.19.11",
+ "@esbuild/linux-riscv64": "0.19.11",
+ "@esbuild/linux-s390x": "0.19.11",
+ "@esbuild/linux-x64": "0.19.11",
+ "@esbuild/netbsd-x64": "0.19.11",
+ "@esbuild/openbsd-x64": "0.19.11",
+ "@esbuild/sunos-x64": "0.19.11",
+ "@esbuild/win32-arm64": "0.19.11",
+ "@esbuild/win32-ia32": "0.19.11",
+ "@esbuild/win32-x64": "0.19.11"
+ }
+ },
+ "node_modules/react-email/node_modules/glob": {
+ "version": "10.3.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz",
+ "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "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=="
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromark": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
- "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
- "dev": true,
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "debug": "^4.0.0",
- "parse-entities": "^2.0.0"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
+ "node_modules/react-email/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": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
+ "@isaacs/cliui": "^8.0.2"
},
"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"
+ "node": ">=14"
},
- "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==",
- "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"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/react-email/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
},
"engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "node": ">=10"
+ },
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
+ "node_modules/react-email/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/react-email/node_modules/next": {
+ "version": "15.0.4",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.0.4.tgz",
+ "integrity": "sha512-nuy8FH6M1FG0lktGotamQDCXhh5hZ19Vo0ht1AOIQWrYJLP598TIUagKtvJrfJ5AGwB/WmDqkKaKhMpVifvGPA==",
"dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
+ "@next/env": "15.0.4",
+ "@swc/counter": "0.1.3",
+ "@swc/helpers": "0.5.13",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
},
"engines": {
- "node": ">= 6"
+ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "15.0.4",
+ "@next/swc-darwin-x64": "15.0.4",
+ "@next/swc-linux-arm64-gnu": "15.0.4",
+ "@next/swc-linux-arm64-musl": "15.0.4",
+ "@next/swc-linux-x64-gnu": "15.0.4",
+ "@next/swc-linux-x64-musl": "15.0.4",
+ "@next/swc-win32-arm64-msvc": "15.0.4",
+ "@next/swc-win32-x64-msvc": "15.0.4",
+ "sharp": "^0.33.5"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0",
+ "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
}
},
- "node_modules/mlly": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz",
- "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==",
- "dev": true,
+ "node_modules/react-email/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dependencies": {
- "acorn": "^8.10.0",
- "pathe": "^1.1.1",
- "pkg-types": "^1.0.3",
- "ufo": "^1.3.0"
- }
- },
- "node_modules/mrmime": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
- "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
- "dev": true,
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "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/muggle-string": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz",
- "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "node_modules/react-email/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"
}
],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node_modules/node-fetch-native": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz",
- "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==",
- "dev": 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==",
- "dev": true
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "node_modules/react-email/node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
+ "node_modules/react-email/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
}
},
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/react-fast-compare": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
},
- "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==",
+ "node_modules/react-focus-lock": {
+ "version": "2.13.2",
+ "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.2.tgz",
+ "integrity": "sha512-T/7bsofxYqnod2xadvuwjGKHOoL5GH7/EIPI5UyEvaU/c2CcphvGI371opFtuY/SYdbMsNiuF4HsHQ50nA/TKQ==",
"dependencies": {
- "path-key": "^3.0.0"
+ "@babel/runtime": "^7.0.0",
+ "focus-lock": "^1.3.5",
+ "prop-types": "^15.6.2",
+ "react-clientside-effect": "^1.2.6",
+ "use-callback-ref": "^1.3.2",
+ "use-sidecar": "^1.1.2"
+ },
+ "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-hook-form": {
+ "version": "7.54.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.54.0.tgz",
+ "integrity": "sha512-PS05+UQy/IdSbJNojBypxAo9wllhHgGmyr8/dyGQcPoiMf3e7Dfb9PWYVRco55bLbxH9S+1yDDJeTdlYCSxO3A==",
"engines": {
- "node": ">=8"
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18 || ^19"
}
},
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
+ "node_modules/react-i18next": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.2.tgz",
+ "integrity": "sha512-YOB/H1IgXveEWeTsCHez18QjDXImzVZOcF9/JroSbjYoN1LOfCoARFJUQQ8VNow0TnGOtHq9SwTmismm78CTTA==",
"dependencies": {
- "boolbase": "^1.0.0"
+ "@babel/runtime": "^7.23.9",
+ "html-parse-stringify": "^3.0.1"
},
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
+ "peerDependencies": {
+ "i18next": ">= 23.2.3",
+ "react": ">= 16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
}
},
- "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/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ },
+ "node_modules/react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ },
+ "node_modules/react-promise-suspense": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/react-promise-suspense/-/react-promise-suspense-0.3.4.tgz",
+ "integrity": "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==",
+ "dependencies": {
+ "fast-deep-equal": "^2.0.1"
}
},
- "node_modules/ofetch": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz",
- "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==",
- "dev": true,
+ "node_modules/react-promise-suspense/node_modules/fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w=="
+ },
+ "node_modules/react-redux": {
+ "version": "8.1.3",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz",
+ "integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==",
"dependencies": {
- "destr": "^2.0.1",
- "node-fetch-native": "^1.4.0",
- "ufo": "^1.3.0"
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8 || ^17.0 || ^18.0",
+ "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react-native": ">=0.59",
+ "redux": "^4 || ^5.0.0-beta.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
}
},
- "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==",
+ "node_modules/react-refractor": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/react-refractor/-/react-refractor-2.2.0.tgz",
+ "integrity": "sha512-UvWkBVqH/2b9nkkkt4UNFtU3aY1orQfd4plPjx5rxbefy6vGajNHU9n+tv8CbykFyVirr3vEBfN2JTxyK0d36g==",
"dependencies": {
- "wrappy": "1"
+ "refractor": "^3.6.0",
+ "unist-util-filter": "^2.0.2",
+ "unist-util-visit-parents": "^3.0.2"
+ },
+ "peerDependencies": {
+ "react": ">=15.0.0"
}
},
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "node_modules/react-refresh": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-remove-scroll": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz",
+ "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==",
"dependencies": {
- "mimic-fn": "^2.1.0"
+ "react-remove-scroll-bar": "^2.3.6",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "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/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
+ "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
"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"
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "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/ospath": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
- "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA=="
+ "node_modules/react-rx": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/react-rx/-/react-rx-4.1.8.tgz",
+ "integrity": "sha512-nU0Jkyt14mZZRgWiXPMv1uGungRMZYvaIZpWEP5OObKgba9Zj2qnDFnWE44lUspwlSl2muhbFzx6rFnTcL2PRg==",
+ "dependencies": {
+ "observable-callback": "^1.0.3",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206",
+ "use-effect-event": "^1.0.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3 || >=19.0.0-0",
+ "rxjs": "^7"
+ }
},
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
+ "node_modules/react-style-proptype": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.2.2.tgz",
+ "integrity": "sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==",
"dependencies": {
- "yocto-queue": "^0.1.0"
+ "prop-types": "^15.5.4"
+ }
+ },
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
},
"engines": {
"node": ">=10"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "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/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
+ "node_modules/react-syntax-highlighter": {
+ "version": "15.6.1",
+ "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz",
+ "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==",
"dependencies": {
- "p-limit": "^3.0.2"
+ "@babel/runtime": "^7.3.1",
+ "highlight.js": "^10.4.1",
+ "highlightjs-vue": "^1.0.0",
+ "lowlight": "^1.17.0",
+ "prismjs": "^1.27.0",
+ "refractor": "^3.6.0"
},
- "engines": {
- "node": ">=10"
+ "peerDependencies": {
+ "react": ">= 0.14.0"
+ }
+ },
+ "node_modules/reactcss": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
+ "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
+ "dependencies": {
+ "lodash": "^4.0.1"
+ }
+ },
+ "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/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "node_modules/read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
"dependencies": {
- "aggregate-error": "^3.0.0"
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"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==",
- "dev": 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==",
- "dev": true,
+ "node_modules/read-pkg-up/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==",
"dependencies": {
- "callsites": "^3.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "node_modules/parse-entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
- "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
- "dev": true,
+ "node_modules/read-pkg-up/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==",
"dependencies": {
- "character-entities": "^1.0.0",
- "character-entities-legacy": "^1.0.0",
- "character-reference-invalid": "^1.0.0",
- "is-alphanumerical": "^1.0.0",
- "is-decimal": "^1.0.0",
- "is-hexadecimal": "^1.0.0"
+ "p-locate": "^4.1.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse-gitignore": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz",
- "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==",
- "dev": true,
"engines": {
- "node": ">=14"
+ "node": ">=8"
}
},
- "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==",
- "dev": true,
+ "node_modules/read-pkg-up/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==",
"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"
+ "p-try": "^2.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/path-browserify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
- "dev": true
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
+ "node_modules/read-pkg-up/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==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
"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==",
+ "node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "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/read-pkg/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
}
},
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
+ "node_modules/read-pkg/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
},
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
"engines": {
"node": ">=8"
}
},
- "node_modules/pathe": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz",
- "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==",
- "dev": true
- },
- "node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true,
+ "node_modules/readable-stream": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
+ "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
"engines": {
- "node": "*"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ "node_modules/readable-stream/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "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": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
},
- "node_modules/perfect-debounce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
- "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
- "dev": true
+ "node_modules/readdir-glob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "dependencies": {
+ "minimatch": "^5.1.0"
+ }
},
- "node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
+ "node_modules/readdir-glob/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "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/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/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"dev": true,
- "engines": {
- "node": ">=8.6"
+ "dependencies": {
+ "resolve": "^1.1.6"
},
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "engines": {
+ "node": ">= 0.10"
}
},
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/pkg-types": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
- "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
- "dev": true,
+ "node_modules/redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
"dependencies": {
- "jsonc-parser": "^3.2.0",
- "mlly": "^1.2.0",
- "pathe": "^1.1.0"
+ "@babel/runtime": "^7.9.2"
}
},
- "node_modules/pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz",
+ "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "dunder-proto": "^1.0.0",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.2.0",
+ "which-builtin-type": "^1.2.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/postcss": {
- "version": "8.4.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
- "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
- "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"
- }
- ],
+ "node_modules/refractor": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
+ "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
"dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
+ "hastscript": "^6.0.0",
+ "parse-entities": "^2.0.0",
+ "prismjs": "~1.27.0"
},
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/refractor/node_modules/prismjs": {
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
+ "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==",
"engines": {
- "node": "^10 || ^12 || >=14"
+ "node": ">=6"
}
},
- "node_modules/postcss-html": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.5.0.tgz",
- "integrity": "sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==",
- "dev": true,
- "peer": true,
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
+ "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
"dependencies": {
- "htmlparser2": "^8.0.0",
- "js-tokens": "^8.0.0",
- "postcss": "^8.4.0",
- "postcss-safe-parser": "^6.0.0"
+ "regenerate": "^1.4.2"
},
"engines": {
- "node": "^12 || >=14"
+ "node": ">=4"
}
},
- "node_modules/postcss-media-query-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==",
- "dev": true
- },
- "node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
- "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==",
- "dev": true
+ "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/postcss-safe-parser": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
- "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
- "dev": true,
- "engines": {
- "node": ">=12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": "^8.3.3"
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
}
},
- "node_modules/postcss-scss": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz",
- "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==",
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
+ "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
"dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss-scss"
- }
- ],
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.2"
+ },
"engines": {
- "node": ">=12.0"
+ "node": ">= 0.4"
},
- "peerDependencies": {
- "postcss": "^8.4.19"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
- "dev": true,
+ "node_modules/regexpu-core": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz",
+ "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==",
"dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.0",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.12.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/postcss-sorting": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz",
- "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==",
- "dev": true,
- "peerDependencies": {
- "postcss": "^8.3.9"
+ "node_modules/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q=="
+ },
+ "node_modules/regjsparser": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz",
+ "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==",
+ "dependencies": {
+ "jsesc": "~3.0.2"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
}
},
- "node_modules/postcss-value-parser": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
- "dev": true
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
+ "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==",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/pretty-bytes": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
- "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.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==",
- "dev": true,
+ "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=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
},
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=4"
}
},
- "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==",
+ "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,
- "engines": {
- "node": ">=10"
- },
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
- "node_modules/process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "node_modules/resolve.exports": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",
+ "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
"engines": {
- "node": ">= 0.6.0"
+ "node": ">=10"
}
},
- "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==",
- "dev": true,
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
},
"engines": {
- "node": ">= 6"
+ "node": ">=8"
}
},
- "node_modules/proxy-from-env": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
- "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A=="
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "engines": {
- "node": ">=6"
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/qs": {
- "version": "6.10.4",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
- "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "node_modules/rollup": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz",
+ "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==",
"dependencies": {
- "side-channel": "^1.0.4"
+ "@types/estree": "1.0.6"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">=0.6"
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.28.1",
+ "@rollup/rollup-android-arm64": "4.28.1",
+ "@rollup/rollup-darwin-arm64": "4.28.1",
+ "@rollup/rollup-darwin-x64": "4.28.1",
+ "@rollup/rollup-freebsd-arm64": "4.28.1",
+ "@rollup/rollup-freebsd-x64": "4.28.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.28.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.28.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.28.1",
+ "@rollup/rollup-linux-arm64-musl": "4.28.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.28.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.28.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.28.1",
+ "@rollup/rollup-linux-x64-gnu": "4.28.1",
+ "@rollup/rollup-linux-x64-musl": "4.28.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.28.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.28.1",
+ "@rollup/rollup-win32-x64-msvc": "4.28.1",
+ "fsevents": "~2.3.2"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ "node_modules/rrweb-cssom": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
+ "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw=="
},
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
+ "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",
@@ -7466,452 +16135,629 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
- },
- "node_modules/quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
}
},
- "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==",
+ "node_modules/rusha": {
+ "version": "0.8.14",
+ "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz",
+ "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==",
"dev": true
},
- "node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/rxjs-exhaustmap-with-trailing": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/rxjs-exhaustmap-with-trailing/-/rxjs-exhaustmap-with-trailing-2.1.1.tgz",
+ "integrity": "sha512-gK7nsKyPFsbjDeJ0NYTcZYGW5TbTFjT3iACa28Pwp3fIf9wT/JUR8vdlKYCjUOZKXYnXEk8eRZ4zcQyEURosIA==",
+ "peerDependencies": {
+ "rxjs": "7.x"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
"dev": true,
"dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "isarray": "^2.0.5"
},
"engines": {
- "node": ">=8"
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "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/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
"dev": true,
"dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sanity": {
+ "version": "3.67.1",
+ "resolved": "https://registry.npmjs.org/sanity/-/sanity-3.67.1.tgz",
+ "integrity": "sha512-Iq5hSQ/gb6qpxkeKX0JaHoomQAxvfK8vxr9V+s4AQyewURe1hHc+AwluVGS1zX/1PRVNCTBL+DHMGPnh/U3JFA==",
+ "dependencies": {
+ "@dnd-kit/core": "^6.0.5",
+ "@dnd-kit/modifiers": "^6.0.0",
+ "@dnd-kit/sortable": "^7.0.1",
+ "@dnd-kit/utilities": "^3.2.0",
+ "@juggle/resize-observer": "^3.3.1",
+ "@portabletext/editor": "^1.15.3",
+ "@portabletext/react": "^3.0.0",
+ "@rexxars/react-json-inspector": "^8.0.1",
+ "@sanity/asset-utils": "^2.0.6",
+ "@sanity/bifur-client": "^0.4.1",
+ "@sanity/block-tools": "3.67.1",
+ "@sanity/cli": "3.67.1",
+ "@sanity/client": "^6.24.1",
+ "@sanity/color": "^3.0.0",
+ "@sanity/diff": "3.67.1",
+ "@sanity/diff-match-patch": "^3.1.1",
+ "@sanity/eventsource": "^5.0.0",
+ "@sanity/export": "^3.41.1",
+ "@sanity/icons": "^3.5.2",
+ "@sanity/image-url": "^1.0.2",
+ "@sanity/import": "^3.37.9",
+ "@sanity/insert-menu": "1.0.16",
+ "@sanity/logos": "^2.1.4",
+ "@sanity/migrate": "3.67.1",
+ "@sanity/mutator": "3.67.1",
+ "@sanity/presentation": "1.19.8",
+ "@sanity/schema": "3.67.1",
+ "@sanity/telemetry": "^0.7.7",
+ "@sanity/types": "3.67.1",
+ "@sanity/ui": "^2.10.7",
+ "@sanity/util": "3.67.1",
+ "@sanity/uuid": "^3.0.1",
+ "@sentry/react": "^8.33.0",
+ "@tanstack/react-table": "^8.16.0",
+ "@tanstack/react-virtual": "3.0.0-beta.54",
+ "@types/react-copy-to-clipboard": "^5.0.2",
+ "@types/react-is": "^18.3.0",
+ "@types/shallow-equals": "^1.0.0",
+ "@types/speakingurl": "^13.0.3",
+ "@types/tar-stream": "^3.1.3",
+ "@types/use-sync-external-store": "^0.0.6",
+ "@vitejs/plugin-react": "^4.3.4",
+ "archiver": "^7.0.0",
+ "arrify": "^1.0.1",
+ "async-mutex": "^0.4.1",
+ "chalk": "^4.1.2",
+ "chokidar": "^3.5.3",
+ "classnames": "^2.2.5",
+ "color2k": "^2.0.0",
+ "configstore": "^5.0.1",
+ "console-table-printer": "^2.11.1",
+ "dataloader": "^2.1.0",
+ "date-fns": "^2.26.1",
+ "debug": "^4.3.4",
+ "esbuild": "0.21.5",
+ "esbuild-register": "^3.5.0",
+ "execa": "^2.0.0",
+ "exif-component": "^1.0.1",
+ "form-data": "^4.0.0",
+ "framer-motion": "11.0.8",
+ "get-it": "^8.6.5",
+ "get-random-values-esm": "1.0.2",
+ "groq-js": "^1.14.2",
+ "history": "^5.3.0",
+ "i18next": "^23.2.7",
+ "import-fresh": "^3.3.0",
+ "is-hotkey-esm": "^1.0.0",
+ "jsdom": "^23.0.1",
+ "jsdom-global": "^3.0.2",
+ "json-lexer": "^1.2.0",
+ "json-reduce": "^3.0.0",
+ "json5": "^2.2.3",
+ "lodash": "^4.17.21",
+ "log-symbols": "^2.2.0",
+ "mendoza": "^3.0.0",
+ "module-alias": "^2.2.2",
+ "nano-pubsub": "^3.0.0",
+ "nanoid": "^3.1.30",
+ "node-html-parser": "^6.1.13",
+ "observable-callback": "^1.0.1",
+ "oneline": "^1.0.3",
+ "open": "^8.4.0",
+ "p-map": "^7.0.0",
+ "pirates": "^4.0.0",
+ "pluralize-esm": "^9.0.2",
+ "polished": "^4.2.2",
+ "pretty-ms": "^7.0.1",
+ "quick-lru": "^5.1.1",
+ "raf": "^3.4.1",
+ "react-compiler-runtime": "19.0.0-beta-37ed2a7-20241206",
+ "react-copy-to-clipboard": "^5.0.4",
+ "react-fast-compare": "^3.2.0",
+ "react-focus-lock": "^2.8.1",
+ "react-i18next": "14.0.2",
+ "react-is": "^18.2.0",
+ "react-refractor": "^2.1.6",
+ "react-rx": "^4.1.8",
+ "read-pkg-up": "^7.0.1",
+ "refractor": "^3.6.0",
+ "resolve-from": "^5.0.0",
+ "resolve.exports": "^2.0.2",
+ "rimraf": "^5.0.10",
+ "rxjs": "^7.8.0",
+ "rxjs-exhaustmap-with-trailing": "^2.1.1",
+ "sanity-diff-patch": "^4.0.0",
+ "scroll-into-view-if-needed": "^3.0.3",
+ "semver": "^7.3.5",
+ "shallow-equals": "^1.0.0",
+ "speakingurl": "^14.0.1",
+ "tar-fs": "^2.1.1",
+ "tar-stream": "^3.1.7",
+ "use-device-pixel-ratio": "^1.1.0",
+ "use-hot-module-reload": "^2.0.0",
+ "use-sync-external-store": "^1.2.0",
+ "vite": "^5.4.11",
+ "yargs": "^17.3.0"
+ },
+ "bin": {
+ "sanity": "bin/sanity"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "react": "^18 || ^19.0.0",
+ "react-dom": "^18 || ^19.0.0",
+ "styled-components": "^6.1"
}
},
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
+ "node_modules/sanity-diff-patch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/sanity-diff-patch/-/sanity-diff-patch-4.0.0.tgz",
+ "integrity": "sha512-1OOTx/Uw0J3rwNkI4J/4XJfTGb2Rze/gl5jJGRw+M2hRGkp1QEu2wFHiC9adj83ABYthOczBCBpTHHeZluctdw==",
"dependencies": {
- "p-locate": "^4.1.0"
+ "@sanity/diff-match-patch": "^3.1.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=18.2"
}
},
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
+ "node_modules/sanity-plugin-utils": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/sanity-plugin-utils/-/sanity-plugin-utils-1.6.6.tgz",
+ "integrity": "sha512-jur0dx7hXRbib0siKOJC9+9XuxjNNb3cQDlE/T6egDytInWkI3peEOhRFTg0KtXMtRvGDEvtrPhYEnGvsYQG3w==",
"dependencies": {
- "p-try": "^2.0.0"
+ "@sanity/icons": "^2.11.8",
+ "@sanity/incompatible-plugin": "^1.0.4",
+ "styled-components": "^6.1.6"
},
"engines": {
- "node": ">=6"
+ "node": ">=18"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@sanity/ui": "^1.0 || ^2.0",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-fast-compare": "^3.2.2",
+ "rxjs": "^7.8.1",
+ "sanity": "^3.43.0",
+ "styled-components": "^6.1.11"
}
},
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
+ "node_modules/sanity-plugin-utils/node_modules/@sanity/icons": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@sanity/icons/-/icons-2.11.8.tgz",
+ "integrity": "sha512-C4ViXtk6eyiNTQ5OmxpfmcK6Jw+LLTi9zg9XBUD15DzC4xTHaGW9SVfUa43YtPGs3WC3M0t0K59r0GDjh52HIg==",
"engines": {
- "node": ">=8"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18"
}
},
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/sanity/node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
}
},
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true,
+ "node_modules/sanity/node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
+ "node_modules/sanity/node_modules/@types/use-sync-external-store": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz",
+ "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="
+ },
+ "node_modules/sanity/node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
}
},
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
+ "node_modules/sanity/node_modules/framer-motion": {
+ "version": "11.0.8",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.0.8.tgz",
+ "integrity": "sha512-1KSGNuqe1qZkS/SWQlDnqK2VCVzRVEoval379j0FiUBJAZoqgwyvqFkfvJbgW2IPFo4wX16K+M0k5jO23lCIjA==",
"dependencies": {
- "picomatch": "^2.2.1"
+ "tslib": "^2.4.0"
},
- "engines": {
- "node": ">=8.10.0"
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/redent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
- "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
- "dev": true,
+ "node_modules/sanity/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dependencies": {
- "indent-string": "^5.0.0",
- "strip-indent": "^4.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": ">=12"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/redent/node_modules/indent-string": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
- "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
- "dev": true,
- "engines": {
- "node": ">=12"
+ "node_modules/sanity/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/redent/node_modules/strip-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
- "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
- "dev": true,
+ "node_modules/sanity/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
+ },
+ "node_modules/sanity/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dependencies": {
- "min-indent": "^1.0.1"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/regexp-tree": {
- "version": "0.1.27",
- "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz",
- "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==",
- "dev": true,
- "bin": {
- "regexp-tree": "bin/regexp-tree"
+ "node_modules/sanity/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==",
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/register-service-worker": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz",
- "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A=="
- },
- "node_modules/regjsparser": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
- "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==",
- "dev": true,
+ "node_modules/sanity/node_modules/rimraf": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
+ "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
"dependencies": {
- "jsesc": "~0.5.0"
+ "glob": "^10.3.7"
},
"bin": {
- "regjsparser": "bin/parser"
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
+ "dev": true
},
- "node_modules/request-progress": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
- "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==",
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dependencies": {
- "throttleit": "^1.0.0"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
+ "xmlchars": "^2.2.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=v12.22.7"
}
},
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.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=="
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
+ "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==",
+ "dependencies": {
+ "compute-scroll-into-view": "^3.0.2"
+ }
},
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
+ "node_modules/seek-bzip": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
+ "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
"dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
+ "commander": "^2.8.1"
},
"bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "seek-bunzip": "bin/seek-bunzip",
+ "seek-table": "bin/seek-bzip-table"
}
},
- "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,
+ "node_modules/selderee": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz",
+ "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==",
+ "dependencies": {
+ "parseley": "^0.12.0"
+ },
"funding": {
- "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ "url": "https://ko-fi.com/killymxi"
}
},
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
+ "node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "bin": {
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=8"
+ "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==",
+ "node_modules/serve-handler": {
+ "version": "6.1.6",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz",
+ "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==",
"dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
+ "dependencies": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "mime-types": "2.1.18",
+ "minimatch": "3.1.2",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "3.3.0",
+ "range-parser": "1.2.0"
}
},
- "node_modules/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
- },
- "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/serve-handler/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/rollup": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.8.0.tgz",
- "integrity": "sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA==",
+ "node_modules/serve-handler/node_modules/mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
"dev": true,
- "bin": {
- "rollup": "dist/bin/rollup"
- },
"engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.8.0",
- "@rollup/rollup-android-arm64": "4.8.0",
- "@rollup/rollup-darwin-arm64": "4.8.0",
- "@rollup/rollup-darwin-x64": "4.8.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.8.0",
- "@rollup/rollup-linux-arm64-gnu": "4.8.0",
- "@rollup/rollup-linux-arm64-musl": "4.8.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.8.0",
- "@rollup/rollup-linux-x64-gnu": "4.8.0",
- "@rollup/rollup-linux-x64-musl": "4.8.0",
- "@rollup/rollup-win32-arm64-msvc": "4.8.0",
- "@rollup/rollup-win32-ia32-msvc": "4.8.0",
- "@rollup/rollup-win32-x64-msvc": "4.8.0",
- "fsevents": "~2.3.2"
+ "node": ">= 0.6"
}
},
- "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==",
+ "node_modules/serve-handler/node_modules/mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
"dev": true,
- "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"
+ "mime-db": "~1.33.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/rxjs": {
- "version": "7.8.1",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
- "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "node_modules/serve-handler/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
- "tslib": "^2.1.0"
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "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/serve-handler/node_modules/path-to-regexp": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
+ "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==",
+ "dev": true
},
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "node_modules/server-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz",
+ "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA=="
},
- "node_modules/sass": {
- "version": "1.64.2",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz",
- "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==",
- "dev": true,
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"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"
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">= 0.4"
}
},
- "node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
},
- "bin": {
- "semver": "bin/semver.js"
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dependencies": {
+ "kind-of": "^6.0.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
- "node_modules/set-function-length": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
- "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "node_modules/shallow-equals": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shallow-equals/-/shallow-equals-1.0.0.tgz",
+ "integrity": "sha512-xd/FKcdmfmMbyYCca3QTVEJtqUOGuajNzvAX6nt8dXILwjAIEkfHc4hI8/JMGApAmb7VeULO0Q30NTxnbH/15g=="
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
+ "node_modules/sharp": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+ "hasInstallScript": true,
+ "optional": true,
"dependencies": {
- "define-data-property": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
}
},
"node_modules/shebang-command": {
@@ -7933,148 +16779,415 @@
"node": ">=8"
}
},
+ "node_modules/shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"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==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/siginfo": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
- "node_modules/sirv": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
- "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==",
- "dev": true,
+ "node_modules/silver-fleece": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/silver-fleece/-/silver-fleece-1.1.0.tgz",
+ "integrity": "sha512-V3vShUiLRVPMu9aSWpU5kLDoU/HO7muJKE236EO663po3YxivAkMLbRg+amV/FhbIfF5bWXX5TVX+VYmRaOBFA=="
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "optional": true,
"dependencies": {
- "@polka/url": "^1.0.0-next.20",
- "mrmime": "^1.0.0",
- "totalist": "^3.0.0"
- },
- "engines": {
- "node": ">= 10"
+ "is-arrayish": "^0.3.1"
}
},
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "optional": true
+ },
+ "node_modules/simple-wcswidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz",
+ "integrity": "sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg=="
},
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "node_modules/slate": {
+ "version": "0.112.0",
+ "resolved": "https://registry.npmjs.org/slate/-/slate-0.112.0.tgz",
+ "integrity": "sha512-PRnfFgDA3tSop4OH47zu4M1R4Uuhm/AmASu29Qp7sGghVFb713kPBKEnSf1op7Lx/nCHkRlCa3ThfHtCBy+5Yw==",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
+ "immer": "^10.0.3",
+ "is-plain-object": "^5.0.0",
+ "tiny-warning": "^1.0.3"
+ }
+ },
+ "node_modules/slate-dom": {
+ "version": "0.111.0",
+ "resolved": "https://registry.npmjs.org/slate-dom/-/slate-dom-0.111.0.tgz",
+ "integrity": "sha512-VjeBh2xIRvP6ToEhrO1TPahc5fPezxbeSUhsRTppBPtHfidEdyp/MTI9TjUrZnlznJiVZ7QKrORXilFq8hsbtQ==",
+ "dependencies": {
+ "@juggle/resize-observer": "^3.4.0",
+ "direction": "^1.0.4",
+ "is-hotkey": "^0.2.0",
+ "is-plain-object": "^5.0.0",
+ "lodash": "^4.17.21",
+ "scroll-into-view-if-needed": "^3.1.0",
+ "tiny-invariant": "1.3.1"
+ },
+ "peerDependencies": {
+ "slate": ">=0.99.0"
+ }
+ },
+ "node_modules/slate-dom/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/slate-dom/node_modules/tiny-invariant": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
+ "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
+ },
+ "node_modules/slate/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/socket.io": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz",
+ "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.6.0",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "dependencies": {
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "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/socket.io-parser": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
},
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
"engines": {
- "node": ">=8"
+ "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==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"engines": {
"node": ">=0.10.0"
}
},
+ "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==",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
+ "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/spdx-correct": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
"integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
- "dev": true
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw=="
},
- "node_modules/sshpk": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
- "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
+ "node_modules/speakingurl": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
+ "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/stackback": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
- "dev": true
+ "node_modules/speedometer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
+ "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw=="
},
- "node_modules/std-env": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz",
- "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==",
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/stable-hash": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz",
+ "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==",
"dev": true
},
+ "node_modules/stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ=="
+ },
+ "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/streamx": {
+ "version": "2.21.1",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz",
+ "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==",
+ "dependencies": {
+ "fast-fifo": "^1.3.2",
+ "queue-tick": "^1.0.1",
+ "text-decoder": "^1.1.0"
+ },
+ "optionalDependencies": {
+ "bare-events": "^2.2.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -8088,6 +17201,136 @@
"node": ">=8"
}
},
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "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/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.prototype.includes": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz",
+ "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+ "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz",
+ "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.5"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -8099,6 +17342,34 @@
"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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-dirs": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
+ "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+ "dependencies": {
+ "is-natural-number": "^4.0.1"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -8111,7 +17382,6 @@
"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"
},
@@ -8131,290 +17401,206 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strip-literal": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz",
- "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==",
- "dev": true,
+ "node_modules/stripe": {
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/stripe/-/stripe-17.4.0.tgz",
+ "integrity": "sha512-sQQGZguPxe7/QYXJKtDpfzT2OAH9F8nyE2SOsVdTU793iiU33/dpaKgWaJEGJm8396Yy/6NvTLblgdHlueGLhA==",
"dependencies": {
- "acorn": "^8.10.0"
+ "@types/node": ">=8.1.0",
+ "qs": "^6.11.0"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "engines": {
+ "node": ">=12.*"
}
},
- "node_modules/style-search": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
- "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
- "dev": true
+ "node_modules/style-mod": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz",
+ "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw=="
},
- "node_modules/stylelint": {
- "version": "15.10.2",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.2.tgz",
- "integrity": "sha512-UxqSb3hB74g4DTO45QhUHkJMjKKU//lNUAOWyvPBVPZbCknJ5HjOWWZo+UDuhHa9FLeVdHBZXxu43eXkjyIPWg==",
- "dev": true,
+ "node_modules/styled-components": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz",
+ "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==",
"dependencies": {
- "@csstools/css-parser-algorithms": "^2.3.0",
- "@csstools/css-tokenizer": "^2.1.1",
- "@csstools/media-query-list-parser": "^2.1.2",
- "@csstools/selector-specificity": "^3.0.0",
- "balanced-match": "^2.0.0",
- "colord": "^2.9.3",
- "cosmiconfig": "^8.2.0",
- "css-functions-list": "^3.2.0",
- "css-tree": "^2.3.1",
- "debug": "^4.3.4",
- "fast-glob": "^3.3.0",
- "fastest-levenshtein": "^1.0.16",
- "file-entry-cache": "^6.0.1",
- "global-modules": "^2.0.0",
- "globby": "^11.1.0",
- "globjoin": "^0.1.4",
- "html-tags": "^3.3.1",
- "ignore": "^5.2.4",
- "import-lazy": "^4.0.0",
- "imurmurhash": "^0.1.4",
- "is-plain-object": "^5.0.0",
- "known-css-properties": "^0.27.0",
- "mathml-tag-names": "^2.1.3",
- "meow": "^10.1.5",
- "micromatch": "^4.0.5",
- "normalize-path": "^3.0.0",
- "picocolors": "^1.0.0",
- "postcss": "^8.4.25",
- "postcss-resolve-nested-selector": "^0.1.1",
- "postcss-safe-parser": "^6.0.0",
- "postcss-selector-parser": "^6.0.13",
- "postcss-value-parser": "^4.2.0",
- "resolve-from": "^5.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "style-search": "^0.1.0",
- "supports-hyperlinks": "^3.0.0",
- "svg-tags": "^1.0.0",
- "table": "^6.8.1",
- "write-file-atomic": "^5.0.1"
- },
- "bin": {
- "stylelint": "bin/stylelint.mjs"
+ "@emotion/is-prop-valid": "1.2.2",
+ "@emotion/unitless": "0.8.1",
+ "@types/stylis": "4.2.5",
+ "css-to-react-native": "3.2.0",
+ "csstype": "3.1.3",
+ "postcss": "8.4.38",
+ "shallowequal": "1.1.0",
+ "stylis": "4.3.2",
+ "tslib": "2.6.2"
},
"engines": {
- "node": "^14.13.1 || >=16.0.0"
+ "node": ">= 16"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/stylelint"
- }
- },
- "node_modules/stylelint-config-html": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz",
- "integrity": "sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==",
- "dev": true,
- "engines": {
- "node": "^12 || >=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
+ "url": "https://opencollective.com/styled-components"
},
"peerDependencies": {
- "postcss-html": "^1.0.0",
- "stylelint": ">=14.0.0"
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0"
}
},
- "node_modules/stylelint-config-idiomatic-order": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-idiomatic-order/-/stylelint-config-idiomatic-order-9.0.0.tgz",
- "integrity": "sha512-+LtfPycY1Paayf1MaERyh6BzVPnZxemX5NtzdUPqi4u8hyAR7859f/4EL02+Kr9va76iX7mbYC4HendocXKJZQ==",
- "dev": true,
+ "node_modules/styled-components/node_modules/postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "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": {
- "stylelint-order": "^5.0.0"
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
},
"engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "stylelint": ">=11"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/stylelint-config-idiomatic-order/node_modules/stylelint-order": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-5.0.0.tgz",
- "integrity": "sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==",
- "dev": true,
+ "node_modules/styled-components/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/styled-jsx": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+ "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
"dependencies": {
- "postcss": "^8.3.11",
- "postcss-sorting": "^7.0.1"
+ "client-only": "0.0.1"
},
- "peerDependencies": {
- "stylelint": "^14.0.0"
- }
- },
- "node_modules/stylelint-config-recommended": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz",
- "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==",
- "dev": true,
"engines": {
- "node": "^14.13.1 || >=16.0.0"
- },
- "peerDependencies": {
- "stylelint": "^15.10.0"
- }
- },
- "node_modules/stylelint-config-recommended-scss": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz",
- "integrity": "sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==",
- "dev": true,
- "dependencies": {
- "postcss-scss": "^4.0.6",
- "stylelint-config-recommended": "^12.0.0",
- "stylelint-scss": "^4.6.0"
+ "node": ">= 12.0.0"
},
"peerDependencies": {
- "postcss": "^8.3.3",
- "stylelint": "^15.5.0"
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
},
"peerDependenciesMeta": {
- "postcss": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
"optional": true
}
}
},
- "node_modules/stylelint-config-recommended-scss/node_modules/stylelint-config-recommended": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz",
- "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==",
- "dev": true,
- "peerDependencies": {
- "stylelint": "^15.5.0"
- }
+ "node_modules/stylis": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
+ "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="
},
- "node_modules/stylelint-config-recommended-vue": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-vue/-/stylelint-config-recommended-vue-1.5.0.tgz",
- "integrity": "sha512-65TAK/clUqkNtkZLcuytoxU0URQYlml+30Nhop7sRkCZ/mtWdXt7T+spPSB3KMKlb+82aEVJ4OrcstyDBdbosg==",
- "dev": 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": {
- "semver": "^7.3.5",
- "stylelint-config-html": ">=1.0.0",
- "stylelint-config-recommended": ">=6.0.0"
- },
- "engines": {
- "node": "^12 || >=14"
+ "@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"
},
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
},
- "peerDependencies": {
- "postcss-html": "^1.0.0",
- "stylelint": ">=14.0.0"
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/stylelint-config-standard": {
- "version": "33.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz",
- "integrity": "sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==",
- "dev": true,
- "dependencies": {
- "stylelint-config-recommended": "^12.0.0"
- },
- "peerDependencies": {
- "stylelint": "^15.5.0"
+ "node_modules/sucrase/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/stylelint-config-standard-scss": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-9.0.0.tgz",
- "integrity": "sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==",
- "dev": true,
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dependencies": {
- "stylelint-config-recommended-scss": "^11.0.0",
- "stylelint-config-standard": "^33.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "peerDependencies": {
- "postcss": "^8.3.3",
- "stylelint": "^15.5.0"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- }
- }
- },
- "node_modules/stylelint-config-standard/node_modules/stylelint-config-recommended": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz",
- "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==",
- "dev": true,
- "peerDependencies": {
- "stylelint": "^15.5.0"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/stylelint-scss": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz",
- "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==",
- "dev": true,
+ "node_modules/sucrase/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dependencies": {
- "postcss-media-query-parser": "^0.2.3",
- "postcss-resolve-nested-selector": "^0.1.1",
- "postcss-selector-parser": "^6.0.11",
- "postcss-value-parser": "^4.2.0"
+ "@isaacs/cliui": "^8.0.2"
},
- "peerDependencies": {
- "stylelint": "^14.5.1 || ^15.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/stylelint/node_modules/balanced-match": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true
- },
- "node_modules/stylelint/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
+ "node_modules/sucrase/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
},
- "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==",
+ "node_modules/sucrase/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.18"
},
"funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/supports-hyperlinks": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
- "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
- "dev": true,
+ "node_modules/superjson": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz",
+ "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==",
"dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
+ "copy-anything": "^3.0.2"
},
"engines": {
- "node": ">=14.18"
+ "node": ">=16"
}
},
- "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -8426,7 +17612,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -8434,65 +17619,165 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/svg-tags": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
- "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
- "dev": true
+ "node_modules/suspend-react": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz",
+ "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==",
+ "peerDependencies": {
+ "react": ">=17.0"
+ }
},
- "node_modules/table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
- "dev": true,
+ "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=="
+ },
+ "node_modules/tailwind-merge": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.5.tgz",
+ "integrity": "sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.16",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz",
+ "integrity": "sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==",
"dependencies": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
+ "@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.6",
+ "lilconfig": "^3.1.3",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.47",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.2",
+ "postcss-nested": "^6.2.0",
+ "postcss-selector-parser": "^6.1.2",
+ "resolve": "^1.22.8",
+ "sucrase": "^3.35.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
},
"engines": {
- "node": ">=10.0.0"
+ "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/table/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "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/tar": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.0.1",
+ "mkdirp": "^3.0.1",
+ "yallist": "^5.0.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/table/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
},
- "node_modules/table/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
+ "node_modules/tar-fs/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ },
+ "node_modules/tar-fs/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">= 6"
+ }
+ },
+ "node_modules/tar-fs/node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
},
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz",
+ "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==",
+ "dependencies": {
+ "b4a": "^1.6.4"
}
},
"node_modules/text-table": {
@@ -8501,65 +17786,136 @@
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
- "node_modules/throttleit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
- "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g=="
+ "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/third-party-capital": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz",
+ "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA=="
},
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
- "node_modules/tinybench": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz",
- "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==",
- "dev": true
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
},
- "node_modules/tinypool": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz",
- "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
+ "node_modules/through2/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "node_modules/tinyspy": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz",
- "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
+ "node_modules/through2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/through2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
}
},
- "node_modules/tmp": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
- "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz",
+ "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==",
"dependencies": {
- "rimraf": "^3.0.0"
+ "fdir": "^6.4.2",
+ "picomatch": "^4.0.2"
},
"engines": {
- "node": ">=8.17.0"
+ "node": ">=12.0.0"
}
},
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
+ "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"engines": {
- "node": ">=4"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
@@ -8567,34 +17923,15 @@
"node": ">=8.0"
}
},
- "node_modules/toml-eslint-parser": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/toml-eslint-parser/-/toml-eslint-parser-0.9.3.tgz",
- "integrity": "sha512-moYoCvkNUAPCxSW9jmHmRElhm4tVJpHL8ItC/+uYD0EpPSFXbck7yREz9tNdJVTSpHVod8+HoipcpbQ0oE6gsw==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.0.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- }
- },
- "node_modules/totalist": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
- "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
+ "node_modules/toggle-selection": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
},
"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==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dependencies": {
"psl": "^1.1.33",
"punycode": "^2.1.1",
@@ -8605,42 +17942,119 @@
"node": ">=6"
}
},
- "node_modules/tough-cookie/node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "node_modules/tr46": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
+ "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
"engines": {
- "node": ">= 4.0.0"
+ "node": ">=18"
}
},
"node_modules/trim-newlines": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
- "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==",
- "dev": true,
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"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==",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
"dev": true,
"engines": {
- "node": ">=16.13.0"
+ "node": ">=16"
},
"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/tsconfig-paths/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
@@ -8653,10 +18067,10 @@
"node": "*"
}
},
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
+ "node_modules/tween-functions": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz",
+ "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA=="
},
"node_modules/type-check": {
"version": "0.4.0",
@@ -8670,32 +18084,117 @@
"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==",
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz",
+ "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==",
"dev": true,
+ "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",
+ "reflect.getprototypeof": "^1.0.6"
+ },
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "node_modules/typed-array-length": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typeid-js": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/typeid-js/-/typeid-js-0.3.0.tgz",
+ "integrity": "sha512-A1EmvIWG6xwYRfHuYUjPltHqteZ1EiDG+HOmbIYXeHUVztmnGrPIfU9KIK1QC30x59ko0r4JsMlwzsALCyiB3Q==",
+ "dependencies": {
+ "uuidv7": "^0.4.4"
}
},
"node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
- "devOptional": true,
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+ "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -8704,126 +18203,124 @@
"node": ">=14.17"
}
},
- "node_modules/ufo": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz",
- "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==",
- "dev": true
- },
- "node_modules/unconfig": {
- "version": "0.3.11",
- "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.3.11.tgz",
- "integrity": "sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==",
+ "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": {
- "@antfu/utils": "^0.7.6",
- "defu": "^6.1.2",
- "jiti": "^1.20.0",
- "mlly": "^1.4.2"
+ "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/antfu"
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
}
},
"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=="
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
},
- "node_modules/unhead": {
- "version": "1.8.9",
- "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.9.tgz",
- "integrity": "sha512-qqCNmA4KOEDjcl+OtRZTllGehXewcQ31zbHjvhl/jqCs2MfRcZoxFW1y7A4Y4BgR/O7PI89K+GoWGcxK3gn64Q==",
- "dependencies": {
- "@unhead/dom": "1.8.9",
- "@unhead/schema": "1.8.9",
- "@unhead/shared": "1.8.9",
- "hookable": "^5.5.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/unist-util-stringify-position": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
- "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
- "dev": true,
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dependencies": {
- "@types/unist": "^2.0.2"
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
"engines": {
- "node": ">= 10.0.0"
+ "node": ">=4"
}
},
- "node_modules/unocss": {
- "version": "0.58.0",
- "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.58.0.tgz",
- "integrity": "sha512-MSPRHxBqWN+1AHGV+J5uUy4//e6ZBK6O+ISzD0qrXcCD/GNtxk1+lYjOK2ltkUiKX539+/KF91vNxzhhwEf+xA==",
- "dev": true,
- "dependencies": {
- "@unocss/astro": "0.58.0",
- "@unocss/cli": "0.58.0",
- "@unocss/core": "0.58.0",
- "@unocss/extractor-arbitrary-variants": "0.58.0",
- "@unocss/postcss": "0.58.0",
- "@unocss/preset-attributify": "0.58.0",
- "@unocss/preset-icons": "0.58.0",
- "@unocss/preset-mini": "0.58.0",
- "@unocss/preset-tagify": "0.58.0",
- "@unocss/preset-typography": "0.58.0",
- "@unocss/preset-uno": "0.58.0",
- "@unocss/preset-web-fonts": "0.58.0",
- "@unocss/preset-wind": "0.58.0",
- "@unocss/reset": "0.58.0",
- "@unocss/transformer-attributify-jsx": "0.58.0",
- "@unocss/transformer-attributify-jsx-babel": "0.58.0",
- "@unocss/transformer-compile-class": "0.58.0",
- "@unocss/transformer-directives": "0.58.0",
- "@unocss/transformer-variant-group": "0.58.0",
- "@unocss/vite": "0.58.0"
- },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
"engines": {
- "node": ">=14"
+ "node": ">=4"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
},
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/unist-util-filter": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-filter/-/unist-util-filter-2.0.3.tgz",
+ "integrity": "sha512-8k6Jl/KLFqIRTHydJlHh6+uFgqYHq66pV75pZgr1JwfyFSjbWb12yfb0yitW/0TbHXjr9U4G9BQpOvMANB+ExA==",
+ "dependencies": {
+ "unist-util-is": "^4.0.0"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
+ "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
"funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@unocss/webpack": "0.58.0",
- "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0"
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
+ "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0"
},
- "peerDependenciesMeta": {
- "@unocss/webpack": {
- "optional": true
- },
- "vite": {
- "optional": true
- }
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
}
},
- "node_modules/untildify": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
- "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "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==",
"engines": {
- "node": ">=8"
+ "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==",
- "dev": true,
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"funding": [
{
"type": "opencollective",
@@ -8839,8 +18336,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -8867,52 +18364,169 @@
"requires-port": "^1.0.0"
}
},
+ "node_modules/use-callback-ref": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
+ "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
+ "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-device-pixel-ratio": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-device-pixel-ratio/-/use-device-pixel-ratio-1.1.2.tgz",
+ "integrity": "sha512-nFxV0HwLdRUt20kvIgqHYZe6PK/v4mU1X8/eLsT1ti5ck0l2ob0HDRziaJPx+YWzBo6dMm4cTac3mcyk68Gh+A==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/use-effect-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/use-effect-event/-/use-effect-event-1.0.2.tgz",
+ "integrity": "sha512-9c8AAmtQja4LwJXI0EQPhQCip6dmrcSe0FMcTUZBeGh/XTCOLgw3Qbt0JdUT8Rcrm/ZH+Web7MIcMdqgQKdXJg==",
+ "peerDependencies": {
+ "react": "^18.3 || ^19.0.0-0"
+ }
+ },
+ "node_modules/use-hot-module-reload": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/use-hot-module-reload/-/use-hot-module-reload-2.0.0.tgz",
+ "integrity": "sha512-RbL/OY1HjHNf5BYSFV3yDtQhIGKjCx9ntEjnUBYsOGc9fTo94nyFTcjtD42/twJkPgMljWpszUIpTGD3LuwHSg==",
+ "peerDependencies": {
+ "react": ">=17.0.0"
+ }
+ },
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz",
+ "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-memo-one": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz",
+ "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.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/use-sync-external-store": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz",
+ "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
+ "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==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
+ "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
"bin": {
"uuid": "dist/bin/uuid"
}
},
+ "node_modules/uuidv7": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/uuidv7/-/uuidv7-0.4.4.tgz",
+ "integrity": "sha512-jjRGChg03uGp9f6wQYSO8qXkweJwRbA5WRuEQE8xLIiehIzIIi23qZSzsyvZPCPoFqkeLtZuz7Plt1LGukAInA==",
+ "bin": {
+ "uuidv7": "cli.js"
+ }
+ },
+ "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/valibot": {
+ "version": "0.31.1",
+ "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.31.1.tgz",
+ "integrity": "sha512-2YYIhPrnVSz/gfT2/iXVTrSj92HwchCt9Cga/6hX4B26iCz9zkIsGTS0HjDYTZfTi1Un0X6aRvhBi1cfqs/i0Q=="
+ },
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "engines": [
- "node >=0.6.0"
- ],
+ "node_modules/validate-npm-package-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+ "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
"dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
+ "builtins": "^1.0.3"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/vite": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.8.tgz",
- "integrity": "sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==",
- "dev": true,
+ "version": "5.4.11",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz",
+ "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==",
"dependencies": {
- "esbuild": "^0.19.3",
- "postcss": "^8.4.32",
- "rollup": "^4.2.0"
+ "esbuild": "^0.21.3",
+ "postcss": "^8.4.43",
+ "rollup": "^4.20.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -8931,6 +18545,7 @@
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
+ "sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
@@ -8948,390 +18563,215 @@
"sass": {
"optional": true
},
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/vite-node": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.1.0.tgz",
- "integrity": "sha512-jV48DDUxGLEBdHCQvxL1mEh7+naVy+nhUUUaPAZLd3FJgXuxQiewHcfeZebbJ6onDqNGkP4r3MhQ342PRlG81Q==",
- "dev": true,
- "dependencies": {
- "cac": "^6.7.14",
- "debug": "^4.3.4",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "vite": "^5.0.0"
- },
- "bin": {
- "vite-node": "vite-node.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/vitest": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.1.0.tgz",
- "integrity": "sha512-oDFiCrw7dd3Jf06HoMtSRARivvyjHJaTxikFxuqJjO76U436PqlVw1uLn7a8OSPrhSfMGVaRakKpA2lePdw79A==",
- "dev": true,
- "dependencies": {
- "@vitest/expect": "1.1.0",
- "@vitest/runner": "1.1.0",
- "@vitest/snapshot": "1.1.0",
- "@vitest/spy": "1.1.0",
- "@vitest/utils": "1.1.0",
- "acorn-walk": "^8.3.0",
- "cac": "^6.7.14",
- "chai": "^4.3.10",
- "debug": "^4.3.4",
- "execa": "^8.0.1",
- "local-pkg": "^0.5.0",
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "std-env": "^3.5.0",
- "strip-literal": "^1.3.0",
- "tinybench": "^2.5.1",
- "tinypool": "^0.8.1",
- "vite": "^5.0.0",
- "vite-node": "1.1.0",
- "why-is-node-running": "^2.2.2"
- },
- "bin": {
- "vitest": "vitest.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "@edge-runtime/vm": "*",
- "@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "^1.0.0",
- "@vitest/ui": "^1.0.0",
- "happy-dom": "*",
- "jsdom": "*"
- },
- "peerDependenciesMeta": {
- "@edge-runtime/vm": {
- "optional": true
- },
- "@types/node": {
- "optional": true
- },
- "@vitest/browser": {
- "optional": true
- },
- "@vitest/ui": {
- "optional": true
- },
- "happy-dom": {
+ "sass-embedded": {
"optional": true
- },
- "jsdom": {
- "optional": true
- }
- }
- },
- "node_modules/vitest/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/vitest/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
}
},
- "node_modules/vitest/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
+ "node_modules/void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
"engines": {
- "node": ">=16.17.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/vitest/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "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/vitest/node_modules/local-pkg": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
- "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
- "dev": true,
+ "node_modules/w3c-xmlserializer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
"dependencies": {
- "mlly": "^1.4.2",
- "pkg-types": "^1.0.3"
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node": ">=18"
}
},
- "node_modules/vitest/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dependencies": {
+ "defaults": "^1.0.3"
}
},
- "node_modules/vitest/node_modules/npm-run-path": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
- "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
- "dev": true,
- "dependencies": {
- "path-key": "^4.0.0"
- },
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=12"
}
},
- "node_modules/vitest/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
"dependencies": {
- "mimic-fn": "^4.0.0"
+ "iconv-lite": "0.6.3"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/vitest/node_modules/path-key": {
+ "node_modules/whatwg-mimetype": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/vitest/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "engines": {
- "node": ">=14"
+ "node_modules/whatwg-url": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz",
+ "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==",
+ "dependencies": {
+ "tr46": "^5.0.0",
+ "webidl-conversions": "^7.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/vitest/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=18"
}
},
- "node_modules/vue": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.3.tgz",
- "integrity": "sha512-GjN+culMAGv/mUbkIv8zMKItno8npcj5gWlXkSxf1SPTQf8eJ4A+YfHIvQFyL1IfuJcMl3soA7SmN1fRxbf/wA==",
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dependencies": {
- "@vue/compiler-dom": "3.4.3",
- "@vue/compiler-sfc": "3.4.3",
- "@vue/runtime-dom": "3.4.3",
- "@vue/server-renderer": "3.4.3",
- "@vue/shared": "3.4.3"
+ "isexe": "^2.0.0"
},
- "peerDependencies": {
- "typescript": "*"
+ "bin": {
+ "node-which": "bin/node-which"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/vue-eslint-parser": {
- "version": "9.3.2",
- "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz",
- "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==",
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz",
+ "integrity": "sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==",
"dev": true,
"dependencies": {
- "debug": "^4.3.4",
- "eslint-scope": "^7.1.1",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.3.1",
- "esquery": "^1.4.0",
- "lodash": "^4.17.21",
- "semver": "^7.3.6"
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.0",
+ "is-number-object": "^1.1.0",
+ "is-string": "^1.1.0",
+ "is-symbol": "^1.1.0"
},
"engines": {
- "node": "^14.17.0 || >=16.0.0"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=6.0.0"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/vue-i18n": {
- "version": "9.8.0",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.8.0.tgz",
- "integrity": "sha512-Izho+6PYjejsTq2mzjcRdBZ5VLRQoSuuexvR8029h5CpN03FYqiqBrShMyf2I1DKkN6kw/xmujcbvC+4QybpsQ==",
+ "node_modules/which-builtin-type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz",
+ "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==",
+ "dev": true,
"dependencies": {
- "@intlify/core-base": "9.8.0",
- "@intlify/shared": "9.8.0",
- "@vue/devtools-api": "^6.5.0"
+ "call-bind": "^1.0.7",
+ "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.1.0",
+ "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"
},
"engines": {
- "node": ">= 16"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/kazupon"
- },
- "peerDependencies": {
- "vue": "^3.0.0"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/vue-router": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
- "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
"dependencies": {
- "@vue/devtools-api": "^6.5.0"
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
},
- "funding": {
- "url": "https://github.com/sponsors/posva"
+ "engines": {
+ "node": ">= 0.4"
},
- "peerDependencies": {
- "vue": "^3.2.0"
- }
- },
- "node_modules/vue-template-compiler": {
- "version": "2.7.16",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
- "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
- "dev": true,
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.2.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/vue-tsc": {
- "version": "1.8.27",
- "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz",
- "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==",
+ "node_modules/which-typed-array": {
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz",
+ "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==",
"dev": true,
"dependencies": {
- "@volar/typescript": "~1.11.1",
- "@vue/language-core": "1.8.27",
- "semver": "^7.5.4"
+ "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"
},
- "bin": {
- "vue-tsc": "bin/vue-tsc.js"
+ "engines": {
+ "node": ">= 0.4"
},
- "peerDependencies": {
- "typescript": "*"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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"
- },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
"engines": {
- "node": ">= 8"
+ "node": ">=0.10.0"
}
},
- "node_modules/why-is-node-running": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz",
- "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==",
- "dev": true,
+ "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==",
"dependencies": {
- "siginfo": "^2.0.0",
- "stackback": "0.0.2"
- },
- "bin": {
- "why-is-node-running": "cli.js"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi": {
+ "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==",
@@ -9353,84 +18793,132 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/write-file-atomic": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
- "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
- "dev": true,
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dependencies": {
"imurmurhash": "^0.1.4",
- "signal-exit": "^4.0.1"
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "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/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": ">=8"
}
},
- "node_modules/write-file-atomic/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
+ "node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
"engines": {
- "node": ">=14"
+ "node": ">=18"
+ }
+ },
+ "node_modules/xml2js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
+ "dev": true,
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "engines": {
+ "node": ">=4.0.0"
}
},
- "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==",
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
"dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
+ },
+ "node_modules/xregexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
+ "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/xstate": {
+ "version": "5.19.0",
+ "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.19.0.tgz",
+ "integrity": "sha512-Juh1MjeRaVWr1IRxXYvQMMRFMrei6vq6+AfP6Zk9D9YV0ZuvubN0aM6s2ITwUrq+uWtP1NTO8kOZmsM/IqeOiQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/xstate"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
}
},
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
"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=="
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
- "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
- "dev": true,
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/yaml-eslint-parser": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz",
- "integrity": "sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.0.0",
- "lodash": "^4.17.21",
- "yaml": "^2.0.0"
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
+ "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
+ "bin": {
+ "yaml": "bin.mjs"
},
"engines": {
- "node": "^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
+ "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==",
- "dev": true,
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -9448,7 +18936,6 @@
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
"engines": {
"node": ">=10"
}
@@ -9457,7 +18944,6 @@
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
"engines": {
"node": ">=12"
}
@@ -9471,11 +18957,27 @@
"fd-slicer": "~1.1.0"
}
},
+ "node_modules/yauzl/node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -9483,12 +18985,25 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/zhead": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.2.4.tgz",
- "integrity": "sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==",
+ "node_modules/zip-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
+ "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==",
+ "dependencies": {
+ "archiver-utils": "^5.0.0",
+ "compress-commons": "^6.0.2",
+ "readable-stream": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.24.1",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz",
+ "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==",
"funding": {
- "url": "https://github.com/sponsors/harlan-zw"
+ "url": "https://github.com/sponsors/colinhacks"
}
}
}
diff --git a/package.json b/package.json
old mode 100755
new mode 100644
index bde655f6..f27c9884
--- a/package.json
+++ b/package.json
@@ -1,55 +1,105 @@
{
- "name": "schroedinger-hat-web",
- "type": "module",
+ "name": "sh-website",
"version": "0.1.0",
"private": true,
- "engines": {
- "node": ">=20.1.0",
- "npm": ">=10.2.3"
- },
+ "type": "module",
"scripts": {
- "build": "vite build",
- "cy:o": "cypress open",
- "dev": "vite --host",
- "lint": "eslint .",
- "lint:fix": "eslint . --fix",
- "lint:scss": "stylelint \"./**/*.{css,scss,sass,vue}\"",
- "serve": "vite preview",
- "test": "vitest",
- "coverage": "vitest run --coverage",
- "vue-build": "vue-tsc --noEmit && vite build",
- "vue-check": "vue-tsc --noEmit",
- "vue-dts": "vue-tsc --declaration --emitDeclarationOnly"
+ "build": "next build",
+ "check": "next lint && tsc --noEmit",
+ "db:generate": "prisma migrate dev",
+ "db:migrate": "prisma migrate deploy",
+ "db:push": "prisma db push",
+ "db:studio": "prisma studio",
+ "dev:fresh": "rm -rf .next && npm run dev",
+ "dev": "next dev --turbo",
+ "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,mdx}\" --cache",
+ "format:write": "prettier --write \"**/*.{ts,tsx,js,jsx,mdx}\" --cache",
+ "lint:fix": "next lint --fix",
+ "lint": "next lint",
+ "postinstall": "prisma generate",
+ "precommit": "npm run sanity:pipeline && npm run format:write && npm run lint:fix",
+ "preview": "next build && next start",
+ "sanity:pipeline": "cd src/sanity && npm run sanity:schema && npm run sanity:types",
+ "sanity:schema": "cd src/sanity && sanity schema extract",
+ "sanity:types": "cd src/sanity && sanity typegen generate",
+ "start": "next start",
+ "typecheck": "tsc --noEmit",
+ "vercel-build": "prisma generate && prisma migrate deploy && next build",
+ "email:dev": "email dev --dir src/emails --port 3001",
+ "lost-pixel": "lost-pixel",
+ "lost-pixel:update": "lost-pixel update"
},
"dependencies": {
- "@unhead/vue": "^1.7.4",
- "@unocss/reset": "^0.58.0",
- "@vueuse/core": "^10.1.0",
- "cypress": "^13.6.1",
- "register-service-worker": "^1.7.2",
- "vue-i18n": "^9.2.2",
- "vue-router": "^4.1.6"
+ "@hookform/resolvers": "^3.9.1",
+ "@next/third-parties": "^15.0.4",
+ "@prisma/client": "^6.0.1",
+ "@radix-ui/react-accordion": "^1.2.1",
+ "@radix-ui/react-avatar": "^1.1.1",
+ "@radix-ui/react-checkbox": "^1.1.2",
+ "@radix-ui/react-dialog": "^1.1.2",
+ "@radix-ui/react-label": "^2.1.0",
+ "@radix-ui/react-navigation-menu": "^1.2.1",
+ "@radix-ui/react-slot": "^1.1.0",
+ "@react-email/components": "^0.0.31",
+ "@react-email/render": "^1.0.3",
+ "@sanity/code-input": "^5.1.1",
+ "@sanity/color-input": "^4.0.1",
+ "@sanity/google-maps-input": "^4.0.1",
+ "@sanity/image-url": "^1.1.0",
+ "@sanity/orderable-document-list": "^1.2.2",
+ "@sanity/vision": "^3.67.1",
+ "@t3-oss/env-nextjs": "^0.10.1",
+ "@tanstack/react-query": "^5.50.0",
+ "@trpc/client": "^11.0.0-rc.446",
+ "@trpc/react-query": "^11.0.0-rc.446",
+ "@trpc/server": "^11.0.0-rc.446",
+ "@types/react-syntax-highlighter": "^15.5.13",
+ "@vercel/speed-insights": "^1.1.0",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.1",
+ "date-fns": "^4.1.0",
+ "geist": "^1.3.0",
+ "hugeicons-react": "^0.3.0",
+ "lucide-react": "^0.459.0",
+ "motion": "^11.15.0",
+ "next": "^15.1.0",
+ "next-sanity": "^9.8.27",
+ "postmark": "^4.0.5",
+ "react": "^18.3.1",
+ "react-confetti": "^6.1.0",
+ "react-dom": "^18.3.1",
+ "react-email": "^3.0.4",
+ "react-hook-form": "^7.53.2",
+ "react-syntax-highlighter": "^15.6.1",
+ "sanity": "^3.67.1",
+ "server-only": "^0.0.1",
+ "stripe": "^17.3.1",
+ "styled-components": "^6.1.13",
+ "superjson": "^2.2.1",
+ "tailwind-merge": "^2.5.4",
+ "tailwindcss-animate": "^1.0.7",
+ "zod": "^3.23.8"
},
"devDependencies": {
- "@antfu/eslint-config": "^2.4.5",
- "@iconify/vue": "^4.1.1",
- "@types/node": "^20.4.8",
- "@unocss/preset-attributify": "^0.58.0",
- "@unocss/preset-icons": "^0.58.0",
- "@unocss/preset-uno": "^0.58.0",
- "@unocss/preset-web-fonts": "^0.58.0",
- "@vitejs/plugin-vue": "^4.0.0",
- "eslint": "^8.32.0",
- "sass": "^1.49.9",
- "stylelint": "^15.6.2",
- "stylelint-config-idiomatic-order": "^9.0.0",
- "stylelint-config-recommended-vue": "^1.4.0",
- "stylelint-config-standard-scss": "^9.0.0",
- "typescript": "^5.0.4",
- "unocss": "^0.58.0",
- "vite": "^5.0.8",
- "vitest": "^1.1.0",
- "vue": "^3.4.3",
- "vue-tsc": "^1.8.27"
- }
+ "@types/eslint": "^8.56.10",
+ "@types/node": "^20.14.10",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@types/stripe": "^8.0.417",
+ "@typescript-eslint/eslint-plugin": "^8.1.0",
+ "@typescript-eslint/parser": "^8.1.0",
+ "eslint": "^8.57.0",
+ "eslint-config-next": "^15.0.1",
+ "lost-pixel": "^3.22.0",
+ "postcss": "^8.4.39",
+ "prettier": "^3.3.2",
+ "prettier-plugin-tailwindcss": "^0.6.5",
+ "prisma": "^6.0.1",
+ "tailwindcss": "^3.4.3",
+ "typescript": "^5.5.3"
+ },
+ "ct3aMetadata": {
+ "initVersion": "7.38.1"
+ },
+ "packageManager": "npm@10.5.0"
}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 00000000..28418020
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,5 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ },
+}
diff --git a/prettier.config.js b/prettier.config.js
new file mode 100644
index 00000000..db914bea
--- /dev/null
+++ b/prettier.config.js
@@ -0,0 +1,6 @@
+/** @type {import('prettier').Config & import('prettier-plugin-tailwindcss').PluginOptions} */
+export default {
+ semi: false,
+ printWidth: 110,
+ plugins: ["prettier-plugin-tailwindcss"],
+}
diff --git a/prisma/migrations/20241206192027_add_member_model/migration.sql b/prisma/migrations/20241206192027_add_member_model/migration.sql
new file mode 100644
index 00000000..ca05fbc5
--- /dev/null
+++ b/prisma/migrations/20241206192027_add_member_model/migration.sql
@@ -0,0 +1,27 @@
+-- CreateTable
+CREATE TABLE "Member" (
+ "id" TEXT NOT NULL,
+ "name" TEXT NOT NULL,
+ "surname" TEXT NOT NULL,
+ "email" TEXT NOT NULL,
+ "codiceFiscale" TEXT NOT NULL,
+ "status" TEXT NOT NULL DEFAULT 'PENDING',
+ "stripeCustomerId" TEXT,
+ "stripeSubscriptionId" TEXT,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updatedAt" TIMESTAMP(3) NOT NULL,
+
+ CONSTRAINT "Member_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "Member_codiceFiscale_key" ON "Member"("codiceFiscale");
+
+-- CreateIndex
+CREATE INDEX "Member_codiceFiscale_idx" ON "Member"("codiceFiscale");
+
+-- CreateIndex
+CREATE INDEX "Member_email_idx" ON "Member"("email");
+
+-- CreateIndex
+CREATE INDEX "Member_status_idx" ON "Member"("status");
diff --git a/prisma/migrations/20241209180426_add_health_table/migration.sql b/prisma/migrations/20241209180426_add_health_table/migration.sql
new file mode 100644
index 00000000..3639b7a8
--- /dev/null
+++ b/prisma/migrations/20241209180426_add_health_table/migration.sql
@@ -0,0 +1,13 @@
+-- CreateTable
+CREATE TABLE "Health" (
+ "id" SERIAL NOT NULL,
+ "date" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "deletedRecords" INTEGER NOT NULL,
+ "error" TEXT,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "Health_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateIndex
+CREATE INDEX "Health_date_idx" ON "Health"("date");
diff --git a/prisma/migrations/20241209202221_add_member_stripe_customer_id_unique_index/migration.sql b/prisma/migrations/20241209202221_add_member_stripe_customer_id_unique_index/migration.sql
new file mode 100644
index 00000000..37c0836a
--- /dev/null
+++ b/prisma/migrations/20241209202221_add_member_stripe_customer_id_unique_index/migration.sql
@@ -0,0 +1,8 @@
+/*
+ Warnings:
+
+ - A unique constraint covering the columns `[stripeCustomerId]` on the table `Member` will be added. If there are existing duplicate values, this will fail.
+
+*/
+-- CreateIndex
+CREATE UNIQUE INDEX "Member_stripeCustomerId_key" ON "Member"("stripeCustomerId");
diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml
new file mode 100644
index 00000000..fbffa92c
--- /dev/null
+++ b/prisma/migrations/migration_lock.toml
@@ -0,0 +1,3 @@
+# Please do not edit this file manually
+# It should be added in your version-control system (i.e. Git)
+provider = "postgresql"
\ No newline at end of file
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
new file mode 100644
index 00000000..4f907bd5
--- /dev/null
+++ b/prisma/schema.prisma
@@ -0,0 +1,38 @@
+// This is your Prisma schema file,
+// learn more about it in the docs: https://pris.ly/d/prisma-schema
+
+generator client {
+ provider = "prisma-client-js"
+}
+
+datasource db {
+ provider = "postgresql"
+ url = env("DATABASE_URL")
+}
+
+model Member {
+ id String @id @default(cuid())
+ name String
+ surname String
+ email String
+ codiceFiscale String @unique
+ status String @default("PENDING") // PENDING, COMPLETED, REJECTED
+ stripeCustomerId String? @unique
+ stripeSubscriptionId String?
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ @@index([codiceFiscale])
+ @@index([email])
+ @@index([status])
+}
+
+model Health {
+ id Int @id @default(autoincrement())
+ date DateTime @default(now())
+ deletedRecords Int
+ error String? @db.Text
+ createdAt DateTime @default(now())
+
+ @@index([date])
+}
diff --git a/public/_redirects b/public/_redirects
deleted file mode 100644
index f8243379..00000000
--- a/public/_redirects
+++ /dev/null
@@ -1 +0,0 @@
-/* /index.html 200
\ No newline at end of file
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
new file mode 100644
index 00000000..a8f2e35b
Binary files /dev/null and b/public/apple-touch-icon.png differ
diff --git a/public/favicon-96x96.png b/public/favicon-96x96.png
new file mode 100644
index 00000000..536f3737
Binary files /dev/null and b/public/favicon-96x96.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
old mode 100755
new mode 100644
index a3cc0cf7..8cfa9ca2
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 00000000..ed3f3554
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/img/WeAreDevelopers_logo.svg b/public/img/WeAreDevelopers_logo.svg
deleted file mode 100644
index 69ad5cca..00000000
--- a/public/img/WeAreDevelopers_logo.svg
+++ /dev/null
@@ -1,24 +0,0 @@
-
- WeAreDevelopers_Positiv
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/img/_dev/Angy.jpg b/public/img/_dev/Angy.jpg
deleted file mode 100644
index fcfa232a..00000000
Binary files a/public/img/_dev/Angy.jpg and /dev/null differ
diff --git a/public/img/_dev/Danersound.jpg b/public/img/_dev/Danersound.jpg
deleted file mode 100644
index 821abc32..00000000
Binary files a/public/img/_dev/Danersound.jpg and /dev/null differ
diff --git a/public/img/_dev/davideimola.jpg b/public/img/_dev/davideimola.jpg
deleted file mode 100644
index 983e7541..00000000
Binary files a/public/img/_dev/davideimola.jpg and /dev/null differ
diff --git a/public/img/_dev/gabrielepuliti.png b/public/img/_dev/gabrielepuliti.png
deleted file mode 100644
index d2585ffc..00000000
Binary files a/public/img/_dev/gabrielepuliti.png and /dev/null differ
diff --git a/public/img/_dev/lorenzopieri.png b/public/img/_dev/lorenzopieri.png
deleted file mode 100644
index 572d878d..00000000
Binary files a/public/img/_dev/lorenzopieri.png and /dev/null differ
diff --git a/public/img/_dev/mikilombardi.jpeg b/public/img/_dev/mikilombardi.jpeg
deleted file mode 100644
index 236ee05a..00000000
Binary files a/public/img/_dev/mikilombardi.jpeg and /dev/null differ
diff --git a/public/img/_dev/nicpuppa.png b/public/img/_dev/nicpuppa.png
deleted file mode 100644
index 66327d6b..00000000
Binary files a/public/img/_dev/nicpuppa.png and /dev/null differ
diff --git a/public/img/_dev/patrickraedler.jpg b/public/img/_dev/patrickraedler.jpg
deleted file mode 100644
index 0a474d07..00000000
Binary files a/public/img/_dev/patrickraedler.jpg and /dev/null differ
diff --git a/public/img/codemotion_logo.svg b/public/img/codemotion_logo.svg
deleted file mode 100644
index 426605da..00000000
--- a/public/img/codemotion_logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/img/fh_logo.png b/public/img/fh_logo.png
deleted file mode 100644
index f9695927..00000000
Binary files a/public/img/fh_logo.png and /dev/null differ
diff --git a/public/img/fzzb.png b/public/img/fzzb.png
deleted file mode 100644
index 580ed2b7..00000000
Binary files a/public/img/fzzb.png and /dev/null differ
diff --git a/public/img/gdgp.svg b/public/img/gdgp.svg
deleted file mode 100644
index c1143dd3..00000000
--- a/public/img/gdgp.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GDG
- Pisa
-
-
diff --git a/public/img/grusp-logo.png b/public/img/grusp-logo.png
deleted file mode 100644
index c49632b8..00000000
Binary files a/public/img/grusp-logo.png and /dev/null differ
diff --git a/public/img/grusp.png b/public/img/grusp.png
deleted file mode 100644
index c8b4a957..00000000
Binary files a/public/img/grusp.png and /dev/null differ
diff --git a/public/img/icons/android-chrome-192x192.png b/public/img/icons/android-chrome-192x192.png
deleted file mode 100755
index c050891a..00000000
Binary files a/public/img/icons/android-chrome-192x192.png and /dev/null differ
diff --git a/public/img/icons/android-chrome-256x256.png b/public/img/icons/android-chrome-256x256.png
deleted file mode 100755
index ccc7cdaa..00000000
Binary files a/public/img/icons/android-chrome-256x256.png and /dev/null differ
diff --git a/public/img/icons/android-chrome-512x512.png b/public/img/icons/android-chrome-512x512.png
deleted file mode 100755
index 3ad90516..00000000
Binary files a/public/img/icons/android-chrome-512x512.png and /dev/null differ
diff --git a/public/img/icons/android-chrome-maskable-192x192.png b/public/img/icons/android-chrome-maskable-192x192.png
deleted file mode 100755
index 48136165..00000000
Binary files a/public/img/icons/android-chrome-maskable-192x192.png and /dev/null differ
diff --git a/public/img/icons/android-chrome-maskable-512x512.png b/public/img/icons/android-chrome-maskable-512x512.png
deleted file mode 100755
index 3ad90516..00000000
Binary files a/public/img/icons/android-chrome-maskable-512x512.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon-120x120.png b/public/img/icons/apple-touch-icon-120x120.png
deleted file mode 100755
index 24745ae5..00000000
Binary files a/public/img/icons/apple-touch-icon-120x120.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon-152x152.png b/public/img/icons/apple-touch-icon-152x152.png
deleted file mode 100755
index aa75769f..00000000
Binary files a/public/img/icons/apple-touch-icon-152x152.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon-167x167.png b/public/img/icons/apple-touch-icon-167x167.png
deleted file mode 100755
index 50912b13..00000000
Binary files a/public/img/icons/apple-touch-icon-167x167.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon-180x180.png b/public/img/icons/apple-touch-icon-180x180.png
deleted file mode 100755
index 1992b1f6..00000000
Binary files a/public/img/icons/apple-touch-icon-180x180.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon-60x60.png b/public/img/icons/apple-touch-icon-60x60.png
deleted file mode 100755
index de826516..00000000
Binary files a/public/img/icons/apple-touch-icon-60x60.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon-76x76.png b/public/img/icons/apple-touch-icon-76x76.png
deleted file mode 100755
index fc43e13a..00000000
Binary files a/public/img/icons/apple-touch-icon-76x76.png and /dev/null differ
diff --git a/public/img/icons/apple-touch-icon.png b/public/img/icons/apple-touch-icon.png
deleted file mode 100755
index dbbf2270..00000000
Binary files a/public/img/icons/apple-touch-icon.png and /dev/null differ
diff --git a/public/img/icons/browserconfig.xml b/public/img/icons/browserconfig.xml
deleted file mode 100755
index b3930d0f..00000000
--- a/public/img/icons/browserconfig.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
- #da532c
-
-
-
diff --git a/public/img/icons/favicon-16x16.png b/public/img/icons/favicon-16x16.png
deleted file mode 100755
index 34fda602..00000000
Binary files a/public/img/icons/favicon-16x16.png and /dev/null differ
diff --git a/public/img/icons/favicon-32x32.png b/public/img/icons/favicon-32x32.png
deleted file mode 100755
index c6f92eac..00000000
Binary files a/public/img/icons/favicon-32x32.png and /dev/null differ
diff --git a/public/img/icons/msapplication-icon-144x144.png b/public/img/icons/msapplication-icon-144x144.png
deleted file mode 100755
index 709aafd9..00000000
Binary files a/public/img/icons/msapplication-icon-144x144.png and /dev/null differ
diff --git a/public/img/icons/mstile-150x150.png b/public/img/icons/mstile-150x150.png
deleted file mode 100755
index 2542e423..00000000
Binary files a/public/img/icons/mstile-150x150.png and /dev/null differ
diff --git a/public/img/icons/safari-pinned-tab.svg b/public/img/icons/safari-pinned-tab.svg
deleted file mode 100755
index 21c7ac4d..00000000
--- a/public/img/icons/safari-pinned-tab.svg
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-Created by potrace 1.11, written by Peter Selinger 2001-2013
-
-
-
-
-
diff --git a/public/img/jetbrains.svg b/public/img/jetbrains.svg
deleted file mode 100644
index 75d4d217..00000000
--- a/public/img/jetbrains.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/img/lit.png b/public/img/lit.png
deleted file mode 100644
index ded0de8c..00000000
Binary files a/public/img/lit.png and /dev/null differ
diff --git a/public/img/logo-italia-opensource.png b/public/img/logo-italia-opensource.png
deleted file mode 100644
index c9d7849e..00000000
Binary files a/public/img/logo-italia-opensource.png and /dev/null differ
diff --git a/public/img/nvimconf.svg b/public/img/nvimconf.svg
deleted file mode 100644
index cd04d8bd..00000000
--- a/public/img/nvimconf.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/img/pisa-dev.svg b/public/img/pisa-dev.svg
deleted file mode 100644
index 3ae395a7..00000000
--- a/public/img/pisa-dev.svg
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/img/plug_logo.svg b/public/img/plug_logo.svg
deleted file mode 100644
index 08789537..00000000
--- a/public/img/plug_logo.svg
+++ /dev/null
@@ -1,301 +0,0 @@
-
-
-
-
diff --git a/public/img/pp.png b/public/img/pp.png
deleted file mode 100644
index eed97925..00000000
Binary files a/public/img/pp.png and /dev/null differ
diff --git a/public/img/pycon-logo.png b/public/img/pycon-logo.png
deleted file mode 100644
index b56f5b51..00000000
Binary files a/public/img/pycon-logo.png and /dev/null differ
diff --git a/public/img/shv.png b/public/img/shv.png
deleted file mode 100644
index dffd5cd0..00000000
Binary files a/public/img/shv.png and /dev/null differ
diff --git a/public/img/silogo.svg b/public/img/silogo.svg
deleted file mode 100644
index 25479492..00000000
--- a/public/img/silogo.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/img/sticker-mule.svg b/public/img/sticker-mule.svg
deleted file mode 100644
index 80117c7b..00000000
--- a/public/img/sticker-mule.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/img/the-red-code-logo-exp.png b/public/img/the-red-code-logo-exp.png
deleted file mode 100644
index 7bf1d78a..00000000
Binary files a/public/img/the-red-code-logo-exp.png and /dev/null differ
diff --git a/public/img/the-red-code-logo.png b/public/img/the-red-code-logo.png
deleted file mode 100644
index 6f8f4e88..00000000
Binary files a/public/img/the-red-code-logo.png and /dev/null differ
diff --git a/public/og-image.png b/public/og-image.png
new file mode 100644
index 00000000..54151e6c
Binary files /dev/null and b/public/og-image.png differ
diff --git a/public/robots.txt b/public/robots.txt
deleted file mode 100755
index eb053628..00000000
--- a/public/robots.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-User-agent: *
-Disallow:
diff --git a/public/site.webmanifest b/public/site.webmanifest
new file mode 100644
index 00000000..5ab85bfb
--- /dev/null
+++ b/public/site.webmanifest
@@ -0,0 +1,21 @@
+{
+ "name": "Schröedinger Hat",
+ "short_name": "SH",
+ "icons": [
+ {
+ "src": "/web-app-manifest-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "/web-app-manifest-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
\ No newline at end of file
diff --git a/public/web-app-manifest-192x192.png b/public/web-app-manifest-192x192.png
new file mode 100644
index 00000000..7a103b10
Binary files /dev/null and b/public/web-app-manifest-192x192.png differ
diff --git a/public/web-app-manifest-512x512.png b/public/web-app-manifest-512x512.png
new file mode 100644
index 00000000..cef7a3da
Binary files /dev/null and b/public/web-app-manifest-512x512.png differ
diff --git a/sanity.cli.ts b/sanity.cli.ts
new file mode 100644
index 00000000..f29320b6
--- /dev/null
+++ b/sanity.cli.ts
@@ -0,0 +1,10 @@
+/**
+ * This configuration file lets you run `$ sanity [command]` in this folder
+ * Go to https://www.sanity.io/docs/cli to learn more.
+ **/
+import { defineCliConfig } from "sanity/cli"
+
+const projectId = process.env.NEXT_PUBLIC_SANITY_PROJECT_ID
+const dataset = process.env.NEXT_PUBLIC_SANITY_DATASET
+
+export default defineCliConfig({ api: { projectId, dataset } })
diff --git a/sanity.config.ts b/sanity.config.ts
new file mode 100644
index 00000000..c95d8dc8
--- /dev/null
+++ b/sanity.config.ts
@@ -0,0 +1,36 @@
+"use client"
+
+/**
+ * This configuration is used to for the Sanity Studio that’s mounted on the `/app/sanity-studio/[[...tool]]/page.tsx` route
+ */
+
+import { visionTool } from "@sanity/vision"
+import { defineConfig } from "sanity"
+import { structureTool } from "sanity/structure"
+import { colorInput } from "@sanity/color-input"
+import { googleMapsInput } from "@sanity/google-maps-input"
+import { codeInput } from "@sanity/code-input"
+
+// Go to https://www.sanity.io/docs/api-versioning to learn how API versioning works
+import { apiVersion, dataset, projectId } from "./src/sanity/env"
+import { schema } from "./src/sanity/schemaTypes"
+import { structure } from "./src/sanity/structure"
+
+export default defineConfig({
+ basePath: "/sanity-cms",
+ projectId,
+ dataset,
+ // Add and edit the content schema in the './sanity/schemaTypes' folder
+ schema,
+ plugins: [
+ colorInput(),
+ structureTool({ structure }),
+ // Vision is for querying with GROQ from inside the Studio
+ // https://www.sanity.io/docs/the-vision-plugin
+ visionTool({ defaultApiVersion: apiVersion }),
+ googleMapsInput({
+ apiKey: process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY!,
+ }),
+ codeInput(),
+ ],
+})
diff --git a/schroedinger-hat-website.code-workspace b/schroedinger-hat-website.code-workspace
deleted file mode 100644
index 98975f45..00000000
--- a/schroedinger-hat-website.code-workspace
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "folders": [
- {
- "path": "."
- }
- ],
- "extensions": {
- "recommendations": [
- "vue.volar",
- "antfu.unocss",
- "antfu.vite",
- "mattpocock.ts-error-translator",
- "yoavbls.pretty-ts-errors",
- "stylelint.vscode-stylelint"
- ]
- },
- "settings": {
- "stylelint.validate": [
- "vue",
- "scss",
- "css"
- ],
- "stylelint.packageManager": "npm",
- "scss.validate": false,
- "css.validate": false,
- // Explorer
- "explorer.sortOrder": "foldersNestsFiles",
- "explorer.fileNesting.enabled": true,
- "explorer.fileNesting.expand": false,
- "explorer.fileNesting.patterns": {
- ".env": "*.env, .env.*, .envrc, env.d.ts",
- ".gitignore": ".gitattributes, .gitmodules, .gitmessage, .mailmap, .git-blame*",
- "*.js": "$(capture).js.map, $(capture).*.js",
- "*.ts": "$(capture).js, $(capture).*.ts",
- "*.vue": "$(capture).*.ts, $(capture).*.js",
- "package.json": ".browserslist*, .circleci*, .codecov, .commitlint*, .cz-config.js, .czrc, .editorconfig, .eslint*, .firebase*, .flowconfig, .github*, .gitlab*, .gitpod*, .huskyrc*, .jslint*, .lighthouserc.*, .lintstagedrc*, .markdownlint*, .mocha*, .node-version, .nodemon*, .npm*, .nvmrc, .pm2*, .pnp.*, .pnpm*, .prettier*, .releaserc*, .sentry*, .stackblitz*, .styleci*, .stylelint*, .tazerc*, .textlint*, .tool-versions, .travis*, .versionrc*, .vscode*, .watchman*, .xo-config*, .yamllint*, .yarnrc*, Procfile, api-extractor.json, apollo.config.*, appveyor*, ava.config.*, azure-pipelines*, bower.json, build.config.*, commitlint*, crowdin*, cypress.json, dangerfile*, dprint.json, firebase.json, grunt*, gulp*, jasmine.*, jenkins*, jest.config.*, jsconfig.*, karma*, lerna*, lighthouserc.*, lint-staged*, nest-cli.*, netlify*, nodemon*, nx.*, package-lock.json, phpcs.xml, playwright.config.*, pm2.*, pnpm*, prettier*, pullapprove*, puppeteer.config.*, pyrightconfig.json, renovate*, rollup.config.*, stylelint*, tsconfig.*, tsdoc.*, tslint*, tsup.config.*, turbo*, typedoc*, vercel*, vetur.config.*, vitest.config.*, webpack.config.*, workspace.json, xo.config.*, yarn*",
- "readme*": "authors, backers.md, changelog*, citation*, code_of_conduct.md, codeowners, contributing.md, contributors, copying, credits, governance.md, history.md, license*, maintainers, readme*, security.md, sponsors.md",
- "vite.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, cssnano.config.*, cypress.json, env.d.ts, htmlnanorc.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, playwright.config.*, postcss.config.*, puppeteer.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, unocss.config.*, vitest.config.*, webpack.config.*, windi.config.*",
- },
- // Default formatters
- "[vue]": {
- "editor.defaultFormatter": "Vue.volar",
- },
- "[javascript]": {
- "editor.defaultFormatter": "Vue.volar"
- },
- "[javascriptreact]": {
- "editor.defaultFormatter": "Vue.volar"
- },
- "[typescript]": {
- "editor.defaultFormatter": "Vue.volar"
- },
- "[typescriptreact]": {
- "editor.defaultFormatter": "Vue.volar"
- },
- },
- // Eslint
- "eslint.experimental.useFlatConfig": true,
-
- // Disable the default formatter, use eslint instead
- "prettier.enable": false,
- "editor.formatOnSave": false,
-
- // Auto fix
- "editor.codeActionsOnSave": {
- "source.fixAll.eslint": "explicit",
- "source.organizeImports": "never"
- },
-
- // Silent the stylistic rules in you IDE, but still auto fix them
- "eslint.rules.customizations": [
- { "rule": "style/*", "severity": "off" },
- { "rule": "format/*", "severity": "off" },
- { "rule": "*-indent", "severity": "off" },
- { "rule": "*-spacing", "severity": "off" },
- { "rule": "*-spaces", "severity": "off" },
- { "rule": "*-order", "severity": "off" },
- { "rule": "*-dangle", "severity": "off" },
- { "rule": "*-newline", "severity": "off" },
- { "rule": "*quotes", "severity": "off" },
- { "rule": "*semi", "severity": "off" }
- ],
-
- // Enable eslint for all supported languages
- "eslint.validate": [
- "javascript",
- "javascriptreact",
- "typescript",
- "typescriptreact",
- "vue",
- "html",
- "markdown",
- "json",
- "jsonc",
- "yaml",
- "toml"
- ]
-}
diff --git a/src/App.vue b/src/App.vue
deleted file mode 100755
index 473f21c5..00000000
--- a/src/App.vue
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/(dev)/components/page.tsx b/src/app/(dev)/components/page.tsx
new file mode 100644
index 00000000..05ea3154
--- /dev/null
+++ b/src/app/(dev)/components/page.tsx
@@ -0,0 +1,157 @@
+"use client"
+
+import { inDevEnvironment } from "@/app/consts"
+import { redirect } from "next/navigation"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Blockquote } from "@/components/atoms/typography/Blockquote"
+import { List } from "@/components/atoms/lists/List"
+import { ListItem } from "@/components/atoms/lists/ListItem"
+import { InlineText } from "@/components/atoms/typography/InlineText"
+import { Link } from "@/components/atoms/links/Link"
+import { Image } from "@/components/atoms/media/Image"
+import GradientCard from "@/components/organisms/gradient-card"
+import ImageCard from "@/components/organisms/image-card"
+import { ImageLabel } from "@/components/organisms/image-label"
+import { BulletPoint } from "@/components/organisms/bullet-point"
+
+export default function ComponentsPage() {
+ // Redirect if not in development environment
+ if (!inDevEnvironment) {
+ redirect("/")
+ }
+
+ return (
+
+
Components Showcase
+
+
+ {/* Headings */}
+
+ Heading Level 1
+ Heading Level 2
+ Heading Level 3
+ Heading Level 4
+
+
+
+ {/* Paragraphs */}
+
+ Paragraphs
+
+ This is a standard paragraph with some text. It demonstrates the default text styling.
+
+
+
+
+ {/* Blockquote */}
+
+ Blockquote
+
+ This is a blockquote. It's used to highlight important quotes or statements.
+
+
+
+
+ {/* Lists */}
+
+ Lists
+
+ Bullet List
+
+ First bullet item
+ Second bullet item
+ Third bullet item
+
+
+ Numbered List
+
+ First numbered item
+ Second numbered item
+ Third numbered item
+
+
+
+
+ {/* Inline Text Styles */}
+
+ Inline Text Styles
+
+ This paragraph contains bold text ,{" "}
+ italic text , and{" "}
+ code text .
+
+
+
+
+ {/* Links */}
+
+ Links
+
+ Here is an example of a hyperlink.
+
+
+
+
+ {/* Images */}
+
+ Images
+
+
+
+
+
+ Default image with rounded corners and overflow protection
+
+
+
+
+
+
+
Square image with custom dimensions
+
+
+
+
+ Custom Components
+
+ Gradient Card
+
+
+
+
+ Image Card
+
+
+ Image Label
+
+
+ Bullet Point
+
+
+
+ )
+}
diff --git a/src/app/(dev)/sanity-cms/[[...tool]]/page.tsx b/src/app/(dev)/sanity-cms/[[...tool]]/page.tsx
new file mode 100644
index 00000000..bf56cd0d
--- /dev/null
+++ b/src/app/(dev)/sanity-cms/[[...tool]]/page.tsx
@@ -0,0 +1,19 @@
+/**
+ * This route is responsible for the built-in authoring environment using Sanity Studio.
+ * All routes under your studio path is handled by this file using Next.js' catch-all routes:
+ * https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes
+ *
+ * You can learn more about the next-sanity package here:
+ * https://github.com/sanity-io/next-sanity
+ */
+
+import { NextStudio } from "next-sanity/studio"
+import config from "../../../../../sanity.config"
+
+export const dynamic = "force-static"
+
+export { metadata, viewport } from "next-sanity/studio"
+
+export default function StudioPage() {
+ return
+}
diff --git a/src/app/(website)/association/about-us/page.tsx b/src/app/(website)/association/about-us/page.tsx
new file mode 100644
index 00000000..52ab6bf1
--- /dev/null
+++ b/src/app/(website)/association/about-us/page.tsx
@@ -0,0 +1,272 @@
+import { Image } from "@/components/atoms/media/Image"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Link } from "@/components/atoms/links/Link"
+import { ArrowRight } from "lucide-react"
+import { MentorIcon, Mic01Icon, SchoolTieIcon, UserMultipleIcon } from "hugeicons-react"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { StatBlocks } from "@/components/organisms/stat-block"
+import { sanityClient } from "@/sanity/lib/client"
+import { urlFor } from "@/sanity/lib/image"
+import type { Partner } from "@/sanity/sanity.types"
+import { LogoGallery } from "@/components/organisms/logo-gallery"
+import { TeamMemberCard } from "@/components/organisms/team-card"
+import type { TeamMember } from "@/sanity/sanity.types"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { Button } from "@/components/molecules/button"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+// Images
+import staffSpeaker from "@/images/about/os23_staff_speaker.jpg"
+import gabriMikiStage from "@/images/about/os24_gabri-miki_stage.jpg"
+import joinTheTeam from "@/images/about/os24_join-the-team.jpg"
+import os2Public from "@/images/about/os24_public.jpg"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { ImageContent } from "@/components/organisms/image-content"
+
+export const metadata = constructMetadata({
+ title: "Schrödinger Hat: About Us",
+ description: "Learn more about Schrödinger Hat, our mission, and the team behind the organization.",
+})
+
+export default async function AboutUsPage() {
+ // Fetch business partners
+ const partners: Partner[] = await sanityClient.fetch(
+ `*[_type == "partner" && isBusinessPartner && "about" in visibility] | order(orderRank asc)`,
+ )
+
+ // New team members query
+ const teamMembers: TeamMember[] = await sanityClient.fetch(`
+ *[_type == "teamMember"] | order(orderRank asc) {
+ ...
+ }
+ `)
+
+ return (
+
+ {/* Hero */}
+
+
+
+
+
+
+
+ Loving Open Source since 2020
+
+
+
+
+ We created an ever-growing community of developers and creators to spread our passion of open
+ source.
+
+
+
+
+
+
+ {/* Content */}
+
+
+
+
+
+ What we do in a nutshell
+
+ ,
+ title: "Meetup",
+ description: "Organise speakers, logistic, marketing for conferences all across Europe.",
+ },
+ {
+ number: ,
+ title: "Workshops",
+ description: "We invite special guests to teach new things to our community.",
+ },
+ {
+ number: ,
+ title: "Podcasts",
+ description: "Chilling and talking about open source projects and news.",
+ },
+ {
+ number: ,
+ title: "Consulting",
+ description: "We help companies to organise all of the previous activities.",
+ },
+ ]}
+ />
+
+
+
+
+
+
+ Our story
+
+
+
+ It all started with an idea that became a family
+
+
+
+ We started as a group of friends who shared a passion for open source and technology during
+ Covid-19 lockdown. Over time, we grew into a community of developers and creators who are
+ dedicated to spreading the message of open source.
+
+
+
+
+ Read post
+
+
+
+
+
+
+
+
+
+
+
+
+
Trusted by the big players
+
+ We received sponsorship and support from industry leading companies to organise our events and
+ activities.
+
+
+
+
+ } => partner.image !== undefined && partner.image !== null,
+ )
+ .map((partner) => ({
+ src: urlFor(partner.image).auto("format").height(150).url(),
+ alt: partner.description ?? "Partner logo",
+ }))}
+ />
+
+
+
+
+
+
+ Meet the people behind Schrödinger Hat
+
+
+
+ {teamMembers.map((member) => (
+
+ ))}
+
+
+
+
+
+
+ I dig it! How I can join the gang?
+
+
+
+
+
+ If you like our idea but don't have enough time to contribute and work on our projects
+ you may consider becoming a member.
+
+
+ Membership requires a small fee to support our expenses and gives you back some perks like
+ early access to tickets and discounts for our shop.
+
+
+
+ Become a member
+
+
+
+ >
+ }
+ imageSrc={os2Public}
+ imageAlt="Schrödinger Hat community members on stage"
+ imagePosition="right"
+ />
+
+
+
+ or
+
+
+
+
+
+ We're always looking for new people to join our team. If you think you have what it
+ takes, please send us an email.
+
+
+ We have no fixed roles, we just need people who are willing to help us out with the
+ organisation of our events and activities.
+
+
+
+ Apply here
+
+
+
+ >
+ }
+ imageSrc={joinTheTeam}
+ imageAlt="Schrödinger Hat staff handing out badges"
+ imagePosition="left"
+ />
+
+
+
+ )
+}
diff --git a/src/app/(website)/association/join/components/membership-form-modal.tsx b/src/app/(website)/association/join/components/membership-form-modal.tsx
new file mode 100644
index 00000000..f706e89e
--- /dev/null
+++ b/src/app/(website)/association/join/components/membership-form-modal.tsx
@@ -0,0 +1,201 @@
+"use client"
+
+import { useState } from "react"
+import { zodResolver } from "@hookform/resolvers/zod"
+import { useForm } from "react-hook-form"
+import { z } from "zod"
+import { Button } from "@/components/molecules/button"
+import {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from "@/components/ui/dialog"
+import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"
+import { Input } from "@/components/ui/input"
+import { Checkbox } from "@/components/ui/checkbox"
+import { type RouterOutputs, api } from "@/trpc/react"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Heading } from "@/components/atoms/typography/Heading"
+
+interface FieldProps {
+ field: {
+ value: string
+ onChange: (...event: any[]) => void
+ onBlur: () => void
+ name: string
+ ref: React.Ref
+ }
+}
+
+type CheckoutResponse = RouterOutputs["stripe"]["createCheckoutSession"]
+
+interface CheckboxFieldProps {
+ field: {
+ value: boolean
+ onChange: (...event: any[]) => void
+ onBlur: () => void
+ name: string
+ ref: React.Ref
+ }
+}
+
+const formSchema = z.object({
+ name: z.string().min(2, "Name must be at least 2 characters"),
+ surname: z.string().min(2, "Surname must be at least 2 characters"),
+ email: z.string().email("Invalid email address"),
+ codiceFiscale: z
+ .string()
+ .length(16, "Codice Fiscale must be 16 characters")
+ .regex(/^[A-Z0-9]+$/, "Codice Fiscale must contain only uppercase letters and numbers"),
+ acceptTerms: z.boolean().refine((val) => val === true, {
+ message: "This is required",
+ }),
+})
+
+type FormValues = z.infer
+
+export function MembershipFormModal() {
+ const [open, setOpen] = useState(false)
+ const { mutate: createCheckout, isPending } = api.stripe.createCheckoutSession.useMutation({
+ onSuccess: (data: CheckoutResponse) => {
+ if (data.status === "success") {
+ window.location.href = data.url
+ }
+ },
+ onError: (error) => {
+ console.error("Failed to create checkout session:", error)
+ },
+ })
+
+ const form = useForm({
+ resolver: zodResolver(formSchema),
+ defaultValues: {
+ name: "",
+ surname: "",
+ email: "",
+ codiceFiscale: "",
+ acceptTerms: false,
+ },
+ })
+
+ function onSubmit(data: FormValues) {
+ createCheckout({
+ name: data.name,
+ surname: data.surname,
+ email: data.email,
+ codiceFiscale: data.codiceFiscale,
+ })
+ }
+
+ return (
+
+
+
+ Become a member
+
+
+
+
+ Membership Application
+
+ Please fill in your details to proceed with the membership application.
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/association/join/components/price-card.tsx b/src/app/(website)/association/join/components/price-card.tsx
new file mode 100644
index 00000000..cab246be
--- /dev/null
+++ b/src/app/(website)/association/join/components/price-card.tsx
@@ -0,0 +1,34 @@
+import { Check } from "lucide-react"
+import { Card, CardContent, CardFooter, CardHeader } from "@/components/ui/card"
+
+interface PriceCardProps {
+ price: number
+ cta: React.ReactNode
+ legalInfo: string
+ benefits: string[]
+}
+
+export function PriceCard({ price, cta, legalInfo, benefits }: PriceCardProps) {
+ return (
+
+
+
+
+ {price}€/year
+
+
+ {benefits.map((benefit, index) => (
+
+
+ {benefit}
+
+ ))}
+
+
+
+ {cta}
+ {legalInfo}
+
+
+ )
+}
diff --git a/src/app/(website)/association/join/components/reviews-section.tsx b/src/app/(website)/association/join/components/reviews-section.tsx
new file mode 100644
index 00000000..b7aa29a7
--- /dev/null
+++ b/src/app/(website)/association/join/components/reviews-section.tsx
@@ -0,0 +1,59 @@
+"use client"
+
+import { useEffect, useState } from "react"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import ReviewCard from "@/components/organisms/review-card"
+import type { Review } from "../types"
+import reviews from "../reviews.json"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+
+function getRandomReviews(reviews: Review[], count: number) {
+ const shuffled = [...reviews]
+ const reviewCount = Math.min(count, reviews.length)
+
+ for (let i = shuffled.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1))
+ const temp = shuffled[i]!
+ shuffled[i] = shuffled[j]!
+ shuffled[j] = temp
+ }
+
+ return shuffled.slice(0, reviewCount)
+}
+
+export function ReviewsSection() {
+ const [selectedReviews, setSelectedReviews] = useState([])
+
+ useEffect(() => {
+ setSelectedReviews(getRandomReviews(reviews, 12))
+ }, [])
+
+ return (
+
+
+ What people say about it
+
+ Truth be told, we don't have many reviews yet.
+
+ And your nonprofit membership is not something that you talk about everyday or review on Google.
+
+ So we asked ChatGTP to imagine what people would say about it.
+
+
+
+
+
+ {selectedReviews.map((review) => (
+
+
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/app/(website)/association/join/page.tsx b/src/app/(website)/association/join/page.tsx
new file mode 100644
index 00000000..6d7f6d46
--- /dev/null
+++ b/src/app/(website)/association/join/page.tsx
@@ -0,0 +1,261 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Image } from "@/components/atoms/media/Image"
+import { MembershipFormModal } from "./components/membership-form-modal"
+import { ReviewsSection } from "./components/reviews-section"
+import { FaqBlock } from "@/components/organisms/faq-block"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+// Images
+import perkBox from "@/images/membership/perk_box.svg"
+import perkEarlyAccess from "@/images/membership/perk_early_access.svg"
+import perkFood from "@/images/membership/perk_food.svg"
+import perkVote from "@/images/membership/perk_vote.svg"
+import { PriceCard } from "./components/price-card"
+import { AnimatedSection } from "@/components/atoms/layout/AnimatedSection"
+import { DURATION_TWO_FRAMES } from "@/components/atoms/layout/const"
+
+export const metadata = constructMetadata({
+ title: "Schrödinger Hat: Join Us",
+ description: "Become a member of Schrödinger Hat and join our community of open source enthusiasts.",
+})
+
+export default async function BecomeMemberPage() {
+ return (
+
+ {/* Hero */}
+
+
+
+
+
+
+
+
+
+ We know...
+
+
+
+
+ You already have a lot of subscriptions. And we don't offer you new Marvel contents or
+ extra GB on the cloud
+
+
+ But hear us out on why you should join us
+
+
+
+
+
+
+ {/* Perks Desktop */}
+
+ {/* First row - stacks vertically on mobile */}
+
+
+
+ The membership is an optional paid subscription
+
+ We're all volunteers so we can't offer you lots of things, but we can offer you a lot
+ of love
+
+ Ok not just love, we prepared some perks for you
+
+
+
+
+
+
+
+
+
+
+ Early access to event ticket, news and merch drops
+
+
+
+
+
+
+
+
+ Merch store discounts and free shipping!
+
+
+
+
+
+
+
+
+ {/* Second row - stacks vertically on mobile */}
+
+
+
+
+
+ Members only dinners and parties
+
+
+ *not just tacos, we promise
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Votations to drive our organization and choose speakers for our major events
+
+
+
+
+
+ {/* Perks Mobile */}
+
+
+
+ The membership is an optional paid subscription
+
+ We're all volunteers so we can't offer you lots of things, but we can offer you a lot of
+ love
+
+ Ok not just love, we prepared some perks for you
+
+
+
+
+
+
+ Early access to event ticket, news and merch drops
+
+
+
+
+
+
+ Merch store discounts and free shipping!
+
+
+
+
+
+
+
+ Members only dinners and parties
+
+
+ *not just tacos, we promise
+
+
+
+
+
+
+
+ Votations to drive our organization and choose speakers for our major events
+
+
+
+
+
+
+ All this for some money
+
+
+
}
+ legalInfo="It keeps the lights on and help us pays for all the little things that you need to run a nonprofit"
+ benefits={[
+ "Early access to event ticket",
+ "Merch store discounts",
+ "Members only dinners",
+ "Votations to drive our organization",
+ ]}
+ />
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/association/join/reviews.json b/src/app/(website)/association/join/reviews.json
new file mode 100644
index 00000000..ea1fb8db
--- /dev/null
+++ b/src/app/(website)/association/join/reviews.json
@@ -0,0 +1,402 @@
+[
+ {
+ "name": "Claudia Schmidt",
+ "review": "Finally, a membership that makes me feel cooler than my younger brother’s cryptocurrency investments."
+ },
+ {
+ "name": "Olivier Dupont",
+ "review": "I tried to cancel it once, but my dog barked at me until I renewed. Best decision ever!"
+ },
+ {
+ "name": "Sofia Rossi",
+ "review": "If this membership were a pasta dish, it’d be carbonara—simple, satisfying, and life-changing."
+ },
+ {
+ "name": "Erik Jansen",
+ "review": "This membership is like a bike in Amsterdam—essential, reliable, and makes you feel superior."
+ },
+ {
+ "name": "Elena Popescu",
+ "review": "I wasn’t sure at first, but now my cat refuses to nap without it being active."
+ },
+ {
+ "name": "Ingrid Åkesson",
+ "review": "It’s so good that I knit a scarf inspired by it. And I don’t even knit."
+ },
+ {
+ "name": "Marek Kowalski",
+ "review": "I recommended this to my boss, and now I’m Employee of the Month. Twice."
+ },
+ {
+ "name": "Nina Müller",
+ "review": "It’s like Swiss chocolate—smooth, delightful, and impossible to share."
+ },
+ {
+ "name": "Luis Fernández",
+ "review": "I used this once, and my neighbor suddenly started borrowing sugar from me again. Magic."
+ },
+ {
+ "name": "Petra Novak",
+ "review": "This membership fixed my Wi-Fi and probably my marriage. 10/10!"
+ },
+ {
+ "name": "Markus Weber",
+ "review": "If Mozart were alive, he’d write a symphony about how great this is."
+ },
+ {
+ "name": "Ana Sousa",
+ "review": "It’s like a custard tart: you don’t realize how much you needed it until you try."
+ },
+ {
+ "name": "Georgios Papadopoulos",
+ "review": "After using this membership, I’m almost ready to forgive whoever stole my lunch from the office fridge."
+ },
+ {
+ "name": "Isabella Johansson",
+ "review": "This is the IKEA of memberships: affordable, stylish, and somehow makes me proud of my life choices."
+ },
+ {
+ "name": "Rafael Silva",
+ "review": "I didn’t know I needed this until it became my morning coffee’s best friend."
+ },
+ {
+ "name": "Lucas Becker",
+ "review": "This membership is so good, my plants have started growing faster. Or is it just me?"
+ },
+ {
+ "name": "Katerina Ivanova",
+ "review": "It’s like finding a 50 euro note in your pocket—unexpected and delightful."
+ },
+ {
+ "name": "Henrik Sørensen",
+ "review": "If I had a krone for every time I praised this membership, I could buy another one."
+ },
+ {
+ "name": "Marie Dubois",
+ "review": "This membership is the baguette of life: essential, fulfilling, and always a good idea."
+ },
+ {
+ "name": "Tomáš Horák",
+ "review": "If Kafka had this, he’d write happier books."
+ },
+ {
+ "name": "Amélie Charpentier",
+ "review": "I signed up thinking it would be just another membership, but now it’s the first thing I tell people about at dinner parties. My family may be sick of it, but my neighbor’s cat is also on board somehow."
+ },
+ {
+ "name": "Viktor Kovács",
+ "review": "At first, I wasn’t sure this would fit into my life, but now I use it so much that my grandma asked if it was a new religion. I told her, ‘Maybe, but it’s way more fun than Sunday mass.’"
+ },
+ {
+ "name": "Lucia Fernández",
+ "review": "This membership saved me from doom! Okay, not literal doom, but I did avoid cleaning my apartment for three hours because I was so entertained by what it offers."
+ },
+ {
+ "name": "Jakub Zielinski",
+ "review": "Before this, my life was fine. After this, my life was amazing. My wife says I talk about it too much, but she doesn’t understand that you can’t overhype perfection!"
+ },
+ {
+ "name": "Sofia Petrou",
+ "review": "I thought nothing could top feta cheese in my ranking of life’s greatest joys. I was wrong. This membership is like feta but for your soul."
+ },
+ {
+ "name": "Hannah Weiss",
+ "review": "This membership is so good, I now find myself recommending it to strangers in line at the bakery. It’s not weird, though, because they usually end up thanking me."
+ },
+ {
+ "name": "Lorenzo Bianchi",
+ "review": "You know those tiny espresso cups that make you feel like an artist while drinking coffee? This membership is the digital version of that. Sleek, essential, and makes you feel classy."
+ },
+ {
+ "name": "Petra Horváth",
+ "review": "This is the first thing I’ve ever used that made me forget about my phone for a full hour. Even my mom noticed I was less distracted during lunch!"
+ },
+ {
+ "name": "Daniel Jensen",
+ "review": "If life is a series of choices, this membership is the only one I don’t second-guess. Even my minimalist friends approve—and they barely approve of furniture!"
+ },
+ {
+ "name": "Isabelle Laurent",
+ "review": "I told myself I’d only use this for a month, but then I kept finding new reasons to love it. Now I just tell people I’ve made a ‘lifestyle upgrade.’"
+ },
+ {
+ "name": "Mateo Silva",
+ "review": "This membership is like the perfect vacation: you didn’t think you needed it, but suddenly you’re wondering how you ever lived without it. Even my dog seems happier now!"
+ },
+ {
+ "name": "Karin Olsen",
+ "review": "It’s so good that I emailed customer support just to thank them. Now I’m pretty sure they think I’m weird, but at least I’m happy!"
+ },
+ {
+ "name": "Tomasz Novak",
+ "review": "I bought this on a whim at midnight, and now it’s the best impulsive decision I’ve ever made. My friends keep asking if it’s a cult, but if it is, sign me up again!"
+ },
+ {
+ "name": "Julia Schäfer",
+ "review": "The only bad thing about this membership is how much I’ve started bragging about it to my coworkers. They’re either impressed or annoyed, and honestly, both are wins for me."
+ },
+ {
+ "name": "Marco Conti",
+ "review": "I thought I was buying something trendy, but it turns out I was buying something timeless. My mother even asked if it’s one of those ‘apps the kids love.’ I told her it’s better."
+ },
+ {
+ "name": "Anya Petrova",
+ "review": "This membership made me realize I’ve been doing things wrong my whole life. It’s like they designed it for me personally, except my name’s not on the packaging… yet."
+ },
+ {
+ "name": "Sven Lindholm",
+ "review": "If IKEA made memberships, this would be it: straightforward, brilliant, and something that secretly changes your entire way of thinking without you realizing."
+ },
+ {
+ "name": "Elisa Moretti",
+ "review": "I told myself I’d try it for a week. Now it’s been three months, and I’m practically its unofficial spokesperson. Do I get a discount for being this loyal?"
+ },
+ {
+ "name": "Marta Kowalczyk",
+ "review": "It’s like a secret ingredient in cooking: you don’t know it’s there, but it makes everything better. Except now, I want everyone to know about it."
+ },
+ {
+ "name": "Jonas van der Berg",
+ "review": "If this were a bike, it would be the sturdiest one in Amsterdam. No flat tires, no broken bells, just smooth sailing into happiness."
+ },
+ {
+ "name": "Luna Stark",
+ "review": "If Tony Stark had this membership, he wouldn’t need an AI assistant. Jarvis who?"
+ },
+ {
+ "name": "Hugo Söderberg",
+ "review": "It’s like the Mjölnir of memberships—only those truly worthy can handle its power."
+ },
+ {
+ "name": "Sophie Granger",
+ "review": "This membership is my new Patronus. I didn’t think anything could protect me from boredom this effectively."
+ },
+ {
+ "name": "Leonidas Kostas",
+ "review": "If this membership were in *The Lord of the Rings*, it’d be the One Membership to rule them all."
+ },
+ {
+ "name": "Eloise Targaryen",
+ "review": "I feel like a khaleesi every time I use this. Dracarys for boring alternatives!"
+ },
+ {
+ "name": "Nikolai Romanov",
+ "review": "This is the kind of thing Doctor Who would carry in the TARDIS—timeless, reliable, and slightly mysterious."
+ },
+ {
+ "name": "Clara Dupont",
+ "review": "It’s like discovering the Matrix but with less existential dread and more fun. Morpheus would approve."
+ },
+ {
+ "name": "Axel Bjornson",
+ "review": "This membership is basically the Infinity Gauntlet—complete, powerful, and makes me feel like a cosmic overlord."
+ },
+ {
+ "name": "Marta Skywalker",
+ "review": "This is the Obi-Wan of memberships—it’s my only hope when life gets dull."
+ },
+ {
+ "name": "Felix von Doom",
+ "review": "If Doctor Doom had this membership, he’d be too content to bother with world domination."
+ },
+ {
+ "name": "Beatrix Holmes",
+ "review": "Sherlock Holmes would definitely approve of this. Deduction: it’s elementary, my dear Watson."
+ },
+ {
+ "name": "Andrei Starkov",
+ "review": "It’s like the Death Star but with none of the moral dilemmas—just pure, unadulterated power in your hands."
+ },
+ {
+ "name": "Isabella Baggins",
+ "review": "This membership is my precious. I would take it on a journey through Mordor if I had to."
+ },
+ {
+ "name": "Jonas Kirk",
+ "review": "Captain Kirk would boldly go for this membership. It’s out of this galaxy!"
+ },
+ {
+ "name": "Anna Lannister",
+ "review": "A Lannister always pays their dues, and this membership is worth every golden coin."
+ },
+ {
+ "name": "Dario Harker",
+ "review": "If this were in Dracula, I’d happily trade garlic for this membership—it’s that good."
+ },
+ {
+ "name": "Freya Stark",
+ "review": "This is like Skyrim’s dragon shout in real life—powerful, unique, and makes you feel invincible."
+ },
+ {
+ "name": "Lucas Xavier",
+ "review": "Professor X would say this membership is a superpower—it makes everything around you seem better."
+ },
+ {
+ "name": "Eleanor Potter",
+ "review": "It’s like getting into Hogwarts without waiting for the owl. Magical and life-changing!"
+ },
+ {
+ "name": "Dimitri Dragunov",
+ "review": "If Game of Thrones had this, they wouldn’t have needed dragons—this membership burns bright enough on its own."
+ },
+ {
+ "name": "Elena Rossi",
+ "review": "This membership runs so smoothly, it’s like my life has finally switched from dial-up to fiber optic. I didn’t realize how much lag I had been living with until now!"
+ },
+ {
+ "name": "Hugo Laurent",
+ "review": "This membership feels like finding a hidden Easter egg in your favorite software. It’s there, it’s brilliant, and you wonder how you lived without it."
+ },
+ {
+ "name": "Katarina Novak",
+ "review": "If my life were a hard drive, this membership would be the SSD upgrade I didn’t know I needed. Faster, better, and makes everything else seem outdated."
+ },
+ {
+ "name": "Victor Weiss",
+ "review": "This membership is like good open-source software—easy to adopt, ridiculously powerful, and so good you almost feel guilty it’s not proprietary."
+ },
+ {
+ "name": "Ines Dubois",
+ "review": "It’s like having a backup server for your day-to-day life. No matter how messy things get, you know this is there to keep things running smoothly."
+ },
+ {
+ "name": "Lars Jorgensen",
+ "review": "This membership is so efficient, it’s like it found the memory leak in my brain and patched it. Finally, I can run my life without crashing every Monday."
+ },
+ {
+ "name": "Julia Müller",
+ "review": "This membership is the VPN of life—it keeps my stress levels secure and encrypted, and no one can steal my joy anymore."
+ },
+ {
+ "name": "Pedro Martins",
+ "review": "Think of this membership as a software update for your life: it fixes bugs you didn’t know you had and installs features you didn’t know you needed."
+ },
+ {
+ "name": "Marek Kowalski",
+ "review": "If this membership were a programming language, it’d be Python—simple, intuitive, and you can’t imagine not using it daily once you start."
+ },
+ {
+ "name": "Ana Sousa",
+ "review": "This is like discovering that Ctrl+Z works in real life. It’s so convenient and life-changing that I wish I had known about it sooner."
+ },
+ {
+ "name": "Björn Lindholm",
+ "review": "This membership is basically the API integration my chaotic schedule needed. Now everything just works together seamlessly."
+ },
+ {
+ "name": "Sofia Grigoriou",
+ "review": "It’s like upgrading from Windows ME to Windows 11—suddenly, my whole world is faster, smarter, and far less prone to random blue screens."
+ },
+ {
+ "name": "Tomáš Horák",
+ "review": "This membership has the uptime of a rock-solid server—always reliable, never down, and ready to handle anything I throw at it."
+ },
+ {
+ "name": "Clara Schmidt",
+ "review": "This membership feels like an ergonomic keyboard for my life. Everything is just more comfortable, and I can’t go back to the old ways."
+ },
+ {
+ "name": "Jens Sørensen",
+ "review": "This is the Kubernetes of memberships—it orchestrates my chaos so beautifully that I almost feel like I’m in control again."
+ },
+ {
+ "name": "Isabella Romano",
+ "review": "This membership is like switching to dark mode—smoother, cooler, and now I can’t imagine going back to the bright, stressful version of life."
+ },
+ {
+ "name": "Rafael Silva",
+ "review": "It’s like finally discovering the command line for life. Sure, not everyone uses it, but once you learn the power of this membership, you’ll never look back."
+ },
+ {
+ "name": "Lucas van den Berg",
+ "review": "This membership is the AI assistant you wish you had—it predicts your needs, solves your problems, and somehow makes you look smarter."
+ },
+ {
+ "name": "Katerina Ivanova",
+ "review": "This membership is like finding the perfect IDE for life. It’s customizable, efficient, and makes even the most complex problems feel solvable."
+ },
+ {
+ "name": "Mateo Fernández",
+ "review": "It’s like upgrading your RAM, but for your peace of mind. Suddenly, I can juggle everything without breaking a sweat. Highly recommend."
+ },
+ {
+ "name": "Claudia Pawson",
+ "review": "This membership is so good that my cat now sits on my keyboard less because she knows I’m busy enjoying it. It’s like she respects it more than my work emails—probably because it’s actually worth my time!"
+ },
+ {
+ "name": "Giovanni Meowtelli",
+ "review": "I signed up for this membership, and somehow my cat started following me around the house more. It’s like he knows I’ve done something smart and just wants to bask in my upgraded human potential."
+ },
+ {
+ "name": "Isabelle Whiskerfield",
+ "review": "My cat has very high standards, and yet she immediately claimed the welcome packet as her own. I can’t tell if she approves or if she’s just trying to absorb the magic by osmosis."
+ },
+ {
+ "name": "Lucas Furrman",
+ "review": "This membership is the only thing that keeps my cat entertained when I’m not dangling a toy in her face. I don’t know what it does to her, but she naps so peacefully after I use it."
+ },
+ {
+ "name": "Elena Catova",
+ "review": "It’s so good, even my cat stopped sabotaging me during Zoom calls. She just sits quietly and watches me enjoy this membership like it’s a Netflix special."
+ },
+ {
+ "name": "Björn Purrsson",
+ "review": "My cat once knocked my coffee over while I was using this membership, and I didn’t even get mad. That’s how much joy it brings to my life. If my cat likes it, so do I."
+ },
+ {
+ "name": "Marta Felinova",
+ "review": "This membership is like the ultimate cat bed—soft, warm, and you’ll never want to leave it. My cat and I now fight over who gets to claim it as their own."
+ },
+ {
+ "name": "Henrik Pawsgaard",
+ "review": "My cat usually judges everything I do, but not this. She actually started purring when I signed up, as if she knew I’d made the best decision of the year."
+ },
+ {
+ "name": "Anya Meowska",
+ "review": "This membership is the only thing my cat and I can agree on. She loves it because it keeps me too busy to bother her, and I love it because it’s just that good."
+ },
+ {
+ "name": "Sofia Pawlinski",
+ "review": "I used this membership once, and now my cat looks at me with newfound respect. It’s like she thinks I’ve leveled up in life—and honestly, I have."
+ },
+ {
+ "name": "Jonas Whiskerson",
+ "review": "My cat used to bring me dead mice as gifts, but now she brings me the packaging from this membership. I think that’s her way of saying it’s the best thing I’ve ever brought into our home."
+ },
+ {
+ "name": "Petra Clawson",
+ "review": "I don’t know what’s more satisfying: how much I love this membership or how much my cat loves watching me use it. She stares at me like I’ve discovered catnip for humans."
+ },
+ {
+ "name": "Luis Felinez",
+ "review": "I wasn’t sure about signing up until my cat started batting at the screen while I was researching it. She made the decision for me, and she was absolutely right—it’s purrfection."
+ },
+ {
+ "name": "Katerina Meowinova",
+ "review": "My cat likes to sit on whatever I’m working on, but when it comes to this membership, she just sits beside me like she’s part of the process. I think she’s jealous she didn’t think of it first."
+ },
+ {
+ "name": "Freja Purrsdottir",
+ "review": "This membership is like a laser pointer for my brain—captivating, fun, and something my cat loves to watch me chase after. She sits by approvingly every time I log in."
+ },
+ {
+ "name": "Clara Tabbyton",
+ "review": "Since I got this membership, my cat has stopped waking me up at 4 a.m. I think it’s because she knows I’m finally making good life choices and wants to reward me for once."
+ },
+ {
+ "name": "Lorenzo Whiskerini",
+ "review": "My cat has a habit of knocking things off my desk, but she’s left this membership’s materials untouched. That’s how I know it’s something special—she only respects the best."
+ },
+ {
+ "name": "Ana Pawtrov",
+ "review": "This membership is like catnip for humans—addictive, energizing, and leaves you rolling around in pure happiness. My cat seems intrigued by how much I love it."
+ },
+ {
+ "name": "Tomás Meowreno",
+ "review": "My cat tried to sit on the laptop while I was signing up, but once I showed her the benefits, she curled up next to me like she knew this was a game-changer for both of us."
+ },
+ {
+ "name": "Isabella Purrucci",
+ "review": "My cat gave this her highest seal of approval: she rubbed her face on the membership card. If that doesn’t scream ‘essential,’ I don’t know what does."
+ }
+]
diff --git a/src/app/(website)/association/join/success/page.tsx b/src/app/(website)/association/join/success/page.tsx
new file mode 100644
index 00000000..72a1eaa2
--- /dev/null
+++ b/src/app/(website)/association/join/success/page.tsx
@@ -0,0 +1,113 @@
+import { getStripe, isStripeAvailable } from "@/lib/stripe"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { SuccessConfetti } from "./success-confetti"
+import { CheckmarkBadge01Icon, UserMultipleIcon, WavingHand01Icon } from "hugeicons-react"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+
+interface SuccessPageProps {
+ searchParams: Promise<{ session_id: string }>
+}
+
+export default async function SuccessPage({ searchParams }: SuccessPageProps) {
+ const { session_id: sessionId } = await searchParams
+
+ let customerEmail = ""
+ if (isStripeAvailable() && sessionId) {
+ const stripe = getStripe()
+ const session = await stripe.checkout.sessions.retrieve(sessionId)
+ customerEmail = session.customer_details?.email ?? ""
+ }
+
+ return (
+
+
+
+
+
+ {/* Header Section */}
+
+
+
+
+
+
+
+ Subscription completed!
+
+
+
+
+ Your request has been sent successfully!
+
+ What happens now?
+
+
+
+
+
+
+
+
+ {/* Features Grid */}
+
+ {/* Feature 1 */}
+
+
+
+ Confirmation
+
+
+ {customerEmail
+ ? `We have sent a confirmation to ${customerEmail}`
+ : "We will send you a confirmation email shortly"}
+
+
+
+ {/* Feature 2 */}
+
+
+
+ Approval
+
+
+ The association members will approve your request.
+
+
+
+ {/* Feature 3 */}
+
+
+
+ Welcome
+
+
+ You will receive your membership number in the next weeks.
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/association/join/success/success-confetti.tsx b/src/app/(website)/association/join/success/success-confetti.tsx
new file mode 100644
index 00000000..f1d19fe6
--- /dev/null
+++ b/src/app/(website)/association/join/success/success-confetti.tsx
@@ -0,0 +1,19 @@
+"use client"
+
+import dynamic from "next/dynamic"
+
+const ReactConfetti = dynamic(() => import("react-confetti"), {
+ ssr: false,
+})
+
+export function SuccessConfetti() {
+ return (
+
+ )
+}
diff --git a/src/app/(website)/association/join/types.ts b/src/app/(website)/association/join/types.ts
new file mode 100644
index 00000000..b7eeebd7
--- /dev/null
+++ b/src/app/(website)/association/join/types.ts
@@ -0,0 +1,4 @@
+export interface Review {
+ name: string
+ review: string
+}
diff --git a/src/app/(website)/association/press-kit/page.tsx b/src/app/(website)/association/press-kit/page.tsx
new file mode 100644
index 00000000..b4089c31
--- /dev/null
+++ b/src/app/(website)/association/press-kit/page.tsx
@@ -0,0 +1,259 @@
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { Image } from "@/components/atoms/media/Image"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Linkedin01Icon, NewTwitterIcon, YoutubeIcon } from "hugeicons-react"
+import { constructMetadata } from "@/lib/utils/metadata"
+import type { FC, SVGProps } from "react"
+
+// Images
+type LogoType = FC> & { src: string }
+
+import logoBackground from "@/images/press-kit/logo - background - rounded - flat background.svg"
+import logoBackgroundPng from "@/images/press-kit/logo - background - rounded - flat background.png"
+import logoBlack from "@/images/press-kit/logo - no background - no padding.svg"
+import logoBlackPng from "@/images/press-kit/logo - no background - no padding.png"
+import logoWhite from "@/images/press-kit/logo white - no background - no padding.svg"
+import logoWhitePng from "@/images/press-kit/logo white - no background - no padding.png"
+
+export const metadata = constructMetadata({
+ title: "Schrödinger Hat: Press Kit",
+ description: "Download our brand assets, logos, and official press materials.",
+})
+
+export default function PressKitPage() {
+ return (
+
+
+
+
+
+
+ Press Kit
+
+
+
+
+ So you have decided to tell a story about us?
+
+ Cool, we prepared some assets for you to use
+
+
+
+
+
+
+
+ Logo
+
+
+
+
+
+
Colors
+
+
+
+
+
+ Primary Red
+
+
+ #EE0000
+
+
+
+
+
+
+
+
+ Primary Black
+
+
+ #000000
+
+
+
+
+
+
+
+
+ Primary White
+
+
+ #FFFFFF
+
+
+
+
+
+
+
+
Typography
+
+
+
+ Headings
+
+
+ Lexend
+
+
+
+
+
+ Body
+
+
+ Inter
+
+
+
+
+
+
+
+
+
+
+ What we do, in a nutshell
+
+ Schrödinger's Hat is a nonprofit collective dedicated to fostering innovation, inclusivity,
+ and collaboration in the tech world. Rooted in the principles of open-source, we empower
+ individuals and communities by making knowledge and resources universally accessible.
+
+
+
+ What we do, in detail
+
+ "Schrödinger's Hat is a nonprofit organization and a thriving collective of
+ developers, innovators, and community leaders driven by a shared vision: to create an inclusive,
+ sustainable, and open-source-driven tech ecosystem.
+
+
+ Founded with the belief that collaboration and shared knowledge are the keys to meaningful
+ innovation, we go beyond software. We empower individuals and communities by making resources,
+ knowledge, and opportunities universally accessible.
+
+
+ At the heart of our mission lies Open Source Day, our flagship international event that gathers
+ thousands of participants and thought leaders to inspire, engage, and innovate. Complementing
+ this are our workshops, meetups, and community-driven projects that offer hands-on learning,
+ networking opportunities, and a platform to discuss and shape the future of technology.
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/blog/[slug]/page.tsx b/src/app/(website)/blog/[slug]/page.tsx
new file mode 100644
index 00000000..618d271b
--- /dev/null
+++ b/src/app/(website)/blog/[slug]/page.tsx
@@ -0,0 +1,131 @@
+import { notFound } from "next/navigation"
+import { PortableText } from "@portabletext/react"
+import { urlFor } from "@/sanity/lib/image"
+import { sanityClient } from "@/sanity/lib/client"
+import { createPortableTextComponents } from "../../page/[slug]/portableTextComponents"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Image } from "@/components/atoms/media/Image"
+import { formatDateTime } from "@/lib/utils/date"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { type Metadata } from "next"
+import { extractFirstParagraph } from "@/lib/seo"
+import { getAuthorFullName } from "@/lib/utils/videoContent"
+import type { Author, BlogPost } from "@/sanity/sanity.types"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+// Add this type to ensure we get the exact fields we need from the query
+type BlogPostWithAuthors = BlogPost & {
+ authors: Array>
+ headerImage?: {
+ asset: any
+ caption?: string
+ }
+}
+
+interface BlogPostPageProps {
+ params: Promise<{ slug: string }>
+}
+
+export async function generateMetadata({ params }: BlogPostPageProps): Promise {
+ const { slug } = await params
+ const post = await sanityClient.fetch(
+ `*[_type == "blogPost" && slug.current == $slug][0]{
+ title,
+ content,
+ "authors": authors[]->{
+ firstName,
+ lastName
+ }
+ }`,
+ { slug },
+ )
+
+ if (!post) return {}
+
+ const authors = post.authors.map((author) => getAuthorFullName(author as unknown as Author)).join(", ")
+
+ return constructMetadata({
+ title: `${post.title} | Schrödinger Hat Blog`,
+ description: extractFirstParagraph(post.content),
+ overrides: {
+ authors: [{ name: authors }],
+ },
+ })
+}
+
+export default async function BlogPostPage({ params }: BlogPostPageProps) {
+ const { slug } = await params
+
+ const post = await sanityClient.fetch(
+ `*[_type == "blogPost" && slug.current == $slug][0]{
+ title,
+ headerImage{
+ asset,
+ caption
+ },
+ content,
+ publishedAt,
+ "authors": authors[]->{
+ firstName,
+ lastName
+ }
+ }`,
+ { slug },
+ )
+
+ if (!post) {
+ notFound()
+ }
+
+ return (
+
+
+ {post.headerImage && (
+
+
+ {post.headerImage.caption && (
+
+ {post.headerImage.caption}
+
+ )}
+
+ )}
+
+
+
+
+ {post.title}
+
+
+
+
+ By {post.authors.map((author) => getAuthorFullName(author as unknown as Author)).join(", ")}
+
+ {formatDateTime(post.publishedAt, "d MMMM, yyyy")}
+
+
+
+
+
+
+
+ )
+}
+
+export async function generateStaticParams() {
+ const posts = await sanityClient.fetch>(`*[_type == "blogPost"]{slug}`)
+
+ return posts.map((post) => ({
+ slug: post.slug.current,
+ }))
+}
diff --git a/src/app/(website)/blog/page.tsx b/src/app/(website)/blog/page.tsx
new file mode 100644
index 00000000..090eb798
--- /dev/null
+++ b/src/app/(website)/blog/page.tsx
@@ -0,0 +1,40 @@
+import { sanityClient } from "@/sanity/lib/client"
+import { BlogPostCard } from "@/components/molecules/cards/BlogPostCard"
+import type { Author, BlogPost } from "@/sanity/sanity.types"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+// Use intersection type to define exactly what we get from the query
+type BlogPostWithAuthors = BlogPost & { authors: Author[] }
+
+export const metadata = constructMetadata({
+ title: "Blog | Schrödinger Hat",
+ description: "Latest articles, tutorials and news from Schrödinger Hat",
+})
+
+export default async function BlogPage() {
+ const posts = await sanityClient.fetch(`
+ *[_type == "blogPost"] | order(publishedAt desc) {
+ ...,
+ "authors": authors[]->{
+ firstName,
+ lastName
+ }
+ }
+ `)
+
+ return (
+
+
+ Blog
+
+
+
+ {posts.map((post) => (
+
+ ))}
+
+
+ )
+}
diff --git a/src/app/(website)/contribute/as-individual/page.tsx b/src/app/(website)/contribute/as-individual/page.tsx
new file mode 100644
index 00000000..836c8f1a
--- /dev/null
+++ b/src/app/(website)/contribute/as-individual/page.tsx
@@ -0,0 +1,259 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import { ImageHero } from "@/components/organisms/image-hero"
+import { Image } from "@/components/atoms/media/Image"
+import Link from "next/link"
+import { ArrowRight } from "lucide-react"
+import { ArrowRightIcon } from "lucide-react"
+import { Button } from "@/components/ui/button"
+import { Mail01Icon } from "hugeicons-react"
+import { JobPosts } from "@/components/organisms/job-posts"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+
+// Image
+import asIndividual from "@/images/contribute/as_individual.jpg"
+import activateMembership from "@/images/contribute/individual/activate_membership.svg"
+import contributeToProjects from "@/images/contribute/individual/contribute_to_projects.svg"
+import volunteerAtOurEvents from "@/images/contribute/individual/volunteer_at_our_events.svg"
+import friends1 from "@/images/contribute/individual/individual_1.jpg"
+import friends2 from "@/images/contribute/individual/individual_2.jpg"
+import friends3 from "@/images/contribute/individual/individual_3.jpg"
+import friends4 from "@/images/contribute/individual/individual_4.jpg"
+import friends5 from "@/images/contribute/individual/individual_5.jpg"
+import friends6 from "@/images/contribute/individual/individual_6.jpg"
+import friends7 from "@/images/contribute/individual/individual_7.jpg"
+import friends8 from "@/images/contribute/individual/individual_8.jpg"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+export const metadata = constructMetadata({
+ title: "Contribute as Individual | Schrödinger Hat",
+ description: "Learn more about how to contribute to Schrödinger Hat as an individual.",
+})
+
+export default function ContributeIndividualPage() {
+ return (
+
+
+
+
+
+
+
+ Contribute as Individual
+ >
+ }
+ imageSrc={asIndividual}
+ imageAlt="Speaker"
+ />
+
+
+
+
+ Our community relies on the dedication and generosity of individual contributors. Whether it’s
+ through time, expertise, or support, every contribution plays a vital role in sustaining and growing
+ what we do. Together, we create opportunities to learn, connect, and build something meaningful.
+
+
+ Your involvement, no matter the form, helps keep our projects moving forward and our events
+ welcoming to all. Here are the ways you can contribute:
+
+
+
+
+
+
+
+
+ Activate a Membership
+
+
+ Financially support the community and help sustain our nonprofit initiatives.
+
+ As a member you are involved in steering the organization and help shape our future.
+
+
+
+
+ Become a member
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Develop code
+
+
+ Work on issues and features on our projects.
+
+
+
+ View active projects
+
+
+
+
+
+
+
+
+
+
+ {/* Job Posts */}
+
+
+
+ {/* Gallery */}
+
+
+ Driven by Purpose, Fueled by Fun
+
+
+ {/* Row 1 */}
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Row 2 */}
+
+
+
+
+
+
+
+
+
+
+ {/* Row 3 */}
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/contribute/as-partner/page.tsx b/src/app/(website)/contribute/as-partner/page.tsx
new file mode 100644
index 00000000..ce0ed965
--- /dev/null
+++ b/src/app/(website)/contribute/as-partner/page.tsx
@@ -0,0 +1,152 @@
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import FeaturesList from "@/components/organisms/features-list"
+import { ImageHero } from "@/components/organisms/image-hero"
+import { sanityClient } from "@/sanity/lib/client"
+import { type Partner } from "@/sanity/sanity.types"
+import {
+ Knowledge01Icon,
+ Mic01Icon,
+ Monocle01Icon,
+ Share07Icon,
+ SmileIcon,
+ UserMultiple02Icon,
+} from "hugeicons-react"
+import { BlackCTA, BlackCTAHeading } from "@/components/organisms/black-cta"
+import { LogoGallery } from "@/components/organisms/logo-gallery"
+import { urlFor } from "@/sanity/lib/image"
+import { FaqBlock } from "@/components/organisms/faq-block"
+import { constructMetadata } from "@/lib/utils/metadata"
+// Images
+import asPartner from "@/images/contribute/as_partner.jpg"
+
+export const metadata = constructMetadata({
+ title: "Contribute as Partner | Schrödinger Hat",
+ description: "Learn more about how to contribute to Schrödinger Hat as a partner.",
+})
+
+export default async function BecomePartnerPage() {
+ const partners: Partner[] = await sanityClient.fetch(
+ `*[_type == "partner" && !isBusinessPartner] | order(orderRank asc)`,
+ )
+
+ return (
+
+
+
+
+
+
+
+ Contribute as Partner
+ >
+ }
+ imageSrc={asPartner.src}
+ imageAlt="Partner"
+ />
+
+
+
+
+ At Schrödinger's Hat, partnerships are built on shared values, not transactions. We seek
+ collaborations with communities and media organizations that share our passion for open-source
+ innovation, inclusivity, and giving back. Together, we aim to amplify impact, empower individuals,
+ and create a more sustainable and inclusive tech ecosystem.
+
+
+ We believe that true partnerships come from a shared commitment to making a difference. If your
+ organization thrives on fostering innovation and serving the community, we’d love to explore how we
+ can collaborate.
+
+
+
+
+ ,
+ },
+ {
+ name: "Community Engagement",
+ description:
+ "Engage with a vibrant, global audience passionate about open source and inclusivity.",
+ icon: ,
+ },
+ {
+ name: "Event Collaboration",
+ description:
+ "Co-host workshops, sessions, or panels to showcase your initiatives and expertise.",
+ icon: ,
+ },
+ {
+ name: "Knowledge Sharing",
+ description: "Exchange resources, ideas, and strategies to strengthen both our communities.",
+ icon: ,
+ },
+ {
+ name: "Social Impact",
+ description:
+ "Be part of initiatives that create a lasting, positive impact on the tech world and beyond.",
+ icon: ,
+ },
+ {
+ name: "Network Expansion",
+ description:
+ "Gain access to our network of tech leaders, innovators, and change-makers to build meaningful connections.",
+ icon: ,
+ },
+ ]}
+ />
+
+
+
+
+ Team up?
+
+
+
+
+
+ } => partner.image !== undefined && partner.image !== null,
+ )
+ .map((partner) => ({
+ src: urlFor(partner.image).height(150).url(),
+ alt: partner.description ?? "Partner logo",
+ }))}
+ />
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/contribute/as-speaker/page.tsx b/src/app/(website)/contribute/as-speaker/page.tsx
new file mode 100644
index 00000000..b0c22f4c
--- /dev/null
+++ b/src/app/(website)/contribute/as-speaker/page.tsx
@@ -0,0 +1,276 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import FeaturesList from "@/components/organisms/features-list"
+import { ImageHero } from "@/components/organisms/image-hero"
+import {
+ AirplaneSeatIcon,
+ Mic01Icon,
+ Mortarboard02Icon,
+ Pizza01Icon,
+ UserMultiple02Icon,
+ Wrench01Icon,
+} from "hugeicons-react"
+import { TeamCard } from "@/components/organisms/team-card"
+import { StatBlocks } from "@/components/organisms/stat-block"
+import { List } from "@/components/atoms/lists/List"
+import { ListItem } from "@/components/atoms/lists/ListItem"
+import { BlackCTA, BlackCTAHeading } from "@/components/organisms/black-cta"
+import { Link } from "@/components/atoms/links/Link"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+// Images
+import asSpeaker from "@/images/contribute/as_speaker.jpg"
+import famouseCollina from "@/images/contribute/speaker/famous_collina.jpg"
+import famouseHevery from "@/images/contribute/speaker/famous_hevery.jpg"
+import famouseCorti from "@/images/contribute/speaker/famous_corti.jpg"
+import famouseTerzi from "@/images/contribute/speaker/famous_terzi.jpg"
+
+const famousSpeakers = [
+ {
+ name: "Matteo",
+ surname: "Collina",
+ role: " Node.js TSC member",
+ slug: "matteo-collina",
+ image: {
+ src: famouseCollina.src,
+ },
+ },
+ {
+ name: "Miško",
+ surname: "Hevery",
+ role: "Creator of Angular.js",
+ slug: "misko-hevery",
+ image: {
+ src: famouseHevery.src,
+ },
+ },
+ {
+ name: "Francesco",
+ surname: "Corti",
+ role: "Principal Product Manager",
+ slug: "francesco-corti",
+ image: {
+ src: famouseCorti.src,
+ },
+ },
+ {
+ name: "Federico",
+ surname: "Terzi",
+ role: "Software Architect",
+ slug: "federico-terzi",
+ image: {
+ src: famouseTerzi.src,
+ },
+ },
+]
+
+export const metadata = constructMetadata({
+ title: "Contribute as Speaker | Schrödinger Hat",
+ description: "Learn more about how to contribute to Schrödinger Hat as a speaker.",
+})
+
+export default function BecomeSpeakerPage() {
+ return (
+
+
+
+
+
+
+
+ Contribute as Speaker
+ >
+ }
+ imageSrc={asSpeaker}
+ imageAlt="Speaker"
+ />
+
+
+
+
+ We believe that great ideas are worth sharing, and your unique perspective can help spark meaningful
+ discussions, new discoveries, and collaborative growth. Whether you’re a seasoned speaker or
+ stepping onto the stage for the first time, we’re here to support you in creating a memorable and
+ impactful experience.
+
+ We do organise two types of events: Talks and Workshops, explore them below.
+
+
+
+
+
+
+
+
+
+ Session
+
+
+
+
+ What is it?
+
+ A Talk is a traditional conference-style presentation, lasting 30 to 60 minutes. It focuses on
+ a single topic, idea, or story, delivered with accompanying slides to inspire the audience.
+
+
+
+ Is this for you?
+
+
+
+ Ideal for sharing insights, stories, or lessons learned from your experiences.
+
+
+ Perfect for a wide range of topics, from personal journeys to deep dives into specific
+ areas.
+
+ Suitable for all skill levels in the audience.
+
+
+
+ Why choose this?
+
+
+ Choosing a Talk allows you to share your expertise and passion in a structured and impactful
+ way. It’s perfect for reaching a broad audience, delivering clear insights, and sparking
+ curiosity about your topic.
+
+
+
+
+
+
+
+ Workshop
+
+
+
+
+ What is it?
+
+ A Workshop is an interactive session lasting 2 to 8 hours, designed to delve deeply into a
+ specific topic, technology, or framework. Workshops emphasize hands-on learning, often guiding
+ participants through a project or task, such as building an app together.
+
+
+
+ Is this for you?
+
+
+ Ideal for teaching practical skills or hands-on techniques.
+ Great for in-depth exploration of a specific technology or methodology.
+ Best suited for a smaller, focused group of attendees.
+
+
+
+ Why choose this?
+
+
+ Opting for a Workshop enables you to dive deep into a subject and provide tangible value to
+ attendees. With a focus on hands-on learning and collaboration, this format is ideal for
+ fostering practical skills and creating meaningful connections with participants.
+
+
+
+
+
+
+
+ ,
+ },
+ {
+ name: "Matching",
+ description:
+ "Want to share the stage? We will research other speakers and combine your talks to create a session.",
+ icon: ,
+ },
+ {
+ name: "Coaching",
+ description: "First talk? We will help you prepare and practice. Some of use are speakers too",
+ icon: ,
+ },
+ {
+ name: "Bonus: Tour Guide",
+ description:
+ "If your talk is in Italy we will show you around, we can be excellent city guides other than conference organiser",
+ icon: ,
+ },
+ ]}
+ />
+
+
+
+
+ Interested?
+
+
+
+
+ Spoke with us
+
+ {famousSpeakers.map((speaker, index) => (
+
+
+
+ ))}
+
+
+
+
+ Browse all speakers
+
+
+
+
+
+
+ Some numbers
+
+
+
+ )
+}
diff --git a/src/app/(website)/contribute/as-sponsor/page.tsx b/src/app/(website)/contribute/as-sponsor/page.tsx
new file mode 100644
index 00000000..898beea0
--- /dev/null
+++ b/src/app/(website)/contribute/as-sponsor/page.tsx
@@ -0,0 +1,186 @@
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { Link } from "@/components/atoms/links/Link"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { BlackCTA, BlackCTAHeading } from "@/components/organisms/black-cta"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import { BulletPoint } from "@/components/organisms/bullet-point"
+import { ImageContent } from "@/components/organisms/image-content"
+import { ImageHero } from "@/components/organisms/image-hero"
+import { StatBlocks } from "@/components/organisms/stat-block"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+// Images
+import asSponsor from "@/images/contribute/as_sponsor.jpg"
+import platea from "@/images/contribute/sponsor/os24_platea.jpg"
+
+export const metadata = constructMetadata({
+ title: "Contribute as Sponsor | Schrödinger Hat",
+ description: "Learn more about how to contribute to Schrödinger Hat as a sponsor.",
+})
+
+export default function BecomeSponsorPage() {
+ return (
+
+
+
+
+
+
+
+ Contribute as Sponsor
+ >
+ }
+ imageSrc={asSponsor}
+ imageAlt="Speaker"
+ />
+
+
+
+
+
+ Open source is more than code; it’s a way to connect, to empower, and to make a difference.
+ We’re dedicated to building a future where technology serves everyone, regardless of who they
+ are or where they come from. With a deep commitment to diversity, inclusion, and
+ accessibility, we work to create opportunities for all voices to be heard.
+
+
+ We can’t do this alone. It’s your curiosity, your passion, and your belief in a better future
+ that inspire us to keep going. Let’s make open source, together.
+
+ >
+ }
+ imageSrc={platea.src}
+ imageAlt="Sponsor"
+ imagePosition="right"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Gold tier */}
+
+
+ Gold
+
+
+
+
+
+ €1K + VAT
+
+
+
+ {/* Diamond tier */}
+
+
+ Diamond
+
+
+
+
+
+ €2K + VAT
+
+
+
+
+
+ Some events may offer additional perks for sponsors, but we strive to keep our packages
+ straightforward and lean.
+
+ Pricing adjustments might be made based on the event's scale to account for varying expenses.
+
+
+
+
+
+
+
+ Wanna Sponsor?
+
+
+
+ )
+}
diff --git a/src/app/(website)/layout.tsx b/src/app/(website)/layout.tsx
new file mode 100644
index 00000000..65b1fc04
--- /dev/null
+++ b/src/app/(website)/layout.tsx
@@ -0,0 +1,14 @@
+import "@/styles/globals.css"
+
+import { Header } from "@/components/organisms/header/header"
+import { Footer } from "@/components/organisms/footer"
+
+export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
+ return (
+ <>
+
+ {children}
+
+ >
+ )
+}
diff --git a/src/app/(website)/not-found.tsx b/src/app/(website)/not-found.tsx
new file mode 100644
index 00000000..606dedcb
--- /dev/null
+++ b/src/app/(website)/not-found.tsx
@@ -0,0 +1,42 @@
+import { Image } from "@/components/atoms/media/Image"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { type Metadata } from "next"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+
+// Images
+import notFound from "@/images/logo_dead.png"
+import { Link } from "@/components/atoms/links/Link"
+import { Button } from "@/components/molecules/button"
+
+export const metadata: Metadata = {
+ title: "404 - Not Found",
+ description: "The page you are looking for does not exist.",
+ icons: [{ rel: "icon", url: "/favicon.ico" }],
+}
+
+export default function NotFound() {
+ return (
+
+
+
+
+
+
+ Not Found
+
+ The page you are looking for does not exist.
+
+ Back to Home?
+
+
+
+ )
+}
diff --git a/src/app/(website)/page.tsx b/src/app/(website)/page.tsx
new file mode 100644
index 00000000..66445a79
--- /dev/null
+++ b/src/app/(website)/page.tsx
@@ -0,0 +1,196 @@
+import { LogoGallery } from "@/components/organisms/logo-gallery"
+import { sanityClient } from "@/sanity/lib/client"
+import { urlFor } from "@/sanity/lib/image"
+import { ImageContent } from "@/components/organisms/image-content"
+import { StatBlocks } from "@/components/organisms/stat-block"
+import { CardSection } from "@/components/organisms/card-section"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { TrackingCat } from "@/components/organisms/tracking-cat"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import type { Partner } from "@/sanity/sanity.types"
+
+// Images
+import team from "@/images/homepage/team.png"
+import shopCallout from "@/images/homepage/shop-callout.png"
+import imageGoNord from "@/images/homepage/imageGoNord.png"
+import osday from "@/images/homepage/osday.jpg"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+
+export default async function Home() {
+ const partners: Partner[] = await sanityClient.fetch(
+ `*[_type == "partner" && !isBusinessPartner && "homepage" in visibility] | order(orderRank asc)`,
+ )
+
+ return (
+
+
+
+
+
+
+
+
+ Where we talk
+ open source
+
+
+
+
+ Schrödinger Hat is a community of open source enthusiasts,
+ we organize events and write software.
+
+
+
+
+
+
+
+
+
+
+
+
+ Based in Tuscany, Schrödinger Hat is a non-profit organization spreading the love for
+ open-source software across Europe. Our mission is to inspire, educate, and connect
+ open-source technology enthusiasts through free events like conferences and meetups.
+
+
+ We actively contribute to the open-source ecosystem. Among our projects, ImageGoNord stands
+ out, boasting over 1,000 stars on GitHub.
+
+
+ Guided by the principles of open source, we believe in free access to knowledge and promote
+ inclusivity in all our initiatives. Join us in building local communities, connecting talent,
+ and celebrating the power of open-source software!
+
+ >
+ }
+ imageSrc={team}
+ imageAlt="Team"
+ imagePosition="left"
+ />
+
+
+
+
+
+ You may know us for
+
+
+ Open Source Day is an international conference dedicated to open-source solutions, scheduled
+ for March, in Florence, Italy. The event aims to introduce open-source technologies to public
+ and business institutions, promoting them as secure, efficient, and cost-effective
+ alternatives to proprietary software.
+
+
+ Attendees, including managers, developers, and technical officers from various industries,
+ will have the opportunity to exchange experiences and explore use cases in areas such as
+ virtualization, cloud computing, databases, big data, and information security.
+
+
+ The conference serves as a platform for fostering local communities and encouraging the
+ development of small businesses that provide support and development for open-source
+ solutions.
+
+ >
+ }
+ imageSrc={osday}
+ imageAlt="OSDay"
+ imagePosition="left"
+ />
+
+
+ ImageGoNord is a SaaS tool designed to convert RGB images into color palettes inspired by the
+ NordTheme and other themes like Gruvbox. The NordTheme is a well-known color palette
+ originally created for coding environments. It focuses on subtle, cool tones like blue, grey,
+ and white, offering a minimalist and visually cohesive aesthetic that prioritizes readability
+ and reduces visual fatigue.
+
+
+ ImageGoNord allows users to upload images or videos and apply these palettes to create
+ customized wallpapers, visuals, or design elements. The tool offers flexibility for users to
+ refine the output to match their preferences while maintaining the selected theme's
+ characteristics.
+
+ >
+ }
+ imageSrc={imageGoNord}
+ imageAlt="ImageGoNord"
+ imagePosition="right"
+ />
+
+
+
+
+ } => partner.image !== undefined && partner.image !== null,
+ )
+ .map((partner) => ({
+ src: urlFor(partner.image).height(150).url(),
+ alt: partner.description ?? "Partner logo",
+ }))}
+ />
+
+ {/* Inform user that we have on online shop where they can buy merch and t-shirts */}
+
+
+
+ )
+}
diff --git a/src/app/(website)/page/[slug]/page.tsx b/src/app/(website)/page/[slug]/page.tsx
new file mode 100644
index 00000000..1873c6f3
--- /dev/null
+++ b/src/app/(website)/page/[slug]/page.tsx
@@ -0,0 +1,83 @@
+import { notFound } from "next/navigation"
+import { PortableText } from "@portabletext/react"
+import { urlFor } from "@/sanity/lib/image"
+import { sanityClient } from "@/sanity/lib/client"
+import { createPortableTextComponents } from "./portableTextComponents"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Image } from "@/components/atoms/media/Image"
+import { formatDateTime } from "@/lib/utils/date"
+import { Typography } from "@/components/atoms/typography/Typography"
+import type { Page } from "@/sanity/sanity.types"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { type Metadata } from "next"
+import { extractFirstParagraph } from "@/lib/seo"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+interface PageProps {
+ params: Promise<{ slug: string }>
+}
+
+export async function generateMetadata({ params }: PageProps): Promise {
+ const { slug } = await params
+ const pageData = await sanityClient.fetch(`*[_type == "page" && slug.current == $slug][0]`, {
+ slug,
+ })
+ return constructMetadata({
+ title: `${pageData?.title} | Schrödinger Hat`,
+ description: extractFirstParagraph(pageData?.content ?? []),
+ })
+}
+
+export default async function Page({ params }: PageProps) {
+ const { slug } = await params
+
+ const pageData = await sanityClient.fetch(`*[_type == "page" && slug.current == $slug][0]`, {
+ slug,
+ })
+
+ if (!pageData) {
+ notFound()
+ }
+
+ const headerImage = pageData.headerImage?.asset
+ ? urlFor(pageData.headerImage.asset).width(1000).url()
+ : null
+
+ return (
+
+ {headerImage && (
+
+ )}
+
+
+ {pageData.title}
+
+ {pageData.publishedAt && (
+
+ {formatDateTime(pageData.publishedAt, "d MMMM, yyyy")}
+
+ )}
+
+
+
+
+
+ )
+}
+
+export async function generateStaticParams() {
+ const pages = await sanityClient.fetch>(`*[_type == "page"]{slug}`)
+
+ return pages.map((page) => ({
+ slug: page.slug.current,
+ }))
+}
diff --git a/src/app/(website)/page/[slug]/portableTextComponents.tsx b/src/app/(website)/page/[slug]/portableTextComponents.tsx
new file mode 100644
index 00000000..4625aefa
--- /dev/null
+++ b/src/app/(website)/page/[slug]/portableTextComponents.tsx
@@ -0,0 +1,108 @@
+import { type PortableTextComponents } from "@portabletext/react"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Blockquote } from "@/components/atoms/typography/Blockquote"
+import { List } from "@/components/atoms/lists/List"
+import { ListItem } from "@/components/atoms/lists/ListItem"
+import { InlineText } from "@/components/atoms/typography/InlineText"
+import { Link } from "@/components/atoms/links/Link"
+import { Image } from "@/components/atoms/media/Image"
+import { urlFor } from "@/sanity/lib/image"
+import { CodeBlock } from "@/components/atoms/content/CodeBlock"
+import { cn } from "@/lib/utils"
+
+// Define the type for link value
+interface LinkValue {
+ href: string
+}
+
+// Define the type for image value
+interface ImageValue {
+ asset: {
+ _ref: string
+ }
+ alt?: string
+ caption?: string
+}
+
+export const createPortableTextComponents = (className?: string): PortableTextComponents => ({
+ block: {
+ normal: ({ children }) => {children} ,
+ h1: ({ children }) => (
+
+ {children}
+
+ ),
+ h2: ({ children }) => (
+
+ {children}
+
+ ),
+ h3: ({ children }) => (
+
+ {children}
+
+ ),
+ h4: ({ children }) => (
+
+ {children}
+
+ ),
+ blockquote: ({ children }) => {children} ,
+ },
+ list: {
+ bullet: ({ children }) => (
+
+ {children}
+
+ ),
+ number: ({ children }) => (
+
+ {children}
+
+ ),
+ },
+ listItem: ({ children }) => {children} ,
+ marks: {
+ strong: ({ children }) => (
+
+ {children}
+
+ ),
+ em: ({ children }) => (
+
+ {children}
+
+ ),
+ code: ({ children }) => (
+
+ {children}
+
+ ),
+ link: ({ value, children }) => (
+
+ {children}
+
+ ),
+ },
+ types: {
+ image: ({ value }: { value: ImageValue }) => {
+ return (
+
+
+ {value.caption && (
+ {value.caption}
+ )}
+
+ )
+ },
+ code: ({ value }: any) => ,
+ },
+})
diff --git a/src/app/(website)/partecipate/events/[slug]/page.tsx b/src/app/(website)/partecipate/events/[slug]/page.tsx
new file mode 100644
index 00000000..1d7029e0
--- /dev/null
+++ b/src/app/(website)/partecipate/events/[slug]/page.tsx
@@ -0,0 +1,184 @@
+import { notFound } from "next/navigation"
+import { PortableText } from "@portabletext/react"
+import { sanityClient } from "@/sanity/lib/client"
+import type { Event, Author } from "@/sanity/sanity.types"
+import { createPortableTextComponents } from "@/app/(website)/page/[slug]/portableTextComponents"
+import { EventHero } from "@/components/organisms/event-hero"
+import { AuthorCard } from "@/components/molecules/author-card"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { type Metadata } from "next"
+import { extractFirstParagraph } from "@/lib/seo"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { urlFor } from "@/sanity/lib/image"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { cn } from "@/lib/utils"
+
+interface EventWithAuthors extends Omit {
+ authors?: Author[]
+ ogImage?: any
+}
+
+async function getEvent(slug: string) {
+ const event = await sanityClient.fetch(
+ `*[_type == "event" && slug.current == $slug][0]{
+ ...,
+ series->{
+ title
+ },
+ "authors": coalesce(authors[]-> {
+ ...
+ } | order(firstName asc, lastName asc), []),
+ "ogImage": coalesce(cover, background)
+ }`,
+ { slug },
+ )
+ return event
+}
+
+interface PageProps {
+ params: Promise<{ slug: string }>
+}
+
+export async function generateMetadata({ params }: PageProps): Promise {
+ const { slug } = await params
+ const event = await getEvent(slug)
+
+ if (!event) return {}
+
+ const ogImage = event.ogImage
+ ? {
+ url: urlFor(event.ogImage).width(1200).height(630).url(),
+ width: 1200,
+ height: 630,
+ alt: event.title,
+ }
+ : undefined
+
+ return constructMetadata({
+ title: `${event.title} | Event | Schrödinger Hat`,
+ description: extractFirstParagraph(event.abstract ?? []),
+ overrides: {
+ openGraph: {
+ images: ogImage ? [ogImage] : [],
+ },
+ twitter: {
+ card: "summary_large_image",
+ images: ogImage ? [ogImage] : [],
+ },
+ },
+ })
+}
+
+export default async function SingleEventPage({ params }: PageProps) {
+ const { slug } = await params
+ const event = await getEvent(slug)
+
+ if (!event?.title) {
+ notFound()
+ }
+
+ const jsonLd = {
+ "@context": "https://schema.org",
+ "@type": "Event",
+ name: event.title,
+ description: event.abstract ? extractFirstParagraph(event.abstract) : undefined,
+ image: event.ogImage ? urlFor(event.ogImage).url() : undefined,
+ startDate: event.eventPeriod?.startDate,
+ endDate: event.eventPeriod?.endDate,
+ location: event.location
+ ? {
+ "@type": "Place",
+ name: event.location.name,
+ address: {
+ "@type": "PostalAddress",
+ streetAddress: event.location.address,
+ addressLocality: event.location.city,
+ },
+ ...(event.location.coordinates && {
+ geo: {
+ "@type": "GeoCoordinates",
+ latitude: event.location.coordinates.lat,
+ longitude: event.location.coordinates.lng,
+ },
+ }),
+ }
+ : undefined,
+ organizer: {
+ "@type": "Organization",
+ name: event.organiser,
+ },
+ }
+
+ const hasAuthors = event.authors && event.authors.length > 0
+ const withLotsOfAuthors = hasAuthors && event.authors!.length > 6
+
+ return (
+
+
+
+
+
+
+
+
+ {event.abstract && (
+
+ )}
+
+
+
+ {hasAuthors && (
+ <>
+
+ Guests
+
+
+ {event.authors!.map((author, index) => {
+ const isFirstOrLastColumn = index % 3 === 0 || index % 3 === 2
+ const shouldTranslateY = withLotsOfAuthors && isFirstOrLastColumn
+
+ return (
+
+ )
+ })}
+
+ >
+ )}
+
+
+ )
+}
+
+export async function generateStaticParams() {
+ const events = await sanityClient.fetch>(
+ `*[_type == "event"] {
+ slug
+ }`,
+ )
+
+ return events.map((event) => ({
+ slug: event.slug.current,
+ }))
+}
diff --git a/src/app/(website)/partecipate/events/components/event-cards.tsx b/src/app/(website)/partecipate/events/components/event-cards.tsx
new file mode 100644
index 00000000..a7e96b53
--- /dev/null
+++ b/src/app/(website)/partecipate/events/components/event-cards.tsx
@@ -0,0 +1,121 @@
+import { type internalGroqTypeReferenceTo, type Event } from "@/sanity/sanity.types"
+import { formatDateTime } from "@/lib/utils/date"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Image } from "@/components/atoms/media/Image"
+import { Calendar01Icon, Location01Icon } from "hugeicons-react"
+import { urlFor } from "@/sanity/lib/image"
+import { Typography } from "@/components/atoms/typography/Typography"
+
+type EventWithExpandedSeries = Omit & {
+ series?: {
+ _ref: string
+ _type: "reference"
+ title?: string
+ [internalGroqTypeReferenceTo]?: "eventSeries"
+ }
+}
+
+export function EventCard({ event }: { event: EventWithExpandedSeries }) {
+ if (!event.title || !event.slug || !event.eventPeriod?.startDate || !event.location?.city) return null
+
+ const imageAsset =
+ event.cardImage === "cover" && event.cover?.asset ? event.cover.asset : event.background?.asset
+
+ return (
+
+
+ {imageAsset && (
+
+ )}
+
+
+
+ {event.series?.title}
+
+
+ {event.title}
+
+
+
+
+
+
+ {formatDateTime(event.eventPeriod.startDate, "d MMMM yyyy")}
+
+
+
+
+
+ {event.location.city}
+
+
+
+
+
+
+ )
+}
+
+export function FeaturedEventCard({ event }: { event: EventWithExpandedSeries }) {
+ if (!event.title || !event.slug || !event.eventPeriod?.startDate || !event.location?.city) return null
+
+ const imageAsset =
+ event.cardImage === "cover" && event.cover?.asset ? event.cover.asset : event.background?.asset
+
+ return (
+
+
+ {imageAsset && (
+
+ )}
+
+
+
+ {event.series?.title}
+
+
+ {event.title}
+
+
+
+
+
+
+ {formatDateTime(event.eventPeriod.startDate, "d MMMM yyyy")}
+
+
+
+
+
+ {event.location.city}
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/partecipate/events/page.tsx b/src/app/(website)/partecipate/events/page.tsx
new file mode 100644
index 00000000..d4de1d08
--- /dev/null
+++ b/src/app/(website)/partecipate/events/page.tsx
@@ -0,0 +1,110 @@
+import { sanityClient } from "@/sanity/lib/client"
+import type { Event } from "@/sanity/sanity.types"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Link } from "@/components/atoms/links/Link"
+import { EventCard, FeaturedEventCard } from "./components/event-cards"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { AnimatedSection } from "@/components/atoms/layout/AnimatedSection"
+import { DURATION_TWO_FRAMES } from "@/components/atoms/layout/const"
+
+export const metadata = constructMetadata({
+ title: "Events | Schrödinger Hat",
+ description: "Explore our upcoming and past events.",
+})
+
+export default async function EventsPage() {
+ const events: Event[] = await sanityClient.fetch(
+ `*[_type == "event"] | order(eventPeriod.startDate asc) {
+ _id,
+ _type,
+ title,
+ slug,
+ abstract,
+ cardImage,
+ coolBecause,
+ cover {
+ asset->
+ },
+ background {
+ asset->
+ },
+ location,
+ eventPeriod,
+ cta,
+ series->{
+ title
+ }
+ }`,
+ )
+
+ const now = new Date()
+ const upcomingEvents = events.filter(
+ (event) => event.eventPeriod?.startDate && new Date(event.eventPeriod.startDate) > now,
+ )
+ const pastEvents = events
+ .filter((event) => event.eventPeriod?.startDate && new Date(event.eventPeriod.startDate) <= now)
+ .reverse()
+
+ const featuredEvent = upcomingEvents[0]
+ const otherUpcomingEvents = upcomingEvents.slice(1)
+
+ return (
+
+
+ {featuredEvent && (
+ <>
+
+ Featured
+
+
+
+
+
+
+ >
+ )}
+
+ {otherUpcomingEvents.length > 0 && (
+ <>
+
+ Upcoming
+
+
+ {otherUpcomingEvents.map((event) => (
+
+
+
+ ))}
+
+ >
+ )}
+
+ {pastEvents.length > 0 && (
+ <>
+
+ Past events
+
+
+ {pastEvents.map((event, index) => (
+
+
+
+
+
+ ))}
+
+ >
+ )}
+
+
+ )
+}
diff --git a/src/app/(website)/partecipate/local-communities/page.tsx b/src/app/(website)/partecipate/local-communities/page.tsx
new file mode 100644
index 00000000..6fff680d
--- /dev/null
+++ b/src/app/(website)/partecipate/local-communities/page.tsx
@@ -0,0 +1,123 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import { ImageContent } from "@/components/organisms/image-content"
+import { StatBlocks } from "@/components/organisms/stat-block"
+import { ImageHero } from "@/components/organisms/image-hero"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { FaqBlock } from "@/components/organisms/faq-block"
+import { BlackCTA, BlackCTAHeading } from "@/components/organisms/black-cta"
+
+// Images
+import veronaPublic from "@/images/local-communities/verona_public.jpg"
+import miskoWorkshop from "@/images/local-communities/misko_workshop.jpg"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { constructMetadata } from "@/lib/utils/metadata"
+
+export const metadata = constructMetadata({
+ title: "Local Communities | Schrödinger Hat",
+ description: "Learn more about our local communities and how to get involved.",
+})
+
+export default async function LocalCommunitiesPage() {
+ return (
+
+
+
+
+
+
+
+ About Local Communities
+ >
+ }
+ imageSrc={veronaPublic}
+ imageAlt="Community locali"
+ />
+
+
+
+
+
+ SH Groups are local initiatives by Schrödinger Hat APS members, aimed at fostering
+ workshops, talks, and events tailored to their communities. These groups create spaces for
+ collaboration and innovation while staying connected to the broader Schrödinger Hat mission.
+
+
+ With autonomy to shape their activities, SH Groups reflect the unique needs of their
+ cities while upholding the organization’s values and Code of Conduct. Schrödinger Hat supports
+ these groups with resources like branding, communication tools, and event platforms,
+ empowering them to thrive as part of a global network inspiring tech communities everywhere.
+
+ >
+ }
+ imageSrc={miskoWorkshop}
+ imageAlt="Team"
+ imagePosition="right"
+ />
+
+
+
+
+ Onboarding process
+
+
+
+
+
+ Ready?
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/partecipate/projects/assets/GolangIcon.tsx b/src/app/(website)/partecipate/projects/assets/GolangIcon.tsx
new file mode 100644
index 00000000..88c45d7e
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/assets/GolangIcon.tsx
@@ -0,0 +1,13 @@
+import { type JSX, type SVGProps } from "react"
+
+export const GolandIcon = (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+
+
+
+
+
+)
diff --git a/src/app/(website)/partecipate/projects/assets/JavascriptIcon.tsx b/src/app/(website)/partecipate/projects/assets/JavascriptIcon.tsx
new file mode 100644
index 00000000..79466a2a
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/assets/JavascriptIcon.tsx
@@ -0,0 +1,11 @@
+import { type JSX, type SVGProps } from "react"
+
+export const JavascriptIcon = (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+
+
+
+)
diff --git a/src/app/(website)/partecipate/projects/assets/PythonIcon.tsx b/src/app/(website)/partecipate/projects/assets/PythonIcon.tsx
new file mode 100644
index 00000000..eb29e279
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/assets/PythonIcon.tsx
@@ -0,0 +1,56 @@
+import { type JSX, type SVGProps } from "react"
+
+export const PythonIcon = (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+)
diff --git a/src/app/(website)/partecipate/projects/assets/RustIcon.tsx b/src/app/(website)/partecipate/projects/assets/RustIcon.tsx
new file mode 100644
index 00000000..a2271278
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/assets/RustIcon.tsx
@@ -0,0 +1,7 @@
+import { type JSX, type SVGProps } from "react"
+
+export const RustIcon = (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+
+
+)
diff --git a/src/app/(website)/partecipate/projects/assets/Typescripticon.tsx b/src/app/(website)/partecipate/projects/assets/Typescripticon.tsx
new file mode 100644
index 00000000..81fed970
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/assets/Typescripticon.tsx
@@ -0,0 +1,12 @@
+import { type JSX, type SVGProps } from "react"
+
+export const TypescriptIcon = (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+
+
+
+)
diff --git a/src/app/(website)/partecipate/projects/components/project-card.tsx b/src/app/(website)/partecipate/projects/components/project-card.tsx
new file mode 100644
index 00000000..1a7693f7
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/components/project-card.tsx
@@ -0,0 +1,116 @@
+import { type Project } from "@/sanity/sanity.types"
+import { PortableText } from "next-sanity"
+import { Badge } from "@/components/ui/badge"
+import { Card, CardContent, CardHeader } from "@/components/ui/card"
+import { createPortableTextComponents } from "../../../page/[slug]/portableTextComponents"
+import { UsersIcon } from "lucide-react"
+import { GitHubStars } from "@/components/organisms/github-stars"
+import { formatDateTime } from "@/lib/utils/date"
+import { Button } from "@/components/ui/button"
+import Link from "next/link"
+import { TypescriptIcon } from "../assets/Typescripticon"
+import { JavascriptIcon } from "../assets/JavascriptIcon"
+import { PythonIcon } from "../assets/PythonIcon"
+import { GolandIcon } from "../assets/GolangIcon"
+import { RustIcon } from "../assets/RustIcon"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { cn } from "@/lib/utils"
+
+const LANGUAGE_ICONS: Record = {
+ typescript: TypescriptIcon,
+ javascript: JavascriptIcon,
+ python: PythonIcon,
+ go: GolandIcon,
+ rust: RustIcon,
+}
+
+interface ProjectCardProps {
+ project: Project
+}
+
+export function ProjectCard({ project }: ProjectCardProps) {
+ if (!project.language) return null
+
+ const Icon = LANGUAGE_ICONS[project.language]
+
+ return (
+
+
+ {/* Main Content Column - 3/4 width */}
+
+
+
+ {Icon && }
+
+ {project.title}
+
+
+
+
+
+
+ {/* Meta Column - 1/4 width */}
+
+
+ {/* Tech Stack */}
+
+
+ Tech Stack
+
+
+ {project.techStack?.map((technology) => (
+
+ {technology}
+
+ ))}
+
+
+
+ {/* GitHub Stars */}
+ {project.showStars && project.repositoryUrl && (
+
+
+ GitHub Stars
+
+
+
+ )}
+
+ {/* Launch Date */}
+ {project.launchedAt && (
+
+
+ Launch Date
+
+ {formatDateTime(project.launchedAt)}
+
+ )}
+
+ {/* Add Contribute Button */}
+ {project.repositoryUrl && (
+
+
+
+ Contribute
+
+
+
+ )}
+
+
+
+
+ )
+}
diff --git a/src/app/(website)/partecipate/projects/page.tsx b/src/app/(website)/partecipate/projects/page.tsx
new file mode 100644
index 00000000..a0ee585f
--- /dev/null
+++ b/src/app/(website)/partecipate/projects/page.tsx
@@ -0,0 +1,51 @@
+import { sanityClient } from "@/sanity/lib/client"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { type Project } from "@/sanity/sanity.types"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { type Metadata } from "next"
+import { ProjectCard } from "./components/project-card"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { AnimatedSection } from "@/components/atoms/layout/AnimatedSection"
+import { DURATION_TWO_FRAMES } from "@/components/atoms/layout/const"
+
+async function getProjects() {
+ const projects = await sanityClient.fetch(`*[_type == "project"] {
+ ...
+ } | order(order asc, publishedAt desc)`)
+
+ return projects
+}
+
+export const metadata: Metadata = constructMetadata({
+ title: "Projects | Schrödinger Hat",
+ description:
+ "This is a list of all the projects we're currently contributing to. You can find more information about each project by clicking on the project card.",
+})
+
+export default async function ProjectsPage() {
+ const projects = await getProjects()
+
+ return (
+
+
+ All Projects
+
+ This is a list of all the projects we're currently contributing to.
+
+ You can find more information about each project by clicking on the project card.
+
+
+
+
+
+ {projects.map((project, index) => (
+
+
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/app/(website)/speaker/AuthorCardSquare.tsx b/src/app/(website)/speaker/AuthorCardSquare.tsx
new file mode 100644
index 00000000..e079c1d1
--- /dev/null
+++ b/src/app/(website)/speaker/AuthorCardSquare.tsx
@@ -0,0 +1,41 @@
+import Link from "next/link"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Image } from "@/components/atoms/media/Image"
+import { urlFor } from "@/sanity/lib/image"
+import { getAuthorFullName, getAuthorInitials } from "@/lib/utils/videoContent"
+import type { Author } from "@/sanity/sanity.types"
+
+type AuthorCardSquareProps = {
+ author: Author
+}
+
+export function AuthorCardSquare({ author }: AuthorCardSquareProps) {
+ return (
+
+ {author.photo ? (
+
+ ) : (
+
+ {getAuthorInitials(author)}
+
+ )}
+
+
+
+ {getAuthorFullName(author)}
+
+ {author.title && {author.title} }
+
+
+ )
+}
diff --git a/src/app/(website)/speaker/[slug]/page.tsx b/src/app/(website)/speaker/[slug]/page.tsx
new file mode 100644
index 00000000..0c1e875b
--- /dev/null
+++ b/src/app/(website)/speaker/[slug]/page.tsx
@@ -0,0 +1,216 @@
+import { notFound } from "next/navigation"
+import { sanityClient } from "@/sanity/lib/client"
+import type { Author, BlogPost, Event, Video } from "@/sanity/sanity.types"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Image } from "@/components/atoms/media/Image"
+import { urlFor } from "@/sanity/lib/image"
+import { getAuthorFullName, getAuthorInitials } from "@/lib/utils/videoContent"
+import type { Metadata } from "next"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { EventCard } from "@/app/(website)/partecipate/events/components/event-cards"
+import { PortableText } from "@portabletext/react"
+import { createPortableTextComponents } from "../../page/[slug]/portableTextComponents"
+import { VideoCard } from "@/components/molecules/video-card"
+import { getVideoThumbnailUrl } from "@/lib/utils/videoContent"
+import { BlogPostCard } from "@/components/molecules/cards/BlogPostCard"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { getPortableTextPlainText } from "@/lib/utils/sanity"
+import { DURATION_TWO_FRAMES } from "@/components/atoms/layout/const"
+
+interface SpeakerPageProps {
+ params: Promise<{ slug: string }>
+}
+
+type AuthorWithContent = Author & {
+ blogPosts: Array
+ videoContent: Array
+ events: Array
+}
+
+export async function generateMetadata({ params }: SpeakerPageProps): Promise {
+ const { slug } = await params
+ const speaker = await sanityClient.fetch(
+ `*[_type == "author" && slug.current == $slug][0]{
+ firstName,
+ lastName,
+ title,
+ biography
+ }`,
+ { slug },
+ )
+
+ if (!speaker) return {}
+
+ const biographyText = getPortableTextPlainText(speaker.biography)
+
+ return constructMetadata({
+ title: `${getAuthorFullName(speaker)} | Schrödinger Hat Speaker`,
+ description: biographyText || `Discover all the contributions created by ${getAuthorFullName(speaker)}`,
+ })
+}
+
+export default async function SpeakerPage({ params }: SpeakerPageProps) {
+ const { slug } = await params
+
+ // First fetch the speaker ID
+ const speakerId = await sanityClient.fetch(`*[_type == "author" && slug.current == $slug][0]._id`, {
+ slug,
+ })
+
+ // Then use it in the main query
+ const speaker = await sanityClient.fetch(
+ `*[_type == "author" && slug.current == $slug][0]{
+ firstName,
+ lastName,
+ title,
+ biography,
+ photo,
+ "blogPosts": *[_type == "blogPost" && references(^._id)] | order(publishedAt desc) {
+ ...,
+ title,
+ slug,
+ headerImage,
+ excerpt,
+ publishedAt,
+ "authors": coalesce(authors[]-> {
+ _id,
+ _type,
+ firstName,
+ lastName,
+ title,
+ slug,
+ photo
+ }, [])
+ },
+ "videoContent": *[_type == "video" && $id in authors[]._ref] | order(publishedAt desc) {
+ _id,
+ title,
+ shortTitle,
+ slug,
+ publishedAt,
+ youtubeId,
+ thumbnail
+ },
+ "events": *[_type == "event" && references(^._id)] | order(eventPeriod.startDate desc) {
+ title,
+ slug,
+ eventPeriod,
+ location,
+ cardImage,
+ cover,
+ background,
+ coolBecause,
+ series-> {
+ _type,
+ _ref,
+ title
+ }
+ }
+ }`,
+ { slug, id: speakerId },
+ )
+
+ if (!speaker) {
+ notFound()
+ }
+
+ return (
+
+ {/* Author basic info */}
+
+
+ {/* Image column - fixed width on desktop */}
+
+ {speaker.photo ? (
+
+ ) : (
+
+ {getAuthorInitials(speaker)}
+
+ )}
+
+ {/* Content column - takes remaining space */}
+
+
+ {getAuthorFullName(speaker)}
+
+ {speaker.title && (
+
+ {speaker.title}
+
+ )}
+ {speaker.biography && (
+
+ )}
+
+
+
+
+ {/* Author content */}
+ {speaker.videoContent.length > 0 && (
+
+
+ Video Content
+
+
+ {speaker.videoContent.map((video) => (
+
+ ))}
+
+
+ )}
+
+ {speaker.events && speaker.events.length > 0 && (
+
+
+ Events
+
+
+ {speaker.events.map((event) => (
+
+ ))}
+
+
+ )}
+
+ {speaker.blogPosts.length > 0 && (
+
+
+ Blog Posts
+
+
+ {speaker.blogPosts.map((post) => (
+
+ ))}
+
+
+ )}
+
+ )
+}
+
+export async function generateStaticParams() {
+ const speakers = await sanityClient.fetch>(
+ `*[_type == "author" && defined(slug.current)]{
+ "slug": slug.current
+ }`,
+ )
+
+ return speakers.map((speaker) => ({
+ slug: speaker.slug,
+ }))
+}
diff --git a/src/app/(website)/speaker/page.tsx b/src/app/(website)/speaker/page.tsx
new file mode 100644
index 00000000..afd3125d
--- /dev/null
+++ b/src/app/(website)/speaker/page.tsx
@@ -0,0 +1,45 @@
+import { sanityClient } from "@/sanity/lib/client"
+import type { Author } from "@/sanity/sanity.types"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { AuthorCardSquare } from "./AuthorCardSquare"
+
+export const metadata = constructMetadata({
+ title: "Speakers | Schrödinger Hat",
+ description: "Meet our amazing speakers and community contributors",
+})
+
+async function getSpeakers() {
+ const speakers = await sanityClient.fetch(
+ `*[_type == "author" && defined(slug.current)] | order(firstName asc, lastName asc) {
+ _id,
+ firstName,
+ lastName,
+ title,
+ photo,
+ slug
+ }`,
+ )
+ return speakers
+}
+
+export default async function SpeakersPage() {
+ const speakers = await getSpeakers()
+
+ return (
+
+
+
+ We hosted
+
+
+
+ {speakers.map((speaker) => (
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/app/(website)/watch/[slug]/page.tsx b/src/app/(website)/watch/[slug]/page.tsx
new file mode 100644
index 00000000..24fdebfb
--- /dev/null
+++ b/src/app/(website)/watch/[slug]/page.tsx
@@ -0,0 +1,155 @@
+import { notFound } from "next/navigation"
+import { PortableText } from "@portabletext/react"
+import { YouTubePlayer } from "@/components/molecules/youtube-player"
+import { sanityClient } from "@/sanity/lib/client"
+import type { Author, Video } from "@/sanity/sanity.types"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { formatDateTime } from "@/lib/utils/date"
+import { createPortableTextComponents } from "../../page/[slug]/portableTextComponents"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+import { getYoutubeVideoId } from "@/lib/utils/videoContent"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { type Metadata } from "next"
+import { extractFirstParagraph } from "@/lib/seo"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { AuthorCardSquare } from "../../speaker/AuthorCardSquare"
+import { Badge } from "@/components/ui/badge"
+
+interface VideoWithAuthors extends Omit {
+ authors?: Author[]
+}
+
+async function getVideo(slug: string) {
+ const video: VideoWithAuthors | null = await sanityClient.fetch(
+ `*[_type == "video" && slug.current == $slug][0]{
+ ...,
+ "authors": coalesce(authors[]->{
+ _id,
+ _createdAt,
+ _updatedAt,
+ _rev,
+ firstName,
+ lastName,
+ pronouns,
+ title,
+ photo,
+ biography,
+ slug
+ }, [])
+ }`,
+ { slug },
+ )
+ return video
+}
+
+interface PageProps {
+ params: Promise<{ slug: string }>
+}
+
+export async function generateMetadata({ params }: PageProps): Promise {
+ const { slug } = await params
+ const video = await getVideo(slug)
+ return constructMetadata({
+ title: `${video?.title} | Watch |Schrödinger Hat`,
+ description: extractFirstParagraph(video?.description ?? []),
+ })
+}
+
+export default async function SingleVideoPage({ params }: PageProps) {
+ const { slug } = await params
+ const video = await getVideo(slug)
+
+ if (!video) {
+ notFound()
+ }
+
+ return (
+
+
+
+
+
+
+
+ {video.title}
+
+
+ {/* // Must extract video id since there's no guarantes it's going to be without url */}
+
+
+ {video.publishedAt && (
+
+ Published on {formatDateTime(video.publishedAt, "MMMM d, yyyy")}
+
+ )}
+
+
+ {video.authors && video.authors.length > 0 && (
+
+
+ {video.authors.length > 1 ? "Speakers" : "Speaker"}
+
+
+ {video.authors.map((author) => (
+
+ ))}
+
+ {video.tags && video.tags.length > 0 && (
+
+
+ Tags
+
+
+ {video.tags.map((tag) => (
+
+ {tag}
+
+ ))}
+
+
+ )}
+
+ )}
+
+
+ {video.description && (
+
+ )}
+ {video.whyShouldWatch && (
+
+
+ Why you should watch
+
+
+
+ )}
+
+
+
+
+ )
+}
+
+export async function generateStaticParams() {
+ const videos = await sanityClient.fetch>(
+ `*[_type == "video"] | order(publishedAt desc)[0...1000]{
+ slug
+ }`,
+ )
+
+ return videos.map((video) => ({
+ slug: video.slug.current,
+ }))
+}
diff --git a/src/app/(website)/watch/page.tsx b/src/app/(website)/watch/page.tsx
new file mode 100644
index 00000000..1b107536
--- /dev/null
+++ b/src/app/(website)/watch/page.tsx
@@ -0,0 +1,106 @@
+import Link from "next/link"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { VideoCard } from "@/components/molecules/video-card"
+import { sanityClient } from "@/sanity/lib/client"
+import { getAuthorNames, getVideoThumbnailUrl } from "@/lib/utils/videoContent"
+import type { Author, Video } from "@/sanity/sanity.types"
+import { SectionContainer } from "@/components/atoms/layout/SectionContainer"
+import { cn } from "@/lib/utils"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { AnimatedSection } from "@/components/atoms/layout/AnimatedSection"
+import { DURATION_ONE_FRAME } from "@/components/atoms/layout/const"
+
+export const metadata = constructMetadata({
+ title: "Schrödinger Hat: Watch",
+ description: "Watch Schrödinger Hat videos, talks, workshops, podcasts and more.",
+})
+
+// Update the getVideos function to be more type-safe
+async function getVideos() {
+ const videos: (Video & { authors: Author[] })[] = await sanityClient.fetch(`*[_type == "video"]{
+ ...,
+ authors[]->{
+ _id,
+ firstName,
+ lastName,
+ pronouns,
+ slug
+ }
+ } | order(order asc)`)
+ return videos
+}
+
+export default async function WatchPage() {
+ const videos = await getVideos()
+
+ const allFeaturedVideos = videos.filter((video) => video.featured)
+ const featuredVideos = allFeaturedVideos.slice(0, 3)
+ const otherVideos = [...allFeaturedVideos.slice(3), ...videos.filter((video) => !video.featured)]
+
+ return (
+
+
+
+ Featured
+
+
+ {/* Pick the first three featured videos and show them in row, first videos has col-span-2 the other are normals */}
+
+ {featuredVideos.map((video, index) => (
+
+
+
+ ))}
+
+
+
+
+
+
+
+ Talks
+
+
+
+
+ Workshops
+
+
+
+
+ Podcasts
+
+
+
+
+
+ {/* Show all videos that are not featured */}
+
+
+ Talks
+
+
+ {otherVideos.map((video, index) => (
+
+
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/app/api/cron/health-check/route.ts b/src/app/api/cron/health-check/route.ts
new file mode 100644
index 00000000..12663eb9
--- /dev/null
+++ b/src/app/api/cron/health-check/route.ts
@@ -0,0 +1,64 @@
+import { db } from "@/server/db"
+import { headers } from "next/headers"
+import { NextResponse } from "next/server"
+import { env } from "@/env"
+
+// Vercel cron job configuration
+export const dynamic = "force-dynamic"
+export const maxDuration = 59
+
+export async function GET() {
+ try {
+ // Verify cron secret in production only
+ if (env.NODE_ENV === "production") {
+ const headersList = await headers()
+ const cronSecret = headersList.get("x-vercel-cron")
+ if (cronSecret !== env.CRON_SECRET) {
+ return NextResponse.json({ error: "Unauthorized" }, { status: 401 })
+ }
+ }
+
+ // Get the date 14 days ago
+ const fourteenDaysAgo = new Date()
+ fourteenDaysAgo.setDate(fourteenDaysAgo.getDate() - 14)
+
+ // Delete pending members older than 14 days
+ const deleteResult = await db.member.deleteMany({
+ where: {
+ status: "PENDING",
+ createdAt: {
+ lt: fourteenDaysAgo,
+ },
+ },
+ })
+
+ // Log the health check
+ const healthLog = await db.health.create({
+ data: {
+ deletedRecords: deleteResult.count,
+ },
+ })
+
+ return NextResponse.json({
+ success: true,
+ deletedRecords: deleteResult.count,
+ healthLogId: healthLog.id,
+ })
+ } catch (error) {
+ console.error("Health check failed:", error)
+
+ // Log the error in the Health table
+ try {
+ await db.health.create({
+ data: {
+ deletedRecords: 0,
+ error: error instanceof Error ? error.message : "Unknown error",
+ },
+ })
+ } catch (logError) {
+ console.error("Failed to log health check error:", logError)
+ }
+
+ return NextResponse.json({ error: "Health check failed" }, { status: 500 })
+ }
+}
diff --git a/src/app/api/trpc/[trpc]/route.ts b/src/app/api/trpc/[trpc]/route.ts
new file mode 100644
index 00000000..b80c35b1
--- /dev/null
+++ b/src/app/api/trpc/[trpc]/route.ts
@@ -0,0 +1,32 @@
+import { fetchRequestHandler } from "@trpc/server/adapters/fetch"
+import { type NextRequest } from "next/server"
+
+import { env } from "@/env"
+import { appRouter } from "@/server/api/root"
+import { createTRPCContext } from "@/server/api/trpc"
+
+/**
+ * This wraps the `createTRPCContext` helper and provides the required context for the tRPC API when
+ * handling a HTTP request (e.g. when you make requests from Client Components).
+ */
+const createContext = async (req: NextRequest) => {
+ return createTRPCContext({
+ headers: req.headers,
+ })
+}
+
+const handler = (req: NextRequest) =>
+ fetchRequestHandler({
+ endpoint: "/api/trpc",
+ req,
+ router: appRouter,
+ createContext: () => createContext(req),
+ onError:
+ env.NODE_ENV === "development"
+ ? ({ path, error }) => {
+ console.error(`❌ tRPC failed on ${path ?? ""}: ${error.message}`)
+ }
+ : undefined,
+ })
+
+export { handler as GET, handler as POST }
diff --git a/src/app/api/webhooks/stripe/route.ts b/src/app/api/webhooks/stripe/route.ts
new file mode 100644
index 00000000..2b629217
--- /dev/null
+++ b/src/app/api/webhooks/stripe/route.ts
@@ -0,0 +1,134 @@
+import { getStripe, isStripeAvailable } from "@/lib/stripe"
+import { headers } from "next/headers"
+import type { Stripe } from "stripe"
+import { db } from "@/server/db"
+import { sendMembershipSignupEmail } from "@/server/postmark"
+
+export async function POST(req: Request) {
+ if (!isStripeAvailable()) {
+ return Response.json({ error: "PaymentGateway is not available" }, { status: 500 })
+ }
+
+ const stripe = getStripe()
+ const body = await req.text()
+ const headersList = await headers()
+ const signature = headersList.get("stripe-signature") ?? ""
+
+ let event: Stripe.Event
+
+ try {
+ event = stripe.webhooks.constructEvent(body, signature, process.env.STRIPE_WEBHOOK_SECRET ?? "")
+ } catch (err) {
+ const error = err as Error
+ console.error(`Webhook signature verification failed: ${error.message}`)
+ return Response.json({ error: error.message }, { status: 400 })
+ }
+
+ try {
+ switch (event.type) {
+ case "customer.subscription.created":
+ await handleSubscriptionCreated(event.data.object)
+ break
+ case "customer.subscription.updated":
+ await handleSubscriptionUpdated(event.data.object)
+ break
+ case "customer.subscription.deleted":
+ await handleSubscriptionDeleted(event.data.object)
+ break
+ case "checkout.session.completed":
+ await handleCheckoutCompleted(event.data.object)
+ break
+ default:
+ console.log(`Unhandled event type: ${event.type}`)
+ }
+
+ return Response.json({ received: true })
+ } catch (err) {
+ const error = err as Error
+ console.error(`Error processing webhook: ${error.message}`)
+ return Response.json({ error: "Error processing webhook" }, { status: 500 })
+ }
+}
+
+async function handleSubscriptionCreated(subscription: Stripe.Subscription) {
+ const { customer, metadata } = subscription
+ if (typeof customer !== "string") return
+
+ // If this subscription should have its billing cycle updated
+ if (metadata?.shouldUpdateBillingCycle === "true" && metadata.nextBillingDate) {
+ const nextBillingDate = parseInt(metadata.nextBillingDate)
+
+ try {
+ const stripe = getStripe()
+ await stripe.subscriptions.update(subscription.id, {
+ proration_behavior: "none",
+ billing_cycle_anchor:
+ nextBillingDate as unknown as Stripe.SubscriptionUpdateParams.BillingCycleAnchor,
+ })
+ } catch (error) {
+ console.error("Failed to update subscription billing cycle:", error)
+ }
+ }
+
+ // Get the member to access their email and name
+ const member = await db.member.update({
+ where: { stripeCustomerId: customer },
+ data: {
+ stripeSubscriptionId: subscription.id,
+ status: "COMPLETED",
+ },
+ })
+
+ // Send welcome email
+ if (member.email) {
+ try {
+ await sendMembershipSignupEmail(member.name ?? "", member.email)
+ } catch (error) {
+ console.error("Failed to send welcome email:", error)
+ // Don't throw error to avoid failing the webhook
+ }
+ }
+}
+
+async function handleSubscriptionUpdated(subscription: Stripe.Subscription) {
+ const { customer, status } = subscription
+ if (typeof customer !== "string") return
+
+ // Update member status based on subscription status
+ await db.member.update({
+ where: { stripeCustomerId: customer },
+ data: {
+ status: status === "active" ? "COMPLETED" : "PENDING",
+ },
+ })
+}
+
+async function handleSubscriptionDeleted(subscription: Stripe.Subscription) {
+ const { customer } = subscription
+ if (typeof customer !== "string") return
+
+ // Mark member as inactive when subscription is cancelled
+ await db.member.update({
+ where: { stripeCustomerId: customer },
+ data: {
+ status: "PENDING",
+ stripeSubscriptionId: null,
+ },
+ })
+}
+
+async function handleCheckoutCompleted(session: Stripe.Checkout.Session) {
+ if (session.mode !== "subscription") return
+
+ const { customer, metadata } = session
+ if (!metadata?.memberId || typeof customer !== "string") return
+
+ // Update member with subscription details
+ await db.member.update({
+ where: { id: metadata.memberId },
+ data: {
+ stripeCustomerId: customer,
+ status: "COMPLETED",
+ },
+ })
+}
diff --git a/src/app/consts.ts b/src/app/consts.ts
new file mode 100644
index 00000000..45066065
--- /dev/null
+++ b/src/app/consts.ts
@@ -0,0 +1 @@
+export const inDevEnvironment = !!process && process.env.NODE_ENV === "development"
diff --git a/src/app/feed.xml/route.ts b/src/app/feed.xml/route.ts
new file mode 100644
index 00000000..53d0b15e
--- /dev/null
+++ b/src/app/feed.xml/route.ts
@@ -0,0 +1,58 @@
+import { sanityClient } from "@/sanity/lib/client"
+import type { Author, BlogPost } from "@/sanity/sanity.types"
+import { getAuthorFullName } from "@/lib/utils/videoContent"
+import { extractFirstParagraph } from "@/lib/seo"
+
+type BlogPostWithAuthors = Pick & {
+ authors: Array>
+}
+
+export async function GET() {
+ const posts = await sanityClient.fetch(
+ `*[_type == "blogPost"] | order(publishedAt desc) {
+ title,
+ slug,
+ content,
+ publishedAt,
+ excerpt,
+ "authors": authors[]->{
+ firstName,
+ lastName
+ }
+ }`,
+ )
+
+ const baseUrl = process.env.NEXT_PUBLIC_BASE_URL ?? "https://schrodinger-hat.it"
+
+ const rss = `
+
+
+ Schrödinger Hat Blog
+ ${baseUrl}
+ Latest blog posts from Schrödinger Hat
+ en
+ ${new Date().toUTCString()}
+
+ ${posts
+ .map(
+ (post) => `
+ -
+
+ ${baseUrl}/blog/${post.slug?.current}
+ ${baseUrl}/blog/${post.slug?.current}
+ ${new Date(post.publishedAt!).toUTCString()}
+
+ ${post.authors.map((author) => getAuthorFullName(author as Author)).join(", ")}
+ `,
+ )
+ .join("\n")}
+
+ `
+
+ return new Response(rss, {
+ headers: {
+ "Content-Type": "application/xml",
+ "Cache-Control": "public, s-maxage=1200, stale-while-revalidate=600",
+ },
+ })
+}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
new file mode 100644
index 00000000..65e74e8b
--- /dev/null
+++ b/src/app/layout.tsx
@@ -0,0 +1,33 @@
+import "@/styles/globals.css"
+import { Inter, Lexend } from "next/font/google"
+import { TRPCReactProvider } from "@/trpc/react"
+import { constructMetadata } from "@/lib/utils/metadata"
+import { GoogleAnalytics } from "@next/third-parties/google"
+import { env } from "@/env.js"
+import { SpeedInsights } from "@vercel/speed-insights/next"
+
+const inter = Inter({ subsets: ["latin"], variable: "--font-inter" })
+const lexend = Lexend({ subsets: ["latin"], variable: "--font-lexend" })
+
+export const metadata = constructMetadata()
+
+export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ {children}
+
+
+ {env.NEXT_PUBLIC_GA_ID && }
+
+ )
+}
diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx
new file mode 100644
index 00000000..734f3781
--- /dev/null
+++ b/src/app/not-found.tsx
@@ -0,0 +1,55 @@
+import { Image } from "@/components/atoms/media/Image"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Header } from "@/components/organisms/header/header"
+import { Inter } from "next/font/google"
+import { Lexend } from "next/font/google"
+import { type Metadata } from "next"
+import { Footer } from "@/components/organisms/footer"
+import { BlurredBackground } from "@/components/organisms/blurred-background"
+
+// Images
+import notFound from "@/images/logo_dead.png"
+import { Link } from "@/components/atoms/links/Link"
+import { Button } from "@/components/molecules/button"
+
+const inter = Inter({ subsets: ["latin"], variable: "--font-inter" })
+const lexend = Lexend({ subsets: ["latin"], variable: "--font-lexend" })
+
+export const metadata: Metadata = {
+ title: "404 - Not Found",
+ description: "The page you are looking for does not exist.",
+ icons: [{ rel: "icon", url: "/favicon.ico" }],
+}
+
+export default function NotFound() {
+ return (
+
+
+
+
+
+
+
+
+
+ Not Found
+
+ The page you are looking for does not exist.
+
+ Back to Home?
+
+
+
+
+
+
+ )
+}
diff --git a/src/app/robots.ts b/src/app/robots.ts
new file mode 100644
index 00000000..bb7e9480
--- /dev/null
+++ b/src/app/robots.ts
@@ -0,0 +1,13 @@
+import type { MetadataRoute } from "next"
+import { BASE_URL } from "../lib/utils/withFullUrl"
+
+export default function robots(): MetadataRoute.Robots {
+ return {
+ rules: {
+ userAgent: "*",
+ allow: "/",
+ disallow: "/private/",
+ },
+ sitemap: `${BASE_URL}/sitemap.xml`,
+ }
+}
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
new file mode 100644
index 00000000..4144d382
--- /dev/null
+++ b/src/app/sitemap.ts
@@ -0,0 +1,174 @@
+import type { MetadataRoute } from "next"
+import { sanityClient } from "../sanity/lib/client"
+import { urlFor } from "../sanity/lib/image"
+import { BASE_URL } from "../lib/utils/withFullUrl"
+
+const STATIC_LAST_MODIFIED = new Date("2024-12-01")
+
+export default async function sitemap(): Promise {
+ // Core website pages
+ const mainRoutes = [
+ /*
+ Static pages
+ */
+ // Home page
+ {
+ url: BASE_URL,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ // Association pages
+ {
+ url: `${BASE_URL}/association/about-us`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ {
+ url: `${BASE_URL}/association/join`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ {
+ url: `${BASE_URL}/association/press-kit`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ // Contribute pages
+ {
+ url: `${BASE_URL}/contribute/as-individual`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ {
+ url: `${BASE_URL}/contribute/as-partner`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ {
+ url: `${BASE_URL}/contribute/as-speaker`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ {
+ url: `${BASE_URL}/contribute/as-sponsor`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ // Partecipate section
+ {
+ url: `${BASE_URL}/partecipate/local-communities`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ {
+ url: `${BASE_URL}/partecipate/projects`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ // Speakers section
+ {
+ url: `${BASE_URL}/speakers`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ // Watch section
+ {
+ url: `${BASE_URL}/watch`,
+ lastModified: STATIC_LAST_MODIFIED,
+ },
+ ]
+
+ // Fetch all dynamic pages from Sanity
+ const [pages, blogPosts, speakers, events, videos] = await Promise.all([
+ // Generic CMS pages
+ sanityClient.fetch<
+ Array<{ slug: { current: string }; _updatedAt: string; headerImage?: { asset: any } }>
+ >(
+ `*[_type == "page" && defined(slug.current)]{
+ slug,
+ _updatedAt,
+ headerImage
+ }`,
+ ),
+ // Blog posts
+ sanityClient.fetch<
+ Array<{ slug: { current: string }; _updatedAt: string; headerImage?: { asset: any } }>
+ >(
+ `*[_type == "blogPost" && defined(slug.current)]{
+ slug,
+ _updatedAt,
+ headerImage
+ }`,
+ ),
+ // Speaker profiles
+ sanityClient.fetch>(
+ `*[_type == "author" && defined(slug.current)]{
+ slug,
+ _updatedAt,
+ photo
+ }`,
+ ),
+ // Events
+ sanityClient.fetch<
+ Array<{
+ slug: { current: string }
+ _updatedAt: string
+ cover?: { asset: any }
+ background?: { asset: any }
+ }>
+ >(
+ `*[_type == "event" && defined(slug.current)]{
+ slug,
+ _updatedAt,
+ cover,
+ background
+ }`,
+ ),
+ // Videos
+ sanityClient.fetch>(
+ `*[_type == "video" && defined(slug.current)] | order(publishedAt desc){
+ slug,
+ _updatedAt
+ }`,
+ ),
+ ])
+
+ // Map generic CMS pages
+ const pageRoutes = pages.map((page) => ({
+ url: `${BASE_URL}/page/${page.slug.current}`,
+ lastModified: new Date(page._updatedAt),
+ ...(page.headerImage?.asset && {
+ images: [urlFor(page.headerImage.asset).format("jpg").width(800).height(450).url()],
+ }),
+ }))
+
+ // Map blog posts
+ const blogRoutes = blogPosts.map((post) => ({
+ url: `${BASE_URL}/blog/${post.slug.current}`,
+ lastModified: new Date(post._updatedAt),
+ ...(post.headerImage?.asset && {
+ images: [urlFor(post.headerImage.asset).format("jpg").width(800).height(450).url()],
+ }),
+ }))
+
+ // Map speaker profiles
+ const speakerRoutes = speakers.map((speaker) => ({
+ url: `${BASE_URL}/speaker/${speaker.slug.current}`,
+ lastModified: new Date(speaker._updatedAt),
+ ...(speaker.photo?.asset && {
+ images: [urlFor(speaker.photo.asset).format("jpg").width(800).height(450).url()],
+ }),
+ }))
+
+ // Map events
+ const eventRoutes = events.map((event) => ({
+ url: `${BASE_URL}/partecipate/events/${event.slug.current}`,
+ lastModified: new Date(event._updatedAt),
+ ...((event.cover?.asset || event.background?.asset) && {
+ images: [
+ urlFor(event.cover?.asset || event.background?.asset)
+ .format("jpg")
+ .width(800)
+ .height(450)
+ .url(),
+ ],
+ }),
+ }))
+
+ // Map videos
+ const videoRoutes = videos.map((video) => ({
+ url: `${BASE_URL}/watch/${video.slug.current}`,
+ lastModified: new Date(video._updatedAt),
+ }))
+
+ return [...mainRoutes, ...pageRoutes, ...blogRoutes, ...speakerRoutes, ...eventRoutes, ...videoRoutes]
+}
diff --git a/src/assets/images/sh-logo-big.png b/src/assets/images/sh-logo-big.png
deleted file mode 100755
index df9aed86..00000000
Binary files a/src/assets/images/sh-logo-big.png and /dev/null differ
diff --git a/src/assets/images/sh-logo-small.png b/src/assets/images/sh-logo-small.png
deleted file mode 100755
index dc0249c8..00000000
Binary files a/src/assets/images/sh-logo-small.png and /dev/null differ
diff --git a/src/assets/sh-logo-big.png b/src/assets/sh-logo-big.png
deleted file mode 100755
index df9aed86..00000000
Binary files a/src/assets/sh-logo-big.png and /dev/null differ
diff --git a/src/assets/sh-logo-small.png b/src/assets/sh-logo-small.png
deleted file mode 100755
index dc0249c8..00000000
Binary files a/src/assets/sh-logo-small.png and /dev/null differ
diff --git a/src/assets/svg/composite.svg b/src/assets/svg/composite.svg
deleted file mode 100755
index 37486eb1..00000000
--- a/src/assets/svg/composite.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/assets/svg/logo-sh.svg b/src/assets/svg/logo-sh.svg
deleted file mode 100644
index 28526a53..00000000
--- a/src/assets/svg/logo-sh.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/assets/svg/single.svg b/src/assets/svg/single.svg
deleted file mode 100755
index f7e09fc0..00000000
--- a/src/assets/svg/single.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/src/components/LanguageSwitcher.vue b/src/components/LanguageSwitcher.vue
deleted file mode 100644
index d3ea5fe3..00000000
--- a/src/components/LanguageSwitcher.vue
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
- {{ locale }}
-
-
-
-
- {{ language.toUpperCase() }}
-
-
-
-
-
diff --git a/src/components/NyanCat.vue b/src/components/NyanCat.vue
deleted file mode 100755
index 4cf575d3..00000000
--- a/src/components/NyanCat.vue
+++ /dev/null
@@ -1,1168 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/components/SVGLogo.vue b/src/components/SVGLogo.vue
deleted file mode 100644
index ccf7df03..00000000
--- a/src/components/SVGLogo.vue
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/TheContributing.vue b/src/components/TheContributing.vue
deleted file mode 100755
index d933b780..00000000
--- a/src/components/TheContributing.vue
+++ /dev/null
@@ -1,308 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('contributing.title') }}
-
-
-
- Schrödinger Hat {{ $t('contributing.is-a-project') }}
- GitHub
- .
-
-
- {{ $t('contributing.cta') }}
-
- {{ $t('contributing.external-link') }}
-
-
- {{ $t('contributing.cta-2') }}
-
-
-
-
-
-
- Community Partners
-
-
-
-
-
-
-
-
-
diff --git a/src/components/atoms/content/CodeBlock.tsx b/src/components/atoms/content/CodeBlock.tsx
new file mode 100644
index 00000000..86b1a743
--- /dev/null
+++ b/src/components/atoms/content/CodeBlock.tsx
@@ -0,0 +1,42 @@
+"use client"
+
+import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"
+import { oneDark } from "react-syntax-highlighter/dist/esm/styles/prism"
+import { cn } from "@/lib/utils"
+
+interface CodeBlockProps {
+ value: {
+ code: string
+ language?: string
+ filename?: string
+ }
+}
+
+export function CodeBlock({ value }: CodeBlockProps) {
+ const { code, language = "typescript", filename } = value
+
+ return (
+
+ {filename && (
+
+ {filename}
+
+ )}
+
code]:line-height-tight [&>code]:bg-transparent [&>code]:text-xs [&>code]:font-normal [&>code]:leading-normal",
+ )}
+ >
+ {code}
+
+
+ )
+}
diff --git a/src/components/atoms/debug.tsx b/src/components/atoms/debug.tsx
new file mode 100644
index 00000000..19b83cc3
--- /dev/null
+++ b/src/components/atoms/debug.tsx
@@ -0,0 +1,7 @@
+export function Debug({ children }: { children: any }) {
+ return (
+
+ {JSON.stringify(children, null, 4)}
+
+ )
+}
diff --git a/src/components/atoms/image-wrapper.tsx b/src/components/atoms/image-wrapper.tsx
new file mode 100644
index 00000000..2667f87e
--- /dev/null
+++ b/src/components/atoms/image-wrapper.tsx
@@ -0,0 +1,32 @@
+import Image from "next/image"
+import { cn } from "@/lib/utils"
+
+interface ImageWrapperProps {
+ src: string
+ alt: string
+ width?: number
+ height?: number
+ className?: string
+ imageClassName?: string
+}
+
+export function ImageWrapper({
+ src,
+ alt,
+ width = 300,
+ height = 150,
+ className,
+ imageClassName,
+}: ImageWrapperProps) {
+ return (
+
+
+
+ )
+}
diff --git a/src/components/atoms/layout/AnimatedSection.tsx b/src/components/atoms/layout/AnimatedSection.tsx
new file mode 100644
index 00000000..bb558cfa
--- /dev/null
+++ b/src/components/atoms/layout/AnimatedSection.tsx
@@ -0,0 +1,50 @@
+"use client"
+
+import { motion, useInView } from "framer-motion"
+import { useRef, useEffect, useState } from "react"
+import { cn, disableAnimations } from "@/lib/utils"
+import { DURATION_TEN_FRAMES } from "./const"
+import { env } from "@/env"
+
+interface AnimatedSectionProps {
+ children: React.ReactNode
+ className?: string
+ delay?: number
+}
+
+export function AnimatedSection({ children, className, delay = 0 }: AnimatedSectionProps) {
+ const ref = useRef(null)
+ const isInView = useInView(ref, { once: true, margin: "-100px" })
+ const [shouldAnimate, setShouldAnimate] = useState(disableAnimations ? true : false)
+
+ useEffect(() => {
+ // Apply delay only on initial mount and when not in CI
+ if (!disableAnimations) {
+ const timer = setTimeout(() => {
+ setShouldAnimate(true)
+ }, delay * 1000)
+
+ return () => clearTimeout(timer)
+ }
+ }, [delay])
+
+ // In CI, render without animation wrapper
+ if (disableAnimations) {
+ return {children}
+ }
+
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/atoms/layout/SectionContainer.tsx b/src/components/atoms/layout/SectionContainer.tsx
new file mode 100644
index 00000000..bb8f4aec
--- /dev/null
+++ b/src/components/atoms/layout/SectionContainer.tsx
@@ -0,0 +1,87 @@
+import { cn } from "@/lib/utils"
+import { type ReactNode } from "react"
+import { AnimatedSection } from "./AnimatedSection"
+
+interface SectionContainerProps {
+ children: ReactNode
+ className?: string
+ size?: "tiny" | "narrow" | "medium" | "wide" | "full"
+ padding?: "header" | "default" | "little" | "none"
+ spacing?: "small" | "medium" | "large" | "none"
+ withBackground?: boolean
+ notAnimated?: boolean
+ animationDelay?: number
+}
+
+const sizes = {
+ tiny: "max-w-2xl",
+ narrow: "max-w-3xl",
+ medium: "max-w-5xl",
+ wide: "max-w-7xl",
+ full: "",
+}
+
+const paddings = {
+ header: "py-16 md:py-24",
+ default: "py-8 md:py-16",
+ little: "py-4 md:py-8",
+ none: "py-0",
+}
+
+const spacings = {
+ small: "space-y-4 md:space-y-8",
+ medium: "space-y-8 md:space-y-16",
+ large: "space-y-16 md:space-y-24",
+ none: "",
+}
+
+export function SectionContainer({
+ children,
+ className,
+ size = "medium",
+ padding = "default",
+ spacing = "none",
+ withBackground = false,
+ notAnimated = false,
+ animationDelay = 0,
+}: SectionContainerProps) {
+ const contentDiv = !notAnimated ? (
+
+
+ {children}
+
+
+ ) : (
+
+ {children}
+
+ )
+
+ if (withBackground) {
+ return {contentDiv}
+ }
+
+ return contentDiv
+}
diff --git a/src/components/atoms/layout/const.ts b/src/components/atoms/layout/const.ts
new file mode 100644
index 00000000..039476de
--- /dev/null
+++ b/src/components/atoms/layout/const.ts
@@ -0,0 +1,4 @@
+export const DURATION_ONE_FRAME = 0.032 // 32ms
+export const DURATION_TWO_FRAMES = 0.032 * 2 // 64ms
+export const DURATION_TEN_FRAMES = 0.032 * 10 // 320ms
+export const DURATION_TWENTY_FRAMES = 0.032 * 20 // 640ms
diff --git a/src/components/atoms/links/Link.tsx b/src/components/atoms/links/Link.tsx
new file mode 100644
index 00000000..ccca5d79
--- /dev/null
+++ b/src/components/atoms/links/Link.tsx
@@ -0,0 +1,21 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface LinkProps {
+ href: string
+ children: React.ReactNode
+ className?: string
+}
+
+export function Link({ href, children, className }: LinkProps) {
+ const isExternal = href.startsWith("http")
+ const target = isExternal ? "_blank" : undefined
+ const rel = isExternal ? "noopener noreferrer" : undefined
+
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/atoms/lists/List.tsx b/src/components/atoms/lists/List.tsx
new file mode 100644
index 00000000..04b0bd19
--- /dev/null
+++ b/src/components/atoms/lists/List.tsx
@@ -0,0 +1,29 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface ListProps {
+ children: React.ReactNode
+ variant: "bullet" | "number" | "none"
+ className?: string
+}
+
+export function List({ children, variant, className }: ListProps) {
+ const Component = variant === "bullet" ? "ul" : "ol"
+
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/atoms/lists/ListItem.tsx b/src/components/atoms/lists/ListItem.tsx
new file mode 100644
index 00000000..9f74047b
--- /dev/null
+++ b/src/components/atoms/lists/ListItem.tsx
@@ -0,0 +1,12 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface ListItemProps {
+ children: React.ReactNode
+ className?: string
+}
+
+export function ListItem({ children, className }: ListItemProps) {
+ return {children}
+}
diff --git a/src/components/atoms/media/Image.tsx b/src/components/atoms/media/Image.tsx
new file mode 100644
index 00000000..f5a455b9
--- /dev/null
+++ b/src/components/atoms/media/Image.tsx
@@ -0,0 +1,60 @@
+import NextImage, { type StaticImageData } from "next/image"
+import { cn } from "@/lib/utils"
+
+interface ImageProps {
+ src: string | StaticImageData
+ alt: string
+ width?: number
+ height?: number
+ className?: string
+ priority?: boolean
+ rounded?: boolean
+ relative?: boolean
+ withContainer?: boolean
+ fill?: boolean
+}
+
+export function Image({
+ src,
+ alt,
+ width,
+ height,
+ className,
+ priority = false,
+ rounded = false,
+ relative = false,
+ withContainer = true,
+ fill = false,
+}: ImageProps) {
+ const imageElement = (
+
+ )
+
+ if (!withContainer) {
+ return imageElement
+ }
+
+ return (
+
+ {imageElement}
+
+ )
+}
diff --git a/src/components/atoms/title.tsx b/src/components/atoms/title.tsx
new file mode 100644
index 00000000..82723eb3
--- /dev/null
+++ b/src/components/atoms/title.tsx
@@ -0,0 +1,15 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { cn } from "@/lib/utils"
+
+interface TitleProps {
+ children: React.ReactNode
+ className?: string
+}
+
+export function Title({ children, className }: TitleProps) {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/atoms/typography/Blockquote.tsx b/src/components/atoms/typography/Blockquote.tsx
new file mode 100644
index 00000000..ee870d01
--- /dev/null
+++ b/src/components/atoms/typography/Blockquote.tsx
@@ -0,0 +1,16 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface BlockquoteProps {
+ children: React.ReactNode
+ className?: string
+}
+
+export function Blockquote({ children, className }: BlockquoteProps) {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/atoms/typography/Heading.tsx b/src/components/atoms/typography/Heading.tsx
new file mode 100644
index 00000000..3fc317af
--- /dev/null
+++ b/src/components/atoms/typography/Heading.tsx
@@ -0,0 +1,60 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface HeadingProps {
+ level?: 1 | 2 | 3 | 4
+ children: React.ReactNode
+ huge?: boolean
+ boost?: boolean
+ className?: string
+}
+
+export function Heading({ level = 1, children, huge = false, boost = false, className }: HeadingProps) {
+ const baseStyles = "font-medium text-gray-900 font-lexend tracking-tighter text-slate-800"
+ const hugeStyles =
+ "mb-8 font-lexend font-medium leading-none tracking-tight text-slate-800 text-5xl md:text-9xl md:tracking-[-7px]"
+
+ // Normal styles
+ const level1Styles = "mb-2 md:mb-6 text-4xl md:text-5xl"
+ const level2Styles = "mb-2 md:mb-4 text-2xl md:text-3xl"
+ const level3Styles = "mb-2 md:mb-4 text-2xl"
+ const level4Styles = "mb-2 md:mb-4 text-xl"
+
+ // Boosted styles
+ const level1StylesBoosted = "mb-2 md:mb-6 text-5xl md:text-6xl"
+ const level2StylesBoosted = "mb-2 md:mb-4 text-3xl md:text-4xl"
+ const level3StylesBoosted = "mb-2 md:mb-4 text-2xl md:text-3xl"
+ const level4StylesBoosted = "mb-2 md:mb-4 text-xl md:text-2xl"
+
+ const Component = `h${level}` as const
+
+ const getLevelStyles = () => {
+ if (boost) {
+ if (level === 1) return level1StylesBoosted
+ if (level === 2) return level2StylesBoosted
+ if (level === 3) return level3StylesBoosted
+ return level4StylesBoosted
+ }
+
+ if (level === 1) return level1Styles
+ if (level === 2) return level2Styles
+ if (level === 3) return level3Styles
+ return level4Styles
+ }
+
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/atoms/typography/InlineText.tsx b/src/components/atoms/typography/InlineText.tsx
new file mode 100644
index 00000000..9f5133d4
--- /dev/null
+++ b/src/components/atoms/typography/InlineText.tsx
@@ -0,0 +1,21 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface InlineTextProps {
+ children: React.ReactNode
+ variant: "strong" | "em" | "code"
+ className?: string
+}
+
+export function InlineText({ children, variant, className }: InlineTextProps) {
+ const styles = {
+ strong: "font-bold",
+ em: "italic",
+ code: "rounded bg-gray-100 px-1 py-0.5 font-mono text-sm text-gray-800",
+ }
+
+ const Component = variant as keyof JSX.IntrinsicElements
+
+ return {children}
+}
diff --git a/src/components/atoms/typography/Paragraph.tsx b/src/components/atoms/typography/Paragraph.tsx
new file mode 100644
index 00000000..df31e54e
--- /dev/null
+++ b/src/components/atoms/typography/Paragraph.tsx
@@ -0,0 +1,12 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+
+interface ParagraphProps {
+ children: React.ReactNode
+ className?: string
+}
+
+export function Paragraph({ children, className }: ParagraphProps) {
+ return {children}
+}
diff --git a/src/components/atoms/typography/Typography.tsx b/src/components/atoms/typography/Typography.tsx
new file mode 100644
index 00000000..1b96f3fa
--- /dev/null
+++ b/src/components/atoms/typography/Typography.tsx
@@ -0,0 +1,81 @@
+"use client"
+
+import { cn } from "@/lib/utils"
+import { type VariantProps, cva } from "class-variance-authority"
+import { type ElementType } from "react"
+
+const typographyVariants = cva("text-slate-900", {
+ variants: {
+ variant: {
+ h1: "scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl",
+ h2: "scroll-m-20 text-3xl font-semibold tracking-tight",
+ h3: "scroll-m-20 text-2xl font-semibold tracking-tight",
+ h4: "scroll-m-20 text-xl font-semibold tracking-tight",
+ p: "leading-7 [&:not(:first-child)]:mt-6",
+ blockquote: "mt-6 border-l-2 border-slate-300 pl-6 italic",
+ list: "my-6 ml-6 list-disc [&>li]:mt-2",
+ lead: "text-xl text-slate-700",
+ large: "text-lg font-semibold",
+ medium: "text-base font-semibold",
+ small: "text-sm font-medium leading-none",
+ muted: "text-sm text-slate-500",
+ link: "font-medium text-primary underline underline-offset-4 hover:text-primary/80",
+ navigation: "text-sm font-semibold leading-none uppercase",
+ navigationMobile: "text-xl text-slate-800 font-semibold",
+ },
+ weight: {
+ normal: "font-normal",
+ medium: "font-medium",
+ semibold: "font-semibold",
+ bold: "font-bold",
+ },
+ },
+ defaultVariants: {
+ variant: "p",
+ weight: "normal",
+ },
+})
+
+type TypographyProps = {
+ children: React.ReactNode
+ as?: C
+ variant?: VariantProps["variant"]
+ weight?: VariantProps["weight"]
+ className?: string
+} & Omit, "as" | "variant" | "weight" | "className">
+
+export function Typography({
+ children,
+ variant,
+ weight,
+ as,
+ className,
+ ...props
+}: TypographyProps) {
+ const Component = as ?? getDefaultElement(variant)
+
+ return (
+
+ {children}
+
+ )
+}
+
+function getDefaultElement(variant: string | null | undefined): ElementType {
+ switch (variant) {
+ case "h1":
+ return "h1"
+ case "h2":
+ return "h2"
+ case "h3":
+ return "h3"
+ case "h4":
+ return "h4"
+ case "blockquote":
+ return "blockquote"
+ case "list":
+ return "ul"
+ default:
+ return "p"
+ }
+}
diff --git a/src/components/buttons/CtaComponent.vue b/src/components/buttons/CtaComponent.vue
deleted file mode 100644
index 5f37c8d5..00000000
--- a/src/components/buttons/CtaComponent.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/buttons/CtaIcon.vue b/src/components/buttons/CtaIcon.vue
deleted file mode 100644
index 29468b3f..00000000
--- a/src/components/buttons/CtaIcon.vue
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/buttons/LogoAnimated.vue b/src/components/buttons/LogoAnimated.vue
deleted file mode 100644
index f6646fc2..00000000
--- a/src/components/buttons/LogoAnimated.vue
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
- Schrödinger Hat
-
-
-
-
-
-
-
-
diff --git a/src/components/events/EventCard.vue b/src/components/events/EventCard.vue
deleted file mode 100644
index 297c0812..00000000
--- a/src/components/events/EventCard.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
{{ event.category }}
-
-
{{ event.headline }}
- {{ event.title }}
-
-
{{ event.description.short }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/events/EventForm.vue b/src/components/events/EventForm.vue
deleted file mode 100644
index 86beea4c..00000000
--- a/src/components/events/EventForm.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
diff --git a/src/components/events/EventFormSelect.vue b/src/components/events/EventFormSelect.vue
deleted file mode 100644
index 87a61894..00000000
--- a/src/components/events/EventFormSelect.vue
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- {{ itemName }}
-
- Select one
- All
-
-
- {{ item }}
-
-
-
-
-
diff --git a/src/components/events/IconDetail.vue b/src/components/events/IconDetail.vue
deleted file mode 100644
index 85e4e987..00000000
--- a/src/components/events/IconDetail.vue
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
- {{ value }}
-
-
diff --git a/src/components/layout/MobileMenu.vue b/src/components/layout/MobileMenu.vue
deleted file mode 100755
index 9ef33962..00000000
--- a/src/components/layout/MobileMenu.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/layout/TheBanner.vue b/src/components/layout/TheBanner.vue
deleted file mode 100644
index 1ca4c6d9..00000000
--- a/src/components/layout/TheBanner.vue
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/layout/TheFooter.vue b/src/components/layout/TheFooter.vue
deleted file mode 100755
index 9272cd92..00000000
--- a/src/components/layout/TheFooter.vue
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
diff --git a/src/components/layout/TheNavbar.vue b/src/components/layout/TheNavbar.vue
deleted file mode 100755
index 9ef08e1b..00000000
--- a/src/components/layout/TheNavbar.vue
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/molecules/author-card.tsx b/src/components/molecules/author-card.tsx
new file mode 100644
index 00000000..58dece94
--- /dev/null
+++ b/src/components/molecules/author-card.tsx
@@ -0,0 +1,48 @@
+import type { Author } from "@/sanity/sanity.types"
+import { urlFor } from "@/sanity/lib/image"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Link } from "@/components/atoms/links/Link"
+import { Image } from "@/components/atoms/media/Image"
+import { getAuthorInitials, getAuthorFullName } from "@/lib/utils/videoContent"
+import { Typography } from "../atoms/typography/Typography"
+
+interface AuthorCardProps {
+ author: Author
+}
+
+export function AuthorCard({ author }: AuthorCardProps) {
+ if (!author) return null
+
+ return (
+
+
+
+ {author.photo ? (
+
+ ) : (
+
+ {getAuthorInitials(author)}
+
+ )}
+
+
+
+ {getAuthorFullName(author)}
+
+ {author.title && (
+
+ {author.title}
+
+ )}
+
+
+
+ )
+}
diff --git a/src/components/molecules/button.tsx b/src/components/molecules/button.tsx
new file mode 100644
index 00000000..a48111f5
--- /dev/null
+++ b/src/components/molecules/button.tsx
@@ -0,0 +1,47 @@
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
+ {
+ variants: {
+ variant: {
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-10 px-4 py-2",
+ sm: "h-9 rounded-md px-3",
+ lg: "h-11 rounded-md px-8",
+ icon: "h-10 w-10",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ },
+)
+
+export interface ButtonProps
+ extends React.ButtonHTMLAttributes,
+ VariantProps {
+ asChild?: boolean
+}
+
+const Button = React.forwardRef(
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
+ const Comp = asChild ? Slot : "button"
+ return
+ },
+)
+Button.displayName = "Button"
+
+export { Button, buttonVariants }
diff --git a/src/components/molecules/cards/BlogPostCard.tsx b/src/components/molecules/cards/BlogPostCard.tsx
new file mode 100644
index 00000000..871d1e4e
--- /dev/null
+++ b/src/components/molecules/cards/BlogPostCard.tsx
@@ -0,0 +1,45 @@
+import Link from "next/link"
+import { Image } from "@/components/atoms/media/Image"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { urlFor } from "@/sanity/lib/image"
+import { formatDateTime } from "@/lib/utils/date"
+import { getAuthorFullName } from "@/lib/utils/videoContent"
+import type { BlogPost, Author } from "@/sanity/sanity.types"
+
+interface BlogPostCardProps {
+ post: BlogPost & { authors: Author[] }
+ displayAuthor?: boolean
+}
+
+export function BlogPostCard({ post, displayAuthor = true }: BlogPostCardProps) {
+ return (
+
+ {post.headerImage && (
+
+
+
+ )}
+
+
+ {post.publishedAt && formatDateTime(post.publishedAt, "d MMMM, yyyy")}
+
+ {post.title}
+ {post.excerpt && {post.excerpt} }
+ {displayAuthor && post.authors.length > 0 && (
+
+ By {post.authors.map((author) => getAuthorFullName(author as unknown as Author)).join(", ")}
+
+ )}
+
+
+ )
+}
diff --git a/src/components/molecules/navigation-menu.tsx b/src/components/molecules/navigation-menu.tsx
new file mode 100644
index 00000000..41cfe4e7
--- /dev/null
+++ b/src/components/molecules/navigation-menu.tsx
@@ -0,0 +1,120 @@
+import * as React from "react"
+import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
+import { cva } from "class-variance-authority"
+import { ChevronDown } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const NavigationMenu = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+
+))
+NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
+
+const NavigationMenuList = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
+
+const NavigationMenuItem = NavigationMenuPrimitive.Item
+
+const navigationMenuTriggerStyle = cva(
+ "group inline-flex h-10 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,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}{" "}
+
+
+))
+NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
+
+const NavigationMenuContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
+
+const NavigationMenuLink = NavigationMenuPrimitive.Link
+
+const NavigationMenuViewport = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+))
+NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName
+
+const NavigationMenuIndicator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+))
+NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName
+
+export {
+ navigationMenuTriggerStyle,
+ NavigationMenu,
+ NavigationMenuList,
+ NavigationMenuItem,
+ NavigationMenuContent,
+ NavigationMenuTrigger,
+ NavigationMenuLink,
+ NavigationMenuIndicator,
+ NavigationMenuViewport,
+}
diff --git a/src/components/molecules/sheet.tsx b/src/components/molecules/sheet.tsx
new file mode 100644
index 00000000..78f0bf76
--- /dev/null
+++ b/src/components/molecules/sheet.tsx
@@ -0,0 +1,120 @@
+"use client"
+
+import * as React from "react"
+import * as SheetPrimitive from "@radix-ui/react-dialog"
+import { cva, type VariantProps } from "class-variance-authority"
+import { X } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const Sheet = SheetPrimitive.Root
+
+const SheetTrigger = SheetPrimitive.Trigger
+
+const SheetClose = SheetPrimitive.Close
+
+const SheetPortal = SheetPrimitive.Portal
+
+const SheetOverlay = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+SheetOverlay.displayName = SheetPrimitive.Overlay.displayName
+
+const sheetVariants = cva(
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
+ {
+ variants: {
+ side: {
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
+ bottom:
+ "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
+ right:
+ "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm",
+ },
+ },
+ defaultVariants: {
+ side: "right",
+ },
+ },
+)
+
+interface SheetContentProps
+ extends React.ComponentPropsWithoutRef,
+ VariantProps {}
+
+const SheetContent = React.forwardRef, SheetContentProps>(
+ ({ side = "right", className, children, ...props }, ref) => (
+
+
+
+ {children}
+
+
+ Close
+
+
+
+ ),
+)
+SheetContent.displayName = SheetPrimitive.Content.displayName
+
+const SheetHeader = ({ className, ...props }: React.HTMLAttributes) => (
+
+)
+SheetHeader.displayName = "SheetHeader"
+
+const SheetFooter = ({ className, ...props }: React.HTMLAttributes) => (
+
+)
+SheetFooter.displayName = "SheetFooter"
+
+const SheetTitle = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+SheetTitle.displayName = SheetPrimitive.Title.displayName
+
+const SheetDescription = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+SheetDescription.displayName = SheetPrimitive.Description.displayName
+
+export {
+ Sheet,
+ SheetPortal,
+ SheetOverlay,
+ SheetTrigger,
+ SheetClose,
+ SheetContent,
+ SheetHeader,
+ SheetFooter,
+ SheetTitle,
+ SheetDescription,
+}
diff --git a/src/components/molecules/video-card.tsx b/src/components/molecules/video-card.tsx
new file mode 100644
index 00000000..426d2d0c
--- /dev/null
+++ b/src/components/molecules/video-card.tsx
@@ -0,0 +1,69 @@
+"use client"
+
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { Image } from "@/components/atoms/media/Image"
+import { cn } from "@/lib/utils"
+import { PlayCircle02Icon } from "hugeicons-react"
+import Link from "next/link"
+import { motion } from "motion/react"
+import { DURATION_TWENTY_FRAMES } from "../atoms/layout/const"
+
+interface VideoCardProps {
+ title: string
+ subtitle: string
+ imageUrl: string
+ className?: string
+ slug?: string
+ isSquare?: boolean
+}
+
+export function VideoCard({ title, subtitle, imageUrl, className, slug }: VideoCardProps) {
+ return (
+
+
+
+ {/* Background Image */}
+
+
+
+
+ {/* Content */}
+
+
+ {title}
+
+
+ {subtitle &&
{subtitle} }
+
+
+ {/* Play Button */}
+
+
+
+
+ )
+}
diff --git a/src/components/molecules/youtube-player.tsx b/src/components/molecules/youtube-player.tsx
new file mode 100644
index 00000000..1c2d87a6
--- /dev/null
+++ b/src/components/molecules/youtube-player.tsx
@@ -0,0 +1,38 @@
+"use client"
+
+import { useEffect, useState } from "react"
+
+interface YouTubePlayerProps {
+ videoId: string
+ className?: string
+}
+
+export function YouTubePlayer({ videoId, className = "" }: YouTubePlayerProps) {
+ const [isClient, setIsClient] = useState(false)
+
+ useEffect(() => {
+ setIsClient(true)
+ }, [])
+
+ if (!isClient) {
+ return (
+
+
+ Loading player...
+
+
+ )
+ }
+
+ return (
+
+ VIDEO
+
+ )
+}
diff --git a/src/components/organisms/black-cta.tsx b/src/components/organisms/black-cta.tsx
new file mode 100644
index 00000000..7f5bbda1
--- /dev/null
+++ b/src/components/organisms/black-cta.tsx
@@ -0,0 +1,40 @@
+import { cn } from "@/lib/utils"
+import { Button } from "@/components/ui/button"
+import Link from "next/link"
+import { Heading } from "../atoms/typography/Heading"
+
+interface BlackCTAProps {
+ children: React.ReactNode
+ cta: {
+ text: string
+ href: string
+ }
+ className?: string
+}
+
+export function BlackCTA({ children, cta, className }: BlackCTAProps) {
+ return (
+
+
+
{children}
+
+
+
+
+ {cta.text}
+
+
+
+
+
+
+ )
+}
+
+export function BlackCTAHeading({ children }: { children: React.ReactNode }) {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/organisms/blurred-background.tsx b/src/components/organisms/blurred-background.tsx
new file mode 100644
index 00000000..117b903b
--- /dev/null
+++ b/src/components/organisms/blurred-background.tsx
@@ -0,0 +1,142 @@
+"use client"
+
+import { env } from "@/env"
+import { cn, disableAnimations } from "@/lib/utils"
+import { useCallback, useEffect, useRef } from "react"
+
+interface BlurredBackgroundProps {
+ points: number
+ colors: string[]
+ blur?: number
+ opacity?: number
+ className?: string
+ size?: number
+ positioning?: "random" | "center"
+ disableAnimation?: boolean
+ canOverflow?: boolean
+}
+
+const BlurredBackgroundContent = ({
+ points,
+ colors,
+ blur = 100,
+ opacity = 0.5,
+ className = "",
+ size = 500,
+ positioning = "random",
+ disableAnimation = false,
+ canOverflow = false,
+}: BlurredBackgroundProps) => {
+ const containerRef = useRef(null)
+
+ // Helper function to generate a more center-weighted random number between 0 and 1
+ const centerBiasedRandom = () => {
+ const samples = 3
+ let sum = 0
+ for (let i = 0; i < samples; i++) {
+ sum += Math.random()
+ }
+ return sum / samples
+ }
+
+ const getRandomDuration = () => {
+ return Math.random() * 4 + 6 // Random duration between 6-10s
+ }
+
+ // Memoize the getCenteredPosition function
+ const getCenteredPosition = useCallback(
+ (index: number, totalPoints: number) => {
+ const angleStep = (2 * Math.PI) / totalPoints
+ const angle = index * angleStep
+ const radius = size * 0.4 // 30% offset from center
+
+ return {
+ x: Math.cos(angle) * radius,
+ y: Math.sin(angle) * radius,
+ }
+ },
+ [size],
+ )
+
+ useEffect(() => {
+ if (!containerRef.current) return
+
+ const container = containerRef.current
+ const { width, height } = container.getBoundingClientRect()
+ const centerX = width / 2
+ const centerY = height / 2
+
+ container.innerHTML = ""
+
+ const effectiveSize = size + blur * 2
+
+ for (let i = 0; i < points; i++) {
+ const circle = document.createElement("div")
+ const color = colors[i % colors.length]
+
+ let left: number
+ let top: number
+
+ if (positioning === "center") {
+ const { x, y } = getCenteredPosition(i, points)
+ left = centerX + x
+ top = centerY + y
+ } else {
+ const safeWidth = width - effectiveSize
+ const safeHeight = height - effectiveSize
+ left = Math.max(blur, Math.min(safeWidth + blur, centerBiasedRandom() * width))
+ top = Math.max(blur, Math.min(safeHeight + blur, centerBiasedRandom() * height))
+ }
+
+ // Generate random animation parameters
+ const duration = getRandomDuration()
+ const delay = Math.random() * -duration
+
+ circle.className = "absolute rounded-full"
+ // Only add animation class if not in CI and animations aren't disabled
+ if (!disableAnimations && !disableAnimation) {
+ circle.className += " animate-blob"
+ }
+
+ Object.assign(circle.style, {
+ width: `${size}px`,
+ height: `${size}px`,
+ left: `${left}px`,
+ top: `${top}px`,
+ backgroundColor: color,
+ opacity: opacity.toString(),
+ filter: `blur(${blur}px)`,
+ transform: "translate(-50%, -50%)",
+ willChange: "transform",
+ ...(disableAnimations || disableAnimation
+ ? {}
+ : {
+ animation: `blob ${duration}s infinite ${delay}s`,
+ }),
+ })
+
+ container.appendChild(circle)
+ }
+ }, [points, colors, blur, opacity, size, positioning, getCenteredPosition, disableAnimation])
+
+ return (
+
+ )
+}
+
+export const BlurredBackground = (props: BlurredBackgroundProps) => {
+ if (disableAnimations) return null
+ return
+}
diff --git a/src/components/organisms/bullet-point.tsx b/src/components/organisms/bullet-point.tsx
new file mode 100644
index 00000000..4ba78663
--- /dev/null
+++ b/src/components/organisms/bullet-point.tsx
@@ -0,0 +1,39 @@
+import { type FC } from "react"
+import { cn } from "@/lib/utils"
+import { Heading } from "../atoms/typography/Heading"
+import { List } from "../atoms/lists/List"
+import { ListItem } from "../atoms/lists/ListItem"
+import { Typography } from "../atoms/typography/Typography"
+
+interface BulletPointProps {
+ title: string
+ features: string[]
+ className?: string
+}
+
+export const BulletPoint: FC = ({ title, features, className }) => {
+ return (
+
+ {title && (
+
+ {title}
+
+ )}
+
+
+ {features.map((feature, index) => (
+
+
+
+ {feature}
+
+
+ ))}
+
+
+ )
+}
diff --git a/src/components/organisms/card-section.tsx b/src/components/organisms/card-section.tsx
new file mode 100644
index 00000000..c9d2d6a4
--- /dev/null
+++ b/src/components/organisms/card-section.tsx
@@ -0,0 +1,108 @@
+"use client"
+
+import { type StaticImageData } from "next/image"
+import Link from "next/link"
+import { cn } from "@/lib/utils"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { Image } from "@/components/atoms/media/Image"
+
+type CardVariant = "primary" | "secondary" | "gradient" | "dark" | "shop"
+
+interface CardSectionProps {
+ topText?: string
+ title?: string
+ subtitle?: string
+ ctaText?: string
+ ctaHref?: string
+ image?: string | StaticImageData
+ imageAlt?: string
+ onctaClick?: () => void
+ variant?: CardVariant
+ className?: string
+}
+
+const variantStyles: Record = {
+ primary: "bg-[#6366f1]",
+ secondary: "bg-[#3b82f6]",
+ shop: "bg-[#FFDBAF]",
+ gradient: "bg-gradient-to-r from-blue-600 to-indigo-600",
+ dark: "bg-gray-900",
+}
+
+const textStyles: Record = {
+ primary: "text-white",
+ secondary: "text-white",
+ gradient: "text-white",
+ dark: "text-white",
+ shop: "text-gray-900",
+}
+
+const textOpacityStyles: Record = {
+ primary: "text-white/80",
+ secondary: "text-white/80",
+ gradient: "text-white/80",
+ dark: "text-white/80",
+ shop: "text-gray-900/80",
+}
+
+export function CardSection({
+ topText = "",
+ title = "",
+ subtitle = "",
+ ctaText = "",
+ ctaHref = "",
+ image = "",
+ imageAlt = "Section image",
+ variant = "primary",
+ className = "",
+}: CardSectionProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ {topText}
+
+
+ {title}
+
+
+ {subtitle}
+
+
+
+
+ {ctaText}
+
+
+
+
+
+ )
+}
diff --git a/src/components/organisms/event-hero.tsx b/src/components/organisms/event-hero.tsx
new file mode 100644
index 00000000..90687bfd
--- /dev/null
+++ b/src/components/organisms/event-hero.tsx
@@ -0,0 +1,170 @@
+import { Button } from "@/components/ui/button"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { formatDateTime } from "@/lib/utils/date"
+import type { Event, internalGroqTypeReferenceTo } from "@/sanity/sanity.types"
+import { urlFor } from "@/sanity/lib/image"
+import { Image } from "@/components/atoms/media/Image"
+import { AirplaneLanding01Icon, AirplaneTakeOff01Icon, ArrowRight01Icon } from "hugeicons-react"
+
+type EventWithExpandedSeries = Omit & {
+ series?: {
+ _ref: string
+ _type: "reference"
+ title?: string
+ [internalGroqTypeReferenceTo]?: "eventSeries"
+ }
+}
+
+interface EventHeroProps {
+ title: string
+ cover?: Event["cover"]
+ eventPeriod?: Event["eventPeriod"]
+ location?: Event["location"]
+ cta?: Event["cta"]
+ organiser: string
+ series?: EventWithExpandedSeries["series"]
+}
+
+export function EventHero({ title, cover, eventPeriod, location, cta, organiser, series }: EventHeroProps) {
+ return (
+
+ {/* Background image with gradient overlay */}
+ {cover && (
+ <>
+
+
+
+
+ >
+ )}
+
+ {/* Content */}
+
+
+
+ {/* Basic Info */}
+
+
+ {series?.title}
+
+
+ {title}
+
+
+ {/* Organiser */}
+
+ By {organiser}
+
+
+
+
+
+
+ {/* Location section */}
+ {location?.name && (
+
+
+ Location
+
+
+ {location.coordinates && (
+
+ )}
+
+
+ {location.name}
+
+ {location.address && (
+
+ {location.address}
+
+ )}
+
+
+
+ )}
+
+ {/* Time section */}
+
+
+ Time
+
+
+ {eventPeriod?.startDate && (
+
+
+
+ {formatDateTime(eventPeriod.startDate, "EEEE")}
+
+
+ {formatDateTime(eventPeriod.startDate, "d MMM, yyyy")}
+
+
+ {formatDateTime(eventPeriod.startDate, "HH:mm a")}
+
+
+ )}
+ {eventPeriod?.endDate && (
+ <>
+
+
+
+
+ {formatDateTime(eventPeriod.endDate, "EEEE")}
+
+
+ {formatDateTime(eventPeriod.endDate, "d MMM, yyyy")}
+
+
+ {formatDateTime(eventPeriod.endDate, "HH:mm a")}
+
+
+ >
+ )}
+
+
+
+ {/* CTA Button */}
+ {cta?.url && (
+
+
+ {cta.text ?? "Registrati all'evento"}
+
+
+ )}
+
+
+
+
+
+ )
+}
diff --git a/src/components/organisms/faq-block.tsx b/src/components/organisms/faq-block.tsx
new file mode 100644
index 00000000..86e375e7
--- /dev/null
+++ b/src/components/organisms/faq-block.tsx
@@ -0,0 +1,57 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"
+import { PortableText } from "@portabletext/react"
+import { sanityClient } from "@/sanity/lib/client"
+
+type FAQ = {
+ _id: string
+ question: string
+ answer: any[] // Portable Text content
+}
+
+interface FaqBlockProps {
+ groupKey: string
+ title?: string
+ description?: string
+}
+
+async function getFAQs(groupKey: string): Promise {
+ return sanityClient.fetch(
+ `
+ *[_type == "faq" && groupKey == $groupKey] | order(order asc) {
+ _id,
+ question,
+ answer,
+ }
+ `,
+ { groupKey },
+ )
+}
+
+export async function FaqBlock({ groupKey, title = "FAQ", description }: FaqBlockProps) {
+ const faqs: FAQ[] = await getFAQs(groupKey)
+
+ return (
+
+
+ {title}
+ {description && (
+
+ {description}
+
+ )}
+
+
+ {faqs.map((faq) => (
+
+ {faq.question}
+
+
+
+
+ ))}
+
+
+ )
+}
diff --git a/src/components/organisms/features-list.tsx b/src/components/organisms/features-list.tsx
new file mode 100644
index 00000000..feaaec82
--- /dev/null
+++ b/src/components/organisms/features-list.tsx
@@ -0,0 +1,42 @@
+import { Heading } from "../atoms/typography/Heading"
+import { Typography } from "../atoms/typography/Typography"
+
+interface FeatureCardProps {
+ name: string
+ description: string
+ icon: React.ReactNode
+}
+
+export function FeatureCard({ name, description, icon: icon }: FeatureCardProps) {
+ return (
+
+
{icon}
+
+
+ {name}
+
+ {description}
+
+
+ )
+}
+
+interface FeaturesListProps {
+ title: string
+ features: FeatureCardProps[]
+}
+
+export default function FeaturesList({ title, features }: FeaturesListProps) {
+ return (
+
+
+ {title}
+
+
+ {features.map((feature) => (
+
+ ))}
+
+
+ )
+}
diff --git a/src/components/organisms/footer.tsx b/src/components/organisms/footer.tsx
new file mode 100644
index 00000000..35702cbd
--- /dev/null
+++ b/src/components/organisms/footer.tsx
@@ -0,0 +1,100 @@
+"use client"
+
+import Link from "next/link"
+import { Youtube, Twitter, Linkedin } from "lucide-react"
+import { inDevEnvironment } from "@/app/consts"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { Typography } from "../atoms/typography/Typography"
+
+export function Footer() {
+ return (
+
+
+
+
+ {/* Policy Links */}
+
+
+
Cookie policy
+
+
+
Privacy policy
+
+
+
Contacts
+
+
+
Code of Conduct
+
+
+
+ {/* Shop & Account Links */}
+
+
+
ImageGoNord
+
+
+
Blog
+
+ {inDevEnvironment && (
+ <>
+
+
CMS
+
+
+
Web Components
+
+
+
Email Preview
+
+ >
+ )}
+
+
+ {/* Company Info */}
+
+
+ SCHROEDINGER HAT APS
+
+
Via Pino Arpioni 1, Pelago (FI)
+
IT07355400487
+
+
+
+ Linkedin
+
+
+
+ YouTube
+
+
+
+
+
+ {/* Line Separator */}
+
+
+ {/* Bottom Links */}
+
+
+ © 2024, Schrödinger Hat
+
+
+
+
+ Powered by Next.js
+
+
+
+
+
+
+ )
+}
diff --git a/src/components/organisms/github-stars.tsx b/src/components/organisms/github-stars.tsx
new file mode 100644
index 00000000..20cdc3c5
--- /dev/null
+++ b/src/components/organisms/github-stars.tsx
@@ -0,0 +1,48 @@
+"use client"
+
+import { Typography } from "@/components/atoms/typography/Typography"
+import { StarIcon } from "lucide-react"
+import { useEffect, useState } from "react"
+
+// Helper function to extract owner and repo from GitHub URL
+function extractGitHubInfo(url: string) {
+ try {
+ const match = /github\.com\/([^/]+)\/([^/]+)/.exec(url)
+ return match ? { owner: match[1], repo: match[2] } : null
+ } catch {
+ return null
+ }
+}
+
+interface GitHubRepo {
+ stargazers_count: number
+}
+
+export function GitHubStars({ url }: { url: string }) {
+ const [stars, setStars] = useState(null)
+
+ useEffect(() => {
+ const githubInfo = extractGitHubInfo(url)
+ if (!githubInfo) return
+
+ fetch(`https://api.github.com/repos/${githubInfo.owner}/${githubInfo.repo}`)
+ .then((res) => res.json())
+ .then((data: GitHubRepo) => {
+ if (data.stargazers_count) {
+ setStars(data.stargazers_count)
+ }
+ })
+ .catch((error) => console.error("Error fetching GitHub stars:", error))
+ }, [url])
+
+ if (stars === null) return null
+
+ return (
+
+
+
+ {stars.toLocaleString()}
+
+
+ )
+}
diff --git a/src/components/organisms/gradient-card.tsx b/src/components/organisms/gradient-card.tsx
new file mode 100644
index 00000000..e1e6d545
--- /dev/null
+++ b/src/components/organisms/gradient-card.tsx
@@ -0,0 +1,22 @@
+import Image from "next/image"
+
+interface GradientCardProps {
+ imageSrc: string
+ imageAlt: string
+ title: string
+ description: string
+ fromColor?: string
+ toColor?: string
+}
+
+export default function GradientCard({ imageSrc, imageAlt, title, description }: GradientCardProps) {
+ return (
+
+
+
+
+
{title}
+
{description}
+
+ )
+}
diff --git a/src/components/organisms/header/data.tsx b/src/components/organisms/header/data.tsx
new file mode 100644
index 00000000..d92371bc
--- /dev/null
+++ b/src/components/organisms/header/data.tsx
@@ -0,0 +1,90 @@
+import { Calendar03Icon } from "hugeicons-react"
+import { UserLove01Icon } from "hugeicons-react"
+
+//* Partecipate Menu Data
+export const partecipateMenuData = [
+ {
+ title: "Events",
+ href: "/partecipate/events",
+ description: "Discover upcoming events and opportunities to connect.",
+ icon: ,
+ },
+ {
+ title: "Projects",
+ href: "/partecipate/projects",
+ description: "Collaborate on impactful open-source projects.",
+ },
+ {
+ title: "Local Communities",
+ href: "/partecipate/local-communities",
+ description: "Connect with thriving local tech communities near you.",
+ },
+ {
+ title: "Discord",
+ href: "https://discord.gg/eK7bDYrnnR",
+ description: "Be part of the conversation on our Discord server.",
+ },
+]
+
+//* Contribute Menu Data
+export const contributeMenuData = [
+ {
+ title: "As Individual",
+ href: "/contribute/as-individual",
+ description: "Find meaningful ways to contribute as an individual.",
+ icon: ,
+ },
+ {
+ title: "As Speaker",
+ href: "/contribute/as-speaker",
+ description: "Share your expertise by speaking on our stage.",
+ },
+ {
+ title: "As Sponsor",
+ href: "/contribute/as-sponsor",
+ description: "Support our initiatives through financial contributions.",
+ },
+ {
+ title: "As Partner",
+ href: "/contribute/as-partner",
+ description: "Collaborate with us to strengthen and grow our community.",
+ },
+]
+
+//* Association Menu Data
+export const associationMenuData: {
+ title: string
+ href: string
+ description: string
+}[] = [
+ {
+ title: "About Us",
+ href: "/association/about-us",
+ description: "Learn more about our mission and community.",
+ },
+ {
+ title: "Activate a Membership",
+ href: "/association/join",
+ description: "Support our mission by becoming a Schroedinger member.",
+ },
+ {
+ title: "Statute",
+ href: "/page/statute",
+ description: "",
+ },
+ {
+ title: "Administrative Data",
+ href: "/page/administrative-data",
+ description: "",
+ },
+ {
+ title: "Press Kit",
+ href: "/association/press-kit",
+ description: "",
+ },
+ {
+ title: "Blog",
+ href: "/blog",
+ description: "",
+ },
+]
diff --git a/src/components/organisms/header/header.tsx b/src/components/organisms/header/header.tsx
new file mode 100644
index 00000000..55e20f86
--- /dev/null
+++ b/src/components/organisms/header/header.tsx
@@ -0,0 +1,244 @@
+"use client"
+
+import { useState, useEffect } from "react"
+import { Menu } from "lucide-react"
+import Link from "next/link"
+import { cn } from "@/lib/utils"
+import {
+ NavigationMenu,
+ NavigationMenuContent,
+ NavigationMenuItem,
+ NavigationMenuLink,
+ NavigationMenuList,
+ NavigationMenuTrigger,
+ navigationMenuTriggerStyle,
+} from "@/components/ui/navigation-menu"
+import { Image } from "../../atoms/media/Image"
+import { Button } from "../../molecules/button"
+import { partecipateMenuData, contributeMenuData, associationMenuData } from "./data"
+import { HighlightSubMenu, ListItem } from "./highlight-submenu"
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, SheetClose } from "@/components/ui/sheet"
+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"
+
+// Image
+import logo from "@/images/logo.png"
+
+export function Header() {
+ const [isScrolled, setIsScrolled] = useState(false)
+
+ useEffect(() => {
+ const handleScroll = () => {
+ const scrollPosition = window.scrollY
+ setIsScrolled(scrollPosition > 0)
+ }
+
+ // Check initial scroll position
+ handleScroll()
+
+ window.addEventListener("scroll", handleScroll)
+ return () => window.removeEventListener("scroll", handleScroll)
+ }, [])
+
+ return (
+
+ )
+}
diff --git a/src/components/organisms/header/highlight-submenu.tsx b/src/components/organisms/header/highlight-submenu.tsx
new file mode 100644
index 00000000..62112cc1
--- /dev/null
+++ b/src/components/organisms/header/highlight-submenu.tsx
@@ -0,0 +1,73 @@
+import { NavigationMenuLink } from "@/components/molecules/navigation-menu"
+import { forwardRef } from "react"
+import { cn } from "@/lib/utils"
+
+/**
+ * HighlightItem
+ */
+interface HighlightItem {
+ title: string
+ href: string
+ description: string
+ icon?: React.ReactNode
+}
+
+interface HighlightSubMenuProps {
+ data: HighlightItem[]
+}
+
+export function HighlightSubMenu({ data }: HighlightSubMenuProps) {
+ const [featured, ...items] = data
+
+ return (
+
+ )
+}
+
+/**
+ * ListItem
+ */
+export const ListItem = forwardRef, React.ComponentPropsWithoutRef<"a">>(
+ ({ className, title, children, ...props }, ref) => {
+ return (
+
+
+
+ {title}
+ {children && (
+ {children}
+ )}
+
+
+
+ )
+ },
+)
+ListItem.displayName = "ListItem"
diff --git a/src/components/organisms/image-card.tsx b/src/components/organisms/image-card.tsx
new file mode 100644
index 00000000..876d6e08
--- /dev/null
+++ b/src/components/organisms/image-card.tsx
@@ -0,0 +1,36 @@
+import Image from "next/image"
+import { Heading } from "../atoms/typography/Heading"
+
+interface ImageCardProps {
+ image: string
+ title: string
+ content?: React.ReactNode
+}
+
+export default function ImageCard({ image, title, content }: ImageCardProps) {
+ return (
+
+ {/* Background Image */}
+
+
+
+
+ {/* Content Card */}
+
+
+
+ {title}
+
+ {content}
+
+
+
+ )
+}
diff --git a/src/components/organisms/image-content.tsx b/src/components/organisms/image-content.tsx
new file mode 100644
index 00000000..a3150bc1
--- /dev/null
+++ b/src/components/organisms/image-content.tsx
@@ -0,0 +1,50 @@
+import Image, { type StaticImageData } from "next/image"
+import { cn } from "@/lib/utils"
+import { Heading } from "../atoms/typography/Heading"
+import { Typography } from "../atoms/typography/Typography"
+
+interface ImageContentProps {
+ title: string
+ content: string | React.ReactNode
+ imageSrc: string | StaticImageData
+ imageAlt: string
+ imagePosition?: "left" | "right"
+ className?: string
+}
+
+export function ImageContent({
+ title,
+ content,
+ imageSrc,
+ imageAlt,
+ imagePosition = "left",
+ className,
+}: ImageContentProps) {
+ return (
+ *:first-child]:order-last" : "",
+ "[&>*:nth-child(2)]:order-last lg:[&>*:nth-child(2)]:order-none",
+ className,
+ )}
+ >
+
+
+
+
+
+ {title}
+
+ {typeof content === "string" ? {content} : content}
+
+
+ )
+}
diff --git a/src/components/organisms/image-hero.tsx b/src/components/organisms/image-hero.tsx
new file mode 100644
index 00000000..4cd1d518
--- /dev/null
+++ b/src/components/organisms/image-hero.tsx
@@ -0,0 +1,57 @@
+import { Image } from "@/components/atoms/media/Image"
+import { Heading } from "../atoms/typography/Heading"
+import { Typography } from "../atoms/typography/Typography"
+import { type StaticImageData } from "next/image"
+import { cn } from "@/lib/utils"
+
+interface ImageHeroProps {
+ title: React.ReactNode
+ subtitle?: React.ReactNode
+ imageSrc: string | StaticImageData
+ imageAlt: string
+ backgroundColor?: string
+ className?: string
+}
+
+export function ImageHero({
+ title,
+ subtitle,
+ imageSrc,
+ imageAlt,
+ backgroundColor = "#C81824",
+ className,
+}: ImageHeroProps) {
+ return (
+
+
+
+
+
+
+ {title}
+
+ {subtitle && (
+
+ {subtitle}
+
+ )}
+
+
+
+ )
+}
diff --git a/src/components/organisms/image-label.tsx b/src/components/organisms/image-label.tsx
new file mode 100644
index 00000000..a640a90b
--- /dev/null
+++ b/src/components/organisms/image-label.tsx
@@ -0,0 +1,30 @@
+"use client"
+
+import Image from "next/image"
+import { cn } from "@/lib/utils"
+import { Typography } from "@/components/atoms/typography/Typography"
+
+interface ImageLabelProps {
+ src: string
+ label: string
+ className?: string
+ labelClassName?: string
+}
+
+export function ImageLabel({ src, label, className, labelClassName }: ImageLabelProps) {
+ return (
+
+ )
+}
diff --git a/src/components/organisms/job-posts.tsx b/src/components/organisms/job-posts.tsx
new file mode 100644
index 00000000..d7930c1b
--- /dev/null
+++ b/src/components/organisms/job-posts.tsx
@@ -0,0 +1,102 @@
+import { Typography } from "@/components/atoms/typography/Typography"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { PortableText } from "@portabletext/react"
+import { Clock4 } from "lucide-react"
+import { sanityClient } from "@/sanity/lib/client"
+import { Badge } from "../ui/badge"
+import { Button } from "../ui/button"
+
+type EffortLevel = "low" | "moderate" | "elevate"
+
+interface JobPost {
+ _id: string
+ title: string
+ description: any[]
+ location: string
+ effort: EffortLevel
+ publishedAt: string
+}
+
+async function getJobPosts() {
+ const query = `*[_type == "jobPost" && isActive == true && publishedAt < now()] | order(publishedAt desc) {
+ _id,
+ title,
+ description,
+ location,
+ effort,
+ publishedAt
+ }`
+
+ return sanityClient.fetch(query)
+}
+
+const effortColorMap: Record = {
+ low: "green",
+ moderate: "yellow",
+ elevate: "red",
+} as const
+
+const effortLabelMap: Record = {
+ low: "Low effort (<4 hours/month)",
+ moderate: "Moderate effort (4-8 hours/month)",
+ elevate: "High effort (>8 hours/month)",
+} as const
+
+export async function JobPosts() {
+ const jobs = await getJobPosts()
+
+ if (!jobs.length) {
+ return null
+ }
+
+ return (
+
+
+ Skilled Opportunities
+
+
+ If you're a professional looking to contribute we have a series of specialized roles that may be
+ of interest.
+
+
+ {jobs.map((job) => (
+
+ {/* Jobs Metadata - Responsive Layout */}
+
+
+ {job.title}
+
+
+ {/* Middle section with badges */}
+
+ {job.location}
+
+
+ {effortLabelMap[job.effort]}
+
+
+
+ {/* Apply button */}
+
+
+
+ {/* Jobs Content */}
+
+
+
+
+ ))}
+
+
+ )
+}
diff --git a/src/components/organisms/logo-gallery.tsx b/src/components/organisms/logo-gallery.tsx
new file mode 100644
index 00000000..a887d697
--- /dev/null
+++ b/src/components/organisms/logo-gallery.tsx
@@ -0,0 +1,71 @@
+"use client"
+
+import { Image } from "@/components/atoms/media/Image"
+import { Heading } from "@/components/atoms/typography/Heading"
+import { cn } from "@/lib/utils"
+
+interface Logo {
+ src: string
+ alt: string
+ width?: number
+ height?: number
+}
+
+interface LogoGalleryProps {
+ logos: Logo[]
+ blackAndWhite?: boolean
+ title?: string
+ className?: string
+ maxCols?: 2 | 3 | 4 | 5 | 6
+ imageOpacity?: 25 | 50 | 75 | 100
+}
+
+export function LogoGallery({
+ logos = [],
+ blackAndWhite = false,
+ title = "",
+ className = "",
+ maxCols = 4,
+ imageOpacity = 100,
+}: LogoGalleryProps) {
+ const getOpacityClass = (opacity: 25 | 50 | 75 | 100) => {
+ const opacityMap = {
+ 25: "opacity-25",
+ 50: "opacity-50",
+ 75: "opacity-75",
+ 100: "opacity-100",
+ } as const
+
+ return opacityMap[opacity]
+ }
+
+ return (
+
+
+ {title &&
{title} }
+
+ {logos.map((logo, index) => (
+
+
+
+ ))}
+
+
+
+ )
+}
diff --git a/src/components/organisms/review-card.tsx b/src/components/organisms/review-card.tsx
new file mode 100644
index 00000000..52f47968
--- /dev/null
+++ b/src/components/organisms/review-card.tsx
@@ -0,0 +1,48 @@
+import { Star } from "lucide-react"
+import { Avatar, AvatarFallback } from "@/components/ui/avatar"
+import { Card, CardContent, CardHeader } from "@/components/ui/card"
+import { Typography } from "../atoms/typography/Typography"
+
+interface ReviewCardProps {
+ name: string
+ rating: number
+ description: string
+}
+
+export default function ReviewCard(
+ { name, rating, description }: ReviewCardProps = {
+ name: "",
+ rating: 5,
+ description: "",
+ },
+) {
+ const initials = name
+ .split(" ")
+ .map((n) => n[0])
+ .join("")
+ .toUpperCase()
+
+ return (
+
+
+
+ {initials}
+
+
+
{name}
+
+ {[...Array(5)].map((_, i) => (
+
+ ))}
+
+
+
+
+ {description}
+
+
+ )
+}
diff --git a/src/components/organisms/stat-block.tsx b/src/components/organisms/stat-block.tsx
new file mode 100644
index 00000000..93ae465e
--- /dev/null
+++ b/src/components/organisms/stat-block.tsx
@@ -0,0 +1,35 @@
+import { Heading } from "@/components/atoms/typography/Heading"
+import { Paragraph } from "@/components/atoms/typography/Paragraph"
+import { cn } from "@/lib/utils"
+
+interface StatBlocksProps {
+ blocks: {
+ number: string | React.ReactNode
+ title: string
+ description: string
+ }[]
+ className?: string
+ centered?: boolean
+}
+
+export function StatBlocks({ blocks, className, centered = true }: StatBlocksProps) {
+ return (
+
+
+ {blocks.map((block, index) => (
+
+
{block.number}
+
{block.title}
+
{block.description}
+
+ ))}
+
+
+ )
+}
diff --git a/src/components/organisms/team-card.tsx b/src/components/organisms/team-card.tsx
new file mode 100644
index 00000000..89ada662
--- /dev/null
+++ b/src/components/organisms/team-card.tsx
@@ -0,0 +1,61 @@
+import { Card, CardContent, CardHeader } from "../ui/card"
+import { Image } from "../atoms/media/Image"
+import { Typography } from "../atoms/typography/Typography"
+import { type TeamMember } from "@/sanity/sanity.types"
+import { urlFor } from "@/sanity/lib/image"
+
+interface TeamCardProps {
+ name: string
+ surname: string
+ role: string
+ image: {
+ src: string
+ alt?: string
+ backgroundColor?: string
+ }
+}
+
+export function TeamCard({ name, surname, role, image }: TeamCardProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ {`${name} ${surname}`}
+
+ {role}
+
+
+
+ )
+}
+
+export function TeamMemberCard({ member }: { member: TeamMember }) {
+ if (!member.image?.asset || !member.name || !member.surname || !member.role) {
+ return null
+ }
+
+ return (
+
+ )
+}
diff --git a/src/components/organisms/tracking-cat.tsx b/src/components/organisms/tracking-cat.tsx
new file mode 100644
index 00000000..ace53dbc
--- /dev/null
+++ b/src/components/organisms/tracking-cat.tsx
@@ -0,0 +1,198 @@
+"use client"
+
+import Image, { type StaticImageData } from "next/image"
+import { useRef, useState, useEffect, useCallback } from "react"
+
+import layer0 from "@/images/tracking-cat/0-drop-shadow.svg"
+import layer1 from "@/images/tracking-cat/1-background.svg"
+import layer2 from "@/images/tracking-cat/2-shadows.svg"
+import layer3 from "@/images/tracking-cat/3-highlights.svg"
+import layer4_left from "@/images/tracking-cat/4-left-eye.svg"
+import layer4_right from "@/images/tracking-cat/4-right-eye.svg"
+
+/**
+ * Tracking cat displays a cat svg in 3 layers and animate the layers parallax style to track the mouse position in page
+ */
+export function TrackingCat() {
+ const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 })
+ const [isWinking, setIsWinking] = useState(false)
+ const [isMoving, setIsMoving] = useState(false)
+ const containerRef = useRef(null)
+ const lastUpdateRef = useRef(Date.now())
+ const timeoutRef = useRef()
+ const movingTimeoutRef = useRef()
+
+ // Clear any existing timeouts
+ function clearTimeouts() {
+ if (timeoutRef.current) {
+ clearTimeout(timeoutRef.current)
+ }
+ if (movingTimeoutRef.current) {
+ clearTimeout(movingTimeoutRef.current)
+ }
+ }
+
+ const updateMousePosition = useCallback((event: MouseEvent) => {
+ const now = Date.now()
+ const timeSinceLastUpdate = now - lastUpdateRef.current
+
+ clearTimeouts()
+
+ const updateInterval = 1500
+
+ // Set moving state
+ setIsMoving(true)
+
+ // If enough time has passed, update immediately
+ if (timeSinceLastUpdate >= updateInterval) {
+ setMousePosition({ x: event.clientX, y: event.clientY })
+ lastUpdateRef.current = now
+
+ // Reset moving state after animation completes
+ movingTimeoutRef.current = setTimeout(() => {
+ setIsMoving(false)
+ }, 210) // Slightly longer than the transition duration
+ } else {
+ // Otherwise, schedule an update
+ timeoutRef.current = setTimeout(() => {
+ setMousePosition({ x: event.clientX, y: event.clientY })
+ lastUpdateRef.current = Date.now()
+
+ // Reset moving state after animation completes
+ movingTimeoutRef.current = setTimeout(() => {
+ setIsMoving(false)
+ }, 210)
+ }, updateInterval - timeSinceLastUpdate)
+ }
+ }, [])
+
+ useEffect(() => {
+ window.addEventListener("mousemove", updateMousePosition)
+ return () => {
+ window.removeEventListener("mousemove", updateMousePosition)
+ clearTimeouts()
+ }
+ }, [updateMousePosition])
+
+ // Calculate position based on mouse position relative to a container
+ const calculatePosition = (mousePos: { x: number; y: number }, container: HTMLElement, maxMove = 30) => {
+ const rect = container.getBoundingClientRect()
+ const centerX = rect.left + rect.width / 2
+ const centerY = rect.top + rect.height / 2
+
+ const deltaX = mousePos.x - centerX
+ const deltaY = mousePos.y - centerY
+
+ const distance = Math.min(Math.sqrt(deltaX ** 2 + deltaY ** 2), maxMove)
+ const angle = Math.atan2(deltaY, deltaX)
+
+ return {
+ x: Math.cos(angle) * distance,
+ y: Math.sin(angle) * distance,
+ }
+ }
+
+ const calculateLayerPosition = (maxMove: number) => {
+ if (!containerRef.current) return { x: 0, y: 0 }
+ const basePosition = calculatePosition(mousePosition, containerRef.current, maxMove)
+ return {
+ x: basePosition.x,
+ y: basePosition.y,
+ }
+ }
+
+ const shadowPosition = calculateLayerPosition(15)
+ const highlightsPosition = calculateLayerPosition(25)
+ const eyePosition = calculateLayerPosition(35)
+
+ // Add winking effect
+ useEffect(() => {
+ const winkInterval = setInterval(
+ () => {
+ // Only wink if eyes are not moving
+ if (!isMoving) {
+ setIsWinking(true)
+ setTimeout(() => setIsWinking(false), 100)
+ }
+ },
+ Math.floor(Math.random() * (12000 - 7000) + 7000),
+ )
+
+ return () => clearInterval(winkInterval)
+ }, [isMoving])
+
+ // Clean up all timeouts
+ useEffect(() => {
+ return () => {
+ clearTimeouts()
+ }
+ }, [])
+
+ return (
+
+ {/* Drop shadow */}
+
+ {/* Background */}
+
+ {/* Shadows */}
+
+ {/* Highlights */}
+
+ {/* Left Eye */}
+
+ {/* Right Eye */}
+
+
+ )
+}
diff --git a/src/components/review-card.tsx b/src/components/review-card.tsx
new file mode 100644
index 00000000..fd6e34b5
--- /dev/null
+++ b/src/components/review-card.tsx
@@ -0,0 +1,53 @@
+"use client"
+
+import { Star } from "lucide-react"
+import { Avatar, AvatarFallback } from "@/components/ui/avatar"
+import { Card, CardContent, CardHeader } from "@/components/ui/card"
+
+interface ReviewCardProps {
+ name: string
+ rating: number
+ date: string
+ description: string
+}
+
+export function ReviewCard(
+ { name, rating, date, description }: ReviewCardProps = {
+ name: "John Doe",
+ rating: 4,
+ date: "2023-11-15",
+ description:
+ "This product exceeded my expectations. The quality is outstanding, and it arrived earlier than expected. I highly recommend it to anyone looking for a reliable and efficient solution.",
+ },
+) {
+ const initials = name
+ .split(" ")
+ .map((n) => n[0])
+ .join("")
+ .toUpperCase()
+
+ return (
+
+
+
+ {initials}
+
+
+
{name}
+
+ {[...Array(5)].map((_, i) => (
+
+ ))}
+
+
+ {date}
+
+
+ {description}
+
+
+ )
+}
diff --git a/src/components/separator/DoubleLine.vue b/src/components/separator/DoubleLine.vue
deleted file mode 100755
index 30856979..00000000
--- a/src/components/separator/DoubleLine.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/separator/SingleLine.vue b/src/components/separator/SingleLine.vue
deleted file mode 100755
index a1a0a173..00000000
--- a/src/components/separator/SingleLine.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/components/separator/TripleLine.vue b/src/components/separator/TripleLine.vue
deleted file mode 100755
index d7f55733..00000000
--- a/src/components/separator/TripleLine.vue
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx
new file mode 100644
index 00000000..740189c5
--- /dev/null
+++ b/src/components/ui/accordion.tsx
@@ -0,0 +1,54 @@
+"use client"
+
+import * as React from "react"
+import * as AccordionPrimitive from "@radix-ui/react-accordion"
+import { ChevronDown } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const Accordion = AccordionPrimitive.Root
+
+const AccordionItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+AccordionItem.displayName = "AccordionItem"
+
+const AccordionTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ svg]:rotate-180",
+ className,
+ )}
+ {...props}
+ >
+ {children}
+
+
+
+))
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName
+
+const AccordionContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+))
+
+AccordionContent.displayName = AccordionPrimitive.Content.displayName
+
+export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx
new file mode 100644
index 00000000..9946eec7
--- /dev/null
+++ b/src/components/ui/avatar.tsx
@@ -0,0 +1,40 @@
+"use client"
+
+import * as React from "react"
+import * as AvatarPrimitive from "@radix-ui/react-avatar"
+
+import { cn } from "@/lib/utils"
+
+const Avatar = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+Avatar.displayName = AvatarPrimitive.Root.displayName
+
+const AvatarImage = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+AvatarImage.displayName = AvatarPrimitive.Image.displayName
+
+const AvatarFallback = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName
+
+export { Avatar, AvatarImage, AvatarFallback }
diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx
new file mode 100644
index 00000000..bde04087
--- /dev/null
+++ b/src/components/ui/badge.tsx
@@ -0,0 +1,33 @@
+import * as React from "react"
+import { cva, type VariantProps } from "class-variance-authority"
+import { cn } from "@/lib/utils"
+
+const badgeVariants = cva(
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
+ {
+ variants: {
+ variant: {
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
+ outline: "text-foreground",
+ green: "border-transparent bg-green-100 text-green-800 hover:bg-green-100/80",
+ yellow: "border-transparent bg-yellow-100 text-yellow-800 hover:bg-yellow-100/80",
+ red: "border-transparent bg-red-100 text-red-800 hover:bg-red-100/80",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ },
+)
+
+export interface BadgeProps
+ extends React.HTMLAttributes,
+ VariantProps {}
+
+function Badge({ className, variant, ...props }: BadgeProps) {
+ return
+}
+
+export { Badge, badgeVariants }
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
new file mode 100644
index 00000000..a48111f5
--- /dev/null
+++ b/src/components/ui/button.tsx
@@ -0,0 +1,47 @@
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
+ {
+ variants: {
+ variant: {
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-10 px-4 py-2",
+ sm: "h-9 rounded-md px-3",
+ lg: "h-11 rounded-md px-8",
+ icon: "h-10 w-10",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ },
+)
+
+export interface ButtonProps
+ extends React.ButtonHTMLAttributes,
+ VariantProps {
+ asChild?: boolean
+}
+
+const Button = React.forwardRef(
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
+ const Comp = asChild ? Slot : "button"
+ return
+ },
+)
+Button.displayName = "Button"
+
+export { Button, buttonVariants }
diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx
new file mode 100644
index 00000000..79e25562
--- /dev/null
+++ b/src/components/ui/card.tsx
@@ -0,0 +1,53 @@
+import * as React from "react"
+
+import { cn } from "@/lib/utils"
+
+const Card = React.forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+)
+Card.displayName = "Card"
+
+const CardHeader = React.forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+)
+CardHeader.displayName = "CardHeader"
+
+const CardTitle = React.forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+)
+CardTitle.displayName = "CardTitle"
+
+const CardDescription = React.forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+)
+CardDescription.displayName = "CardDescription"
+
+const CardContent = React.forwardRef>(
+ ({ className, ...props }, ref) =>
,
+)
+CardContent.displayName = "CardContent"
+
+const CardFooter = React.forwardRef>(
+ ({ className, ...props }, ref) => (
+
+ ),
+)
+CardFooter.displayName = "CardFooter"
+
+export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx
new file mode 100644
index 00000000..5c40f159
--- /dev/null
+++ b/src/components/ui/checkbox.tsx
@@ -0,0 +1,28 @@
+"use client"
+
+import * as React from "react"
+import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
+import { Check } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const Checkbox = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+
+
+))
+Checkbox.displayName = CheckboxPrimitive.Root.displayName
+
+export { Checkbox }
diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx
new file mode 100644
index 00000000..1d03fc72
--- /dev/null
+++ b/src/components/ui/dialog.tsx
@@ -0,0 +1,104 @@
+"use client"
+
+import * as React from "react"
+import * as DialogPrimitive from "@radix-ui/react-dialog"
+import { X } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const Dialog = DialogPrimitive.Root
+
+const DialogTrigger = DialogPrimitive.Trigger
+
+const DialogPortal = DialogPrimitive.Portal
+
+const DialogClose = DialogPrimitive.Close
+
+const DialogOverlay = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DialogOverlay.displayName = DialogPrimitive.Overlay.displayName
+
+const DialogContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+
+ {children}
+
+
+ Close
+
+
+
+))
+DialogContent.displayName = DialogPrimitive.Content.displayName
+
+const DialogHeader = ({ className, ...props }: React.HTMLAttributes) => (
+
+)
+DialogHeader.displayName = "DialogHeader"
+
+const DialogFooter = ({ className, ...props }: React.HTMLAttributes) => (
+
+)
+DialogFooter.displayName = "DialogFooter"
+
+const DialogTitle = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DialogTitle.displayName = DialogPrimitive.Title.displayName
+
+const DialogDescription = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+DialogDescription.displayName = DialogPrimitive.Description.displayName
+
+export {
+ Dialog,
+ DialogPortal,
+ DialogOverlay,
+ DialogClose,
+ DialogTrigger,
+ DialogContent,
+ DialogHeader,
+ DialogFooter,
+ DialogTitle,
+ DialogDescription,
+}
diff --git a/src/components/ui/form.tsx b/src/components/ui/form.tsx
new file mode 100644
index 00000000..1218b5ef
--- /dev/null
+++ b/src/components/ui/form.tsx
@@ -0,0 +1,153 @@
+"use client"
+
+import * as React from "react"
+import type * as LabelPrimitive from "@radix-ui/react-label"
+import { Slot } from "@radix-ui/react-slot"
+import {
+ Controller,
+ type ControllerProps,
+ type FieldPath,
+ type FieldValues,
+ FormProvider,
+ useFormContext,
+} from "react-hook-form"
+
+import { cn } from "@/lib/utils"
+import { Label } from "@/components/ui/label"
+
+const Form = FormProvider
+
+type FormFieldContextValue<
+ TFieldValues extends FieldValues = FieldValues,
+ TName extends FieldPath = FieldPath,
+> = {
+ name: TName
+}
+
+const FormFieldContext = React.createContext({} as FormFieldContextValue)
+
+const FormField = <
+ TFieldValues extends FieldValues = FieldValues,
+ TName extends FieldPath = FieldPath,
+>({
+ ...props
+}: ControllerProps) => {
+ return (
+
+
+
+ )
+}
+
+const useFormField = () => {
+ const fieldContext = React.useContext(FormFieldContext)
+ const itemContext = React.useContext(FormItemContext)
+ const { getFieldState, formState } = useFormContext()
+
+ const fieldState = getFieldState(fieldContext.name, formState)
+
+ if (!fieldContext) {
+ throw new Error("useFormField should be used within ")
+ }
+
+ const { id } = itemContext
+
+ return {
+ id,
+ name: fieldContext.name,
+ formItemId: `${id}-form-item`,
+ formDescriptionId: `${id}-form-item-description`,
+ formMessageId: `${id}-form-item-message`,
+ ...fieldState,
+ }
+}
+
+type FormItemContextValue = {
+ id: string
+}
+
+const FormItemContext = React.createContext({} as FormItemContextValue)
+
+const FormItem = React.forwardRef>(
+ ({ className, ...props }, ref) => {
+ const id = React.useId()
+
+ return (
+
+
+
+ )
+ },
+)
+FormItem.displayName = "FormItem"
+
+const FormLabel = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => {
+ const { error, formItemId } = useFormField()
+
+ return (
+
+ )
+})
+FormLabel.displayName = "FormLabel"
+
+const FormControl = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ ...props }, ref) => {
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
+
+ return (
+
+ )
+})
+FormControl.displayName = "FormControl"
+
+const FormDescription = React.forwardRef>(
+ ({ className, ...props }, ref) => {
+ const { formDescriptionId } = useFormField()
+
+ return (
+
+ )
+ },
+)
+FormDescription.displayName = "FormDescription"
+
+const FormMessage = React.forwardRef>(
+ ({ className, children, ...props }, ref) => {
+ const { error, formMessageId } = useFormField()
+ const body = error ? String(error?.message) : children
+
+ if (!body) {
+ return null
+ }
+
+ return (
+
+ {body}
+
+ )
+ },
+)
+FormMessage.displayName = "FormMessage"
+
+export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField }
diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx
new file mode 100644
index 00000000..74c9f0fb
--- /dev/null
+++ b/src/components/ui/input.tsx
@@ -0,0 +1,22 @@
+import * as React from "react"
+
+import { cn } from "@/lib/utils"
+
+const Input = React.forwardRef>(
+ ({ className, type, ...props }, ref) => {
+ return (
+
+ )
+ },
+)
+Input.displayName = "Input"
+
+export { Input }
diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx
new file mode 100644
index 00000000..82de9363
--- /dev/null
+++ b/src/components/ui/label.tsx
@@ -0,0 +1,21 @@
+"use client"
+
+import * as React from "react"
+import * as LabelPrimitive from "@radix-ui/react-label"
+import { cva, type VariantProps } from "class-variance-authority"
+
+import { cn } from "@/lib/utils"
+
+const labelVariants = cva(
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
+)
+
+const Label = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & VariantProps
+>(({ className, ...props }, ref) => (
+
+))
+Label.displayName = LabelPrimitive.Root.displayName
+
+export { Label }
diff --git a/src/components/ui/navigation-menu.tsx b/src/components/ui/navigation-menu.tsx
new file mode 100644
index 00000000..41cfe4e7
--- /dev/null
+++ b/src/components/ui/navigation-menu.tsx
@@ -0,0 +1,120 @@
+import * as React from "react"
+import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
+import { cva } from "class-variance-authority"
+import { ChevronDown } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const NavigationMenu = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+
+))
+NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
+
+const NavigationMenuList = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
+
+const NavigationMenuItem = NavigationMenuPrimitive.Item
+
+const navigationMenuTriggerStyle = cva(
+ "group inline-flex h-10 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,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}{" "}
+
+
+))
+NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
+
+const NavigationMenuContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
+
+const NavigationMenuLink = NavigationMenuPrimitive.Link
+
+const NavigationMenuViewport = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+))
+NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName
+
+const NavigationMenuIndicator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+))
+NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName
+
+export {
+ navigationMenuTriggerStyle,
+ NavigationMenu,
+ NavigationMenuList,
+ NavigationMenuItem,
+ NavigationMenuContent,
+ NavigationMenuTrigger,
+ NavigationMenuLink,
+ NavigationMenuIndicator,
+ NavigationMenuViewport,
+}
diff --git a/src/components/ui/sheet.tsx b/src/components/ui/sheet.tsx
new file mode 100644
index 00000000..bf4ca7c0
--- /dev/null
+++ b/src/components/ui/sheet.tsx
@@ -0,0 +1,106 @@
+"use client"
+
+import * as React from "react"
+import * as SheetPrimitive from "@radix-ui/react-dialog"
+import { cva, type VariantProps } from "class-variance-authority"
+import { X } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+const Sheet = SheetPrimitive.Root
+
+const SheetTrigger = SheetPrimitive.Trigger
+
+const SheetClose = SheetPrimitive.Close
+
+const SheetPortal = SheetPrimitive.Portal
+
+const SheetOverlay = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+SheetOverlay.displayName = SheetPrimitive.Overlay.displayName
+
+const sheetVariants = cva("fixed z-50 gap-4 bg-background p-6 shadow-lg", {
+ variants: {
+ side: {
+ top: "inset-x-0 top-0",
+ bottom: "inset-x-0 bottom-0",
+ left: "inset-y-0 left-0",
+ right: "inset-y-0 right-0",
+ },
+ },
+ defaultVariants: { side: "right" },
+})
+
+interface SheetContentProps
+ extends React.ComponentPropsWithoutRef,
+ VariantProps {}
+
+const SheetContent = React.forwardRef, SheetContentProps>(
+ ({ side = "right", className, children, ...props }, ref) => (
+
+
+
+ {children}
+
+
+ Close
+
+
+
+ ),
+)
+SheetContent.displayName = SheetPrimitive.Content.displayName
+
+const SheetHeader = ({ className, ...props }: React.HTMLAttributes) => (
+
+)
+SheetHeader.displayName = "SheetHeader"
+
+const SheetFooter = ({ className, ...props }: React.HTMLAttributes) => (
+
+)
+SheetFooter.displayName = "SheetFooter"
+
+const SheetTitle = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+SheetTitle.displayName = SheetPrimitive.Title.displayName
+
+const SheetDescription = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+))
+SheetDescription.displayName = SheetPrimitive.Description.displayName
+
+export {
+ Sheet,
+ SheetPortal,
+ SheetOverlay,
+ SheetTrigger,
+ SheetClose,
+ SheetContent,
+ SheetHeader,
+ SheetFooter,
+ SheetTitle,
+ SheetDescription,
+}
diff --git a/src/emails/membership-signup.tsx b/src/emails/membership-signup.tsx
new file mode 100644
index 00000000..eeedd316
--- /dev/null
+++ b/src/emails/membership-signup.tsx
@@ -0,0 +1,139 @@
+import {
+ Body,
+ Column,
+ Container,
+ Head,
+ Heading,
+ Html,
+ Img,
+ Link,
+ Preview,
+ Row,
+ Section,
+ Text,
+ Tailwind,
+} from "@react-email/components"
+import * as React from "react"
+
+interface MembershipSignupEmailProps {
+ steps?: {
+ id: number
+ Description: React.ReactNode
+ }[]
+ firstName: string
+}
+
+const baseUrl = process.env.VERCEL_URL ? `https://${process.env.VERCEL_URL}` : ""
+const steps = [
+ {
+ id: 2,
+ Description: (
+
+ ✅ Approval Process : Your membership request is now being reviewed by the association members.
+ Approval is usually swift, but we’ll keep you updated every step of the way.
+
+ ),
+ },
+ {
+ id: 3,
+ Description: (
+
+ 🎟️ Membership Number : Once approved, your membership number will be sent to you within the next
+ few weeks.
+
+ ),
+ },
+]
+
+export function MembershipSignupEmail({ firstName }: MembershipSignupEmailProps) {
+ return (
+
+
+
+ {firstName ? `${firstName}, Welcome to Schrödinger Hat` : "Welcome to Schrödinger Hat"}
+
+
+
+
+
+ Welcome {firstName}! ,
+
+
+
+ Thank you for joining Schrödinger Hat! We’re thrilled to have you take this step and become
+ part of our growing community.
+
+
+ Here’s what’s happening next:
+
+
+ {steps?.map(({ Description }) => Description)}
+
+
+
+ We appreciate your patience during this process and can’t wait to officially welcome you
+ into the Schrödinger Hat APS family!
+
+ In the Meantime
+
+ Feel free to explore our{" "}
+ events and activities or
+ visit our store to get inspired by
+ what’s in store (pun intended) for our members.
+
+
+
+ If you have any questions or need assistance, don’t hesitate to reach out to us at{" "}
+ hello@schroedinger-hat.org.
+
+ Thank you once again for your trust and enthusiasm. Exciting times are ahead!
+
+
+ Warm regards,
+ Schrödinger Hat
+
+
+
+
+
+
+
+
+ Schrödinger Hat APS
+
+ Via Pino Arpioni 1, Pelago (FI), 50060
+
+
+
+
+
+ )
+}
diff --git a/src/emails/static/logo.png b/src/emails/static/logo.png
new file mode 100644
index 00000000..bdc100f7
Binary files /dev/null and b/src/emails/static/logo.png differ
diff --git a/src/env.d.ts b/src/env.d.ts
deleted file mode 100644
index e97f35dd..00000000
--- a/src/env.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-///
-
-interface ImportMeta {
- readonly env: ImportMetaEnv
-}
diff --git a/src/env.js b/src/env.js
new file mode 100644
index 00000000..608863bf
--- /dev/null
+++ b/src/env.js
@@ -0,0 +1,66 @@
+import { createEnv } from "@t3-oss/env-nextjs"
+import { z } from "zod"
+
+/** @param {string | undefined} value */
+const isRequiredInProduction = (value) => {
+ // Required in production, optional in development/test
+ if (process.env.NODE_ENV === "production") {
+ return value !== undefined && value.length > 0
+ }
+ return true
+}
+
+export const env = createEnv({
+ /**
+ * Server-side environment variables schema
+ */
+ server: {
+ NODE_ENV: z.enum(["development", "test", "production"]),
+ STRIPE_SECRET_KEY: z
+ .string()
+ .min(1)
+ .optional()
+ .refine(isRequiredInProduction, "STRIPE_SECRET_KEY is required in production"),
+ STRIPE_MEMBERSHIP_PRICE_ID: z.string().min(1),
+ VERCEL_URL: z.string().optional(),
+ DATABASE_URL: z.string().url(),
+ CRON_SECRET: z.string().min(1),
+ POSTMARK_API_KEY: z.string().min(1).optional(),
+ },
+
+ /**
+ * Client-side environment variables schema
+ */
+ client: {
+ NEXT_PUBLIC_SANITY_PROJECT_ID: z.string().min(1),
+ NEXT_PUBLIC_SANITY_DATASET: z.string().min(1),
+ NEXT_PUBLIC_GOOGLE_MAPS_API_KEY: z
+ .string()
+ .min(1)
+ .optional()
+ .refine(isRequiredInProduction, "NEXT_PUBLIC_GOOGLE_MAPS_API_KEY is required in production"),
+ NEXT_PUBLIC_GA_ID: z.string().min(1).optional(),
+ NEXT_PUBLIC_DISABLE_ANIMATIONS: z.string().optional(),
+ },
+
+ /**
+ * Manual destructuring of process.env
+ */
+ runtimeEnv: {
+ NODE_ENV: process.env.NODE_ENV,
+ STRIPE_SECRET_KEY: process.env.STRIPE_SECRET_KEY,
+ STRIPE_MEMBERSHIP_PRICE_ID: process.env.STRIPE_MEMBERSHIP_PRICE_ID,
+ NEXT_PUBLIC_SANITY_PROJECT_ID: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
+ NEXT_PUBLIC_SANITY_DATASET: process.env.NEXT_PUBLIC_SANITY_DATASET,
+ NEXT_PUBLIC_GOOGLE_MAPS_API_KEY: process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY,
+ NEXT_PUBLIC_GA_ID: process.env.NEXT_PUBLIC_GA_ID,
+ NEXT_PUBLIC_DISABLE_ANIMATIONS: process.env.NEXT_PUBLIC_DISABLE_ANIMATIONS,
+ VERCEL_URL: process.env.VERCEL_URL,
+ DATABASE_URL: process.env.DATABASE_URL,
+ CRON_SECRET: process.env.CRON_SECRET,
+ POSTMARK_API_KEY: process.env.POSTMARK_API_KEY,
+ },
+
+ skipValidation: !!process.env.SKIP_ENV_VALIDATION,
+ emptyStringAsUndefined: true,
+})
diff --git a/src/functions/useBannerCookie.ts b/src/functions/useBannerCookie.ts
deleted file mode 100644
index c3d17aeb..00000000
--- a/src/functions/useBannerCookie.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { useLocalStorage } from '@vueuse/core'
-import { onMounted } from 'vue'
-
-interface BannerCookie {
- dismissed: boolean
- dismissedOn?: Date
-}
-
-export const useBannerCookie = () => {
- const banner = useLocalStorage('banner', { dismissed: false, dismissedOn: undefined }, { mergeDefaults: true })
-
- const handleDismiss = () => {
- banner.value.dismissed = true
- banner.value.dismissedOn = new Date()
- }
-
- const haveSevenDaysPassed = () => {
- const dismissedOn = new Date(banner.value.dismissedOn as Date)
- const now = new Date()
- const diff = Math.abs(now.getTime() - dismissedOn.getTime())
- const diffDays = Math.ceil(diff / (1000 * 3600 * 24))
- return diffDays >= 7
- }
-
- onMounted(() => {
- if (banner.value.dismissed && haveSevenDaysPassed())
- banner.value.dismissed = false
- })
-
- return {
- banner,
- handleDismiss,
- }
-}
diff --git a/src/functions/useCtaComponent.ts b/src/functions/useCtaComponent.ts
deleted file mode 100644
index e94235c0..00000000
--- a/src/functions/useCtaComponent.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import type { SetupContext } from 'vue'
-import { computed, unref } from 'vue'
-import type { MaybeRef } from '@vueuse/core'
-
-type Component = 'a' | 'button' | 'router-link'
-
-type Attributes = SetupContext['attrs'] & {
- to?: { name: string }
- href?: string
-}
-
-export const useCtaComponent = (attrs: MaybeRef) => {
- const attributes = unref(attrs)
-
- const component = computed((): Component => {
- switch (true) {
- case ('to' in attributes && attributes.to?.name !== undefined):
- return 'router-link'
- case ('href' in attributes && attributes.href !== undefined):
- return 'a'
- default:
- return 'button'
- }
- })
-
- const bindings = computed((): Attributes => ({ ...attributes }))
-
- return {
- bindings,
- component,
- }
-}
diff --git a/src/functions/useGlobalScrollLock.ts b/src/functions/useGlobalScrollLock.ts
deleted file mode 100644
index 9d261ea2..00000000
--- a/src/functions/useGlobalScrollLock.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { useScrollLock } from '@vueuse/core'
-
-const scrollLock = useScrollLock(document.documentElement)
-
-export const useGlobalScrollLock = () => {
- return scrollLock
-}
diff --git a/src/functions/useNewsletter.ts b/src/functions/useNewsletter.ts
deleted file mode 100644
index e50936f9..00000000
--- a/src/functions/useNewsletter.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-const NEWSLETTER_ID = 'e9fb84c2-ebfc-11ed-8424-fbce0ce9d7bc'
-
-export const useNewsletter = () => {
- const createScript = () => {
- const $script = document.createElement('script')
- $script.setAttribute('src', `https://eocampaign1.com/form/${NEWSLETTER_ID}.js`)
- $script.setAttribute('async', '')
- $script.setAttribute('data-form', NEWSLETTER_ID)
- document.head.appendChild($script)
- }
-
- const init = () => {
- if (!document.cookie.includes(NEWSLETTER_ID))
- createScript()
- }
-
- return {
- init,
- }
-}
diff --git a/src/i18n/events/event/osday-21.json b/src/i18n/events/event/osday-21.json
deleted file mode 100644
index d813daa3..00000000
--- a/src/i18n/events/event/osday-21.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "en": {
- "id": "osday2021",
- "category": "event",
- "featured": false,
- "headline": null,
- "ticketsURL": null,
- "title": "Open Source Day 2021",
- "details": [
- {
- "id": "date",
- "value": "2021-09-21"
- },
- {
- "id": "time",
- "value": "9:30 - 21:00"
- },
- {
- "id": "tag",
- "value": "Open Source Software"
- },
- {
- "id": "location",
- "value": "The Student Hotel, Florence"
- }
- ],
- "description": {
- "long": "The event based around OSS",
- "short": "The digital FOSS Explorer event dedicated to open source expands and becomes a physical event!"
- },
- "image": {
- "alt": "Schrödinger Hat Logo",
- "URL": null
- },
- "location": {
- "name": "The Student Hotel",
- "city": "Florence",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2021-09-21",
- "start": "18:00",
- "end": "21:00"
- }
- },
- "it": {
- "id": "osday2021",
- "category": "event",
- "featured": false,
- "headline": null,
- "ticketsURL": null,
- "title": "Open Source Day 2021",
- "details": [
- {
- "id": "date",
- "value": "2021-09-21"
- },
- {
- "id": "time",
- "value": "9:30 - 21:00"
- },
- {
- "id": "tag",
- "value": "Open Source Software"
- },
- {
- "id": "location",
- "value": "The Student Hotel, Florence"
- }
- ],
- "description": {
- "long": "Evento basato su OSS",
- "short": "L'evento digital FOSS Explorer dedicato al software open source si espande e diventa un evento fisico!"
- },
- "image": {
- "alt": "Schrödinger Hat Logo",
- "URL": null
- },
- "location": {
- "name": "The Student Hotel",
- "city": "Firenze",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2021-09-21",
- "start": "9:30",
- "end": "18:00"
- }
- }
-}
diff --git a/src/i18n/events/event/osday-23.json b/src/i18n/events/event/osday-23.json
deleted file mode 100644
index 97a9f077..00000000
--- a/src/i18n/events/event/osday-23.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "en": {
- "id": "osday2023",
- "category": "event",
- "featured": false,
- "headline": null,
- "ticketsURL": null,
- "title": "Open Source Day 2023",
- "details": [
- {
- "id": "date",
- "value": "2023-03-28"
- },
- {
- "id": "time",
- "value": "9:30 - 18:00"
- },
- {
- "id": "tag",
- "value": "Open Source Software"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Florence"
- }
- ],
- "description": {
- "long": "The event based around OSS",
- "short": "In this edition, a full day with open source enthusiasts: maintainers, junior and senior devs, engineering managers, and more."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F424024069%2F565692604981%2F1%2Foriginal.20230113-112848?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=cec6acc06c18975a1cc2b262953ad25c",
- "alt": "Schrödinger Hat Logo"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Florence",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-03-07",
- "start": "9:30",
- "end": "18:00"
- }
- },
- "it": {
- "id": "osday2023",
- "category": "event",
- "featured": false,
- "headline": null,
- "ticketsURL": "#",
- "title": "Open Source Day 2023",
- "details": [
- {
- "id": "date",
- "value": "2023-03-28"
- },
- {
- "id": "time",
- "value": "9:30 - 18:00"
- },
- {
- "id": "tag",
- "value": "Open Source Software"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Florence"
- }
- ],
- "description": {
- "long": "Descrizione lunga",
- "short": "In questa edizione, una giornata completa con appassionati dell'open source: manutentori, sviluppatori junior e senior, responsabili ingegneri e altri ancora."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F424024069%2F565692604981%2F1%2Foriginal.20230113-112848?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=cec6acc06c18975a1cc2b262953ad25c",
- "alt": "Questa immagine è un placeholder"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Firenze",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-03-07",
- "start": "9:30",
- "end": "18:00"
- }
- }
-}
diff --git a/src/i18n/events/event/osday-24.json b/src/i18n/events/event/osday-24.json
deleted file mode 100644
index 8347ad40..00000000
--- a/src/i18n/events/event/osday-24.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "en": {
- "id": "osday2024",
- "category": "event",
- "featured": false,
- "headline": null,
- "ticketsURL": "https://www.eventbrite.it/e/open-source-day-2024-tickets-731947624047?aff=erelpanelorg",
- "title": "Open Source Day 2024",
- "details": [
- {
- "id": "date",
- "value": "2024-03-07 / 2024-03-08"
- },
- {
- "id": "time",
- "value": "9:30 - 21:00"
- },
- {
- "id": "tag",
- "value": "Open Source Software"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Florence"
- }
- ],
- "description": {
- "long": "The event based around OSS",
- "short": "This year, we're going bigger with two full-day conferences, an exciting after-party, and a diverse crowd of open source enthusiasts"
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F622077109%2F245918162914%2F1%2Foriginal.20231017-075128?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=9e57446fdbfc89c2e3e33a36a9cc1955",
- "alt": "Schrödinger Hat"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Florence",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-03-24",
- "start": "9:30",
- "end": "18:00"
- }
- },
- "it": {
- "id": "osday2024",
- "category": "event",
- "featured": true,
- "headline": null,
- "ticketsURL": "https://www.eventbrite.it/e/open-source-day-2024-tickets-731947624047?aff=erelpanelorg",
- "title": "Open Source Day 2024",
- "details": [
- {
- "id": "date",
- "value": "2024-03-07 / 2024-03-08"
- },
- {
- "id": "time",
- "value": "9:30 - 21:00"
- },
- {
- "id": "tag",
- "value": "Open Source Software"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Firenze"
- }
- ],
- "description": {
- "long": "Descrizione lunga",
- "short": "The Open Source Day è alla sua terza edizione a Firenze, Italia!"
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F622077109%2F245918162914%2F1%2Foriginal.20231017-075128?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=9e57446fdbfc89c2e3e33a36a9cc1955",
- "alt": "Schrödinger Hat"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Firenze",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-03-07",
- "start": "9:30",
- "end": "18:00"
- }
- }
-}
diff --git a/src/i18n/events/index.ts b/src/i18n/events/index.ts
deleted file mode 100644
index 1944a0b8..00000000
--- a/src/i18n/events/index.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import OSDay2021 from '@/i18n/events/event/osday-21.json'
-import OSDay2023 from '@/i18n/events/event/osday-23.json'
-import OSDay2024 from '@/i18n/events/event/osday-24.json'
-import OSDay2025 from '@/i18n/events/event/osday-25.json'
-import Florence123 from '@/i18n/events/session/florence1-06-23.json'
-import Florence223 from '@/i18n/events/session/florence2-11-23.json'
-import Verona123 from '@/i18n/events/session/verona1-23.json'
-import Verona223 from '@/i18n/events/session/verona2-23.json'
-import Milan123 from '@/i18n/events/session/milan1-23.json'
-import Milan223 from '@/i18n/events/session/milan2-23.json'
-import Verona323 from '@/i18n/events/session/verona3-23.json'
-import Page from '@/i18n/events/page.json'
-
-interface Detail {
- id: string
- value: string
-}
-
-interface Description {
- short: string
- long: string
-}
-
-interface Location {
- city: string
- name: string
- URL: string
-}
-
-interface Schedule {
- date: string
- start: string
- end: string
-}
-
-interface Image {
- alt: string
- URL: string | null
-}
-
-export interface Event {
- id: string
- category: string
- featured: boolean
- headline: string | null
- ticketsURL: string | null
- title: string
- details: Detail[]
- description: Description
- image: Image
- location: Location
- schedule: Schedule
-}
-
-interface EventJSON {
- en: Event
- it: Event
-}
-
-interface LanguageItem {
- en: T
- it: T
-}
-
-const groupByLanguage = (items: LanguageItem[]) => {
- const group = items.reduce(
- (acc, item) => {
- acc.en.push(item.en)
- acc.it.push(item.it)
- return acc
- },
- { en: [] as T[], it: [] as T[] },
- )
- return group
-}
-
-const eventsJSON: EventJSON[] = [
- OSDay2021,
- OSDay2023,
- OSDay2024,
- OSDay2025,
- Florence123,
- Florence223,
- Verona123,
- Verona223,
- Verona323,
- Milan123,
- Milan223,
-]
-
-export const messages = {
- data: groupByLanguage(eventsJSON),
- copy: Page,
-}
diff --git a/src/i18n/events/page.json b/src/i18n/events/page.json
deleted file mode 100644
index 29f5c262..00000000
--- a/src/i18n/events/page.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "en": {
- "title": "Events",
- "tickets": "Get tickets",
- "form": {
- "items": {
- "location": "Location",
- "categories": "Categories",
- "dates": "Dates",
- "pastEvents": {
- "show": "Show past events",
- "hide": "Hide past events"
- },
- "no-result": {
- "message": "No results found. Would you like to organize an event?",
- "cta": "Organize"
- }
- },
- "months": {
- "1": "January",
- "2": "February",
- "3": "March",
- "4": "April",
- "5": "May",
- "6": "June",
- "7": "July",
- "8": "August",
- "9": "September",
- "10": "October",
- "11": "November",
- "12": "December"
- }
- }
- },
- "it": {
- "title": "Eventi",
- "tickets": "Acquista biglietti",
- "form": {
- "items": {
- "location": "Locazioni",
- "categories": "Categorie",
- "dates": "Date",
- "pastEvents": {
- "show": "Mostra past events",
- "hide": "Nascondi past events"
- },
- "no-result": {
- "message": "Nessun risultato trovato. Vorresti organizzare un evento?",
- "cta": "Organizza"
- }
- },
- "months": {
- "1": "Gennaio",
- "2": "Febbraio",
- "3": "Marzo",
- "4": "Aprile",
- "5": "Maggio",
- "6": "Giugnio",
- "7": "Luglio",
- "8": "Agosto",
- "9": "Settembre",
- "10": "Ottobre",
- "11": "Novembre",
- "12": "Dicembre"
- }
- }
- }
-}
diff --git a/src/i18n/events/session/florence1-06-23.json b/src/i18n/events/session/florence1-06-23.json
deleted file mode 100644
index 26399c0b..00000000
--- a/src/i18n/events/session/florence1-06-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "florence1-06-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Qwik!",
- "details": [
- {
- "id": "date",
- "value": "2023-06-24"
- },
- {
- "id": "time",
- "value": "09:00 - 14:00"
- },
- {
- "id": "speaker",
- "value": "Miško Hevery"
- },
- {
- "id": "tag",
- "value": "Frontend Development"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Florence"
- }
- ],
- "description": {
- "long": "Schrödinger Session",
- "short": "In this edition, we'll feature Miško Hevery, the creator of Angular, KarmaJS co-creator for a session about Qwik."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F507565769%2F565692604981%2F1%2Foriginal.20230504-132216?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=e7d7490b59e1802ad3d53498f66ca59e",
- "alt": "Schrödinger Hat Session presents qwik!"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Florence",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-06-24",
- "start": "9:00",
- "end": "14:00"
- }
- },
- "it": {
- "id": "florence1-06-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Qwik!",
- "details": [
- {
- "id": "date",
- "value": "2023-06-24"
- },
- {
- "id": "time",
- "value": "9:00 - 14:00"
- },
- {
- "id": "speaker",
- "value": "Miško Hevery"
- },
- {
- "id": "tag",
- "value": "Frontend Development"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Firenze"
- }
- ],
- "description": {
- "long": "Schrödinger Session",
- "short": "In questa edizione, presenteremo Miško Hevery, creatore di Angular e co-creatore di KarmaJS, per una sessione incentrata su Qwik."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F507565769%2F565692604981%2F1%2Foriginal.20230504-132216?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=e7d7490b59e1802ad3d53498f66ca59e",
- "alt": "Schrödinger Hat Session presenta qwik!"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Firenze",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-06-24",
- "start": "9:00",
- "end": "14:00"
- }
- }
-}
diff --git a/src/i18n/events/session/florence2-11-23.json b/src/i18n/events/session/florence2-11-23.json
deleted file mode 100644
index 294dbc4f..00000000
--- a/src/i18n/events/session/florence2-11-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "florence2-06-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Learning Rust, one step at the time",
- "details": [
- {
- "id": "date",
- "value": "2023-11-22"
- },
- {
- "id": "time",
- "value": "09:00 - 13:30"
- },
- {
- "id": "speaker",
- "value": "Luca Palmieri"
- },
- {
- "id": "tag",
- "value": "Computer Programming"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Florence"
- }
- ],
- "description": {
- "short": "This workshop covers the core concepts of the Rust programming language: structs, enums, traits, testing, key data structures.",
- "long": "This workshop covers the core concepts of the Rust programming language: structs, enums, traits, testing, key data structures."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F594865149%2F565692604981%2F1%2Foriginal.20230911-122647?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=84b2a138dbc92a31f0eb756bcda54b80",
- "alt": "Schroedinger hat logo"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Florence",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-11-22",
- "start": "9:00",
- "end": "13:00"
- }
- },
- "it": {
- "id": "florence2-11-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Learning Rust, one step at the time",
- "details": [
- {
- "id": "date",
- "value": "2023-11-22"
- },
- {
- "id": "time",
- "value": "9:00 - 13:00"
- },
- {
- "id": "speaker",
- "value": "Luca Palmieri"
- },
- {
- "id": "tag",
- "value": "Computer Programming"
- },
- {
- "id": "location",
- "value": "Nana Bianca, Firenze"
- }
- ],
- "description": {
- "short": "Questo laboratorio copre i concetti fondamentali del linguaggio di programmazione Rust: strutture, enumerazioni, trait, testing, e le principali strutture dati.",
- "long": "Questo laboratorio copre i concetti fondamentali del linguaggio di programmazione Rust: strutture, enumerazioni, trait, testing, e le principali strutture dati."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F594865149%2F565692604981%2F1%2Foriginal.20230911-122647?w=940&auto=format,compress&q=75&sharp=10&rect=0,0,2160,1080&s=84b2a138dbc92a31f0eb756bcda54b80",
- "alt": "Schrödinger Hat Session: Rust"
- },
- "location": {
- "name": "Nana Bianca",
- "city": "Firenze",
- "URL": "https://goo.gl/maps/jEwB3GoBdF2ueNGY8"
- },
- "schedule": {
- "date": "2023-11-22",
- "start": "9:00",
- "end": "13:00"
- }
- }
-}
diff --git a/src/i18n/events/session/milan1-23.json b/src/i18n/events/session/milan1-23.json
deleted file mode 100644
index 45838feb..00000000
--- a/src/i18n/events/session/milan1-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "milan1-09-07",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "RusticGraph!",
- "details": [
- {
- "id": "date",
- "value": "2023-09-07"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Marco Ieni & Marco Ippolito"
- },
- {
- "id": "tag",
- "value": "Computer Programming"
- },
- {
- "id": "location",
- "value": "EDreams, Milan"
- }
- ],
- "description": {
- "long": "This edition features two talks: Marco Ippolito on 'Measuring GraphQL Query Costs' and Marco Ieni on 'Simplifying Open Source with Rust'.",
- "short": "This edition features two talks: Marco Ippolito on 'Measuring GraphQL Query Costs' and Marco Ieni on 'Simplifying Open Source with Rust'."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F548299369%2F565692604981%2F1%2Foriginal.20230704-165219?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=27679e42c143667d05c514a83170601b",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "EDreams",
- "city": "Milan",
- "URL": "https://maps.app.goo.gl/zBztvJLjZJ75ZULh7"
- },
- "schedule": {
- "date": "2023-09-07",
- "start": "18:00",
- "end": "21:00"
- }
- },
- "it": {
- "id": "milan1-09-07",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "RusticGraph!",
- "details": [
- {
- "id": "date",
- "value": "2023-09-07"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Marco Ieni & Marco Ippolito"
- },
- {
- "id": "tag",
- "value": "Computer Programming"
- },
- {
- "id": "location",
- "value": "EDreams, Milano"
- }
- ],
- "description": {
- "long": "Questa edizione presenta due talk: Marco Ippolito su 'Measuring the Cost of a GraphQL Query' e Marco Ieni su 'How Rust Makes Open Source Easier'.",
- "short": "Questa edizione presenta due talk: Marco Ippolito su 'Measuring the Cost of a GraphQL Query' e Marco Ieni su 'How Rust Makes Open Source Easier'."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F548299369%2F565692604981%2F1%2Foriginal.20230704-165219?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=27679e42c143667d05c514a83170601b",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "EDreams",
- "city": "Milan",
- "URL": "https://maps.app.goo.gl/zBztvJLjZJ75ZULh7"
- },
- "schedule": {
- "date": "2023-09-07",
- "start": "18:00",
- "end": "21:00"
- }
- }
-}
diff --git a/src/i18n/events/session/milan2-23.json b/src/i18n/events/session/milan2-23.json
deleted file mode 100644
index e82710e1..00000000
--- a/src/i18n/events/session/milan2-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "milan2-10-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Milan #2",
- "details": [
- {
- "id": "date",
- "value": "2023-10-23"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Erick Wendel"
- },
- {
- "id": "tag",
- "value": "JavaScript"
- },
- {
- "id": "location",
- "value": "EDreams, Milan"
- }
- ],
- "description": {
- "long": "Erick Wendel presents 10 essential JS design patterns, demonstrating code reuse and simplifying software structuring and maintenance.",
- "short": "Erick Wendel presents 10 essential JS design patterns, demonstrating code reuse and simplifying software structuring and maintenance."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F548299369%2F565692604981%2F1%2Foriginal.20230704-165219?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=27679e42c143667d05c514a83170601b",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "EDreams",
- "city": "Milan",
- "URL": "https://maps.app.goo.gl/zBztvJLjZJ75ZULh7"
- },
- "schedule": {
- "date": "2023-10-23",
- "start": "18:00",
- "end": "21:00"
- }
- },
- "it": {
- "id": "milan1-10-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "RusticGraph!",
- "details": [
- {
- "id": "date",
- "value": "2023-10-23"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Marco Ieni & Marco Ippolito"
- },
- {
- "id": "tag",
- "value": "Computer Programming"
- },
- {
- "id": "location",
- "value": "EDreams, Milano"
- }
- ],
- "description": {
- "short": "Erick Wendel presenta 10 modelli di design essenziali per JavaScript, illustrando il riutilizzo del codice e semplificando la strutturazione e la manutenzione del software.",
- "long": "Erick Wendel presenta 10 modelli di design essenziali per JavaScript, illustrando il riutilizzo del codice e semplificando la strutturazione e la manutenzione del software."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F548299369%2F565692604981%2F1%2Foriginal.20230704-165219?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=27679e42c143667d05c514a83170601b",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "EDreams",
- "city": "Milan",
- "URL": "https://maps.app.goo.gl/zBztvJLjZJ75ZULh7"
- },
- "schedule": {
- "date": "2023-10-23",
- "start": "18:00",
- "end": "21:00"
- }
- }
-}
diff --git a/src/i18n/events/session/verona1-23.json b/src/i18n/events/session/verona1-23.json
deleted file mode 100644
index 6abc3e60..00000000
--- a/src/i18n/events/session/verona1-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "verona1-09-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Verona #1",
- "details": [
- {
- "id": "date",
- "value": "2023-09-21"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Tommaso Alievi & Diego Braga"
- },
- {
- "id": "tag",
- "value": "Computer programming"
- },
- {
- "id": "location",
- "value": "AQuest, Verona"
- }
- ],
- "description": {
- "long": "Schrödinger Session",
- "short": "In this session we will learn about Kubernetes and Unicode"
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F565247339%2F245918162914%2F1%2Foriginal.20230731-124719?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=a5611b96c54b280e674f16fbedf5b624",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "AQuest",
- "city": "Verona",
- "URL": "https://maps.app.goo.gl/t6QHQ1hdX8V2x91R8"
- },
- "schedule": {
- "date": "2023-09-21",
- "start": "18:00",
- "end": "21:00"
- }
- },
- "it": {
- "id": "verona1-09-23",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Verona #1",
- "details": [
- {
- "id": "date",
- "value": "2023-09-21"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Tommaso Alievi & Diego Braga"
- },
- {
- "id": "tag",
- "value": "Computer programming"
- },
- {
- "id": "location",
- "value": "AQuest, Verona"
- }
- ],
- "description": {
- "long": "Session of Schrödinger Hat",
- "short": "In questa sessione impareremo su Kubernetes e Unicode"
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F565247339%2F245918162914%2F1%2Foriginal.20230731-124719?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=a5611b96c54b280e674f16fbedf5b624",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "AQuest",
- "city": "Verona",
- "URL": "https://maps.app.goo.gl/t6QHQ1hdX8V2x91R8"
- },
- "schedule": {
- "date": "2023-09-21",
- "start": "18:00",
- "end": "21:00"
- }
- }
-}
diff --git a/src/i18n/events/session/verona2-23.json b/src/i18n/events/session/verona2-23.json
deleted file mode 100644
index 27cc964e..00000000
--- a/src/i18n/events/session/verona2-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "verona2-10-26",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Verona #2",
- "details": [
- {
- "id": "date",
- "value": "2023-10-26"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Luca Del Puppo"
- },
- {
- "id": "tag",
- "value": "Typescript"
- },
- {
- "id": "location",
- "value": "AQuest, Verona"
- }
- ],
- "description": {
- "long": "In this session we will learn about Typescript",
- "short": "In this session we will learn about Typescript"
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F565247339%2F245918162914%2F1%2Foriginal.20230731-124719?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=a5611b96c54b280e674f16fbedf5b624",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "AQuest",
- "city": "Verona",
- "URL": "https://maps.app.goo.gl/t6QHQ1hdX8V2x91R8"
- },
- "schedule": {
- "date": "2023-10-26",
- "start": "18:00",
- "end": "21:00"
- }
- },
- "it": {
- "id": "verona2-10-26",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": null,
- "title": "Verona #2",
- "details": [
- {
- "id": "date",
- "value": "2023-10-26"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Luca Del Puppo"
- },
- {
- "id": "tag",
- "value": "Typescript"
- },
- {
- "id": "location",
- "value": "AQuest, Verona"
- }
- ],
- "description": {
- "long": "In questa sessione impareremo su Typescript",
- "short": "In questa sessione impareremo su TypeScript"
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F565247339%2F245918162914%2F1%2Foriginal.20230731-124719?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=a5611b96c54b280e674f16fbedf5b624",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "AQuest",
- "city": "Verona",
- "URL": "https://maps.app.goo.gl/t6QHQ1hdX8V2x91R8"
- },
- "schedule": {
- "date": "2023-10-23",
- "start": "18:00",
- "end": "21:00"
- }
- }
-}
diff --git a/src/i18n/events/session/verona3-23.json b/src/i18n/events/session/verona3-23.json
deleted file mode 100644
index 5c11c692..00000000
--- a/src/i18n/events/session/verona3-23.json
+++ /dev/null
@@ -1,98 +0,0 @@
-{
- "en": {
- "id": "verona2-12-14",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": "https://www.eventbrite.it/e/biglietti-schrodinger-session-verona-3-756086494057?aff=erelexpmlt",
- "title": "Verona #3",
- "details": [
- {
- "id": "date",
- "value": "2023-12-14"
- },
- {
- "id": "time",
- "value": "18:00 - 20:30"
- },
- {
- "id": "speaker",
- "value": "Martino Fornasa & Giorgio Fochesato"
- },
- {
- "id": "tag",
- "value": "Programming & OSS"
- },
- {
- "id": "location",
- "value": "AQuest, Verona"
- }
- ],
- "description": {
- "long": "Lean to master Prometheus and to explore the significance of communities.",
- "short": "Lean to master Prometheus and to explore the significance of communities."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F565247339%2F245918162914%2F1%2Foriginal.20230731-124719?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=a5611b96c54b280e674f16fbedf5b624",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "AQuest",
- "city": "Verona",
- "URL": "https://maps.app.goo.gl/t6QHQ1hdX8V2x91R8"
- },
- "schedule": {
- "date": "2023-12-14",
- "start": "18:00",
- "end": "20:30"
- }
- },
- "it": {
- "id": "verona2-12-14",
- "category": "session",
- "featured": false,
- "headline": "Schrödinger Session:",
- "ticketsURL": "https://www.eventbrite.it/e/biglietti-schrodinger-session-verona-3-756086494057?aff=erelexpmlt",
- "title": "Verona #2",
- "details": [
- {
- "id": "date",
- "value": "2023-12-14"
- },
- {
- "id": "time",
- "value": "18:00 - 21:00"
- },
- {
- "id": "speaker",
- "value": "Martino Fornasa & Giorgio Fochesato"
- },
- {
- "id": "tag",
- "value": "Informatica & OSS"
- },
- {
- "id": "location",
- "value": "AQuest, Verona"
- }
- ],
- "description": {
- "long": "Impara a padroneggiare Prometheus e a esplorare il significato delle comunità.",
- "short": "Impara a padroneggiare Prometheus e a esplorare il significato delle comunità."
- },
- "image": {
- "URL": "https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F565247339%2F245918162914%2F1%2Foriginal.20230731-124719?w=940&auto=format%2Ccompress&q=75&sharp=10&rect=0%2C0%2C2160%2C1080&s=a5611b96c54b280e674f16fbedf5b624",
- "alt": "Schrödinger Hat Session logo"
- },
- "location": {
- "name": "AQuest",
- "city": "Verona",
- "URL": "https://maps.app.goo.gl/t6QHQ1hdX8V2x91R8"
- },
- "schedule": {
- "date": "2023-12-14",
- "start": "18:00",
- "end": "20:30"
- }
- }
-}
diff --git a/src/i18n/messages.ts b/src/i18n/messages.ts
deleted file mode 100644
index b456bad9..00000000
--- a/src/i18n/messages.ts
+++ /dev/null
@@ -1,432 +0,0 @@
-import { messages as eventMessages } from '@/i18n/events/index'
-
-const messages = {
- it: {
- banner: {
- shop: 'Schrödinger Hat è un\'organizzazione no profit. Aiutateci a continuare la nostra missione nell\'Open Source visitando il nostro negozio online',
- },
- head: {
- app: {
- meta: { name: 'Schrödinger Hat', content: 'La community Open Source' },
- },
- codeOfConduct: {
- title: 'Codice di condotta',
- meta: { name: 'Codice di condotta - Schrödinger Hat', content: 'Il nostro codice di condotta' },
- },
- events: {
- title: 'Eventi',
- meta: { name: 'Eventi - Schrödinger Hat', content: 'I nostri eventi' },
- },
- home: { title: 'Schrödinger Hat' },
- team: {
- fallback: { member: 'Membro' },
- title: 'Team',
- meta: { name: 'Team - Schrödinger Hat', content: 'Il nostro team' },
- },
- },
- page: {
- events: {
- data: eventMessages.data.it,
- copy: eventMessages.copy.it,
- },
- },
- message: {
- common: { 'read-more': 'Leggi di più' },
- },
- navbar: {
- team: 'Team',
- events: 'Eventi',
- codeOfConduct: 'Codice di Condotta',
- imageGoNord: 'ImageGoNord',
- gitHub: 'GitHub',
- shop: 'Shop',
- },
- main: {
- h1: 'Una community open source italiana',
- h2: 'Schrödinger Hat é una community, un podcast, un livestream e molto altro!',
- banner: {
- first: 'Sei pronto per la prossima edizione di',
- second: 'Prendi ora il tuo biglietto!',
- },
- links: {
- youtube: 'YouTube',
- spotify: 'Spotify',
- openCollective: 'OpenCollective',
- },
- },
- contributing: {
- 'title': 'Collabora',
- 'is-a-project': 'è un progetto open source su',
- 'cta': 'Se hai una idea, un tool, un argomento o altro da proporre, puoi',
- 'cta-2': 'Oppure contattarci tramite i social.',
- 'external-link': 'aprire una issue su GitHub',
- },
- code_of_conduct: [
- {
- title: 'Versione corta',
- copy: 'Schrödinger Hat è dedito a un evento privo di molestie.',
- },
- {
- title: 'Versione più lunga',
- copy: 'Schrödinger Hat è dedito a fornire un\'esperienza di evento priva da molestie, indipendentemente da genere, identità ed espressione di genere, età, orientamento sessuale, disabilità, aspetto fisico, taglia, razza, etnia, religione (o mancanza di essa) o scelte tecnologiche. Non tolleriamo alcuna forma di molestia nei confronti dei partecipanti all\'evento. Il linguaggio e le immagini sessuali non sono appropriati per nessuna sede di eventi, inclusi dibattiti, workshop, feste, Twitter e altri media online. I partecipanti all\'evento che violano queste regole possono essere sanzionati o espulsi dall\'evento senza rimborso a discrezione degli organizzatori (Schrödinger Hat).',
- },
- {
- title: 'Versione completa',
- copy: 'Schrödinger Hat è dedito a fornire un\'esperienza di evento priva di molestie. Le molestie includono, ma non sono limitate a: Commenti verbali offensivi relativi a genere, identità ed espressione di genere, età, orientamento sessuale, disabilità, aspetto fisico, taglia, razza, etnia, religione, tecnologia scelte. Linguaggio e immagini sessuali negli spazi pubblici. Intimidazioni, minacce, stalking o inseguimenti deliberati. Fotografie o registrazioni moleste. Interruzione prolungata del discorso o di altri eventi. Contatto fisico inappropriato. Attenzione sessuale indesiderata. Promuovere o incoraggiare quanto sopra Sponsor, relatori, reclutatori e organizzatori non devono utilizzare immagini, attività o altro materiale a sfondo sessuale. Tutto il personale e gli organizzatori relativi all\'evento (organizzatori, personale della sede e personale degli sponsor, inclusi i volontari) non devono utilizzare abiti/uniformi/costumi sessuali o creare in altro modo un ambiente sessuale. Gli organizzatori di Schrödinger Hat possono anche fornire un codice di condotta aggiuntivo per le esigenze dei singoli canali di comunicazione o eventi.',
- },
- {
- title: 'Enforcement',
- copy: 'A chiunque venga chiesto di interrompere qualsiasi comportamento molesto è tenuto a conformarsi immediatamente. Se qualcuno si atteggia in comportamenti molesti, gli organizzatori di Schrödinger Hat possono intraprendere qualsiasi azione ritengano appropriata, compreso l\'avvertimento del trasgressore o l\'espulsione dall\'evento senza rimborso. Tutti coloro che utilizzano i servizi Schrödinger Hat o partecipano a eventi Schrödinger Hat sono soggetti alla politica anti-molestie; questo include partecipanti, sponsor, relatori, reclutatori e organizzatori.',
- },
- {
- title: 'Segnalazione',
- copy: 'Se vieni molestato, se noti che qualcun altro è molestato o hai altre preoccupazioni, contatta immediatamente un membro del personale di Schrödinger Hat. Puoi fare una segnalazione personale tramite: Servizio di messaggistica diretta di Twitter: @schrodinger_hat. Email: schrodinger.hat.show@gmail.com Telefono (i numeri dell\'organizzatore sono condivisi all\'inizio dell\'evento e tracciati durante l\'evento). Rivolgiti a un organizzatore che assicurerà che la conversazione si svolga in privato. Non ti verrà chiesto di confrontarti con nessuno e non diremo a nessuno chi sei. Ci identificheremo all\'inizio di ogni evento. Lo staff di Schrödinger Hat sarà lieto di aiutare i partecipanti a contattare la sicurezza della sede (se disponibile) o le forze dell\'ordine locali, fornire assistenti o aiutare in altro modo coloro che sono molestati a sentirsi al sicuro per la durata dell\'evento . Apprezziamo la tua presenza. Ci aspettiamo che tutti seguano queste regole in tutti gli eventi organizzati da Schrödinger Hat (meetup, workshop, altri eventi ed eventi sociali post meetup).',
- },
- ],
- redirect: {
- profile: 'Vai al profilo',
- back: 'Torna indietro',
- },
- team: {
- mikilombardi: {
- name: 'Miki Lombardi',
- github: 'thejoin95',
- github_url: 'https://github.com/thejoin95',
- linkedin_url: 'https://www.linkedin.com/in/miki-lombardi/',
- twitter_url: 'https://twitter.com/thejoin95',
- image: '/img/_dev/mikilombardi.jpeg',
- secondary_image: '/img/_dev/mikilombardi.jpeg',
- description: 'Mi definisco un passion driven developer, guidato dalla creatività che ha un sacco di altre passioni: basket, ciclismo, fotografia sono solo alcune di queste. Dal 2014 ho prestato la mia esperienza nel campo dello sviluppo software a Firenze, in Italia.\nHo lavorato come ingegnere del software e architetto di soluzioni per oltre 8 anni sia in società di prodotti che di consulenza, traendo il meglio da entrambi i mondi. Attualmente lavoro come Software Engineer presso Growens, dove sto sviluppando e ottimizzando la piattaforma di email marketing in un team Agile (SCRUM) in full remote.\nNel tempo libero girovago, creo eventi, partecipo a conferenze nazionali e internazionali cercando di vivere la vita al migliore delle mie possibilità!',
- website: 'https://www.mikilombardi.com/',
- permalink: 'mikilombardi',
- },
- gabrielepuliti: {
- name: 'Gabriele Puliti',
- github: 'Wabri',
- github_url: 'https://github.com/Wabri',
- linkedin_url: 'https://www.linkedin.com/in/%F0%9F%90%A7gabriele-puliti-b62915a9/',
- twitter_url: 'https://twitter.com/WabriDev',
- image: '/img/_dev/gabrielepuliti.png',
- secondary_image: '/img/_dev/gabrielepuliti.png',
- description: 'Ho una dipendenza da tmux e vim. Non mi parlate di frontend perchè non ci capisco niente, ma se volete parlare della vostra rice linux sono tutto orecchi. Sono un appassionato di Storia da quasi sempre, ho provato a diventare un astrofisico fallendo miseramente e mi piace fare lunghe camminate sia in città che nella natura.',
- website: '',
- permalink: 'gabrielepuliti',
- },
- lorenzopieri: {
- name: 'Lorenzo Pieri',
- github: '404answernotfound',
- github_url: 'https://github.com/404answernotfound',
- linkedin_url: 'https://www.linkedin.com/in/lorenzopieri/',
- twitter_url: 'https://twitter.com/404answnotfound',
- image: '/img/_dev/lorenzopieri.png',
- secondary_image: '/img/_dev/lorenzopieri.png',
- description: 'Scopritore di problemi a soluzioni note. Tanti argomenti diversi e troppe poche ore durante la giornata, trovo divertente insegnare cose complicate in parole semplici, raccontare storie con metodi poco ortodossi e passare il tempo a scrivere codice, anche questa un\'arte a tutti gli effetti. Credo fortemente nell\'unione tra scienza e valore umano (ndr. divertirsi a fare ciò che si ama) e partecipo con passione a non-profit e progetti intenzionati a portare maggiore valore culturale e conoscenza a coloro che ne sono interessati e affascinati.',
- website: 'https://404answernotfound.eu/',
- permalink: 'lorenzopieri',
- },
- nicpuppa: {
- name: 'Nic Puppa',
- github: 'nicpuppa',
- github_url: 'https://github.com/nicpuppa',
- linkedin_url: 'https://www.linkedin.com/in/nicola-puppa-b67a4911a/',
- twitter_url: '',
- image: '/img/_dev/nicpuppa.png',
- secondary_image: '/img/_dev/nicpuppa.png',
- description: 'Globetrotter (covid permettendo), amante delle bibite gassate e climber. Amo le sfide. Mi piace studiare quello che mi interessa. Sono sintetico.',
- website: '',
- permalink: 'nicpuppa',
- },
- AngyDev: {
- name: 'Angela Busato',
- github: 'AngyDev',
- github_url: 'https://github.com/AngyDev',
- linkedin_url: 'https://www.linkedin.com/in/angela-busato-91145ab1/',
- twitter_url: 'https://twitter.com/angela_busato',
- image: '/img/_dev/Angy.jpg',
- secondary_image: '/img/_dev/Angy.jpg',
- description: 'Sono un\'esploratrice, mi piace la ricerca e la sperimentazione negli ambiti più disparati, programmazione, fotografia, stampa 3D, e fai da te sono i primi della mia lista. Nel tempo libero mi piace viaggiare e conoscere nuovi posti, persone, culture ma soprattutto conoscere il cibo, ci sono sempre cose nuove da scoprire.',
- website: 'https://www.angydev.eu/',
- permalink: 'AngyDev',
- },
- DanerSound: {
- name: 'Andre Cristhian',
- github: 'DanerSound',
- github_url: 'https://github.com/DanerSound',
- linkedin_url: 'https://www.linkedin.com/in/andre-cristhian-barreto-donayre/',
- twitter_url: ' ',
- image: '/img/_dev/Danersound.jpg',
- secondary_image: '/img/_dev/Danersound.jpg',
- description: 'Mi piace pensare che possono costruire qualsiasi cosa, infatti nella mia mente ho gia progettato la macchina del tempo e il nervgear, ho solo problemi a trovare dei finanziatori disposti ad investire nella mia follia... chi sono io? beh sono un ex tecnico del suono che adesso sta riprendendo la via dell\'informatico! nel tempo libero e quando non ho voglia di studiare cerco mi montare circuiti usando arduino, creando dei corto il 90% delle volte...dopo tutto brusciando i compotenti si impara!',
- website: '',
- permalink: 'DanerSound',
- },
- davideimola: {
- name: 'Davide Imola',
- github: 'davideimola',
- github_url: 'https://github.com/davideimola',
- linkedin_url: 'https://www.linkedin.com/in/davideimola/',
- twitter_url: ' ',
- image: '/img/_dev/davideimola.jpg',
- secondary_image: '/img/_dev/davideimola.jpg',
- description: 'Mettetemi in mano un Cloud provider e mi vedrete felice come un bimbo. Sono un grande appassionato di automazione, approcci cloud-native e tutto quella roba da DevOps Sith. Nel mio tempo libero, faccio roba da nerd (che strano!), quindi leggo fumetti e manga, vedo film e tanta altra roba molto cool (perchè io ci credo)!',
- website: 'https://davideimola.com',
- permalink: 'davideimola',
- },
- patrickraedler: {
- name: 'Patrick Raedler',
- github: 'readpato',
- github_url: 'https://github.com/readpato',
- linkedin_url: 'https://www.linkedin.com/in/patrickraedler/',
- twitter_url: '@readpato',
- image: '/img/_dev/patrickraedler.jpg',
- secondary_image: '/img/_dev/patrickraedler.jpg',
- description: 'Mi piace programmare ed il Open Source :)',
- website: 'https://readpato.dev',
- permalink: 'readpato',
- },
- },
- accessibility: {
- navbar: {
- logo: 'Benvenuti su Schrödinger Hat',
- openMenu: 'Apri il menu mobile',
- toggleIcon: 'Cambia fra tema chiaro e scuro',
- },
- contributing: {
- openCollective_label: 'Visita la nostra pagina OpenCollective',
- facebook_label: 'Visita la nostra pagina Facebook',
- twitter_label: 'Visita la nostra pagina Twitter',
- linkedin_label: 'Visita il nostro profilo Linkedin',
- instagram_label: 'Visita la nostra pagina Instagram',
- discord_label: 'Entra nel nostro server Discord',
- },
- teamPage: {
- github: 'Pagina github di {name}',
- linkedin: 'Pagina Linkedin di {name}',
- twitter: 'Profilo twitter di {name}',
- website: 'Sito web di {name}',
- },
- teamMember: {
- github: 'Pagina github di {name}',
- linkedin: 'Pagina Linkedin di {name}',
- twitter: 'Profilo twitter di {name}',
- website: 'Sito web di {name}',
- },
- },
- },
- en: {
- banner: {
- shop: 'Schrödinger Hat is a no profit organisation. Help us continue our mission in Open Source by visiting our online store',
- },
- head: {
- app: {
- title: 'Schrödinger Hat',
- meta: { name: 'Schrödinger Hat', content: 'The Open Source Community' },
- },
- codeOfConduct: {
- title: 'Code of Conduct',
- meta: { name: 'Code of Conduct - Schrödinger Hat', content: 'Our Code of Conduct' },
- },
- events: {
- title: 'Events',
- meta: { name: 'Events - Schrödinger Hat', content: 'Our events' },
- },
- home: { title: 'Schrödinger Hat' },
- team: {
- fallback: { member: 'Member' },
- title: 'Team',
- meta: { name: 'Team - Schrödinger Hat', content: 'Our team' },
- },
- },
- page: {
- events: {
- data: eventMessages.data.en,
- copy: eventMessages.copy.en,
- },
- },
- message: {
- common: { 'read-more': 'Read more' },
- },
- // TODO: Organize this messages on their respective pages
- navbar: {
- team: 'Team',
- events: 'Events',
- codeOfConduct: 'Code of Conduct',
- imageGoNord: 'ImageGoNord',
- gitHub: 'GitHub',
- shop: 'Shop',
- },
- main: {
- h1: 'Schrödinger Hat',
- h2: 'The Open Source community',
- banner: {
- first: 'Are you ready for the next edition of',
- second: 'Get your ticket now!',
- },
- links: {
- youtube: 'YouTube',
- spotify: 'Spotify',
- openCollective: 'OpenCollective',
- },
- },
- contributing: {
- 'title': 'Contribute',
- 'is-a-project': 'is an open source project on',
- 'cta': 'If you have an idea, a tool, a topic or something else to propose, you can',
- 'cta-2': 'Or you can contact us via social networks.',
- 'external-link': 'open a GitHub issue',
- },
- code_of_conduct: [
- {
- title: 'Short version',
- copy: 'Schrödinger Hat is dedicated to a harassment-free event for everyone.',
- },
- {
- title: 'Longer version',
- copy: 'Schrödinger Hat is dedicated to providing a harassment-free event experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices. We do not tolerate harassment of event participants in any form. Sexual language and imagery is not appropriate for any event venue, including talks, workshops, parties, Twitter and other online media. Event participants violating these rules may be sanctioned or expelled from the event without a refund at the discretion of the Schrödinger Hat organizers.',
- },
- {
- title: 'Full version',
- copy: 'Schrödinger Hat is dedicated to providing a harassment-free event experience for everyone. Harassment includes, but is not limited to: Offensive verbal comments related to gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion, technology choices. Sexual language and images in public spaces. Deliberate intimidation, threats, stalking or following. Harassing photography or recording. Sustained disruption of talks or other events. Inappropriate physical contact. Unwelcome sexual attention. Advocating for, or encouraging, any of the above behavior Sponsors, speakers, recruiters and organizers should not use sexualized images, activities, or other material. All staff and organizers related to the event (Schrödinger Hat organizers, venue staff and sponsor\'s staff - including volunteers) should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment. Schrödinger Hat organizers may also provide an additional code of conduct for the needs of individual communication channels or events.',
- },
- {
- title: 'Enforcement',
- copy: 'Anyone asked to stop any harassing behavior are expected to comply immediately. If anyone engages in harassing behavior, the Schrödinger Hat organizers may take any action they deem appropriate, including warning the offender or expulsion from the event with no refund. This applies to all Schrödinger Hat events and associated communication channels. Everyone using Schrödinger Hat services or attending Schrödinger Hat events is subject to the anti-harassment policy; this includes attendees, sponsors, speakers, recruiters and organizers.',
- },
- {
- title: 'Reporting',
- copy: 'If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of Schrödinger Hat staff immediately. You can make a personal report by: Twitter\'s direct message service: @schrodinger_hat. Email: schrodinger.hat.show@gmail.com Phone (organizer\'s numbers are shared at the beginning of the event and monitored during the event). Reaching out to an organizer: organizer who will make sure the conversation is held privately. You will not be asked to confront anyone and we won\'t tell anyone who you are. We will identify ourselves at the beginning of each event. Schrödinger Hat staff will be happy to help participants contact venue security (if available) or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the event. We value your attendance. We expect everyone to follow these rules at the all the events organized by Schrödinger Hat (meetups, workshops, other events and post meetup related social events).',
- },
- ],
- redirect: {
- profile: 'Go to profile',
- back: 'Go back',
- },
- team: {
- mikilombardi: {
- name: 'Miki Lombardi',
- github: 'thejoin95',
- github_url: 'https://github.com/thejoin95',
- linkedin_url: 'https://www.linkedin.com/in/miki-lombardi/',
- twitter_url: 'https://twitter.com/thejoin95',
- image: '/img/_dev/mikilombardi.jpeg',
- secondary_image: '/img/_dev/mikilombardi.jpeg',
- description: 'Mi definisco un passion driven developer, guidato dalla creatività che ha un sacco di altre passioni: basket, ciclismo, fotografia sono solo alcune di queste. Dal 2014 ho prestato la mia esperienza nel campo dello sviluppo software a Firenze, in Italia.\nHo lavorato come ingegnere del software e architetto di soluzioni per oltre 8 anni sia in società di prodotti che di consulenza, traendo il meglio da entrambi i mondi. Attualmente lavoro come Software Engineer presso Growens, dove sto sviluppando e ottimizzando la piattaforma di email marketing in un team Agile (SCRUM) in full remote.\nNel tempo libero girovago, creo eventi, partecipo a conferenze nazionali e internazionali cercando di vivere la vita al migliore delle mie possibilità!',
- website: 'https://www.mikilombardi.com/',
- permalink: 'mikilombardi',
- },
- gabrielepuliti: {
- name: 'Gabriele Puliti',
- github: 'Wabri',
- github_url: 'https://github.com/Wabri',
- linkedin_url: 'https://www.linkedin.com/in/%F0%9F%90%A7gabriele-puliti-b62915a9/',
- twitter_url: 'https://twitter.com/WabriDev',
- image: '/img/_dev/gabrielepuliti.png',
- secondary_image: '/img/_dev/gabrielepuliti.png',
- description: 'Ho una dipendenza da tmux e vim. Non mi parlate di frontend perchè non ci capisco niente, ma se volete parlare della vostra rice linux sono tutto orecchi. Sono un appassionato di Storia da quasi sempre, ho provato a diventare un astrofisico fallendo miseramente e mi piace fare lunghe camminate sia in città che nella natura.',
- website: '',
- permalink: 'gabrielepuliti',
- },
- lorenzopieri: {
- name: 'Lorenzo Pieri',
- github: '404answernotfound',
- github_url: 'https://github.com/404answernotfound',
- linkedin_url: 'https://www.linkedin.com/in/lorenzopieri/',
- twitter_url: 'https://twitter.com/404answnotfound',
- image: '/img/_dev/lorenzopieri.png',
- secondary_image: '/img/_dev/lorenzopieri.png',
- description: 'Scopritore di problemi a soluzioni note. Tanti argomenti diversi e troppe poche ore durante la giornata, trovo divertente insegnare cose complicate in parole semplici, raccontare storie con metodi poco ortodossi e passare il tempo a scrivere codice, anche questa un\'arte a tutti gli effetti. Credo fortemente nell\'unione tra scienza e valore umano (ndr. divertirsi a fare ciò che si ama) e partecipo con passione a non-profit e progetti intenzionati a portare maggiore valore culturale e conoscenza a coloro che ne sono interessati e affascinati.',
- website: 'https://404answernotfound.eu/',
- permalink: 'lorenzopieri',
- },
- nicpuppa: {
- name: 'Nic Puppa',
- github: 'nicpuppa',
- github_url: 'https://github.com/nicpuppa',
- linkedin_url: 'https://www.linkedin.com/in/nicola-puppa-b67a4911a/',
- twitter_url: '',
- image: '/img/_dev/nicpuppa.png',
- secondary_image: '/img/_dev/nicpuppa.png',
- description: 'Globetrotter (covid permettendo), amante delle bibite gassate e climber. Amo le sfide. Mi piace studiare quello che mi interessa. Sono sintetico.',
- website: '',
- permalink: 'nicpuppa',
- },
- AngyDev: {
- name: 'Angela Busato',
- github: 'AngyDev',
- github_url: 'https://github.com/AngyDev',
- linkedin_url: 'https://www.linkedin.com/in/angela-busato-91145ab1/',
- twitter_url: 'https://twitter.com/angela_busato',
- image: '/img/_dev/Angy.jpg',
- secondary_image: '/img/_dev/Angy.jpg',
- description: 'Sono un\'esploratrice, mi piace la ricerca e la sperimentazione negli ambiti più disparati, programmazione, fotografia, stampa 3D, e fai da te sono i primi della mia lista. Nel tempo libero mi piace viaggiare e conoscere nuovi posti, persone, culture ma soprattutto conoscere il cibo, ci sono sempre cose nuove da scoprire.',
- website: 'https://www.angydev.eu/',
- permalink: 'AngyDev',
- },
- DanerSound: {
- name: 'Andre Cristhian',
- github: 'DanerSound',
- github_url: 'https://github.com/DanerSound',
- linkedin_url: 'https://www.linkedin.com/in/andre-cristhian-barreto-donayre/',
- twitter_url: ' ',
- image: '/img/_dev/Danersound.jpg',
- secondary_image: '/img/_dev/Danersound.jpg',
- description: 'Mi piace pensare che possono costruire qualsiasi cosa, infatti nella mia mente ho gia progettato la macchina del tempo e il nervgear, ho solo problemi a trovare dei finanziatori disposti ad investire nella mia follia... chi sono io? beh sono un ex tecnico del suono che adesso sta riprendendo la via dell\'informatico! nel tempo libero e quando non ho voglia di studiare cerco mi montare circuiti usando arduino, creando dei corto il 90% delle volte...dopo tutto brusciando i compotenti si impara!',
- website: '',
- permalink: 'DanerSound',
- },
- davideimola: {
- name: 'Davide Imola',
- github: 'davideimola',
- github_url: 'https://github.com/davideimola',
- linkedin_url: 'https://www.linkedin.com/in/davideimola/',
- twitter_url: ' ',
- image: '/img/_dev/davideimola.jpg',
- secondary_image: '/img/_dev/davideimola.jpg',
- description: 'Mettetemi in mano un Cloud provider e mi vedrete felice come un bimbo. Sono un grande appassionato di automazione, approcci cloud-native e tutto quella roba da DevOps Sith. Nel mio tempo libero, faccio roba da nerd (che strano!), quindi leggo fumetti e manga, vedo film e tanta altra roba molto cool (perchè io ci credo)!',
- website: 'https://davideimola.com',
- permalink: 'davideimola',
- },
- patrickraedler: {
- name: 'Patrick Raedler',
- github: 'readpato',
- github_url: 'https://github.com/readpato',
- linkedin_url: 'https://www.linkedin.com/in/patrickraedler/',
- twitter_url: '@readpato',
- image: '/img/_dev/patrickraedler.jpg',
- secondary_image: '/img/_dev/patrickraedler.jpg',
- description: 'I like programming and open source :)',
- website: 'https://readpato.dev',
- permalink: 'readpato',
- },
- },
- accessibility: {
- navbar: {
- logo: 'Welcome to Schrödinger Hat',
- openMenu: 'Open mobile menu',
- toggleIcon: 'Toggle between light and dark mode',
- },
- contributing: {
- openCollective_label: 'Visit our OpenCollective page',
- facebook_label: 'Visit our Facebook page',
- twitter_label: 'Visit our Twitter page',
- linkedin_label: 'Visit our Linkedin profile',
- instagram_label: 'Visit our Instagram page',
- discord_label: 'Join our Discord server',
- },
- teamPage: {
- github: 'Github page of {name}',
- linkedin: 'Linkedin profile of {name}',
- twitter: 'Twitter profile of {name}',
- website: 'Website of {name}',
- },
- teamMember: {
- github: 'Github page of {name}',
- linkedin: 'Linkedin profile of {name}',
- twitter: 'Twitter profile of {name}',
- website: 'Website of {name}',
- },
- },
-
- },
-}
-export default messages
diff --git a/src/i18n/types.ts b/src/i18n/types.ts
deleted file mode 100644
index 9b6445c8..00000000
--- a/src/i18n/types.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-export type MessageType = {
- [key in LanguageCodes]: MessageContent
-}
-
-interface MessageContent {
- message: {
- common: {
- [key in CommonMessage]: string
- }
- events: {
- [key in CommonMessageEvent]: string
- }
- }
- code_of_conduct: ConductRules[]
- navbar: {
- team: string
- events: string
- codeOfConduct: string
- }
- main: {
- h1: string
- h2: string
- links: {
- youtube: string
- spotify: string
- openCollective: string
- }
- }
- contributing: {
- [key in ContributionMessage]: string
- }
- pages: {
- [key in PagesMessage]: string
- }
- redirect: {
- profile: string
- }
- team: TeamMessage
- events: EventMessage
-}
-
-interface TeamMessage {
- [key: TeamMemberName]: TeamMemberInfo
-}
-
-interface TeamMemberInfo {
- description: string
- github: string
- github_url: string
- image: string
- linkedin_url: string
- name: string
- permalink: string
- secondary_image: string
- twitter_url: string
- website: string
-}
-
-type EventMessage = {
- [key in EventMessageName]: EventInfo
-}
-
-interface ConductRules {
- title: string
- copy: string
-}
-
-interface Cta {
- id: string
- value: string | null
-}
-
-interface EventInfo {
- 'community-sponsors': string
- 'location-link': string
- 'signup-link': string
- cfp: string
- date: string
- description: string
- donation: string
- image: string
- location: string
- permalink: string
- sponsors: string
- subtitle: string
- title: string
- 'conference-website': string
- ctas: Cta[]
-}
-
-export type LanguageCodes = 'it' | 'en'
-
-type CommonMessage = 'read-more'
-
-type CommonMessageEvent = 'cfp' | 'donation' | 'sign-up' | 'video' | 'website'
-
-type ContributionMessage =
- 'cta' |
- 'is-a-project' |
- 'title'
-
-type PagesMessage = 'code-of-conduct'
-
-type TeamMemberName = string
-
-export type EventMessageName =
- 'sh-sessions-qwik-workshop' |
- 'open-source-day-2023-florence' |
- 'open-source-day-2021-florence-student-hotel' |
- 'typing-day-florence-2021-student-hotel'
diff --git a/src/images/about/os23_staff_speaker.jpg b/src/images/about/os23_staff_speaker.jpg
new file mode 100644
index 00000000..e9ed125d
Binary files /dev/null and b/src/images/about/os23_staff_speaker.jpg differ
diff --git a/src/images/about/os24_gabri-miki_stage.jpg b/src/images/about/os24_gabri-miki_stage.jpg
new file mode 100644
index 00000000..8c1f6ace
Binary files /dev/null and b/src/images/about/os24_gabri-miki_stage.jpg differ
diff --git a/src/images/about/os24_join-the-team.jpg b/src/images/about/os24_join-the-team.jpg
new file mode 100644
index 00000000..3ca90799
Binary files /dev/null and b/src/images/about/os24_join-the-team.jpg differ
diff --git a/src/images/about/os24_public.jpg b/src/images/about/os24_public.jpg
new file mode 100644
index 00000000..af4f5121
Binary files /dev/null and b/src/images/about/os24_public.jpg differ
diff --git a/src/images/contribute/as_individual.jpg b/src/images/contribute/as_individual.jpg
new file mode 100644
index 00000000..364e7cb0
Binary files /dev/null and b/src/images/contribute/as_individual.jpg differ
diff --git a/src/images/contribute/as_partner.jpg b/src/images/contribute/as_partner.jpg
new file mode 100644
index 00000000..09ba56ff
Binary files /dev/null and b/src/images/contribute/as_partner.jpg differ
diff --git a/src/images/contribute/as_speaker.jpg b/src/images/contribute/as_speaker.jpg
new file mode 100644
index 00000000..00158f8a
Binary files /dev/null and b/src/images/contribute/as_speaker.jpg differ
diff --git a/src/images/contribute/as_sponsor.jpg b/src/images/contribute/as_sponsor.jpg
new file mode 100644
index 00000000..fa62e43e
Binary files /dev/null and b/src/images/contribute/as_sponsor.jpg differ
diff --git a/src/images/contribute/individual/activate_membership.svg b/src/images/contribute/individual/activate_membership.svg
new file mode 100644
index 00000000..750f181b
--- /dev/null
+++ b/src/images/contribute/individual/activate_membership.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/images/contribute/individual/contribute_to_projects.svg b/src/images/contribute/individual/contribute_to_projects.svg
new file mode 100644
index 00000000..1a362f91
--- /dev/null
+++ b/src/images/contribute/individual/contribute_to_projects.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/contribute/individual/individual_1.jpg b/src/images/contribute/individual/individual_1.jpg
new file mode 100644
index 00000000..cdcef2a7
Binary files /dev/null and b/src/images/contribute/individual/individual_1.jpg differ
diff --git a/src/images/contribute/individual/individual_2.jpg b/src/images/contribute/individual/individual_2.jpg
new file mode 100644
index 00000000..b6dc02ce
Binary files /dev/null and b/src/images/contribute/individual/individual_2.jpg differ
diff --git a/src/images/contribute/individual/individual_3.jpg b/src/images/contribute/individual/individual_3.jpg
new file mode 100644
index 00000000..87a032f1
Binary files /dev/null and b/src/images/contribute/individual/individual_3.jpg differ
diff --git a/src/images/contribute/individual/individual_4.jpg b/src/images/contribute/individual/individual_4.jpg
new file mode 100644
index 00000000..975a7a4a
Binary files /dev/null and b/src/images/contribute/individual/individual_4.jpg differ
diff --git a/src/images/contribute/individual/individual_5.jpg b/src/images/contribute/individual/individual_5.jpg
new file mode 100644
index 00000000..ce4fafa1
Binary files /dev/null and b/src/images/contribute/individual/individual_5.jpg differ
diff --git a/src/images/contribute/individual/individual_6.jpg b/src/images/contribute/individual/individual_6.jpg
new file mode 100644
index 00000000..7f403ccd
Binary files /dev/null and b/src/images/contribute/individual/individual_6.jpg differ
diff --git a/src/images/contribute/individual/individual_7.jpg b/src/images/contribute/individual/individual_7.jpg
new file mode 100644
index 00000000..13dfd68a
Binary files /dev/null and b/src/images/contribute/individual/individual_7.jpg differ
diff --git a/src/images/contribute/individual/individual_8.jpg b/src/images/contribute/individual/individual_8.jpg
new file mode 100644
index 00000000..44d609e0
Binary files /dev/null and b/src/images/contribute/individual/individual_8.jpg differ
diff --git a/src/images/contribute/individual/volunteer_at_our_events.svg b/src/images/contribute/individual/volunteer_at_our_events.svg
new file mode 100644
index 00000000..994ef079
--- /dev/null
+++ b/src/images/contribute/individual/volunteer_at_our_events.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/images/contribute/speaker/famous_collina.jpg b/src/images/contribute/speaker/famous_collina.jpg
new file mode 100644
index 00000000..d19010ec
Binary files /dev/null and b/src/images/contribute/speaker/famous_collina.jpg differ
diff --git a/src/images/contribute/speaker/famous_corti.jpg b/src/images/contribute/speaker/famous_corti.jpg
new file mode 100644
index 00000000..2e3ad860
Binary files /dev/null and b/src/images/contribute/speaker/famous_corti.jpg differ
diff --git a/src/images/contribute/speaker/famous_hevery.jpg b/src/images/contribute/speaker/famous_hevery.jpg
new file mode 100644
index 00000000..d2a77394
Binary files /dev/null and b/src/images/contribute/speaker/famous_hevery.jpg differ
diff --git a/src/images/contribute/speaker/famous_terzi.jpg b/src/images/contribute/speaker/famous_terzi.jpg
new file mode 100644
index 00000000..6bcbbe8b
Binary files /dev/null and b/src/images/contribute/speaker/famous_terzi.jpg differ
diff --git a/src/images/contribute/sponsor/os24_platea.jpg b/src/images/contribute/sponsor/os24_platea.jpg
new file mode 100644
index 00000000..b61315be
Binary files /dev/null and b/src/images/contribute/sponsor/os24_platea.jpg differ
diff --git a/src/images/homepage/imageGoNord.png b/src/images/homepage/imageGoNord.png
new file mode 100644
index 00000000..43a22d6a
Binary files /dev/null and b/src/images/homepage/imageGoNord.png differ
diff --git a/src/images/homepage/osday.jpg b/src/images/homepage/osday.jpg
new file mode 100644
index 00000000..e2c3e7b8
Binary files /dev/null and b/src/images/homepage/osday.jpg differ
diff --git a/src/images/homepage/shop-callout.png b/src/images/homepage/shop-callout.png
new file mode 100644
index 00000000..71272599
Binary files /dev/null and b/src/images/homepage/shop-callout.png differ
diff --git a/src/images/homepage/team.png b/src/images/homepage/team.png
new file mode 100644
index 00000000..4e621658
Binary files /dev/null and b/src/images/homepage/team.png differ
diff --git a/src/images/local-communities/misko_workshop.jpg b/src/images/local-communities/misko_workshop.jpg
new file mode 100644
index 00000000..29b304d6
Binary files /dev/null and b/src/images/local-communities/misko_workshop.jpg differ
diff --git a/src/images/local-communities/verona_public.jpg b/src/images/local-communities/verona_public.jpg
new file mode 100644
index 00000000..6e4bc7e2
Binary files /dev/null and b/src/images/local-communities/verona_public.jpg differ
diff --git a/src/images/logo.png b/src/images/logo.png
new file mode 100644
index 00000000..136f500e
Binary files /dev/null and b/src/images/logo.png differ
diff --git a/src/images/logo_dead.png b/src/images/logo_dead.png
new file mode 100644
index 00000000..cf060a50
Binary files /dev/null and b/src/images/logo_dead.png differ
diff --git a/src/images/membership/perk_box.svg b/src/images/membership/perk_box.svg
new file mode 100644
index 00000000..a7cd07f8
--- /dev/null
+++ b/src/images/membership/perk_box.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/membership/perk_early_access.svg b/src/images/membership/perk_early_access.svg
new file mode 100644
index 00000000..609f6085
--- /dev/null
+++ b/src/images/membership/perk_early_access.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/membership/perk_food.svg b/src/images/membership/perk_food.svg
new file mode 100644
index 00000000..f45f5b9d
--- /dev/null
+++ b/src/images/membership/perk_food.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/membership/perk_vote.svg b/src/images/membership/perk_vote.svg
new file mode 100644
index 00000000..272fe6d9
--- /dev/null
+++ b/src/images/membership/perk_vote.svg
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/press-kit/logo - background - rounded - flat background.png b/src/images/press-kit/logo - background - rounded - flat background.png
new file mode 100644
index 00000000..c72d9dc1
Binary files /dev/null and b/src/images/press-kit/logo - background - rounded - flat background.png differ
diff --git a/src/images/press-kit/logo - background - rounded - flat background.svg b/src/images/press-kit/logo - background - rounded - flat background.svg
new file mode 100644
index 00000000..a4fbf5b2
--- /dev/null
+++ b/src/images/press-kit/logo - background - rounded - flat background.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/press-kit/logo - no background - no padding.png b/src/images/press-kit/logo - no background - no padding.png
new file mode 100644
index 00000000..c2632a90
Binary files /dev/null and b/src/images/press-kit/logo - no background - no padding.png differ
diff --git a/src/images/press-kit/logo - no background - no padding.svg b/src/images/press-kit/logo - no background - no padding.svg
new file mode 100644
index 00000000..85295388
--- /dev/null
+++ b/src/images/press-kit/logo - no background - no padding.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/press-kit/logo white - no background - no padding.png b/src/images/press-kit/logo white - no background - no padding.png
new file mode 100644
index 00000000..214eb258
Binary files /dev/null and b/src/images/press-kit/logo white - no background - no padding.png differ
diff --git a/src/images/press-kit/logo white - no background - no padding.svg b/src/images/press-kit/logo white - no background - no padding.svg
new file mode 100644
index 00000000..790b495c
--- /dev/null
+++ b/src/images/press-kit/logo white - no background - no padding.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/tracking-cat/0-drop-shadow.svg b/src/images/tracking-cat/0-drop-shadow.svg
new file mode 100644
index 00000000..ea8e3de9
--- /dev/null
+++ b/src/images/tracking-cat/0-drop-shadow.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/tracking-cat/1-background.svg b/src/images/tracking-cat/1-background.svg
new file mode 100644
index 00000000..0fade586
--- /dev/null
+++ b/src/images/tracking-cat/1-background.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/tracking-cat/2-shadows.svg b/src/images/tracking-cat/2-shadows.svg
new file mode 100644
index 00000000..e1e92f6d
--- /dev/null
+++ b/src/images/tracking-cat/2-shadows.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/tracking-cat/3-highlights.svg b/src/images/tracking-cat/3-highlights.svg
new file mode 100644
index 00000000..4c19aabe
--- /dev/null
+++ b/src/images/tracking-cat/3-highlights.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/tracking-cat/4-left-eye.svg b/src/images/tracking-cat/4-left-eye.svg
new file mode 100644
index 00000000..06e1a947
--- /dev/null
+++ b/src/images/tracking-cat/4-left-eye.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/images/tracking-cat/4-right-eye.svg b/src/images/tracking-cat/4-right-eye.svg
new file mode 100644
index 00000000..66e70e90
--- /dev/null
+++ b/src/images/tracking-cat/4-right-eye.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/seo.ts b/src/lib/seo.ts
new file mode 100644
index 00000000..8276bda7
--- /dev/null
+++ b/src/lib/seo.ts
@@ -0,0 +1,73 @@
+import { type PortableTextBlock } from "sanity"
+
+// Define a more flexible type for text children
+interface TextChild {
+ _type: "span"
+ text: string
+ [key: string]: any // Allow additional properties
+}
+
+// Define a more flexible block type without extending PortableTextBlock
+interface PortableTextBlockExtended {
+ _type: string
+ _key?: string
+ children?: TextChild[]
+ [key: string]: any // Allow additional properties
+}
+
+/**
+ * Extracts and sanitizes the first paragraph from Sanity PortableText blocks
+ * for use in meta descriptions.
+ *
+ * @param description - Array of PortableText blocks
+ * @param maxLength - Maximum length of the output string (default: 155 characters)
+ * @returns Sanitized and truncated description string, or empty string if invalid input
+ */
+export function extractFirstParagraph(
+ description: PortableTextBlock[] | undefined | null,
+ maxLength = 155,
+): string {
+ if (!description?.length) return ""
+
+ // Find first text block using type assertion
+ const firstParagraph = description.find(
+ (block): block is any =>
+ block._type === "block" &&
+ Array.isArray((block as PortableTextBlockExtended).children) &&
+ ((block as PortableTextBlockExtended).children?.length ?? 0) > 0,
+ )
+
+ if (!firstParagraph) return ""
+
+ // Combine all text from child spans
+ const fullText =
+ firstParagraph.children
+ ?.filter((child: any) => child._type === "span" && typeof child.text === "string")
+ .map((child: any) => child.text)
+ .join(" ")
+ .trim() ?? ""
+
+ if (!fullText) return ""
+
+ // Sanitize the text
+ const sanitized = fullText
+ .replace(/[\r\n]+/g, " ") // Replace newlines with spaces
+ .replace(/\s+/g, " ") // Normalize multiple spaces
+ .replace(/[^\w\s-.,!?]/g, "") // Remove special characters except basic punctuation
+ .trim()
+
+ // Truncate and add ellipsis if necessary
+ if (sanitized.length <= maxLength) return sanitized
+
+ // Try to break at last complete sentence within limit
+ const truncated = sanitized.substring(0, maxLength)
+ const lastSentence = /^.*[.!?]/.exec(truncated)
+
+ if (lastSentence) {
+ return lastSentence[0].trim()
+ }
+
+ // If no sentence break found, break at last complete word
+ const lastSpace = truncated.lastIndexOf(" ")
+ return `${truncated.substring(0, lastSpace).trim()}...`
+}
diff --git a/src/lib/stripe.ts b/src/lib/stripe.ts
new file mode 100644
index 00000000..17b38d7a
--- /dev/null
+++ b/src/lib/stripe.ts
@@ -0,0 +1,30 @@
+import Stripe from "stripe"
+import { env } from "@/env.js"
+
+interface Env {
+ STRIPE_SECRET_KEY?: string
+ NODE_ENV?: string
+}
+
+const typedEnv = env as Partial
+
+let stripeInstance: Stripe | null = null
+
+export const getStripe = () => {
+ if (!typedEnv.STRIPE_SECRET_KEY) {
+ throw new Error("Called getStripe() but STRIPE_SECRET_KEY is not defined")
+ }
+
+ if (!stripeInstance) {
+ stripeInstance = new Stripe(typedEnv.STRIPE_SECRET_KEY, {
+ apiVersion: "2024-11-20.acacia",
+ })
+ }
+
+ return stripeInstance
+}
+
+// Utility function to check if Stripe is available
+export const isStripeAvailable = () => {
+ return !!typedEnv.STRIPE_SECRET_KEY
+}
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
new file mode 100644
index 00000000..ce884861
--- /dev/null
+++ b/src/lib/utils.ts
@@ -0,0 +1,9 @@
+import { env } from "@/env"
+import { type ClassValue, clsx } from "clsx"
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
+
+export const disableAnimations = env.NEXT_PUBLIC_DISABLE_ANIMATIONS === "true"
diff --git a/src/lib/utils/date.ts b/src/lib/utils/date.ts
new file mode 100644
index 00000000..42cd9b5f
--- /dev/null
+++ b/src/lib/utils/date.ts
@@ -0,0 +1,8 @@
+import { format as formatDate, parseISO } from "date-fns"
+
+export function formatDateTime(date: string | Date | undefined, formatStr = "MMMM d, yyyy"): string {
+ if (!date) return ""
+
+ const dateObj = typeof date === "string" ? parseISO(date) : date
+ return formatDate(dateObj, formatStr)
+}
diff --git a/src/lib/utils/metadata.ts b/src/lib/utils/metadata.ts
new file mode 100644
index 00000000..2ac29b54
--- /dev/null
+++ b/src/lib/utils/metadata.ts
@@ -0,0 +1,61 @@
+import type { Metadata } from "next"
+import { BASE_URL } from "./withFullUrl"
+
+interface MetadataProps {
+ title?: string
+ description?: string
+ overrides?: Partial
+}
+
+const defaultTitle = "Schrödinger Hat: Where we talk Open Source"
+const defaultDescription =
+ "Schrödinger Hat is a non-profit community advancing open-source software through inspiring events and impactful projects."
+
+export function constructMetadata({
+ title = defaultTitle,
+ description = defaultDescription,
+ overrides,
+}: MetadataProps = {}): Metadata {
+ const metadata: Metadata = {
+ title,
+ description,
+ metadataBase: new URL(BASE_URL),
+ openGraph: {
+ type: "website",
+ locale: "en_US",
+ url: BASE_URL,
+ siteName: "Schrödinger Hat",
+ title,
+ description,
+ images: [
+ {
+ url: "/og-image.png",
+ width: 1200,
+ height: 630,
+ alt: "Schrödinger Hat Open Source Community",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title,
+ description,
+ images: ["/og-image.png"],
+ creator: "@schrodinger_hat",
+ },
+ robots: "index, follow",
+ alternates: {
+ types: {
+ "application/rss+xml": [
+ {
+ url: "/feed.xml",
+ title: "Schrödinger Hat Blog RSS Feed",
+ },
+ ],
+ },
+ },
+ ...overrides,
+ }
+
+ return metadata
+}
diff --git a/src/lib/utils/sanity.ts b/src/lib/utils/sanity.ts
new file mode 100644
index 00000000..5ab85aad
--- /dev/null
+++ b/src/lib/utils/sanity.ts
@@ -0,0 +1,29 @@
+interface SanityTextBlock {
+ _type?: string
+ children?: Array<{
+ _type?: string
+ _key?: string
+ text?: string
+ marks?: string[]
+ }>
+}
+
+/**
+ * Converts Sanity Portable Text to plain text
+ */
+export function getPortableTextPlainText(blocks: SanityTextBlock[] | undefined): string {
+ if (!blocks) return ""
+
+ return blocks
+ .map((block) => {
+ if (block._type === "block" && block.children) {
+ return block.children
+ .map((child) => child.text)
+ .filter(Boolean)
+ .join("")
+ }
+ return ""
+ })
+ .filter(Boolean)
+ .join(" ")
+}
diff --git a/src/lib/utils/videoContent.ts b/src/lib/utils/videoContent.ts
new file mode 100644
index 00000000..a0f4286e
--- /dev/null
+++ b/src/lib/utils/videoContent.ts
@@ -0,0 +1,53 @@
+import type { Author, Video } from "@/sanity/sanity.types"
+import { urlFor } from "@/sanity/lib/image"
+
+/**
+ * Gets a formatted string of author names
+ */
+export function getAuthorNames(authors: Author[] | undefined): string {
+ if (!authors?.length) return ""
+ return authors.map((author) => `${author.firstName ?? ""} ${author.lastName ?? ""}`.trim()).join(", ")
+}
+
+/**
+ * Gets author initials safely
+ */
+export function getAuthorInitials(author: Author): string {
+ const firstInitial = author.firstName?.[0] ?? ""
+ const lastInitial = author.lastName?.[0] ?? ""
+ return `${firstInitial}${lastInitial}`
+}
+
+/**
+ * Gets the video thumbnail URL, falling back to YouTube thumbnail if none provided
+ */
+export function getVideoThumbnailUrl(video: Video, square = true): string {
+ if (!video) return ""
+
+ return video.thumbnail
+ ? urlFor(video.thumbnail)
+ .auto("format")
+ .width(square ? 400 : 600)
+ .height(square ? 400 : 300)
+ .url()
+ : video.youtubeId
+ ? `https://img.youtube.com/vi/${video.youtubeId}/mqdefault.jpg`
+ : ""
+}
+
+/**
+ * Gets the full name of an author
+ */
+export function getAuthorFullName(author: Author, withPronouns = false): string {
+ const namePieces = [author.firstName, author.lastName]
+ if (withPronouns && author.pronouns) namePieces.push(`(${author.pronouns})`)
+ return namePieces.filter(Boolean).join(" ").trim()
+}
+
+/**
+ * Give a youtube url, extract the video id
+ */
+export function getYoutubeVideoId(url: string): string {
+ const urlParts = url.split("v=")
+ return urlParts[urlParts.length - 1] ?? ""
+}
diff --git a/src/lib/utils/withFullUrl.ts b/src/lib/utils/withFullUrl.ts
new file mode 100644
index 00000000..dfe416ef
--- /dev/null
+++ b/src/lib/utils/withFullUrl.ts
@@ -0,0 +1,12 @@
+const BASE_URL =
+ process.env.NODE_ENV === "production"
+ ? `https://${process.env.NEXT_PUBLIC_VERCEL_URL}`
+ : "http://localhost:3000"
+
+const INCLUDES_FORWARD_SLASH_AT_START_REGEX = /^\/(.|\n)*$/
+const INCLUDES_FORWARD_SLASH_AT_START = (string: string) => INCLUDES_FORWARD_SLASH_AT_START_REGEX.test(string)
+
+const withFullUrl = (path: string) => `${BASE_URL}${!INCLUDES_FORWARD_SLASH_AT_START(path) ? "/" : ""}${path}`
+
+export default withFullUrl
+export { BASE_URL, INCLUDES_FORWARD_SLASH_AT_START_REGEX, INCLUDES_FORWARD_SLASH_AT_START }
diff --git a/src/main.ts b/src/main.ts
deleted file mode 100755
index a76e0c42..00000000
--- a/src/main.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createApp } from 'vue'
-import { createHead } from '@unhead/vue'
-import { createI18n } from 'vue-i18n'
-import App from '@/App.vue'
-import router from '@/router'
-import messages from '@/i18n/messages'
-import './registerServiceWorker'
-import 'virtual:uno.css'
-import '@unocss/reset/tailwind.css'
-
-const head = createHead()
-
-const i18n = createI18n({
- legacy: false,
- locale: navigator.language.substring(0, 2),
- fallbackLocale: 'en',
- messages,
-})
-
-const app = createApp(App)
-
-app.use(head)
-app.use(i18n)
-app.use(router)
-app.mount('#app')
diff --git a/src/pages/CodeConduct.vue b/src/pages/CodeConduct.vue
deleted file mode 100644
index fde1e95a..00000000
--- a/src/pages/CodeConduct.vue
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
- Code of conduct
-
-
-
- {{ title }}
-
-
- {{ copy }}
-
-
-
-
-
diff --git a/src/pages/EventView.vue b/src/pages/EventView.vue
deleted file mode 100644
index 0d01b2bb..00000000
--- a/src/pages/EventView.vue
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-
-
- Add loader
-
-
-
-
- {{ t(`events.${eventKey}.title`) }}
-
-
-
- {{ t(`events.${eventKey}.subtitle`) }}
-
-
-
-
-
-
- Community Sponsors
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/PageEvents.vue b/src/pages/PageEvents.vue
deleted file mode 100644
index 261af0ee..00000000
--- a/src/pages/PageEvents.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
-
- {{ $t(`navbar.events`) }}
-
-
-
-
- {{ $t('page.events.copy.tickets') }}
-
-
-
-
-
-
-
-
- {{ $t('page.events.copy.tickets') }}
-
-
-
-
-
-
{{ $t('page.events.copy.form.items.no-result.message') }}
-
{{ $t('page.events.copy.form.items.no-result.cta') }}
-
-
-
-
-
diff --git a/src/pages/PageHome.vue b/src/pages/PageHome.vue
deleted file mode 100755
index 70920ae3..00000000
--- a/src/pages/PageHome.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
- {{ $t('main.h1') }}
-
-
- {{ $t('main.h2') }}
-
-
-
- {{ text }}
-
-
-
-
-
-
diff --git a/src/pages/TeamMember.vue b/src/pages/TeamMember.vue
deleted file mode 100644
index c8900466..00000000
--- a/src/pages/TeamMember.vue
+++ /dev/null
@@ -1,178 +0,0 @@
-
-
-
-
- Loading...
-
-
-
-
- {{ $t(`team.${member}.name`) }}
-
-
-
-
-
-
-
-
- {{ t('redirect.back') }}
-
-
-
-
-
-
-
diff --git a/src/pages/TeamPage.vue b/src/pages/TeamPage.vue
deleted file mode 100644
index c1fd87f9..00000000
--- a/src/pages/TeamPage.vue
+++ /dev/null
@@ -1,234 +0,0 @@
-
-
-
-
-
-
-
Schrödinger Hat's fam
-
-
-
-
-
-
-
-
-
-
- {{ $t(`team.${member}.name`) }}
-
-
-
-
- {{ t('redirect.profile') }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/registerServiceWorker.ts b/src/registerServiceWorker.ts
deleted file mode 100755
index 2286ea6e..00000000
--- a/src/registerServiceWorker.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/* eslint-disable no-console */
-
-import { register } from 'register-service-worker'
-
-if (import.meta.env.MODE === 'production') {
- register(`${import.meta.env.BASE_URL}service-worker.ts`, {
- ready() {
- console.log(
- 'App is being served from cache by a service worker.\n'
- + 'For more details, visit https://goo.gl/AFskqB',
- )
- },
- registered() {
- console.log('Service worker has been registered.')
- },
- cached() {
- console.log('Content has been cached for offline use.')
- },
- updatefound() {
- console.log('New content is downloading.')
- },
- updated() {
- console.log('New content is available; please refresh.')
- },
- offline() {
- console.log('No internet connection found. App is running in offline mode.')
- },
- error(error) {
- console.error('Error during service worker registration:', error)
- },
- })
-}
diff --git a/src/router.ts b/src/router.ts
deleted file mode 100755
index 4ec31da1..00000000
--- a/src/router.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRouter, createWebHistory } from 'vue-router'
-
-const routes = [
- {
- path: '/',
- name: 'Home',
- component: () => import('@/pages/PageHome.vue'),
- },
- {
- path: '/code-of-conduct',
- name: 'CodeOfConduct',
- component: () => import('@/pages/CodeConduct.vue'),
- },
- {
- path: '/events',
- name: 'Events',
- component: () => import('@/pages/PageEvents.vue'),
- },
- {
- path: '/events/:event',
- name: 'EventView',
- component: () => import('@/pages/EventView.vue'),
- },
- {
- path: '/team',
- name: 'Team',
- component: () => import('@/pages/TeamPage.vue'),
- },
- {
- path: '/team/:member',
- name: 'TeamMember',
- component: () => import('@/pages/TeamMember.vue'),
- },
-]
-
-const router = createRouter({
- history: createWebHistory(),
- routes,
- scrollBehavior() {
- return {
- top: 0,
- behavior: 'smooth',
- }
- },
-})
-
-export default router
diff --git a/src/sanity/env.ts b/src/sanity/env.ts
new file mode 100644
index 00000000..6a67be75
--- /dev/null
+++ b/src/sanity/env.ts
@@ -0,0 +1,19 @@
+export const apiVersion = process.env.NEXT_PUBLIC_SANITY_API_VERSION ?? "2024-11-15"
+
+export const dataset = assertValue(
+ process.env.NEXT_PUBLIC_SANITY_DATASET,
+ "Missing environment variable: NEXT_PUBLIC_SANITY_DATASET",
+)
+
+export const projectId = assertValue(
+ process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
+ "Missing environment variable: NEXT_PUBLIC_SANITY_PROJECT_ID",
+)
+
+function assertValue(v: T | undefined, errorMessage: string): T {
+ if (v === undefined) {
+ throw new Error(errorMessage)
+ }
+
+ return v
+}
diff --git a/src/sanity/icons/schemaIcons.tsx b/src/sanity/icons/schemaIcons.tsx
new file mode 100644
index 00000000..5453536f
--- /dev/null
+++ b/src/sanity/icons/schemaIcons.tsx
@@ -0,0 +1,28 @@
+import {
+ Video01Icon,
+ Calendar03Icon,
+ UserIcon,
+ UserMultipleIcon,
+ Briefcase01Icon,
+ Building02Icon,
+ Notebook02Icon,
+ CodeIcon,
+ QuestionIcon,
+ Layers02Icon,
+ LicenseDraftIcon,
+} from "hugeicons-react"
+
+// Create a mapping of schema type to icon component
+export const schemaIcons = {
+ video: Video01Icon,
+ event: Calendar03Icon,
+ author: UserIcon,
+ teamMember: UserMultipleIcon,
+ faq: QuestionIcon,
+ jobPost: Briefcase01Icon,
+ page: Notebook02Icon,
+ partner: Building02Icon,
+ project: CodeIcon,
+ eventSeries: Layers02Icon,
+ blogPost: LicenseDraftIcon,
+} as const
diff --git a/src/sanity/lib/client.ts b/src/sanity/lib/client.ts
new file mode 100644
index 00000000..41a11ead
--- /dev/null
+++ b/src/sanity/lib/client.ts
@@ -0,0 +1,10 @@
+import { createClient } from "next-sanity"
+
+import { apiVersion, dataset, projectId } from "../env"
+
+export const sanityClient = createClient({
+ projectId,
+ dataset,
+ apiVersion,
+ useCdn: true, // Set to false if statically generating pages, using ISR or tag-based revalidation
+})
diff --git a/src/sanity/lib/image.ts b/src/sanity/lib/image.ts
new file mode 100644
index 00000000..4bba1cc7
--- /dev/null
+++ b/src/sanity/lib/image.ts
@@ -0,0 +1,8 @@
+import imageUrlBuilder from "@sanity/image-url"
+import { sanityClient } from "./client"
+
+const builder = imageUrlBuilder(sanityClient)
+
+export function urlFor(source: any) {
+ return builder.image(source)
+}
diff --git a/src/sanity/lib/live.ts b/src/sanity/lib/live.ts
new file mode 100644
index 00000000..ef71138e
--- /dev/null
+++ b/src/sanity/lib/live.ts
@@ -0,0 +1,13 @@
+// Querying with "sanityFetch" will keep content automatically updated
+// Before using it, import and render " " in your layout, see
+// https://github.com/sanity-io/next-sanity#live-content-api for more information.
+import { defineLive } from "next-sanity"
+import { sanityClient } from "./client"
+
+export const { sanityFetch, SanityLive } = defineLive({
+ client: sanityClient.withConfig({
+ // Live content is currently only available on the experimental API
+ // https://www.sanity.io/docs/api-versioning
+ apiVersion: "vX",
+ }),
+})
diff --git a/src/sanity/sanity.types.ts b/src/sanity/sanity.types.ts
new file mode 100644
index 00000000..112bf8d4
--- /dev/null
+++ b/src/sanity/sanity.types.ts
@@ -0,0 +1,690 @@
+/**
+ * ---------------------------------------------------------------------------------
+ * This file has been generated by Sanity TypeGen.
+ * Command: `sanity typegen generate`
+ *
+ * Any modifications made directly to this file will be overwritten the next time
+ * the TypeScript definitions are generated. Please make changes to the Sanity
+ * schema definitions and/or GROQ queries if you need to update these types.
+ *
+ * For more information on how to use Sanity TypeGen, visit the official documentation:
+ * https://www.sanity.io/docs/sanity-typegen
+ * ---------------------------------------------------------------------------------
+ */
+
+// Source: schema.json
+export type SanityImagePaletteSwatch = {
+ _type: "sanity.imagePaletteSwatch"
+ background?: string
+ foreground?: string
+ population?: number
+ title?: string
+}
+
+export type SanityImagePalette = {
+ _type: "sanity.imagePalette"
+ darkMuted?: SanityImagePaletteSwatch
+ lightVibrant?: SanityImagePaletteSwatch
+ darkVibrant?: SanityImagePaletteSwatch
+ vibrant?: SanityImagePaletteSwatch
+ dominant?: SanityImagePaletteSwatch
+ lightMuted?: SanityImagePaletteSwatch
+ muted?: SanityImagePaletteSwatch
+}
+
+export type SanityImageDimensions = {
+ _type: "sanity.imageDimensions"
+ height?: number
+ width?: number
+ aspectRatio?: number
+}
+
+export type SanityFileAsset = {
+ _id: string
+ _type: "sanity.fileAsset"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ originalFilename?: string
+ label?: string
+ title?: string
+ description?: string
+ altText?: string
+ sha1hash?: string
+ extension?: string
+ mimeType?: string
+ size?: number
+ assetId?: string
+ uploadId?: string
+ path?: string
+ url?: string
+ source?: SanityAssetSourceData
+}
+
+export type BlogPost = {
+ _id: string
+ _type: "blogPost"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ slug?: Slug
+ authors?: Array<{
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ _key: string
+ [internalGroqTypeReferenceTo]?: "author"
+ }>
+ excerpt?: string
+ headerImage?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ caption?: string
+ _type: "image"
+ }
+ publishedAt?: string
+ content?: Array<
+ | {
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }
+ | {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ alt?: string
+ caption?: string
+ _type: "image"
+ _key: string
+ }
+ | ({
+ _key: string
+ } & Code)
+ >
+}
+
+export type JobPost = {
+ _id: string
+ _type: "jobPost"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ description?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ location?: string
+ effort?: "low" | "moderate" | "elevate"
+ isActive?: boolean
+ publishedAt?: string
+}
+
+export type Project = {
+ _id: string
+ _type: "project"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ slug?: Slug
+ description?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ url?: string
+ repositoryUrl?: string
+ showStars?: boolean
+ techStack?: Array
+ launchedAt?: string
+ lookingFor?: Array
+ language?: "typescript" | "javascript" | "python" | "go" | "rust"
+}
+
+export type Faq = {
+ _id: string
+ _type: "faq"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ question?: string
+ answer?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ groupKey?: string
+ orderRank?: string
+}
+
+export type TeamMember = {
+ _id: string
+ _type: "teamMember"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ name?: string
+ surname?: string
+ role?: string
+ image?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ backgroundColor?: string
+ _type: "image"
+ }
+ orderRank?: string
+}
+
+export type Author = {
+ _id: string
+ _type: "author"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ firstName?: string
+ lastName?: string
+ pronouns?: string
+ title?: string
+ photo?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ _type: "image"
+ }
+ biography?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ slug?: Slug
+}
+
+export type Video = {
+ _id: string
+ _type: "video"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ shortTitle?: string
+ slug?: Slug
+ authors?: Array<{
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ _key: string
+ [internalGroqTypeReferenceTo]?: "author"
+ }>
+ youtubeId?: string
+ thumbnail?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ _type: "image"
+ }
+ description?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ whyShouldWatch?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ tags?: Array
+ publishedAt?: string
+ categories?: Array
+ featured?: boolean
+ order?: number
+}
+
+export type Page = {
+ _id: string
+ _type: "page"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ slug?: Slug
+ publishedAt?: string
+ content?: Array<
+ | {
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }
+ | {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ alt?: string
+ caption?: string
+ _type: "image"
+ _key: string
+ }
+ >
+ headerImage?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ _type: "image"
+ }
+ seo?: {
+ metaTitle?: string
+ metaDescription?: string
+ metaKeywords?: Array
+ }
+}
+
+export type Partner = {
+ _id: string
+ _type: "partner"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ name?: string
+ image?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ _type: "image"
+ }
+ description?: string
+ isBusinessPartner?: boolean
+ businessTier?: "silver" | "gold" | "platinum" | "diamond"
+ nonBusinessType?: "community" | "media"
+ website?: string
+ partnershipPeriod?: {
+ startDate?: string
+ endDate?: string
+ }
+ contact?: {
+ name?: string
+ email?: string
+ }
+ orderRank?: string
+ visibility?: Array
+}
+
+export type Event = {
+ _id: string
+ _type: "event"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ series?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "eventSeries"
+ }
+ slug?: Slug
+ organiser?: string
+ abstract?: Array<{
+ children?: Array<{
+ marks?: Array
+ text?: string
+ _type: "span"
+ _key: string
+ }>
+ style?: "normal" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "blockquote"
+ listItem?: "bullet" | "number"
+ markDefs?: Array<{
+ href?: string
+ _type: "link"
+ _key: string
+ }>
+ level?: number
+ _type: "block"
+ _key: string
+ }>
+ cover?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ _type: "image"
+ }
+ background?: {
+ asset?: {
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ [internalGroqTypeReferenceTo]?: "sanity.imageAsset"
+ }
+ hotspot?: SanityImageHotspot
+ crop?: SanityImageCrop
+ _type: "image"
+ }
+ cardImage?: "background" | "cover"
+ location?: {
+ name?: string
+ address?: string
+ city?: string
+ coordinates?: Geopoint
+ }
+ eventPeriod?: {
+ startDate?: string
+ endDate?: string
+ }
+ cta?: {
+ text?: string
+ url?: string
+ }
+ coolBecause?: Array
+ authors?: Array<{
+ _ref: string
+ _type: "reference"
+ _weak?: boolean
+ _key: string
+ [internalGroqTypeReferenceTo]?: "author"
+ }>
+}
+
+export type Geopoint = {
+ _type: "geopoint"
+ lat?: number
+ lng?: number
+ alt?: number
+}
+
+export type SanityImageCrop = {
+ _type: "sanity.imageCrop"
+ top?: number
+ bottom?: number
+ left?: number
+ right?: number
+}
+
+export type SanityImageHotspot = {
+ _type: "sanity.imageHotspot"
+ x?: number
+ y?: number
+ height?: number
+ width?: number
+}
+
+export type SanityImageAsset = {
+ _id: string
+ _type: "sanity.imageAsset"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ originalFilename?: string
+ label?: string
+ title?: string
+ description?: string
+ altText?: string
+ sha1hash?: string
+ extension?: string
+ mimeType?: string
+ size?: number
+ assetId?: string
+ uploadId?: string
+ path?: string
+ url?: string
+ metadata?: SanityImageMetadata
+ source?: SanityAssetSourceData
+}
+
+export type SanityAssetSourceData = {
+ _type: "sanity.assetSourceData"
+ name?: string
+ id?: string
+ url?: string
+}
+
+export type SanityImageMetadata = {
+ _type: "sanity.imageMetadata"
+ location?: Geopoint
+ dimensions?: SanityImageDimensions
+ palette?: SanityImagePalette
+ lqip?: string
+ blurHash?: string
+ hasAlpha?: boolean
+ isOpaque?: boolean
+}
+
+export type EventSeries = {
+ _id: string
+ _type: "eventSeries"
+ _createdAt: string
+ _updatedAt: string
+ _rev: string
+ title?: string
+ slug?: Slug
+ description?: string
+}
+
+export type Slug = {
+ _type: "slug"
+ current?: string
+ source?: string
+}
+
+export type Code = {
+ _type: "code"
+ language?: string
+ filename?: string
+ code?: string
+ highlightedLines?: Array
+}
+
+export type Color = {
+ _type: "color"
+ hex?: string
+ alpha?: number
+ hsl?: HslaColor
+ hsv?: HsvaColor
+ rgb?: RgbaColor
+}
+
+export type RgbaColor = {
+ _type: "rgbaColor"
+ r?: number
+ g?: number
+ b?: number
+ a?: number
+}
+
+export type HsvaColor = {
+ _type: "hsvaColor"
+ h?: number
+ s?: number
+ v?: number
+ a?: number
+}
+
+export type HslaColor = {
+ _type: "hslaColor"
+ h?: number
+ s?: number
+ l?: number
+ a?: number
+}
+
+export type AllSanitySchemaTypes =
+ | SanityImagePaletteSwatch
+ | SanityImagePalette
+ | SanityImageDimensions
+ | SanityFileAsset
+ | BlogPost
+ | JobPost
+ | Project
+ | Faq
+ | TeamMember
+ | Author
+ | Video
+ | Page
+ | Partner
+ | Event
+ | Geopoint
+ | SanityImageCrop
+ | SanityImageHotspot
+ | SanityImageAsset
+ | SanityAssetSourceData
+ | SanityImageMetadata
+ | EventSeries
+ | Slug
+ | Code
+ | Color
+ | RgbaColor
+ | HsvaColor
+ | HslaColor
+export declare const internalGroqTypeReferenceTo: unique symbol
diff --git a/src/sanity/schema.json b/src/sanity/schema.json
new file mode 100644
index 00000000..263e5448
--- /dev/null
+++ b/src/sanity/schema.json
@@ -0,0 +1,4477 @@
+[
+ {
+ "name": "sanity.imagePaletteSwatch",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imagePaletteSwatch"
+ }
+ },
+ "background": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "foreground": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "population": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.imagePalette",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imagePalette"
+ }
+ },
+ "darkMuted": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ },
+ "lightVibrant": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ },
+ "darkVibrant": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ },
+ "vibrant": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ },
+ "dominant": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ },
+ "lightMuted": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ },
+ "muted": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePaletteSwatch"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.imageDimensions",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imageDimensions"
+ }
+ },
+ "height": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "width": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "aspectRatio": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.fileAsset",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.fileAsset"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "originalFilename": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "label": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "altText": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "sha1hash": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "extension": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "mimeType": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "size": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "assetId": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "uploadId": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "path": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "url": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "source": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.assetSourceData"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "blogPost",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "blogPost"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ },
+ "authors": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "author",
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "excerpt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "headerImage": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "caption": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "publishedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "content": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "union",
+ "of": [
+ {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "alt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "caption": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "rest": {
+ "type": "inline",
+ "name": "code"
+ }
+ }
+ ]
+ }
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "jobPost",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "jobPost"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "location": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "effort": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "low"
+ },
+ {
+ "type": "string",
+ "value": "moderate"
+ },
+ {
+ "type": "string",
+ "value": "elevate"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "isActive": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ },
+ "publishedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "project",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "project"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "url": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "repositoryUrl": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "showStars": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ },
+ "techStack": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "launchedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "lookingFor": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "language": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "typescript"
+ },
+ {
+ "type": "string",
+ "value": "javascript"
+ },
+ {
+ "type": "string",
+ "value": "python"
+ },
+ {
+ "type": "string",
+ "value": "go"
+ },
+ {
+ "type": "string",
+ "value": "rust"
+ }
+ ]
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "faq",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "faq"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "question": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "answer": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "groupKey": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "orderRank": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "teamMember",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "teamMember"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "surname": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "role": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "image": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "backgroundColor": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "orderRank": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "author",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "author"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "firstName": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "lastName": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "pronouns": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "photo": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "biography": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "video",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "video"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "shortTitle": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ },
+ "authors": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "author",
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "youtubeId": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "thumbnail": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "whyShouldWatch": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "tags": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "publishedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "categories": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "featured": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ },
+ "order": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "page",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "page"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ },
+ "publishedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "content": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "union",
+ "of": [
+ {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "alt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "caption": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ },
+ "optional": true
+ },
+ "headerImage": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "seo": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "metaTitle": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "metaDescription": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "metaKeywords": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ }
+ }
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "partner",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "partner"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "name": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "image": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "isBusinessPartner": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ },
+ "businessTier": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "silver"
+ },
+ {
+ "type": "string",
+ "value": "gold"
+ },
+ {
+ "type": "string",
+ "value": "platinum"
+ },
+ {
+ "type": "string",
+ "value": "diamond"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "nonBusinessType": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "community"
+ },
+ {
+ "type": "string",
+ "value": "media"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "website": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "partnershipPeriod": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "startDate": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "endDate": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ "optional": true
+ },
+ "contact": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "name": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "email": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ "optional": true
+ },
+ "orderRank": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "visibility": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "event",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "event"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "series": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "eventSeries"
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ },
+ "organiser": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "abstract": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "children": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "marks": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "span"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "style": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "normal"
+ },
+ {
+ "type": "string",
+ "value": "h1"
+ },
+ {
+ "type": "string",
+ "value": "h2"
+ },
+ {
+ "type": "string",
+ "value": "h3"
+ },
+ {
+ "type": "string",
+ "value": "h4"
+ },
+ {
+ "type": "string",
+ "value": "h5"
+ },
+ {
+ "type": "string",
+ "value": "h6"
+ },
+ {
+ "type": "string",
+ "value": "blockquote"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "listItem": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "bullet"
+ },
+ {
+ "type": "string",
+ "value": "number"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "markDefs": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "href": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "link"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "level": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "block"
+ }
+ }
+ },
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "cover": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "background": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "asset": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "sanity.imageAsset"
+ },
+ "optional": true
+ },
+ "hotspot": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageHotspot"
+ },
+ "optional": true
+ },
+ "crop": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageCrop"
+ },
+ "optional": true
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "image"
+ }
+ }
+ }
+ },
+ "optional": true
+ },
+ "cardImage": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "union",
+ "of": [
+ {
+ "type": "string",
+ "value": "background"
+ },
+ {
+ "type": "string",
+ "value": "cover"
+ }
+ ]
+ },
+ "optional": true
+ },
+ "location": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "name": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "address": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "city": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "coordinates": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "geopoint"
+ },
+ "optional": true
+ }
+ }
+ },
+ "optional": true
+ },
+ "eventPeriod": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "startDate": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "endDate": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ "optional": true
+ },
+ "cta": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "text": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "url": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ "optional": true
+ },
+ "coolBecause": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "string"
+ }
+ },
+ "optional": true
+ },
+ "authors": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "object",
+ "attributes": {
+ "_ref": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "reference"
+ }
+ },
+ "_weak": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ },
+ "dereferencesTo": "author",
+ "rest": {
+ "type": "object",
+ "attributes": {
+ "_key": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "geopoint",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "geopoint"
+ }
+ },
+ "lat": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "lng": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "alt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.imageCrop",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imageCrop"
+ }
+ },
+ "top": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "bottom": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "left": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "right": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.imageHotspot",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imageHotspot"
+ }
+ },
+ "x": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "y": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "height": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "width": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.imageAsset",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imageAsset"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "originalFilename": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "label": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "altText": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "sha1hash": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "extension": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "mimeType": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "size": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "assetId": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "uploadId": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "path": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "url": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "metadata": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageMetadata"
+ },
+ "optional": true
+ },
+ "source": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.assetSourceData"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "sanity.assetSourceData",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.assetSourceData"
+ }
+ },
+ "name": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "url": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "sanity.imageMetadata",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "sanity.imageMetadata"
+ }
+ },
+ "location": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "geopoint"
+ },
+ "optional": true
+ },
+ "dimensions": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imageDimensions"
+ },
+ "optional": true
+ },
+ "palette": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "sanity.imagePalette"
+ },
+ "optional": true
+ },
+ "lqip": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "blurHash": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "hasAlpha": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ },
+ "isOpaque": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "boolean"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "eventSeries",
+ "type": "document",
+ "attributes": {
+ "_id": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "eventSeries"
+ }
+ },
+ "_createdAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_updatedAt": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "_rev": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ }
+ },
+ "title": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "slug": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "slug"
+ },
+ "optional": true
+ },
+ "description": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ },
+ {
+ "name": "slug",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "slug"
+ }
+ },
+ "current": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "source": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "code",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "code"
+ }
+ },
+ "language": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "filename": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "code": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "highlightedLines": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "array",
+ "of": {
+ "type": "number"
+ }
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "color",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "color"
+ }
+ },
+ "hex": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string"
+ },
+ "optional": true
+ },
+ "alpha": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "hsl": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "hslaColor"
+ },
+ "optional": true
+ },
+ "hsv": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "hsvaColor"
+ },
+ "optional": true
+ },
+ "rgb": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "inline",
+ "name": "rgbaColor"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "rgbaColor",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "rgbaColor"
+ }
+ },
+ "r": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "g": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "b": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "a": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "hsvaColor",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "hsvaColor"
+ }
+ },
+ "h": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "s": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "v": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "a": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ },
+ {
+ "name": "hslaColor",
+ "type": "type",
+ "value": {
+ "type": "object",
+ "attributes": {
+ "_type": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "string",
+ "value": "hslaColor"
+ }
+ },
+ "h": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "s": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "l": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ },
+ "a": {
+ "type": "objectAttribute",
+ "value": {
+ "type": "number"
+ },
+ "optional": true
+ }
+ }
+ }
+ }
+]
diff --git a/src/sanity/schemaTypes/authorType.ts b/src/sanity/schemaTypes/authorType.ts
new file mode 100644
index 00000000..34e7676a
--- /dev/null
+++ b/src/sanity/schemaTypes/authorType.ts
@@ -0,0 +1,83 @@
+import { defineType } from "sanity"
+
+export const authorType = defineType({
+ name: "author",
+ title: "Author",
+ type: "document",
+ fields: [
+ {
+ name: "firstName",
+ title: "First Name",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "lastName",
+ title: "Last Name",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "pronouns",
+ title: "Pronouns",
+ type: "string",
+ description: "e.g., they/them, she/her, he/him",
+ },
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ },
+ {
+ name: "photo",
+ title: "Photo",
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ },
+ {
+ name: "biography",
+ type: "array",
+ title: "Biography",
+ of: [
+ {
+ type: "block",
+ },
+ ],
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: (document) => {
+ return [document.firstName, document.lastName].filter(Boolean).join("-")
+ },
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ ],
+ preview: {
+ select: {
+ firstName: "firstName",
+ lastName: "lastName",
+ pronouns: "pronouns",
+ title: "title",
+ image: "photo",
+ },
+ prepare: (selection) => ({
+ title: `${selection.firstName} ${selection.lastName}${selection.pronouns ? ` (${selection.pronouns})` : ""}`,
+ subtitle: selection.title,
+ media: selection.image,
+ }),
+ },
+ orderings: [
+ {
+ title: "First Name",
+ name: "firstNameAsc",
+ by: [{ field: "firstName", direction: "asc" }],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/blogPostType.ts b/src/sanity/schemaTypes/blogPostType.ts
new file mode 100644
index 00000000..bb810e5e
--- /dev/null
+++ b/src/sanity/schemaTypes/blogPostType.ts
@@ -0,0 +1,141 @@
+import { defineType } from "sanity"
+
+export const blogPostType = defineType({
+ name: "blogPost",
+ title: "Blog Post",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: "title",
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "authors",
+ title: "Authors",
+ type: "array",
+ of: [
+ {
+ type: "reference",
+ to: [{ type: "author" }],
+ },
+ ],
+ validation: (Rule) => Rule.required().min(1),
+ },
+ {
+ name: "excerpt",
+ title: "Excerpt",
+ type: "text",
+ description:
+ "A short summary of the blog post. This will be used in the RSS feed and social media previews.",
+ validation: (Rule) => Rule.max(200),
+ },
+ {
+ name: "headerImage",
+ title: "Header Image",
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ fields: [
+ {
+ name: "caption",
+ type: "string",
+ title: "Caption",
+ description: "Optional caption to display below the header image",
+ },
+ ],
+ },
+ {
+ name: "publishedAt",
+ title: "Published At",
+ type: "datetime",
+ initialValue: () => new Date().toISOString(),
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "content",
+ type: "array",
+ title: "Content",
+ of: [
+ {
+ type: "block",
+ },
+ {
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ fields: [
+ {
+ name: "alt",
+ type: "string",
+ title: "Alternative Text",
+ description: "Important for SEO and accessibility.",
+ },
+ {
+ name: "caption",
+ type: "string",
+ title: "Caption",
+ description: "Optional caption for the image",
+ },
+ ],
+ },
+ {
+ type: "code",
+ options: {
+ language: "typescript",
+ languageAlternatives: [
+ { title: "TypeScript", value: "typescript" },
+ { title: "JavaScript", value: "javascript" },
+ { title: "HTML", value: "html" },
+ { title: "CSS", value: "css" },
+ { title: "JSON", value: "json" },
+ { title: "Bash", value: "bash" },
+ { title: "Markdown", value: "markdown" },
+ ],
+ withFilename: true,
+ },
+ },
+ ],
+ validation: (Rule) => Rule.required(),
+ },
+ ],
+ preview: {
+ select: {
+ title: "title",
+ author0: "authors.0.firstName",
+ author1: "authors.1.firstName",
+ media: "headerImage",
+ },
+ prepare: ({ title, author0, author1, media }) => {
+ const authors = [author0, author1].filter(Boolean)
+ const subtitle =
+ authors.length > 0 ? `by ${authors.join(" & ")}${authors.length > 2 ? " & others" : ""}` : ""
+
+ return {
+ title,
+ subtitle,
+ media,
+ }
+ },
+ },
+ orderings: [
+ {
+ title: "Publication Date, New",
+ name: "publishedAtDesc",
+ by: [{ field: "publishedAt", direction: "desc" }],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/eventSeriesType.ts b/src/sanity/schemaTypes/eventSeriesType.ts
new file mode 100644
index 00000000..e3c43aa6
--- /dev/null
+++ b/src/sanity/schemaTypes/eventSeriesType.ts
@@ -0,0 +1,35 @@
+import { defineType } from "sanity"
+
+export const eventSeriesType = defineType({
+ name: "eventSeries",
+ title: "Event Series",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: "title",
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "description",
+ title: "Description",
+ type: "text",
+ },
+ ],
+ preview: {
+ select: {
+ title: "title",
+ },
+ },
+})
diff --git a/src/sanity/schemaTypes/eventType.ts b/src/sanity/schemaTypes/eventType.ts
new file mode 100644
index 00000000..a6db0949
--- /dev/null
+++ b/src/sanity/schemaTypes/eventType.ts
@@ -0,0 +1,207 @@
+import { defineType } from "sanity"
+
+export const eventType = defineType({
+ name: "event",
+ title: "Event",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "series",
+ title: "Series",
+ type: "reference",
+ to: [{ type: "eventSeries" }],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: async (doc: { series?: { _ref: string }; title?: string }, { getClient }) => {
+ const client = getClient({ apiVersion: "2023-05-03" })
+
+ if (!doc.series || !doc.title) return ""
+
+ const series = await client.fetch(`*[_type == "eventSeries" && _id == $seriesId][0].slug.current`, {
+ seriesId: doc.series._ref,
+ })
+
+ return series ? `${series}/${doc.title}` : doc.title
+ },
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "organiser",
+ title: "Organiser",
+ type: "string",
+ initialValue: "Schrödinger Hat",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "abstract",
+ type: "array",
+ title: "Abstract",
+ of: [
+ {
+ type: "block",
+ },
+ ],
+ },
+ {
+ name: "cover",
+ title: "Cover",
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ },
+ {
+ name: "background",
+ title: "Background",
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "cardImage",
+ title: "Card Image",
+ description: "The image used for the event card, social sharing always uses cover if available",
+ type: "string",
+ options: {
+ list: [
+ { title: "Background", value: "background" },
+ { title: "Cover", value: "cover" },
+ ],
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "location",
+ title: "Location",
+ type: "object",
+ fields: [
+ {
+ name: "name",
+ title: "Location Name",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "address",
+ title: "Address",
+ type: "string",
+ },
+ {
+ name: "city",
+ title: "City",
+ type: "string",
+ },
+ {
+ name: "coordinates",
+ title: "Coordinates",
+ type: "geopoint",
+ },
+ ],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "eventPeriod",
+ title: "Event Period",
+ type: "object",
+ fields: [
+ {
+ name: "startDate",
+ title: "Start Date",
+ type: "datetime",
+ },
+ {
+ name: "endDate",
+ title: "End Date",
+ type: "datetime",
+ },
+ ],
+ },
+ {
+ name: "cta",
+ title: "Call to Action",
+ type: "object",
+ fields: [
+ {
+ name: "text",
+ title: "Text",
+ type: "string",
+ },
+ {
+ name: "url",
+ title: "URL",
+ type: "url",
+ },
+ ],
+ },
+ {
+ name: "coolBecause",
+ title: "Cool Because",
+ description: "Explain why visitors should join this event (marketing pitch)",
+ type: "array",
+ of: [
+ {
+ type: "string",
+ },
+ ],
+ validation: (Rule) => Rule.max(3).warning("Consider keeping it to 3 key points"),
+ },
+ {
+ name: "authors",
+ title: "Authors",
+ type: "array",
+ of: [
+ {
+ type: "reference",
+ to: [{ type: "author" }],
+ },
+ ],
+ validation: (Rule) => Rule.unique(),
+ },
+ ],
+ preview: {
+ select: {
+ title: "title",
+ authors: "authors",
+ media: "background",
+ series: "series.title",
+ },
+ prepare(selection) {
+ const { title, authors, media, series } = selection
+
+ const authorText = authors?.length ? `${authors.length} authors` : "No authors"
+
+ const subtitle = series ? `[${series}] ${authorText}` : authorText
+
+ return {
+ title,
+ subtitle,
+ media,
+ }
+ },
+ },
+ initialValue: {
+ cardImage: "background",
+ },
+ orderings: [
+ {
+ title: "Start Date, Desc",
+ name: "startDateDesc",
+ by: [{ field: "eventPeriod.startDate", direction: "desc" }],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/faqType.ts b/src/sanity/schemaTypes/faqType.ts
new file mode 100644
index 00000000..549a8876
--- /dev/null
+++ b/src/sanity/schemaTypes/faqType.ts
@@ -0,0 +1,52 @@
+import { defineType } from "sanity"
+
+export const faqType = defineType({
+ name: "faq",
+ title: "FAQ",
+ type: "document",
+ fields: [
+ {
+ name: "question",
+ title: "Question",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "answer",
+ title: "Answer",
+ type: "array",
+ of: [{ type: "block" }],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "groupKey",
+ title: "Group Key",
+ type: "string",
+ description: "Key to group FAQs for different pages (e.g., 'membership', 'general', 'local-community')",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "orderRank",
+ title: "Order",
+ type: "string",
+ hidden: true,
+ description: "Display order within the group",
+ },
+ ],
+ preview: {
+ select: {
+ title: "question",
+ subtitle: "groupKey",
+ },
+ },
+ orderings: [
+ {
+ title: "Group & Order",
+ name: "groupAndOrderAsc",
+ by: [
+ { field: "groupKey", direction: "asc" },
+ { field: "order", direction: "asc" },
+ ],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/index.ts b/src/sanity/schemaTypes/index.ts
new file mode 100644
index 00000000..5c20230f
--- /dev/null
+++ b/src/sanity/schemaTypes/index.ts
@@ -0,0 +1,27 @@
+import { eventType } from "./eventType"
+import { partnerType } from "./partnerType"
+import { pageType } from "./pageType"
+import { videoType } from "./videoType"
+import { authorType } from "./authorType"
+import { teamMemberType } from "./teamMemberType"
+import { faqType } from "./faqType"
+import { projectType } from "./projectType"
+import { jobPostType } from "./jobPostType"
+import { eventSeriesType } from "./eventSeriesType"
+import { blogPostType } from "./blogPostType"
+
+export const schema = {
+ types: [
+ eventType,
+ partnerType,
+ pageType,
+ videoType,
+ authorType,
+ teamMemberType,
+ faqType,
+ projectType,
+ jobPostType,
+ eventSeriesType,
+ blogPostType,
+ ],
+}
diff --git a/src/sanity/schemaTypes/jobPostType.ts b/src/sanity/schemaTypes/jobPostType.ts
new file mode 100644
index 00000000..c28e20ae
--- /dev/null
+++ b/src/sanity/schemaTypes/jobPostType.ts
@@ -0,0 +1,79 @@
+import { defineType } from "sanity"
+
+export const jobPostType = defineType({
+ name: "jobPost",
+ title: "Job Post",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "description",
+ title: "Description",
+ type: "array",
+ of: [{ type: "block" }],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "location",
+ title: "Location",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "effort",
+ title: "Effort",
+ type: "string",
+ options: {
+ list: [
+ { title: "Low (<4 hours/month)", value: "low" },
+ { title: "Moderate (4-8 hours/month)", value: "moderate" },
+ { title: "Elevate (>8 hours/month)", value: "elevate" },
+ ],
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "isActive",
+ title: "Is Active",
+ type: "boolean",
+ initialValue: true,
+ description: "Whether this position is currently open",
+ },
+ {
+ name: "publishedAt",
+ title: "Published Date",
+ type: "datetime",
+ initialValue: () => new Date().toISOString(),
+ },
+ ],
+ preview: {
+ select: {
+ title: "title",
+ effort: "effort",
+ isActive: "isActive",
+ },
+ prepare({ title, effort, isActive }) {
+ return {
+ title: `${title}${!isActive ? " (Inactive)" : ""}`,
+ subtitle: `${isActive ? "Open" : "Closed"} - ${effort} effort`,
+ }
+ },
+ },
+ orderings: [
+ {
+ title: "Publication Date, New",
+ name: "publishedAtDesc",
+ by: [{ field: "publishedAt", direction: "desc" }],
+ },
+ {
+ title: "Title",
+ name: "titleAsc",
+ by: [{ field: "title", direction: "asc" }],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/pageType.ts b/src/sanity/schemaTypes/pageType.ts
new file mode 100644
index 00000000..94d9693b
--- /dev/null
+++ b/src/sanity/schemaTypes/pageType.ts
@@ -0,0 +1,92 @@
+import { defineType } from "sanity"
+
+export const pageType = defineType({
+ name: "page",
+ title: "Page",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: "title",
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "publishedAt",
+ title: "Published At",
+ type: "date",
+ },
+ {
+ name: "content",
+ type: "array",
+ title: "Content",
+ of: [
+ {
+ type: "block",
+ },
+ {
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ fields: [
+ {
+ name: "alt",
+ type: "string",
+ title: "Alternative Text",
+ description: "Important for SEO and accessibility.",
+ },
+ {
+ name: "caption",
+ type: "string",
+ title: "Caption",
+ description: "Optional caption for the image",
+ },
+ ],
+ },
+ ],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "headerImage",
+ title: "Header Image",
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ },
+ {
+ name: "seo",
+ title: "SEO",
+ type: "object",
+ fields: [
+ {
+ name: "metaTitle",
+ title: "Meta Title",
+ type: "string",
+ },
+ {
+ name: "metaDescription",
+ title: "Meta Description",
+ type: "text",
+ },
+ {
+ name: "metaKeywords",
+ title: "Meta Keywords",
+ type: "array",
+ of: [{ type: "string" }],
+ },
+ ],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/partnerType.ts b/src/sanity/schemaTypes/partnerType.ts
new file mode 100644
index 00000000..54926f64
--- /dev/null
+++ b/src/sanity/schemaTypes/partnerType.ts
@@ -0,0 +1,172 @@
+import { defineType, type ConditionalPropertyCallback } from "sanity"
+
+export const partnerType = defineType({
+ name: "partner",
+ title: "Partner",
+ type: "document",
+ fields: [
+ {
+ name: "name",
+ title: "Name",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "image",
+ title: "Image",
+ type: "image",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "description",
+ title: "Description",
+ type: "text",
+ },
+ {
+ name: "isBusinessPartner",
+ title: "Is Business",
+ type: "boolean",
+ initialValue: false,
+ },
+ {
+ name: "businessTier",
+ title: "Partnership Tier",
+ type: "string",
+ options: {
+ list: [
+ { title: "Silver", value: "silver" },
+ { title: "Gold", value: "gold" },
+ { title: "Platinum", value: "platinum" },
+ { title: "Diamond", value: "diamond" },
+ ],
+ },
+ hidden: (({ document }) => !document?.isBusinessPartner) as ConditionalPropertyCallback,
+ validation: (Rule) =>
+ Rule.custom((value, context) => {
+ if (context.document?.isBusinessPartner && !value) {
+ return "Business partners must have a tier selected"
+ }
+ return true
+ }),
+ },
+ {
+ name: "nonBusinessType",
+ title: "Partner Type",
+ type: "string",
+ initialValue: "community",
+ options: {
+ list: [
+ { title: "Community", value: "community" },
+ { title: "Media", value: "media" },
+ ],
+ },
+ hidden: (({ document }) => document?.isBusinessPartner) as ConditionalPropertyCallback,
+ validation: (Rule) =>
+ Rule.custom((value, context) => {
+ if (!context.document?.isBusinessPartner && !value) {
+ return "Non-business partners must have a type selected"
+ }
+ return true
+ }),
+ },
+ {
+ name: "website",
+ title: "Website URL",
+ type: "url",
+ description: "Partner's website URL",
+ },
+ {
+ name: "partnershipPeriod",
+ title: "Partnership Period",
+ type: "object",
+ fields: [
+ {
+ name: "startDate",
+ title: "Start Date",
+ type: "date",
+ },
+ {
+ name: "endDate",
+ title: "End Date",
+ type: "date",
+ },
+ ],
+ },
+ {
+ name: "contact",
+ title: "Contact Information",
+ type: "object",
+ fields: [
+ {
+ name: "name",
+ title: "Name",
+ type: "string",
+ },
+ {
+ name: "email",
+ title: "Email",
+ type: "string",
+ validation: (Rule) => Rule.email().error("Please enter a valid email address"),
+ },
+ ],
+ },
+ {
+ name: "orderRank",
+ title: "Order Rank",
+ type: "string",
+ hidden: true,
+ description: "Used to control the display order of partners",
+ },
+ {
+ name: "visibility",
+ title: "Visibility",
+ type: "array",
+ of: [{ type: "string" }],
+ options: {
+ list: [
+ { title: "Homepage", value: "homepage" },
+ { title: "As Sponsors", value: "sponsors" },
+ { title: "As Partners", value: "partners" },
+ { title: "About Us", value: "about" },
+ ],
+ layout: "checkbox",
+ },
+ description: "Select where this partner should be displayed",
+ },
+ ],
+ initialValue: {
+ isBusinessPartner: false,
+ nonBusinessType: "community",
+ },
+ preview: {
+ select: {
+ title: "name",
+ subtitle: "isBusinessPartner",
+ businessTier: "businessTier",
+ nonBusinessType: "nonBusinessType",
+ media: "image",
+ },
+ prepare: (selection) => {
+ const { title, subtitle, businessTier, nonBusinessType, media } = selection
+ const partnerType = subtitle ? `Business - ${businessTier}` : `Non-Business - ${nonBusinessType}`
+
+ return {
+ title,
+ subtitle: partnerType,
+ media,
+ } as const
+ },
+ },
+ orderings: [
+ {
+ title: "Display Order",
+ name: "orderAsc",
+ by: [{ field: "order", direction: "asc" }],
+ },
+ {
+ title: "Partner Name",
+ name: "nameAsc",
+ by: [{ field: "name", direction: "asc" }],
+ },
+ ],
+})
diff --git a/src/sanity/schemaTypes/projectType.ts b/src/sanity/schemaTypes/projectType.ts
new file mode 100644
index 00000000..559bed91
--- /dev/null
+++ b/src/sanity/schemaTypes/projectType.ts
@@ -0,0 +1,116 @@
+import { defineType } from "sanity"
+
+export const projectType = defineType({
+ name: "project",
+ title: "Project",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: "title",
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "description",
+ title: "Description",
+ type: "array",
+ of: [{ type: "block" }],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "url",
+ title: "URL",
+ type: "url",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "repositoryUrl",
+ title: "Repository URL",
+ type: "url",
+ description: "GitHub repository URL",
+ validation: (Rule) =>
+ Rule.uri({
+ scheme: ["https"],
+ }).custom((url: string) => {
+ if (!url) return true
+ return url.startsWith("https://github.com/") ? true : "Must be a GitHub URL"
+ }),
+ },
+ {
+ name: "showStars",
+ title: "Show Stars",
+ type: "boolean",
+ description: "Show the GitHub stars badge",
+ },
+ {
+ name: "techStack",
+ title: "Tech Stack",
+ type: "array",
+ description: "List of technologies used in the project",
+ of: [{ type: "string" }],
+ options: {
+ layout: "tags",
+ },
+ },
+ {
+ name: "launchedAt",
+ title: "Launched On",
+ type: "date",
+ options: {
+ dateFormat: "YYYY-MM-DD",
+ },
+ },
+ {
+ name: "lookingFor",
+ title: "Looking For",
+ type: "array",
+ of: [{ type: "string" }],
+ options: {
+ list: [
+ { title: "Contributors", value: "contributors" },
+ { title: "Maintainers", value: "maintainers" },
+ ],
+ },
+ validation: (Rule) => Rule.unique(),
+ },
+ {
+ name: "language",
+ title: "Primary Language",
+ type: "string",
+ options: {
+ list: [
+ { title: "TypeScript", value: "typescript" },
+ { title: "JavaScript", value: "javascript" },
+ { title: "Python", value: "python" },
+ { title: "Go", value: "go" },
+ { title: "Rust", value: "rust" },
+ ],
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ ],
+ preview: {
+ select: {
+ title: "title",
+ media: "coverImage",
+ },
+ prepare({ title, media }) {
+ return {
+ title,
+ subtitle: "",
+ media,
+ }
+ },
+ },
+})
diff --git a/src/sanity/schemaTypes/teamMemberType.ts b/src/sanity/schemaTypes/teamMemberType.ts
new file mode 100644
index 00000000..c3230aa3
--- /dev/null
+++ b/src/sanity/schemaTypes/teamMemberType.ts
@@ -0,0 +1,67 @@
+import { defineType } from "sanity"
+
+export const teamMemberType = defineType({
+ name: "teamMember",
+ title: "Team Members",
+ type: "document",
+ fields: [
+ {
+ name: "name",
+ title: "Name",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "surname",
+ title: "Surname",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "role",
+ title: "Role",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "image",
+ title: "Image",
+ type: "image",
+ options: {
+ hotspot: true,
+ },
+ fields: [
+ {
+ name: "backgroundColor",
+ title: "Background Color",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ ],
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "orderRank",
+ title: "Order",
+ type: "string",
+ hidden: true,
+ description: "Display order within the group",
+ },
+ ],
+ preview: {
+ select: {
+ title: "name",
+ surname: "surname",
+ subtitle: "role",
+ media: "image",
+ },
+ prepare(selection) {
+ const { title, surname, subtitle, media } = selection
+ return {
+ title: `${title} ${surname}`,
+ subtitle,
+ media,
+ }
+ },
+ },
+})
diff --git a/src/sanity/schemaTypes/videoType.tsx b/src/sanity/schemaTypes/videoType.tsx
new file mode 100644
index 00000000..fd83c42f
--- /dev/null
+++ b/src/sanity/schemaTypes/videoType.tsx
@@ -0,0 +1,192 @@
+import { defineType } from "sanity"
+import React from "react"
+import type { Author, Video } from "../sanity.types"
+
+// Helper function to extract YouTube video ID from various URL formats
+const extractYouTubeId = (url: string): string => {
+ try {
+ const urlObj = new URL(url)
+
+ // Handle youtu.be
+ if (urlObj.hostname === "youtu.be") {
+ return urlObj.pathname.slice(1)
+ }
+
+ // Handle youtube.com
+ if (urlObj.hostname.includes("youtube.com")) {
+ // Handle /watch?v=
+ const searchParams = new URLSearchParams(urlObj.search)
+ const videoId = searchParams.get("v")
+ if (videoId) return videoId
+
+ // Handle /shorts/ or /embed/
+ const regex = new RegExp(/\/(shorts|embed)\/([^/?]+)/)
+ const execResult = regex.exec(urlObj.pathname)
+ if (execResult?.[2]) return execResult[2]
+ }
+
+ return url
+ } catch {
+ // If URL parsing fails, return the original string
+ return url
+ }
+}
+
+export const videoType = defineType({
+ name: "video",
+ title: "Video",
+ type: "document",
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: "string",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "shortTitle",
+ title: "Short Title",
+ type: "string",
+ },
+ {
+ name: "slug",
+ title: "Slug",
+ type: "slug",
+ options: {
+ source: async (doc: Video, { getClient }) => {
+ // Get the first author reference
+ const authorRef = doc.authors?.[0]?._ref
+ if (!authorRef) return doc.title
+
+ // Fetch the author document
+ const client = getClient({ apiVersion: "2024-03-01" })
+ const author = await client.fetch(`*[_id == $authorRef][0]{slug}`, { authorRef })
+
+ // Combine author slug with title
+ return `${author?.slug?.current ?? ""}-${doc.title}`
+ },
+ maxLength: 96,
+ },
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "authors",
+ title: "Authors",
+ type: "array",
+ of: [
+ {
+ type: "reference",
+ to: [{ type: "author" }],
+ },
+ ],
+ validation: (Rule) => Rule.required().min(1),
+ },
+ {
+ name: "youtubeId",
+ title: "YouTube Video ID or URL",
+ type: "string",
+ description: "Paste either the video ID or the full YouTube URL",
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: "thumbnail",
+ title: "Custom Thumbnail",
+ type: "image",
+ description: "Optional custom thumbnail. If not provided, the YouTube thumbnail will be used",
+ options: {
+ hotspot: true,
+ },
+ },
+ {
+ name: "description",
+ type: "array",
+ title: "Description",
+ of: [
+ {
+ type: "block",
+ },
+ ],
+ },
+ {
+ name: "whyShouldWatch",
+ title: "Why Should Watch",
+ type: "array",
+ of: [{ type: "block" }],
+ },
+ {
+ name: "tags",
+ title: "Tags",
+ type: "array",
+ of: [{ type: "string" }],
+ },
+ {
+ name: "publishedAt",
+ title: "Published Date",
+ type: "datetime",
+ },
+ {
+ name: "categories",
+ title: "Categories",
+ type: "array",
+ of: [{ type: "string" }],
+ options: {
+ list: [
+ { title: "Talk", value: "talk" },
+ { title: "Workshop", value: "workshop" },
+ { title: "Podcast", value: "podcast" },
+ { title: "Generic", value: "generic" },
+ ],
+ },
+ },
+ {
+ name: "featured",
+ title: "Featured Video",
+ type: "boolean",
+ description: "Display this video prominently in the gallery",
+ initialValue: false,
+ },
+ {
+ name: "order",
+ title: "Display Order",
+ type: "number",
+ description: "Used to control the display order of videos (lower numbers appear first)",
+ },
+ ],
+ preview: {
+ select: {
+ title: "title",
+ shortTitle: "shortTitle",
+ media: "thumbnail",
+ youtubeId: "youtubeId",
+ authorFirstName: "authors.0.firstName",
+ authorLastName: "authors.0.lastName",
+ thumbnail: "thumbnail",
+ },
+ prepare: (selection) => {
+ const { title, shortTitle, youtubeId, authorFirstName, authorLastName, thumbnail } = selection
+ const safeYoutubeId = youtubeId ?? extractYouTubeId(youtubeId as unknown as string)
+
+ return {
+ title: shortTitle ?? title ?? "Untitled Video",
+ subtitle: `${authorFirstName} ${authorLastName}`,
+ media: !thumbnail ? (
+
+ ) : (
+ thumbnail
+ ),
+ }
+ },
+ },
+ orderings: [
+ {
+ title: "Display Order",
+ name: "orderAsc",
+ by: [{ field: "order", direction: "asc" }],
+ },
+ {
+ title: "Publication Date",
+ name: "publishedDateDesc",
+ by: [{ field: "publishedAt", direction: "desc" }],
+ },
+ ],
+})
diff --git a/src/sanity/structure.ts b/src/sanity/structure.ts
new file mode 100644
index 00000000..ef59bb88
--- /dev/null
+++ b/src/sanity/structure.ts
@@ -0,0 +1,103 @@
+/* eslint-disable @typescript-eslint/no-unsafe-argument */
+/* eslint-disable @typescript-eslint/no-unsafe-member-access */
+/* eslint-disable @typescript-eslint/no-unsafe-call */
+import type { StructureResolver } from "sanity/structure"
+import { orderableDocumentListDeskItem } from "@sanity/orderable-document-list"
+import { schemaIcons } from "./icons/schemaIcons"
+
+export const structure: StructureResolver = async (S, context) => {
+ // Fetch all unique groupKeys
+ const client = context.getClient({ apiVersion: "2023-01-01" })
+ const groupKeys = await client.fetch(`
+ array::unique(*[_type == "faq"].groupKey | order(@))
+ `)
+
+ // Add type for the items array
+ const faqGroups = [
+ // Dynamic group items based on existing groupKeys
+ ...groupKeys.map((groupKey: string) =>
+ orderableDocumentListDeskItem({
+ type: "faq",
+ S,
+ context,
+ title: `${groupKey.charAt(0).toUpperCase()}${groupKey.slice(1).replace(/-/g, " ")} FAQs`,
+ filter: `groupKey == "${groupKey}"`,
+ id: `faq-group-${groupKey}`,
+ icon: schemaIcons.faq,
+ }),
+ ),
+ // All FAQs view
+ orderableDocumentListDeskItem({
+ type: "faq",
+ S,
+ context,
+ title: "All FAQs",
+ id: "faq-group-all",
+ icon: schemaIcons.faq,
+ }),
+ ] as const
+
+ return S.list()
+ .title("Content")
+ .items([
+ // Talks Group
+ S.documentTypeListItem("video").icon(schemaIcons.video),
+ S.documentTypeListItem("event").icon(schemaIcons.event),
+ S.documentTypeListItem("eventSeries").icon(schemaIcons.eventSeries),
+ S.documentTypeListItem("author").icon(schemaIcons.author),
+ S.documentTypeListItem("blogPost").icon(schemaIcons.blogPost),
+
+ S.divider(),
+
+ // Website Group
+ orderableDocumentListDeskItem({
+ type: "teamMember",
+ S,
+ context,
+ title: "Team Members",
+ icon: schemaIcons.teamMember,
+ }),
+ S.listItem()
+ .title("FAQs")
+ .icon(schemaIcons.faq)
+ .child(
+ S.list()
+ .title("FAQ Groups")
+ .items(faqGroups as any),
+ ),
+ S.documentTypeListItem("jobPost").icon(schemaIcons.jobPost),
+ S.documentTypeListItem("page").icon(schemaIcons.page),
+
+ S.divider(),
+
+ // Contribute Group
+ S.listItem()
+ .title("Partners")
+ .icon(schemaIcons.partner)
+ .child(
+ S.list()
+ .title("Partner Types")
+ .items([
+ orderableDocumentListDeskItem({
+ type: "partner",
+ S,
+ context,
+ title: "Business Partners",
+ filter: "isBusinessPartner == true",
+ id: "partner-business",
+ icon: schemaIcons.partner,
+ }),
+ orderableDocumentListDeskItem({
+ type: "partner",
+ S,
+ context,
+ title: "Community Partners",
+ filter: "isBusinessPartner == false",
+ id: "partner-non-business",
+ icon: schemaIcons.partner,
+ }),
+ ]),
+ ),
+ S.documentTypeListItem("project").icon(schemaIcons.project),
+ ])
+}
diff --git a/src/server/api/root.ts b/src/server/api/root.ts
new file mode 100644
index 00000000..fad11a37
--- /dev/null
+++ b/src/server/api/root.ts
@@ -0,0 +1,23 @@
+import { createCallerFactory, createTRPCRouter } from "@/server/api/trpc"
+import { stripeRouter } from "./routers/stripe"
+
+/**
+ * This is the primary router for your server.
+ *
+ * All routers added in /api/routers should be manually added here.
+ */
+export const appRouter = createTRPCRouter({
+ stripe: stripeRouter,
+})
+
+// export type definition of API
+export type AppRouter = typeof appRouter
+
+/**
+ * Create a server-side caller for the tRPC API.
+ * @example
+ * const trpc = createCaller(createContext);
+ * const res = await trpc.post.all();
+ * ^? Post[]
+ */
+export const createCaller = createCallerFactory(appRouter)
diff --git a/src/server/api/routers/stripe.ts b/src/server/api/routers/stripe.ts
new file mode 100644
index 00000000..db23715d
--- /dev/null
+++ b/src/server/api/routers/stripe.ts
@@ -0,0 +1,163 @@
+import { createTRPCRouter, publicProcedure } from "@/server/api/trpc"
+import { env } from "@/env.js"
+import { z } from "zod"
+import { getStripe, isStripeAvailable } from "@/lib/stripe"
+import { TRPCError } from "@trpc/server"
+
+const getBaseUrl = () => {
+ if (typeof window !== "undefined") {
+ // browser should use relative url
+ return ""
+ }
+
+ const port = process.env.PORT ?? 3000
+
+ if (env.VERCEL_URL) {
+ return env.VERCEL_URL.includes("localhost") ? `http://localhost:${port}` : `https://${env.VERCEL_URL}`
+ }
+
+ // Fallback for local development
+ return `http://localhost:${port}`
+}
+
+const membershipFormSchema = z.object({
+ name: z.string().min(2),
+ surname: z.string().min(2),
+ email: z.string().email(),
+ codiceFiscale: z
+ .string()
+ .length(16)
+ .regex(/^[A-Z0-9]+$/),
+})
+
+// Add this type
+type CheckoutResult = { status: "success"; url: string } | { status: "error"; message: string }
+
+function calculateNextBillingDate() {
+ const now = new Date()
+ const currentYear = now.getFullYear()
+ const currentMonth = now.getMonth() + 1 // JavaScript months are 0-based
+
+ // If we're between September and December, start billing the year after next
+ // Otherwise, start billing next year
+ const targetYear = currentMonth >= 9 ? currentYear + 2 : currentYear + 1
+
+ // Set to January 1st 00:00:00 of target year
+ return Math.floor(new Date(targetYear, 0, 1).getTime() / 1000)
+}
+
+export const stripeRouter = createTRPCRouter({
+ createCheckoutSession: publicProcedure
+ .input(membershipFormSchema)
+ .mutation(async ({ ctx, input }): Promise => {
+ try {
+ if (!isStripeAvailable()) {
+ throw new TRPCError({
+ code: "INTERNAL_SERVER_ERROR",
+ message: "PaymentGateway is not available",
+ })
+ }
+
+ // Get Stripe instance
+ const stripe = getStripe()
+
+ // Check for existing completed membership
+ const existingMember = await ctx.db.member.findFirst({
+ where: {
+ codiceFiscale: input.codiceFiscale,
+ status: "COMPLETED",
+ },
+ })
+
+ if (existingMember) {
+ throw new TRPCError({
+ code: "CONFLICT",
+ message: "A completed membership already exists for this Codice Fiscale",
+ })
+ }
+
+ // Find or create pending member
+ const member = await ctx.db.member.upsert({
+ where: {
+ codiceFiscale: input.codiceFiscale,
+ },
+ update: {
+ name: input.name,
+ surname: input.surname,
+ email: input.email,
+ },
+ create: {
+ name: input.name,
+ surname: input.surname,
+ email: input.email,
+ codiceFiscale: input.codiceFiscale,
+ },
+ })
+
+ const baseUrl = getBaseUrl()
+
+ // Create or get Stripe customer
+ let customerId = member.stripeCustomerId
+ if (!customerId) {
+ const customer = await stripe.customers.create({
+ email: input.email,
+ name: `${input.name} ${input.surname}`,
+ metadata: {
+ codiceFiscale: input.codiceFiscale,
+ memberId: member.id,
+ },
+ })
+ customerId = customer.id
+
+ // Update member with Stripe customer ID
+ await ctx.db.member.update({
+ where: { id: member.id },
+ data: { stripeCustomerId: customerId },
+ })
+ }
+
+ // Calculate next billing cycle date
+ const nextBillingDate = calculateNextBillingDate()
+
+ // Create Stripe checkout session
+ const session = await stripe.checkout.sessions.create({
+ customer: customerId,
+ payment_method_types: ["card"],
+ line_items: [
+ {
+ price: env.STRIPE_MEMBERSHIP_PRICE_ID,
+ quantity: 1,
+ },
+ ],
+ mode: "subscription",
+ success_url: `${baseUrl}/association/join/success?session_id={CHECKOUT_SESSION_ID}`,
+ cancel_url: `${baseUrl}/association/join`,
+ subscription_data: {
+ metadata: {
+ nextBillingYear: new Date(nextBillingDate * 1000).getFullYear(),
+ shouldUpdateBillingCycle: "true",
+ nextBillingDate: nextBillingDate.toString(),
+ },
+ },
+ metadata: {
+ memberId: member.id,
+ codiceFiscale: input.codiceFiscale,
+ },
+ })
+
+ return {
+ status: "success",
+ url: session.url ?? "/",
+ }
+ } catch (error) {
+ console.error("Error creating checkout session:", error)
+ if (error instanceof TRPCError) {
+ throw error
+ }
+ throw new TRPCError({
+ code: "INTERNAL_SERVER_ERROR",
+ message: "Failed to create checkout session",
+ })
+ }
+ }),
+})
diff --git a/src/server/api/trpc.ts b/src/server/api/trpc.ts
new file mode 100644
index 00000000..389c0ab3
--- /dev/null
+++ b/src/server/api/trpc.ts
@@ -0,0 +1,104 @@
+/**
+ * YOU PROBABLY DON'T NEED TO EDIT THIS FILE, UNLESS:
+ * 1. You want to modify request context (see Part 1).
+ * 2. You want to create a new middleware or type of procedure (see Part 3).
+ *
+ * TL;DR - This is where all the tRPC server stuff is created and plugged in. The pieces you will
+ * need to use are documented accordingly near the end.
+ */
+import { initTRPC } from "@trpc/server"
+import superjson from "superjson"
+import { ZodError } from "zod"
+import { db } from "@/server/db"
+
+/**
+ * 1. CONTEXT
+ *
+ * This section defines the "contexts" that are available in the backend API.
+ *
+ * These allow you to access things when processing a request, like the database, the session, etc.
+ *
+ * This helper generates the "internals" for a tRPC context. The API handler and RSC clients each
+ * wrap this and provides the required context.
+ *
+ * @see https://trpc.io/docs/server/context
+ */
+export const createTRPCContext = async (opts: { headers: Headers }) => {
+ return {
+ db,
+ ...opts,
+ }
+}
+
+/**
+ * 2. INITIALIZATION
+ *
+ * This is where the tRPC API is initialized, connecting the context and transformer. We also parse
+ * ZodErrors so that you get typesafety on the frontend if your procedure fails due to validation
+ * errors on the backend.
+ */
+const t = initTRPC.context().create({
+ transformer: superjson,
+ errorFormatter({ shape, error }) {
+ return {
+ ...shape,
+ data: {
+ ...shape.data,
+ zodError: error.cause instanceof ZodError ? error.cause.flatten() : null,
+ },
+ }
+ },
+})
+
+/**
+ * Create a server-side caller.
+ *
+ * @see https://trpc.io/docs/server/server-side-calls
+ */
+export const createCallerFactory = t.createCallerFactory
+
+/**
+ * 3. ROUTER & PROCEDURE (THE IMPORTANT BIT)
+ *
+ * These are the pieces you use to build your tRPC API. You should import these a lot in the
+ * "/src/server/api/routers" directory.
+ */
+
+/**
+ * This is how you create new routers and sub-routers in your tRPC API.
+ *
+ * @see https://trpc.io/docs/router
+ */
+export const createTRPCRouter = t.router
+
+/**
+ * Middleware for timing procedure execution and adding an artificial delay in development.
+ *
+ * You can remove this if you don't like it, but it can help catch unwanted waterfalls by simulating
+ * network latency that would occur in production but not in local development.
+ */
+const timingMiddleware = t.middleware(async ({ next, path }) => {
+ const start = Date.now()
+
+ if (t._config.isDev) {
+ // artificial delay in dev
+ const waitMs = Math.floor(Math.random() * 400) + 100
+ await new Promise((resolve) => setTimeout(resolve, waitMs))
+ }
+
+ const result = await next()
+
+ const end = Date.now()
+ console.log(`[TRPC] ${path} took ${end - start}ms to execute`)
+
+ return result
+})
+
+/**
+ * Public (unauthenticated) procedure
+ *
+ * This is the base piece you use to build new queries and mutations on your tRPC API. It does not
+ * guarantee that a user querying is authorized, but you can still access user session data if they
+ * are logged in.
+ */
+export const publicProcedure = t.procedure.use(timingMiddleware)
diff --git a/src/server/db.ts b/src/server/db.ts
new file mode 100644
index 00000000..f26bebd9
--- /dev/null
+++ b/src/server/db.ts
@@ -0,0 +1,21 @@
+// Import PrismaClient for database operations
+import { PrismaClient } from "@prisma/client"
+import { env } from "@/env"
+
+// Create a new PrismaClient instance with environment-specific logging
+const createPrismaClient = (): PrismaClient =>
+ new PrismaClient({
+ log: env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"],
+ })
+
+// Type the global properly
+const globalForPrisma = globalThis as unknown as {
+ prisma: PrismaClient | undefined
+}
+
+// Export with explicit PrismaClient type
+export const db: PrismaClient = globalForPrisma.prisma ?? createPrismaClient()
+
+// Store the PrismaClient instance on global object in non-production environments
+// This ensures we don't exhaust database connections during development
+if (env.NODE_ENV !== "production") globalForPrisma.prisma = db
diff --git a/src/server/postmark.tsx b/src/server/postmark.tsx
new file mode 100644
index 00000000..d1d297e2
--- /dev/null
+++ b/src/server/postmark.tsx
@@ -0,0 +1,40 @@
+import * as postmark from "postmark"
+import { render } from "@react-email/render"
+import { MembershipSignupEmail } from "@/emails/membership-signup"
+import { env } from "@/env"
+
+const client = env.POSTMARK_API_KEY ? new postmark.ServerClient(env.POSTMARK_API_KEY) : null
+
+interface EmailPayload {
+ from?: string
+ to: string
+ subject: string
+ html: string
+}
+
+async function sendEmail(payload: EmailPayload) {
+ const { from = "hello@schroedinger-hat.org", to, subject, html } = payload
+
+ if (!client) {
+ console.log("POSTMARK_API_KEY not set. Email would have been sent with the following details:")
+ console.log({ from, to, subject, html })
+ return
+ }
+
+ return client.sendEmail({
+ From: from,
+ To: to,
+ Subject: subject,
+ HtmlBody: html,
+ })
+}
+
+export async function sendMembershipSignupEmail(firstName: string, email: string) {
+ const emailHtml = await render( , { pretty: true })
+
+ return sendEmail({
+ to: email,
+ subject: "Welcome to Schrödinger Hat!",
+ html: emailHtml,
+ })
+}
diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss
deleted file mode 100755
index 8f5b0145..00000000
--- a/src/styles/_variables.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@import 'nord.scss';
-
-$dark-mode-class: 'dark';
-
-// Z-index
-$z-header: 2;
-$z-banner: 2;
-
-// Colors
-$bg-primary-reduced: rgba(236, 239, 244, 0.7);
-$bg-primary: $nord6;
-$bg-secondary: $nord4;
-$text-primary: $nord3;
-$text-secondary: $nord6;
-
-// Dark-mode Colors
-$dark-bg-primary-reduced: rgba(46, 52, 64, 0.7);
-$dark-bg-primary: $nord0;
-$dark-bg-secondary: $nord1;
-$dark-bg-secondary: $nord3;
-$dark-text-primary: $nord6;
-
-// Transitions
-$transition-duration: ("default": 0.3s);
-$transition-timing-function: ("default": ease-in-out);
diff --git a/src/styles/global.scss b/src/styles/global.scss
deleted file mode 100755
index 68b4eee6..00000000
--- a/src/styles/global.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-// Global style
-@import 'variables';
-@import 'nord';
-
-$root-font-size: 16px;
-
-// Colors
-$c-white: #FFFFFF;
-$c-black: #000000;
-$c-dark-text: $nord6; //#ECEFF4
-$c-dark-text-secondary: $nord4; //#D8DEE9
-
-// Breakpoints
-$breakpoints: (
- sm: 640px,
- md: 768px,
- lg: 1024px,
- xl: 1280px,
-);
-
-.slide-in-container-inner .mastfoot {
- display: none !important;
-}
-
-// Functions
-// -> Px to Rem
-@function rem($values...) {
- // Check if a single value is passed
- @if length($values) == 1 {
- $value: nth($values, 1);
- @return math.div($value, $root-font-size) * 1rem;
- }
- // Handle multiple values
- @else {
- $rem-values: ();
- @each $value in $values {
- $rem-values: append($rem-values, math.div($value, $root-font-size) * 1rem);
- }
- @return $rem-values;
- }
-}
-
-// -> Breakpoints
-@mixin breakpoint($breakpoint) {
- $width: map-get($breakpoints, $breakpoint);
-
- @if $width {
- @media (min-width: $width) {
- @content;
- }
- } @else {
- @error "Unknown breakpoint: #{$breakpoint}.";
- }
-}
-
-/* Layout */
-html {
- background: $bg-primary;
- color: $text-primary;
-
- * {
- color: $text-primary;
- }
-}
-
-html.dark{
- background: $dark-bg-primary;
- color: $dark-text-primary;
-
- * {
- color: $dark-text-primary;
- }
-}
diff --git a/src/styles/globals.css b/src/styles/globals.css
new file mode 100644
index 00000000..000e9a86
--- /dev/null
+++ b/src/styles/globals.css
@@ -0,0 +1,66 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+@layer base {
+ :root {
+ --background: 0 0% 100%;
+ --foreground: 0 0% 3.9%;
+ --card: 0 0% 100%;
+ --card-foreground: 0 0% 3.9%;
+ --popover: 0 0% 100%;
+ --popover-foreground: 0 0% 3.9%;
+ --primary: 0 0% 9%;
+ --primary-foreground: 0 0% 98%;
+ --secondary: 0 0% 96.1%;
+ --secondary-foreground: 0 0% 9%;
+ --muted: 0 0% 96.1%;
+ --muted-foreground: 0 0% 45.1%;
+ --accent: 0 0% 96.1%;
+ --accent-foreground: 0 0% 9%;
+ --destructive: 0 84.2% 60.2%;
+ --destructive-foreground: 0 0% 98%;
+ --border: 0 0% 89.8%;
+ --input: 0 0% 89.8%;
+ --ring: 0 0% 3.9%;
+ --chart-1: 12 76% 61%;
+ --chart-2: 173 58% 39%;
+ --chart-3: 197 37% 24%;
+ --chart-4: 43 74% 66%;
+ --chart-5: 27 87% 67%;
+ --radius: 0.5rem
+ }
+ .dark {
+ --background: 0 0% 3.9%;
+ --foreground: 0 0% 98%;
+ --card: 0 0% 3.9%;
+ --card-foreground: 0 0% 98%;
+ --popover: 0 0% 3.9%;
+ --popover-foreground: 0 0% 98%;
+ --primary: 0 0% 98%;
+ --primary-foreground: 0 0% 9%;
+ --secondary: 0 0% 14.9%;
+ --secondary-foreground: 0 0% 98%;
+ --muted: 0 0% 14.9%;
+ --muted-foreground: 0 0% 63.9%;
+ --accent: 0 0% 14.9%;
+ --accent-foreground: 0 0% 98%;
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 0% 98%;
+ --border: 0 0% 14.9%;
+ --input: 0 0% 14.9%;
+ --ring: 0 0% 83.1%;
+ --chart-1: 220 70% 50%;
+ --chart-2: 160 60% 45%;
+ --chart-3: 30 80% 55%;
+ --chart-4: 280 65% 60%;
+ --chart-5: 340 75% 55%
+ }
+}
+@layer base {
+ * {
+ @apply border-border;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
diff --git a/src/styles/nord.scss b/src/styles/nord.scss
deleted file mode 100755
index 488b8fa4..00000000
--- a/src/styles/nord.scss
+++ /dev/null
@@ -1,235 +0,0 @@
-// Copyright (c) 2016-present Arctic Ice Studio
-// Copyright (c) 2016-present Sven Greb
-
-// Project: Nord
-// Version: 0.2.0
-// Repository: https://github.com/arcticicestudio/nord
-// License: MIT
-// References:
-// http://sass-lang.com
-// http://sassdoc.com
-
-////
-/// An arctic, north-bluish color palette.
-/// Created for the clean- and minimal flat design pattern to achieve a optimal focus and readability for code syntax
-/// highlighting and UI.
-/// It consists of a total of sixteen, carefully selected, dimmed pastel colors for a eye-comfortable, but yet colorful
-/// ambiance.
-///
-/// @author Arctic Ice Studio
-////
-
-/// Base component color of "Polar Night".
-///
-/// Used for texts, backgrounds, carets and structuring characters like curly- and square brackets.
-///
-/// @access public
-/// @example scss - SCSS
-/// /* For dark ambiance themes */
-/// .background {
-/// background-color: $nord0;
-/// }
-/// /* For light ambiance themes */
-/// .text {
-/// color: $nord0;
-/// }
-/// @group polarnight
-/// @since 0.1.0
-$nord0: #2e3440;
-
-/// Lighter shade color of the base component color.
-///
-/// Used as a lighter background color for UI elements like status bars.
-///
-/// @access public
-/// @group polarnight
-/// @see $nord0
-/// @since 0.1.0
-$nord1: #3b4252;
-
-/// Lighter shade color of the base component color.
-///
-/// Used as line highlighting in the editor.
-/// In the UI scope it may be used as selection- and highlight color.
-///
-/// @access public
-/// @example scss - SCSS
-/// /* Code Syntax Highlighting scope */
-/// .editor {
-/// &.line {
-/// background-color: $nord2;
-/// }
-/// }
-///
-/// /* UI scope */
-/// button {
-/// &:selected {
-/// background-color: $nord2;
-/// }
-/// }
-/// @group polarnight
-/// @see $nord0
-/// @since 0.1.0
-$nord2: #434c5e;
-
-/// Lighter shade color of the base component color.
-///
-/// Used for comments, invisibles, indent- and wrap guide marker.
-/// In the UI scope used as pseudoclass color for disabled elements.
-///
-/// @access public
-/// @example scss - SCSS
-/// /* Code Syntax Highlighting scope */
-/// .editor {
-/// &.indent-guide,
-/// &.wrap-guide {
-/// &.marker {
-/// color: $nord3;
-/// }
-/// }
-/// }
-/// .comment,
-/// .invisible {
-/// color: $nord3;
-/// }
-///
-/// /* UI scope */
-/// button {
-/// &:disabled {
-/// background-color: $nord3;
-/// }
-/// }
-/// @group polarnight
-/// @see $nord0
-/// @since 0.1.0
-$nord3: #4c566a;
-
-/// Base component color of "Snow Storm".
-///
-/// Main color for text, variables, constants and attributes.
-/// In the UI scope used as semi-light background depending on the theme shading design.
-///
-/// @access public
-/// @example scss - SCSS
-/// /* For light ambiance themes */
-/// .background {
-/// background-color: $nord4;
-/// }
-/// /* For dark ambiance themes */
-/// .text {
-/// color: $nord4;
-/// }
-/// @group snowstorm
-/// @since 0.1.0
-$nord4: #d8dee9;
-
-/// Lighter shade color of the base component color.
-///
-/// Used as a lighter background color for UI elements like status bars.
-/// Used as semi-light background depending on the theme shading design.
-///
-/// @access public
-/// @group snowstorm
-/// @see $nord4
-/// @since 0.1.0
-$nord5: #e5e9f0;
-
-/// Lighter shade color of the base component color.
-///
-/// Used for punctuations, carets and structuring characters like curly- and square brackets.
-/// In the UI scope used as background, selection- and highlight color depending on the theme shading design.
-///
-/// @access public
-/// @group snowstorm
-/// @see $nord4
-/// @since 0.1.0
-$nord6: #eceff4;
-
-/// Bluish core color.
-///
-/// Used for classes, types and documentation tags.
-///
-/// @access public
-/// @group frost
-/// @since 0.1.0
-$nord7: #8fbcbb;
-
-/// Bluish core accent color.
-///
-/// Represents the accent color of the color palette.
-/// Main color for primary UI elements and methods/functions.
-///
-/// Can be used for
-/// - Markup quotes
-/// - Markup link URLs
-///
-/// @access public
-/// @group frost
-/// @since 0.1.0
-$nord8: #88c0d0;
-
-/// Bluish core color.
-///
-/// Used for language-specific syntactic/reserved support characters and keywords, operators, tags, units and
-/// punctuations like (semi)colons,commas and braces.
-///
-/// @access public
-/// @group frost
-/// @since 0.1.0
-$nord9: #81a1c1;
-
-/// Bluish core color.
-///
-/// Used for markup doctypes, import/include/require statements, pre-processor statements and at-rules (`@`).
-///
-/// @access public
-/// @group frost
-/// @since 0.1.0
-$nord10: #5e81ac;
-
-/// Colorful component color.
-///
-/// Used for errors, git/diff deletion and linter marker.
-///
-/// @access public
-/// @group aurora
-/// @since 0.1.0
-$nord11: #bf616a;
-
-/// Colorful component color.
-///
-/// Used for annotations.
-///
-/// @access public
-/// @group aurora
-/// @since 0.1.0
-$nord12: #d08770;
-
-/// Colorful component color.
-///
-/// Used for escape characters, regular expressions and markup entities.
-/// In the UI scope used for warnings and git/diff renamings.
-///
-/// @access public
-/// @group aurora
-/// @since 0.1.0
-$nord13: #ebcb8b;
-
-/// Colorful component color.
-///
-/// Main color for strings and attribute values.
-/// In the UI scope used for git/diff additions and success visualizations.
-///
-/// @access public
-/// @group aurora
-/// @since 0.1.0
-$nord14: #a3be8c;
-
-/// Colorful component color.
-///
-/// Used for numbers.
-///
-/// @access public
-/// @group aurora
-/// @since 0.1.0
-$nord15: #b48ead;
diff --git a/src/trpc/query-client.ts b/src/trpc/query-client.ts
new file mode 100644
index 00000000..2bb3895b
--- /dev/null
+++ b/src/trpc/query-client.ts
@@ -0,0 +1,21 @@
+import { defaultShouldDehydrateQuery, QueryClient } from "@tanstack/react-query"
+import SuperJSON from "superjson"
+
+export const createQueryClient = () =>
+ new QueryClient({
+ defaultOptions: {
+ queries: {
+ // With SSR, we usually want to set some default staleTime
+ // above 0 to avoid refetching immediately on the client
+ staleTime: 30 * 1000,
+ },
+ dehydrate: {
+ serializeData: SuperJSON.serialize,
+ shouldDehydrateQuery: (query) =>
+ defaultShouldDehydrateQuery(query) || query.state.status === "pending",
+ },
+ hydrate: {
+ deserializeData: SuperJSON.deserialize,
+ },
+ },
+ })
diff --git a/src/trpc/react.tsx b/src/trpc/react.tsx
new file mode 100644
index 00000000..2384d2f6
--- /dev/null
+++ b/src/trpc/react.tsx
@@ -0,0 +1,75 @@
+"use client"
+
+import { QueryClientProvider, type QueryClient } from "@tanstack/react-query"
+import { loggerLink, unstable_httpBatchStreamLink } from "@trpc/client"
+import { createTRPCReact } from "@trpc/react-query"
+import { type inferRouterInputs, type inferRouterOutputs } from "@trpc/server"
+import { useState } from "react"
+import SuperJSON from "superjson"
+
+import { type AppRouter } from "@/server/api/root"
+import { createQueryClient } from "./query-client"
+
+let clientQueryClientSingleton: QueryClient | undefined = undefined
+const getQueryClient = () => {
+ if (typeof window === "undefined") {
+ // Server: always make a new query client
+ return createQueryClient()
+ }
+ // Browser: use singleton pattern to keep the same query client
+ return (clientQueryClientSingleton ??= createQueryClient())
+}
+
+export const api = createTRPCReact()
+
+/**
+ * Inference helper for inputs.
+ *
+ * @example type HelloInput = RouterInputs['example']['hello']
+ */
+export type RouterInputs = inferRouterInputs
+
+/**
+ * Inference helper for outputs.
+ *
+ * @example type HelloOutput = RouterOutputs['example']['hello']
+ */
+export type RouterOutputs = inferRouterOutputs
+
+export function TRPCReactProvider(props: { children: React.ReactNode }) {
+ const queryClient = getQueryClient()
+
+ const [trpcClient] = useState(() =>
+ api.createClient({
+ links: [
+ loggerLink({
+ enabled: (op) =>
+ process.env.NODE_ENV === "development" || (op.direction === "down" && op.result instanceof Error),
+ }),
+ unstable_httpBatchStreamLink({
+ transformer: SuperJSON,
+ url: getBaseUrl() + "/api/trpc",
+ headers: () => {
+ const headers = new Headers()
+ headers.set("x-trpc-source", "nextjs-react")
+ return headers
+ },
+ }),
+ ],
+ }),
+ )
+
+ return (
+
+
+ {props.children}
+
+
+ )
+}
+
+function getBaseUrl() {
+ if (typeof window !== "undefined") return window.location.origin
+ if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`
+ return `http://localhost:${process.env.PORT ?? 3000}`
+}
diff --git a/src/trpc/server.ts b/src/trpc/server.ts
new file mode 100644
index 00000000..2a4253fe
--- /dev/null
+++ b/src/trpc/server.ts
@@ -0,0 +1,27 @@
+import "server-only"
+
+import { createHydrationHelpers } from "@trpc/react-query/rsc"
+import { headers } from "next/headers"
+import { cache } from "react"
+
+import { createCaller, type AppRouter } from "@/server/api/root"
+import { createTRPCContext } from "@/server/api/trpc"
+import { createQueryClient } from "./query-client"
+
+/**
+ * This wraps the `createTRPCContext` helper and provides the required context for the tRPC API when
+ * handling a tRPC call from a React Server Component.
+ */
+const createContext = cache(async () => {
+ const heads = new Headers(await headers())
+ heads.set("x-trpc-source", "rsc")
+
+ return createTRPCContext({
+ headers: heads,
+ })
+})
+
+const getQueryClient = cache(createQueryClient)
+const caller = createCaller(createContext)
+
+export const { trpc: api, HydrateClient } = createHydrationHelpers(caller, getQueryClient)
diff --git a/src/types/sanity.ts b/src/types/sanity.ts
new file mode 100644
index 00000000..9ee48f4c
--- /dev/null
+++ b/src/types/sanity.ts
@@ -0,0 +1,11 @@
+export interface SanityImageType {
+ url: string
+ backgroundColor?: string
+ hotspot?: {
+ x: number
+ y: number
+ height: number
+ width: number
+ }
+ // Add other relevant image properties as needed
+}
diff --git a/src/utils/getAssetURL.ts b/src/utils/getAssetURL.ts
deleted file mode 100644
index 8e9e7fd2..00000000
--- a/src/utils/getAssetURL.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function getAssetURL(asset: string) {
- return new URL(`../assets/${asset}`, import.meta.url).href
-}
diff --git a/start-database.sh b/start-database.sh
new file mode 100755
index 00000000..1adb6d59
--- /dev/null
+++ b/start-database.sh
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+# Use this script to start a docker container for a local development database
+
+# TO RUN ON WINDOWS:
+# 1. Install WSL (Windows Subsystem for Linux) - https://learn.microsoft.com/en-us/windows/wsl/install
+# 2. Install Docker Desktop for Windows - https://docs.docker.com/docker-for-windows/install/
+# 3. Open WSL - `wsl`
+# 4. Run this script - `./start-database.sh`
+
+# On Linux and macOS you can run this script directly - `./start-database.sh`
+
+DB_CONTAINER_NAME="schroedinger-hat-website-postgres"
+
+if ! [ -x "$(command -v docker)" ]; then
+ echo -e "Docker is not installed. Please install docker and try again.\nDocker install guide: https://docs.docker.com/engine/install/"
+ exit 1
+fi
+
+if ! docker info > /dev/null 2>&1; then
+ echo "Docker daemon is not running. Please start Docker and try again."
+ exit 1
+fi
+
+if [ "$(docker ps -q -f name=$DB_CONTAINER_NAME)" ]; then
+ echo "Database container '$DB_CONTAINER_NAME' already running"
+ exit 0
+fi
+
+if [ "$(docker ps -q -a -f name=$DB_CONTAINER_NAME)" ]; then
+ docker start "$DB_CONTAINER_NAME"
+ echo "Existing database container '$DB_CONTAINER_NAME' started"
+ exit 0
+fi
+
+# import env variables from .env
+set -a
+source .env
+
+DB_PASSWORD=$(echo "$DATABASE_URL" | awk -F':' '{print $3}' | awk -F'@' '{print $1}')
+DB_PORT=$(echo "$DATABASE_URL" | awk -F':' '{print $4}' | awk -F'\/' '{print $1}')
+
+if [ "$DB_PASSWORD" = "password" ]; then
+ echo "You are using the default database password"
+ read -p "Should we generate a random password for you? [y/N]: " -r REPLY
+ if ! [[ $REPLY =~ ^[Yy]$ ]]; then
+ echo "Please change the default password in the .env file and try again"
+ exit 1
+ fi
+ # Generate a random URL-safe password
+ DB_PASSWORD=$(openssl rand -base64 12 | tr '+/' '-_')
+ sed -i -e "s#:password@#:$DB_PASSWORD@#" .env
+fi
+
+docker run -d \
+ --name $DB_CONTAINER_NAME \
+ -e POSTGRES_USER="postgres" \
+ -e POSTGRES_PASSWORD="$DB_PASSWORD" \
+ -e POSTGRES_DB=schroedinger-hat-website \
+ -p "$DB_PORT":5432 \
+ docker.io/postgres && echo "Database container '$DB_CONTAINER_NAME' was successfully created"
diff --git a/static.json b/static.json
deleted file mode 100755
index 8a257f66..00000000
--- a/static.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "root": "dist",
- "clean_urls": true,
- "routes": {
- "/**": "index.html"
- }
-}
diff --git a/tailwind.config.ts b/tailwind.config.ts
new file mode 100644
index 00000000..7e4caca9
--- /dev/null
+++ b/tailwind.config.ts
@@ -0,0 +1,106 @@
+import { type Config } from "tailwindcss"
+import { fontFamily } from "tailwindcss/defaultTheme"
+import animate from "tailwindcss-animate"
+
+export default {
+ darkMode: ["class"],
+ content: ["./src/**/*.tsx"],
+ theme: {
+ extend: {
+ fontFamily: {
+ sans: ["var(--font-inter)", ...fontFamily.sans],
+ lexend: ["var(--font-lexend)", ...fontFamily.sans],
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ colors: {
+ background: "hsl(var(--background))",
+ foreground: "hsl(var(--foreground))",
+ card: {
+ DEFAULT: "hsl(var(--card))",
+ foreground: "hsl(var(--card-foreground))",
+ },
+ popover: {
+ DEFAULT: "hsl(var(--popover))",
+ foreground: "hsl(var(--popover-foreground))",
+ },
+ primary: {
+ DEFAULT: "hsl(var(--primary))",
+ foreground: "hsl(var(--primary-foreground))",
+ },
+ secondary: {
+ DEFAULT: "hsl(var(--secondary))",
+ foreground: "hsl(var(--secondary-foreground))",
+ },
+ muted: {
+ DEFAULT: "hsl(var(--muted))",
+ foreground: "hsl(var(--muted-foreground))",
+ },
+ accent: {
+ DEFAULT: "hsl(var(--accent))",
+ foreground: "hsl(var(--accent-foreground))",
+ },
+ destructive: {
+ DEFAULT: "hsl(var(--destructive))",
+ foreground: "hsl(var(--destructive-foreground))",
+ },
+ border: "hsl(var(--border))",
+ input: "hsl(var(--input))",
+ ring: "hsl(var(--ring))",
+ chart: {
+ "1": "hsl(var(--chart-1))",
+ "2": "hsl(var(--chart-2))",
+ "3": "hsl(var(--chart-3))",
+ "4": "hsl(var(--chart-4))",
+ "5": "hsl(var(--chart-5))",
+ },
+ },
+ animation: {
+ pulse: "pulse 10s cubic-bezier(0.4, 0, 0.6, 1) infinite",
+ blob: "blob 7s infinite",
+ "accordion-down": "accordion-down 0.2s ease-out",
+ "accordion-up": "accordion-up 0.2s ease-out",
+ },
+ keyframes: {
+ blob: {
+ "0%": {
+ transform: "translate(-50%, -50%) scale(1)",
+ },
+ "33%": {
+ transform: "translate(-50%, -50%) translate(20px, -20px) scale(1.3)",
+ },
+ "66%": {
+ transform: "translate(-50%, -50%) translate(-20px, 20px) scale(0.7)",
+ },
+ "100%": {
+ transform: "translate(-50%, -50%) scale(1)",
+ },
+ },
+ "accordion-down": {
+ from: {
+ height: "0",
+ },
+ to: {
+ height: "var(--radix-accordion-content-height)",
+ },
+ },
+ "accordion-up": {
+ from: {
+ height: "var(--radix-accordion-content-height)",
+ },
+ to: {
+ height: "0",
+ },
+ },
+ },
+ fontSize: {
+ "8xl": ["80px", "1"],
+ "9xl": ["100px", "1"],
+ },
+ },
+ },
+ plugins: [animate],
+} satisfies Config
diff --git a/tsconfig.json b/tsconfig.json
index 0b7ebd27..c5eef6e7 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,28 +1,42 @@
{
"compilerOptions": {
+ /* Base Options: */
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "target": "es2022",
+ "allowJs": true,
+ "resolveJsonModule": true,
+ "moduleDetection": "force",
+ "isolatedModules": true,
+
+ /* Strictness */
+ "strict": true,
+ "noUncheckedIndexedAccess": true,
+ "checkJs": true,
+
+ /* Bundled projects */
+ "lib": ["dom", "dom.iterable", "ES2022"],
+ "noEmit": true,
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "jsx": "preserve",
+ "plugins": [{ "name": "next" }],
"incremental": true,
- "target": "esnext",
- "lib": ["DOM", "ESNext"],
+
+ /* Path Aliases */
"baseUrl": ".",
- "module": "esnext",
- "moduleResolution": "node",
"paths": {
- "@/*": ["src/*"],
- "@components/*": ["src/components/*"],
- "@i18n/*": ["src/i18n/*"],
- "@functions/*": ["src/functions/*"],
- "@pages/*": ["src/pages/*"],
- "@utils/*": ["src/utils/*"]
- },
- "resolveJsonModule": true,
- "types": ["vite/client"],
- "strict": true,
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "skipLibCheck": true
+ "@/*": ["./src/*"]
+ }
},
- "exclude": [
- "dist",
- "node_modules"
- ]
+ "include": [
+ ".eslintrc.cjs",
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ "**/*.cjs",
+ "**/*.js",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": ["node_modules"]
}
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
deleted file mode 100644
index 3537270c..00000000
--- a/tsconfig.tsbuildinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-{"version":"4.9.4"}
-
diff --git a/unocss.config.ts b/unocss.config.ts
deleted file mode 100644
index cb315619..00000000
--- a/unocss.config.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { defineConfig, presetAttributify, presetIcons, presetUno, presetWebFonts } from 'unocss'
-
-export default defineConfig({
- presets: [
- presetAttributify(),
- presetIcons(),
- presetUno(),
- presetWebFonts(),
- ],
- shortcuts: {
- 'bg-base': 'bg-[#eceff4] dark:bg-[#2e3440]',
- 'bg-base-secondary': 'bg-[#d9d9d9] dark:bg-[#3b4252]',
- 'text-base': 'text-[#4c566a] dark:text-[#eceff4]',
- 'text-base-secondary': 'text-[#eceff4] dark:text-[#4c566a]',
- },
- theme: {
- colors: {
- light: {
- text: {
- primary: '#4c566a', // text-light-text-primary
- secondary: '#eceff4', // text-light-text-secondary
- },
- bg: {
- primary: '#eceff4', // bg-light-bg-primary
- secondary: '#d9d9d9', // bg-light-bg-secondary
- },
- },
- dark: {
- text: {
- primary: '#eceff4', // text-dark-text-primary
- secondary: '#4c566a', // text-dark-text-secondary
- },
- bg: {
- primary: '#2e3440', // bg-dark-bg-primary
- secondary: '#3b4252', // bg-dark-bg-secondary
- },
- },
- },
- },
-})
diff --git a/vercel.json b/vercel.json
new file mode 100644
index 00000000..6c72abfb
--- /dev/null
+++ b/vercel.json
@@ -0,0 +1,8 @@
+{
+ "crons": [
+ {
+ "path": "/api/cron/health-check",
+ "schedule": "0 0 * * *"
+ }
+ ]
+}
diff --git a/vite.config.ts b/vite.config.ts
deleted file mode 100644
index d44713f1..00000000
--- a/vite.config.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { URL, fileURLToPath } from 'node:url'
-import { defineConfig } from 'vite'
-import UnoCSS from 'unocss/vite'
-import vue from '@vitejs/plugin-vue'
-
-const sassAdditionalData = () => {
- let additionalData = '@use "sass:math";'
- additionalData += '@use "sass:map";'
- additionalData += '@import "@/styles/global";'
- return additionalData
-}
-
-export default defineConfig({
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url)),
- '@components': fileURLToPath(new URL('./src/components', import.meta.url)),
- '@functions': fileURLToPath(new URL('./src/functions', import.meta.url)),
- '@i18n': fileURLToPath(new URL('./src/i18n', import.meta.url)),
- '@pages': fileURLToPath(new URL('./src/pages', import.meta.url)),
- '@utils': fileURLToPath(new URL('./src/utils', import.meta.url)),
- // See https://github.com/intlify/vue-i18n-next/issues/789
- 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
- },
- },
- css: {
- preprocessorOptions: {
- scss: {
- additionalData: sassAdditionalData(),
- },
- },
- },
- plugins: [
- vue({
- script: {
- defineModel: true,
- },
- }),
- UnoCSS(),
- ],
-})