From 1d4b1eefbad8774adb43cfff5c1b497f76caa930 Mon Sep 17 00:00:00 2001 From: Decobus Date: Tue, 15 Jul 2025 22:15:57 -0400 Subject: [PATCH] Initial commit - OBS Source Switcher Plugin UI Complete Next.js application for managing OBS Source Switcher - Stream management with multiple screen layouts - Team management CRUD operations - SQLite database integration - OBS WebSocket API integration - Updated to latest versions (Next.js 15.4.1, React 19.1.0, Tailwind CSS 4.0.0) - Enhanced .gitignore for privacy and development --- .eslintrc.json | 6 + .github/workflows/build.yml | 47 + .gitignore | 104 + CLAUDE.md | 82 + README.md | 28 + app/add/AddStreamClient.tsx | 144 + app/add/page.tsx | 10 + app/api/addStream/route.ts | 196 + app/api/getActive/route.ts | 57 + app/api/getTeamName/route.ts | 38 + app/api/setActive/route.ts | 43 + app/api/streams/route.ts | 18 + app/api/teams/[teamId]/route.ts | 73 + app/api/teams/route.ts | 37 + app/favicon.ico | Bin 0 -> 25931 bytes app/fonts/GeistMonoVF.woff | Bin 0 -> 67864 bytes app/fonts/GeistVF.woff | Bin 0 -> 66268 bytes app/globals.css | 23 + app/layout.tsx | 14 + app/page.tsx | 207 + app/teams/TeamsClient.tsx | 204 + app/teams/page.tsx | 10 + components/Dropdown.tsx | 101 + config.js | 13 + lib/constants.ts | 42 + lib/database.ts | 60 + lib/obsClient.js | 125 + next.config.ts | 11 + package-lock.json | 7741 +++++++++++++++++++++++++++++++ package.json | 36 + postcss.config.js | 6 + postcss.config.mjs | 8 + public/file.svg | 1 + public/globe.svg | 1 + public/next.svg | 1 + public/vercel.svg | 1 + public/window.svg | 1 + styles/Home.module.css | 10 + tailwind.config.js | 13 + tailwind.config.ts | 18 + testObs.js | 20 + tsconfig.json | 29 + types/index.ts | 17 + 43 files changed, 9596 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 README.md create mode 100644 app/add/AddStreamClient.tsx create mode 100644 app/add/page.tsx create mode 100644 app/api/addStream/route.ts create mode 100644 app/api/getActive/route.ts create mode 100644 app/api/getTeamName/route.ts create mode 100644 app/api/setActive/route.ts create mode 100644 app/api/streams/route.ts create mode 100644 app/api/teams/[teamId]/route.ts create mode 100644 app/api/teams/route.ts create mode 100644 app/favicon.ico create mode 100644 app/fonts/GeistMonoVF.woff create mode 100644 app/fonts/GeistVF.woff create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx create mode 100644 app/teams/TeamsClient.tsx create mode 100644 app/teams/page.tsx create mode 100644 components/Dropdown.tsx create mode 100644 config.js create mode 100644 lib/constants.ts create mode 100644 lib/database.ts create mode 100644 lib/obsClient.js create mode 100644 next.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 postcss.config.mjs create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 public/window.svg create mode 100644 styles/Home.module.css create mode 100644 tailwind.config.js create mode 100644 tailwind.config.ts create mode 100644 testObs.js create mode 100644 tsconfig.json create mode 100644 types/index.ts diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..541b970 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "extends": ["next/core-web-vitals", "next/typescript","prettier"], + "rules": { + "@typescript-eslint/no-require-imports": "off" + } +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..dca10aa --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,47 @@ +name: Lint and Build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [ 20, 22 ] + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Clean NextJS cache + run: rm -rf .next + + - name: Install dependencies + run: npm ci + + - name: Run type check + run: npm run type-check + + - name: Run linter + run: npm run lint + + - name: Build project + run: npm run build + + - name: Upload Build Artifact + uses: actions/upload-artifact@v4 + with: + name: obs-ss-${{ matrix.node-version }} + include-hidden-files: 'true' + path: ./.next/* \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c0eb07c --- /dev/null +++ b/.gitignore @@ -0,0 +1,104 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +# IntelliJ IDEA +.idea/ +*.iml +*.iws +*.ipr +out/ +.idea_modules/ + +# VS Code +.vscode/ +*.code-workspace + +# Local environment variables +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Logs +logs +*.log + +# ESLint cache +.eslintcache + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# Database files (exclude local development databases) +files/*.db +files/*.sqlite +files/*.sqlite3 + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Temporary files +*.tmp +*.temp + +# Claude Code settings (if you want to keep them private) +.claude/settings.local.json diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c841b0b --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,82 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a Next.js web application that controls multiple OBS Source Switchers. It provides a UI for managing stream sources across different screen layouts (large, left, right, topLeft, topRight, bottomLeft, bottomRight) and communicates with OBS WebSocket API to control streaming sources. + +## Key Commands + +### Development +- `npm run dev` - Start the development server +- `npm run build` - Build the production application +- `npm start` - Start the production server +- `npm run lint` - Run ESLint to check code quality +- `npm run type-check` - Run TypeScript type checking without emitting files + +## Architecture Overview + +### Technology Stack +- **Frontend**: Next.js 15.1.6 with React 19, TypeScript, and Tailwind CSS +- **Backend**: Next.js API routes +- **Database**: SQLite with sqlite3 driver +- **OBS Integration**: obs-websocket-js for WebSocket communication with OBS Studio +- **Styling**: Tailwind CSS with @tailwindcss/forms plugin + +### Project Structure +- `/app` - Next.js App Router pages and API routes + - `/api` - Backend API endpoints for stream management + - `/add` - Page for adding new stream clients +- `/components` - Reusable React components (e.g., Dropdown) +- `/lib` - Core utilities and database connection + - `database.ts` - SQLite database initialization and connection management + - `obsClient.js` - OBS WebSocket client for communicating with OBS Studio + - `constants.ts` - Shared constants (table names, etc.) +- `/types` - TypeScript type definitions +- `/files` - Default directory for SQLite database and text files (configurable via .env.local) + +### Key Concepts + +1. **Stream Management**: The app manages stream sources that can be assigned to different screen positions. Each stream has: + - name: Display name + - obs_source_name: Name of the source in OBS + - url: Stream URL + - team_id: Associated team identifier + +2. **Screen Types**: Seven different screen positions are supported: large, left, right, topLeft, topRight, bottomLeft, bottomRight + +3. **Text File Integration**: The app writes the active source name to text files that OBS Source Switcher reads to switch sources automatically + +4. **Environment Configuration**: + - `FILE_DIRECTORY`: Directory for database and text files (default: ./files) + - `OBS_WEBSOCKET_HOST`: OBS WebSocket host (default: 127.0.0.1) + - `OBS_WEBSOCKET_PORT`: OBS WebSocket port (default: 4455) + - `OBS_WEBSOCKET_PASSWORD`: OBS WebSocket password (optional) + +### API Endpoints + +- `POST /api/addStream` - Add new stream to database and OBS +- `GET /api/streams` - Get all available streams +- `GET /api/teams` - Get all teams +- `GET /api/getActive` - Get currently active sources for all screens +- `POST /api/setActive` - Set active stream for a specific screen +- `GET /api/getTeamName` - Get team name by ID + +### Database Schema + +Two main tables: +- `streams`: id, name, obs_source_name, url, team_id +- `teams`: team_id, team_name + +### OBS Integration Pattern + +The app communicates with OBS through: +1. WebSocket connection using obs-websocket-js +2. Text files that OBS Source Switcher monitors for source changes +3. Direct source management through OBS WebSocket API + +When setting an active source: +1. User selects stream in UI +2. API writes source name to corresponding text file (e.g., largeScreen.txt) +3. OBS Source Switcher detects file change and switches to that source \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7392ddd --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +This is a [Next.js](https://nextjs.org) app to control multiple OBS [Source Switchers](https://obsproject.com/forum/resources/source-switcher.941/) + +## Configuration +The application uses a configurable directory for storing files and the database. To update the directory: create `.env.local` in the root of the project. + +`.env.local` should look like: +``` +FILE_DIRECTORY=C:\\OBS\\source-switching +``` +If no `.env.local` file is created, it will default to `./files`, as seen in `config.js` + + +```javascript + const config = { + FILE_DIRECTORY: path.resolve('./files'), + }; +``` + +In the "Source Switcher" properties in OBS, at the bottom, is a setting called `Current Source File`. Enable that, point it to the location of one of the text files, and put the read interval to 1000ms. Your source will change whenever the text file changes to a source _that is defined in the Source Switcher properties_ + +The list of available sources is defined in a SQLite3 DB, location set in the `api/setActive.ts` route. + +`npm install` and +`npm run dev` to run it. + +This is my first [Next.js](https://nextjs.org) app and I am not a Javascript Developer professionally, use at your own risk. + + diff --git a/app/add/AddStreamClient.tsx b/app/add/AddStreamClient.tsx new file mode 100644 index 0000000..94507ab --- /dev/null +++ b/app/add/AddStreamClient.tsx @@ -0,0 +1,144 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import Dropdown from '../../components/Dropdown'; // Adjust the import path as needed +import { Team } from '@/types'; + +export default function AddStreamClient() { + const [formData, setFormData] = useState({ + name: '', + obs_source_name: '', + url: '', + team_id: null, // Include team_id in the form data + }); + const [teams, setTeams] = useState([]); // State to store teams + const [message, setMessage] = useState(''); + + // Fetch teams on component mount + useEffect(() => { + async function fetchTeams() { + try { + const response = await fetch('/api/teams'); + const data = await response.json(); + + // Map the API data to the format required by the Dropdown + setTeams( + data.map((team:Team) => ({ + id: team.team_id, + name: team.team_name, + })) + ); + } catch (error) { + console.error('Failed to fetch teams:', error); + } + } + fetchTeams(); + }, []); + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData((prev) => ({ ...prev, [name]: value })); + }; + + const handleTeamSelect = (teamId:number) => { + // @ts-expect-error - team_id can be null or number in formData, but TypeScript expects only number + setFormData((prev) => ({ ...prev, team_id: teamId })); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setMessage(''); + + try { + const response = await fetch('/api/addStream', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(formData), + }); + + const data = await response.json(); + if (response.ok) { + setMessage(data.message); + setFormData({ name: '', obs_source_name: '', url: '', team_id: null }); // Reset form + } else { + setMessage(data.error || 'Something went wrong.'); + } + } catch (error) { + console.error('Error adding stream:', error); + setMessage('Failed to add stream.'); + } + }; + + return ( +
+

Add New Stream

+
+
+ +
+
+ +
+
+ +
+
+ + +
+ +
+ {message && ( +

+ {message} +

+ )} +
+ ); +} diff --git a/app/add/page.tsx b/app/add/page.tsx new file mode 100644 index 0000000..1b23cdb --- /dev/null +++ b/app/add/page.tsx @@ -0,0 +1,10 @@ +import AddStreamClient from './AddStreamClient'; + +export default function AddStream() { + return ( +
+

Add a New Stream

+ +
+ ); +} diff --git a/app/api/addStream/route.ts b/app/api/addStream/route.ts new file mode 100644 index 0000000..48d2812 --- /dev/null +++ b/app/api/addStream/route.ts @@ -0,0 +1,196 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDatabase } from '../../../lib/database'; +import { connectToOBS, getOBSClient, disconnectFromOBS, addSourceToSwitcher } from '../../../lib/obsClient'; + +interface OBSClient { + call: (method: string, params?: Record) => Promise>; +} + +interface OBSScene { +sceneName: string; +} + +interface OBSInput { +inputName: string; +} + +interface GetSceneListResponse { +currentProgramSceneName: string; +currentPreviewSceneName: string; +scenes: OBSScene[]; +} + +interface GetInputListResponse { +inputs: OBSInput[]; +} +const screens = [ + 'ss_large', + 'ss_left', + 'ss_right', + 'ss_top_left', + 'ss_top_right', + 'ss_bottom_left', + 'ss_bottom_right', +]; + +async function fetchTeamName(teamId: number) { + try { + const baseUrl = process.env.BASE_URL || 'http://localhost:3000'; + const response = await fetch(`${baseUrl}/api/getTeamName?team_id=${teamId}`); + if (!response.ok) { + throw new Error('Failed to fetch team name'); + } + const data = await response.json(); + return data.team_name; +} catch (error) { +if (error instanceof Error) { + console.error('Error:', error.message); +} else { + console.error('An unknown error occurred:', error); +} +return null; +} +} + +async function addBrowserSourceWithAudioControl(obs: OBSClient, sceneName: string, inputName: string, url: string) { + try { + // Step 1: Create the browser source input + await obs.call('CreateInput', { + sceneName, + inputName, + inputKind: 'browser_source', + inputSettings: { + width: 1600, + height: 900, + url, + }, + }); + + console.log(`Browser source "${inputName}" created successfully.`); + + // Step 2: Wait for the input to initialize + let inputReady = false; + for (let i = 0; i < 10; i++) { + try { + await obs.call('GetInputSettings', { inputName }); + inputReady = true; + break; + } catch { + console.log(`Waiting for input "${inputName}" to initialize...`); + await new Promise((resolve) => setTimeout(resolve, 500)); // Wait 500ms before retrying + } + } + + if (!inputReady) { + throw new Error(`Input "${inputName}" did not initialize in time.`); + } + + + // Step 3: Enable "Reroute audio" + await obs.call('SetInputSettings', { + inputName, + inputSettings: { + reroute_audio: true, + }, + overlay: true, // Keep existing settings and apply changes + }); + + console.log(`Audio rerouted for "${inputName}".`); + + // Step 4: Mute the input + await obs.call('SetInputMute', { + inputName, + inputMuted: true, + }); + + console.log(`Audio muted for "${inputName}".`); +} catch (error) { +if (error instanceof Error) { + console.error('Error adding browser source with audio control:', error.message); +} else { + console.error('An unknown error occurred while adding browser source:', error); +} +} +} + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { name, obs_source_name, url, team_id } = body; + + if (!name || !obs_source_name || !url) { + return NextResponse.json({ error: 'Missing required fields' }, { status: 400 }); + } + + // Connect to OBS WebSocket + console.log("Pre-connect") + await connectToOBS(); + console.log('Pre client') + const obs: OBSClient = await getOBSClient(); + // obs.on('message', (msg) => { + // console.log('Message from OBS:', msg); + // }); + let inputs; + try { + const response = await obs.call('GetInputList'); + const inputListResponse = response as unknown as GetInputListResponse; + inputs = inputListResponse.inputs; + // console.log('Inputs:', inputs); + } catch (err) { + if (err instanceof Error) { + console.error('Failed to fetch inputs:', err.message); + } else { + console.error('Failed to fetch inputs:', err); + } + throw new Error('GetInputList failed.'); + } + const teamName = await fetchTeamName(team_id); + console.log('Team Name:', teamName) + const response = await obs.call('GetSceneList'); + const sceneListResponse = response as unknown as GetSceneListResponse; + const { scenes } = sceneListResponse; + const groupExists = scenes.some((scene: OBSScene) => scene.sceneName === teamName); + if (!groupExists) { + await obs.call('CreateScene', { sceneName: teamName }); + } + + const sourceExists = inputs.some((input: OBSInput) => input.inputName === obs_source_name); + + if (!sourceExists) { + await addBrowserSourceWithAudioControl(obs, teamName, obs_source_name, url) + + console.log(`OBS source "${obs_source_name}" created.`); + + for (const screen of screens) { + try { + await addSourceToSwitcher(screen, [ + { hidden: false, selected: false, value: obs_source_name }, + ]); + } catch (error) { + if (error instanceof Error) { + console.error(`Failed to add source to ${screen}:`, error.message); + } else { + console.error(`Failed to add source to ${screen}:`, error); + } + } + } + + } else { + console.log(`OBS source "${obs_source_name}" already exists.`); + } + + const db = await getDatabase(); + const query = `INSERT INTO streams_2025_spring_adr (name, obs_source_name, url, team_id) VALUES (?, ?, ?, ?)`; + db.run(query, [name, obs_source_name, url, team_id]) + await disconnectFromOBS(); + return NextResponse.json({ message: 'Stream added successfully' }, {status: 201}) +} catch (error) { +if (error instanceof Error) { + console.error('Error adding stream:', error.message); +} else { + console.error('An unknown error occurred while adding stream:', error); +} +await disconnectFromOBS(); +return NextResponse.json({ error: 'Failed to add stream' }, { status: 500 }); +} +} \ No newline at end of file diff --git a/app/api/getActive/route.ts b/app/api/getActive/route.ts new file mode 100644 index 0000000..c8ff45d --- /dev/null +++ b/app/api/getActive/route.ts @@ -0,0 +1,57 @@ +import { NextResponse } from 'next/server'; +import fs from 'fs'; +import path from 'path'; +// import config from '../../../config'; + +const FILE_DIRECTORY = path.resolve(process.env.FILE_DIRECTORY || './files') +// Ensure directory exists +if (!fs.existsSync(FILE_DIRECTORY)) { + fs.mkdirSync(FILE_DIRECTORY, { recursive: true }); +} +console.log('using', FILE_DIRECTORY) + +export async function GET() { + try { + const largePath = path.join(FILE_DIRECTORY, 'large.txt'); + const leftPath = path.join(FILE_DIRECTORY, 'left.txt'); + const rightPath = path.join(FILE_DIRECTORY, 'right.txt'); + const topLeftPath = path.join(FILE_DIRECTORY, 'topLeft.txt'); + const topRightPath = path.join(FILE_DIRECTORY, 'topRight.txt'); + const bottomLeftPath = path.join(FILE_DIRECTORY, 'bottomLeft.txt'); + const bottomRightPath = path.join(FILE_DIRECTORY, 'bottomRight.txt'); + + const tankPath = path.join(FILE_DIRECTORY, 'tank.txt'); + const treePath = path.join(FILE_DIRECTORY, 'tree.txt'); + const kittyPath = path.join(FILE_DIRECTORY, 'kitty.txt'); + const chickenPath = path.join(FILE_DIRECTORY, 'chicken.txt'); + + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const large = fs.existsSync(largePath) ? fs.readFileSync(largePath, 'utf-8') : null; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const left = fs.existsSync(leftPath) ? fs.readFileSync(leftPath, 'utf-8') : null; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const right = fs.existsSync(rightPath) ? fs.readFileSync(rightPath, 'utf-8') : null; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const topLeft = fs.existsSync(topLeftPath) ? fs.readFileSync(topLeftPath, 'utf-8') : null; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const topRight = fs.existsSync(topRightPath) ? fs.readFileSync(topRightPath, 'utf-8') : null; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const bottomLeft = fs.existsSync(bottomLeftPath) ? fs.readFileSync(bottomLeftPath, 'utf-8') : null; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const bottomRight = fs.existsSync(bottomRightPath) ? fs.readFileSync(bottomRightPath, 'utf-8') : null; + + const tank = fs.existsSync(tankPath) ? fs.readFileSync(tankPath, 'utf-8') : null; + const tree = fs.existsSync(treePath) ? fs.readFileSync(treePath, 'utf-8') : null; + const kitty = fs.existsSync(kittyPath) ? fs.readFileSync(kittyPath, 'utf-8') : null; + const chicken = fs.existsSync(chickenPath) ? fs.readFileSync(chickenPath, 'utf-8') : null; + + // For SaT + // return NextResponse.json({ large, left, right, topLeft, topRight, bottomLeft, bottomRight }, {status: 201}) + return NextResponse.json({ tank, tree, kitty, chicken }, {status: 201}) + } catch (error) { + console.error('Error reading active sources:', error); + return NextResponse.json({ error: 'Failed to read active sources' }, {status: 500}); + } + +} \ No newline at end of file diff --git a/app/api/getTeamName/route.ts b/app/api/getTeamName/route.ts new file mode 100644 index 0000000..d364306 --- /dev/null +++ b/app/api/getTeamName/route.ts @@ -0,0 +1,38 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { getDatabase } from '../../../lib/database'; + +export async function GET(request: NextRequest) { + try { + // Extract the team_id from the query string + const { searchParams } = new URL(request.url); + const teamId = searchParams.get('team_id'); + + if (!teamId) { + return NextResponse.json( + { error: 'Missing team_id' }, + { status: 400 } + ); + } + + const db = await getDatabase(); + const team = await db.get( + 'SELECT team_name FROM teams_2025_spring_adr WHERE team_id = ?', + [teamId] + ); + + if (!team) { + return NextResponse.json( + { error: 'Team not found' }, + { status: 404 } + ); + } + + return NextResponse.json({ team_name: team.team_name }); + } catch (error) { + console.error('Error fetching team name:', error instanceof Error ? error.message : String(error)); + return NextResponse.json( + { error: 'Failed to fetch team name' }, + { status: 500 } + ); + } +} diff --git a/app/api/setActive/route.ts b/app/api/setActive/route.ts new file mode 100644 index 0000000..a95b279 --- /dev/null +++ b/app/api/setActive/route.ts @@ -0,0 +1,43 @@ +import { NextRequest, NextResponse } from 'next/server'; +import fs from 'fs'; +import path from 'path'; +import { FILE_DIRECTORY } from '../../../config'; +import { getDatabase } from '../../../lib/database'; +import { Stream, Screen } from '@/types'; + +export async function POST(request: NextRequest) { + const body: Screen = await request.json(); + const { screen, id } = body; + + const validScreens = ['large', 'left', 'right', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight']; + if (!validScreens.includes(screen)) { + return NextResponse.json({ error: 'Invalid screen name' }, { status: 400 }); + } + + console.log('Writing files to', path.join(FILE_DIRECTORY(), `${screen}.txt`)); + const filePath = path.join(FILE_DIRECTORY(), `${screen}.txt`); + + try { + const db = await getDatabase(); + const stream: Stream | undefined = await db.get( + 'SELECT * FROM streams_2025_spring_adr WHERE id = ?', + [id] + ); + + console.log('Stream:', stream); + + if (!stream) { + return NextResponse.json({ error: 'Stream not found' }, { status: 400 }); + } + + fs.writeFileSync(filePath, stream.obs_source_name); + return NextResponse.json({ message: `${screen} updated successfully.` }, { status: 200 }); +} catch (error) { +console.error('Error updating active source:', error); +const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred'; +return NextResponse.json( + { error: 'Failed to update active source', details: errorMessage }, + { status: 500 } +); + } +} diff --git a/app/api/streams/route.ts b/app/api/streams/route.ts new file mode 100644 index 0000000..000106f --- /dev/null +++ b/app/api/streams/route.ts @@ -0,0 +1,18 @@ +import { NextResponse } from 'next/server'; +import { getDatabase } from '../../../lib/database'; +import { Stream } from '@/types'; +import { TABLE_NAMES } from '../../../lib/constants'; + +export async function GET() { +try { + const db = await getDatabase(); + const streams: Stream[] = await db.all(`SELECT * FROM ${TABLE_NAMES.STREAMS}`); + return NextResponse.json(streams); +} catch (error) { + console.error('Error fetching streams:', error); + return NextResponse.json( + { error: 'Failed to fetch streams' }, + { status: 500 } + ); +} +} diff --git a/app/api/teams/[teamId]/route.ts b/app/api/teams/[teamId]/route.ts new file mode 100644 index 0000000..a132725 --- /dev/null +++ b/app/api/teams/[teamId]/route.ts @@ -0,0 +1,73 @@ +import { NextResponse } from 'next/server'; +import { getDatabase } from '@/lib/database'; +import { TABLE_NAMES } from '@/lib/constants'; + +export async function PUT( + request: Request, + { params }: { params: Promise<{ teamId: string }> } +) { + try { + const { teamId: teamIdParam } = await params; + const teamId = parseInt(teamIdParam); + const { team_name } = await request.json(); + + if (!team_name) { + return NextResponse.json({ error: 'Team name is required' }, { status: 400 }); + } + + const db = await getDatabase(); + + const result = await db.run( + `UPDATE ${TABLE_NAMES.TEAMS} SET team_name = ? WHERE team_id = ?`, + [team_name, teamId] + ); + + if (result.changes === 0) { + return NextResponse.json({ error: 'Team not found' }, { status: 404 }); + } + + return NextResponse.json({ message: 'Team updated successfully' }); + } catch (error) { + console.error('Error updating team:', error); + return NextResponse.json({ error: 'Failed to update team' }, { status: 500 }); + } +} + +export async function DELETE( + request: Request, + { params }: { params: Promise<{ teamId: string }> } +) { + try { + const { teamId: teamIdParam } = await params; + const teamId = parseInt(teamIdParam); + const db = await getDatabase(); + + await db.run('BEGIN TRANSACTION'); + + try { + await db.run( + `DELETE FROM ${TABLE_NAMES.STREAMS} WHERE team_id = ?`, + [teamId] + ); + + const result = await db.run( + `DELETE FROM ${TABLE_NAMES.TEAMS} WHERE team_id = ?`, + [teamId] + ); + + if (result.changes === 0) { + await db.run('ROLLBACK'); + return NextResponse.json({ error: 'Team not found' }, { status: 404 }); + } + + await db.run('COMMIT'); + return NextResponse.json({ message: 'Team and associated streams deleted successfully' }); + } catch (error) { + await db.run('ROLLBACK'); + throw error; + } + } catch (error) { + console.error('Error deleting team:', error); + return NextResponse.json({ error: 'Failed to delete team' }, { status: 500 }); + } +} \ No newline at end of file diff --git a/app/api/teams/route.ts b/app/api/teams/route.ts new file mode 100644 index 0000000..8fe190d --- /dev/null +++ b/app/api/teams/route.ts @@ -0,0 +1,37 @@ +import { NextResponse } from 'next/server'; +import { getDatabase } from '../../../lib/database'; +import { Team } from '@/types'; +import { TABLE_NAMES } from '@/lib/constants'; + +export async function GET() { + const db = await getDatabase(); + const teams: Team[] = await db.all(`SELECT * FROM ${TABLE_NAMES.TEAMS}`); + return NextResponse.json(teams); +} + +export async function POST(request: Request) { + try { + const { team_name } = await request.json(); + + if (!team_name) { + return NextResponse.json({ error: 'Team name is required' }, { status: 400 }); + } + + const db = await getDatabase(); + + const result = await db.run( + `INSERT INTO ${TABLE_NAMES.TEAMS} (team_name) VALUES (?)`, + [team_name] + ); + + const newTeam: Team = { + team_id: result.lastID!, + team_name: team_name + }; + + return NextResponse.json(newTeam, { status: 201 }); + } catch (error) { + console.error('Error creating team:', error); + return NextResponse.json({ error: 'Failed to create team' }, { status: 500 }); + } +} \ No newline at end of file diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 literal 0 HcmV?d00001 diff --git a/app/fonts/GeistMonoVF.woff b/app/fonts/GeistMonoVF.woff new file mode 100644 index 0000000000000000000000000000000000000000..f2ae185cbfd16946a534d819e9eb03924abbcc49 GIT binary patch literal 67864 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 VlANWMrj}-GY;5en;K0DZ007L + {children} + + ); +} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..0de1faf --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,207 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import Link from 'next/link'; +import Dropdown from '@/components/Dropdown'; + +type Stream = { + id: number; + name: string; + obs_source_name: string; + url: string; +}; + +export default function Home() { + const [streams, setStreams] = useState([]); +type ScreenType = 'large' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'; + +const [activeSources, setActiveSources] = useState>({ +large: null, +left: null, +right: null, +topLeft: null, +topRight: null, +bottomLeft: null, +bottomRight: null, +}); + + const [isLoadingStreams, setIsLoadingStreams] = useState(true); + const [isLoadingActiveSources, setIsLoadingActiveSources] = useState(true); + const [openDropdown, setOpenDropdown] = useState(null); // Manage open dropdown + + useEffect(() => { + // Fetch available streams from the database + async function fetchStreams() { + setIsLoadingStreams(true); + try { + const res = await fetch('/api/streams'); + const data = await res.json(); + setStreams(data); + } catch (error) { + console.error('Error fetching streams:', error); + } finally { + setIsLoadingStreams(false); + } + } + + // Fetch current active sources from files + async function fetchActiveSources() { + setIsLoadingActiveSources(true); + try { + const res = await fetch('/api/getActive'); + const data = await res.json(); + console.log('Fetched activeSources:', data); // Debug log + setActiveSources(data); + } catch (error) { + console.error('Error fetching active sources:', error); + } finally { + setIsLoadingActiveSources(false); + } + } + + fetchStreams(); + fetchActiveSources(); + }, []); + +const handleSetActive = async (screen: ScreenType, id: number | null) => { + const selectedStream = streams.find((stream) => stream.id === id); + + // Update local state + setActiveSources((prev) => ({ + ...prev, + [screen]: selectedStream?.obs_source_name || null, + })); + + // Update the backend + try { + if (id) { + console.log('Setting screen ', screen); + const response = await fetch('/api/setActive', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ screen, id }), + }); + + if (!response.ok) { + throw new Error('Failed to set active stream'); + } + + const data = await response.json(); + console.log(data.message); + } + } catch (error) { + console.error('Error setting active stream:', error); + } + }; + + const handleToggleDropdown = (screen: string) => { + setOpenDropdown((prev) => (prev === screen ? null : screen)); // Toggle dropdown open/close + }; + + return ( +
+ {/* Navigation Links */} +
+ + Add New Stream + + | + + Manage Teams + +
+ +
+

Manage Streams

+
+ + {/* Display loading indicator if either streams or active sources are loading */} + {isLoadingStreams || isLoadingActiveSources ? ( +
Loading...
+ ) : ( + <> + {/* Large Screen on its own line */} +
+
+

Large

+ stream.obs_source_name === activeSources.large)?.id || null + } + onSelect={(id) => handleSetActive('large', id)} + label="Select a Stream..." + isOpen={openDropdown === 'large'} + onToggle={() => handleToggleDropdown('large')} + /> +
+
+ + {/* Row for Left and Right Screens */} +
+ {/* Left Screen */} +
+

Left

+ stream.obs_source_name === activeSources.left)?.id || null + } + onSelect={(id) => handleSetActive('left', id)} + label="Select a Stream..." + isOpen={openDropdown === 'left'} + onToggle={() => handleToggleDropdown('left')} + /> +
+ + {/* Right Screen */} +
+

Right

+ stream.obs_source_name === activeSources.right)?.id || null + } + onSelect={(id) => handleSetActive('right', id)} + label="Select a Stream..." + isOpen={openDropdown === 'right'} + onToggle={() => handleToggleDropdown('right')} + /> +
+
+ + {/* 2x2 Square for Additional Sources */} +
+ {[ + { screen: 'topLeft' as const, label: 'Top Left' }, + { screen: 'topRight' as const, label: 'Top Right' }, + { screen: 'bottomLeft' as const, label: 'Bottom Left' }, + { screen: 'bottomRight' as const, label: 'Bottom Right' }, + ].map(({ screen, label }) => ( +
+

{label}

+ stream.obs_source_name === activeSources[screen])?.id || + null + } + onSelect={(id) => handleSetActive(screen, id)} + label="Select a Stream..." + isOpen={openDropdown === screen} + onToggle={() => handleToggleDropdown(screen)} + /> +
+ ))} +
+ + )} +
+ ); +} diff --git a/app/teams/TeamsClient.tsx b/app/teams/TeamsClient.tsx new file mode 100644 index 0000000..51ba065 --- /dev/null +++ b/app/teams/TeamsClient.tsx @@ -0,0 +1,204 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import Link from 'next/link'; +import { Team } from '@/types'; + +export default function TeamsClient() { + const [teams, setTeams] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [newTeamName, setNewTeamName] = useState(''); + const [editingTeam, setEditingTeam] = useState(null); + const [editingName, setEditingName] = useState(''); + + useEffect(() => { + fetchTeams(); + }, []); + + const fetchTeams = async () => { + setIsLoading(true); + try { + const res = await fetch('/api/teams'); + const data = await res.json(); + setTeams(data); + } catch (error) { + console.error('Error fetching teams:', error); + } finally { + setIsLoading(false); + } + }; + + const handleAddTeam = async (e: React.FormEvent) => { + e.preventDefault(); + if (!newTeamName.trim()) return; + + try { + const res = await fetch('/api/teams', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ team_name: newTeamName }), + }); + + if (res.ok) { + setNewTeamName(''); + fetchTeams(); + } else { + const error = await res.json(); + alert(`Error adding team: ${error.error}`); + } + } catch (error) { + console.error('Error adding team:', error); + alert('Failed to add team'); + } + }; + + const handleUpdateTeam = async (teamId: number) => { + if (!editingName.trim()) return; + + try { + const res = await fetch(`/api/teams/${teamId}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ team_name: editingName }), + }); + + if (res.ok) { + setEditingTeam(null); + setEditingName(''); + fetchTeams(); + } else { + const error = await res.json(); + alert(`Error updating team: ${error.error}`); + } + } catch (error) { + console.error('Error updating team:', error); + alert('Failed to update team'); + } + }; + + const handleDeleteTeam = async (teamId: number) => { + if (!confirm('Are you sure you want to delete this team? This will also delete all associated streams.')) { + return; + } + + try { + const res = await fetch(`/api/teams/${teamId}`, { + method: 'DELETE', + }); + + if (res.ok) { + fetchTeams(); + } else { + const error = await res.json(); + alert(`Error deleting team: ${error.error}`); + } + } catch (error) { + console.error('Error deleting team:', error); + alert('Failed to delete team'); + } + }; + + const startEditing = (team: Team) => { + setEditingTeam(team); + setEditingName(team.team_name); + }; + + const cancelEditing = () => { + setEditingTeam(null); + setEditingName(''); + }; + + return ( +
+
+ + Back to Stream Management + +
+ +
+

Add New Team

+
+ setNewTeamName(e.target.value)} + placeholder="Team name" + className="flex-1 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" + /> + +
+
+ +
+

Existing Teams

+ + {isLoading ? ( +
Loading...
+ ) : teams.length === 0 ? ( +
No teams found. Add one above!
+ ) : ( +
+ {teams.map((team) => ( +
+ {editingTeam?.team_id === team.team_id ? ( + <> + setEditingName(e.target.value)} + className="flex-1 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 mr-3" + /> +
+ + +
+ + ) : ( + <> +
+ {team.team_name} + (ID: {team.team_id}) +
+
+ + +
+ + )} +
+ ))} +
+ )} +
+
+ ); +} \ No newline at end of file diff --git a/app/teams/page.tsx b/app/teams/page.tsx new file mode 100644 index 0000000..048330a --- /dev/null +++ b/app/teams/page.tsx @@ -0,0 +1,10 @@ +import TeamsClient from './TeamsClient'; + +export default function Teams() { + return ( +
+

Team Management

+ +
+ ); +} \ No newline at end of file diff --git a/components/Dropdown.tsx b/components/Dropdown.tsx new file mode 100644 index 0000000..57edd51 --- /dev/null +++ b/components/Dropdown.tsx @@ -0,0 +1,101 @@ +'use client'; + +import { useRef, useEffect, useState } from 'react'; + +type DropdownProps = { + options: Array<{ id: number; name: string }>; + activeId: number | null; + onSelect: (id: number) => void; + label: string; + isOpen?: boolean; + onToggle?: (isOpen: boolean) => void; +}; + +export default function Dropdown({ + options, + activeId, + onSelect, + label, + isOpen: controlledIsOpen, + onToggle, +}: DropdownProps) { +const dropdownRef = useRef(null); + const [isOpen, setIsOpen] = useState(controlledIsOpen ?? false); + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { if (!dropdownRef.current || !(event.target instanceof Node)) return; + if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { + if (onToggle) onToggle(false); + else setIsOpen(false); + } + }; + + if (controlledIsOpen || isOpen) { + document.addEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [controlledIsOpen, isOpen, onToggle]); + + const activeOption = options.find((option) => option.id === activeId) || null; + + const handleSelect = (option: { id: number }) => { + onSelect(option.id); + if (onToggle) onToggle(false); + else setIsOpen(false); + }; + + const toggleDropdown = () => { + if (onToggle) onToggle(!isOpen); + else setIsOpen((prev) => !prev); + }; + + return ( +
+ + + {(controlledIsOpen ?? isOpen) && ( +
+
+ {options.map((option) => ( + + ))} +
+
+ )} +
+ ); +} diff --git a/config.js b/config.js new file mode 100644 index 0000000..eef6916 --- /dev/null +++ b/config.js @@ -0,0 +1,13 @@ +// import path from 'path'; +const path = require('path') +// let FILE_DIRECTORY = null; + +const config = { + FILE_DIRECTORY: path.resolve(process.env.FILE_DIRECTORY || './files'), +}; + + +export function FILE_DIRECTORY() { + return path.resolve(process.env.FILE_DIRECTORY || './files'); +} +// export default config; diff --git a/lib/constants.ts b/lib/constants.ts new file mode 100644 index 0000000..bf68e86 --- /dev/null +++ b/lib/constants.ts @@ -0,0 +1,42 @@ +// Base table names +export const BASE_TABLE_NAMES = { + STREAMS: 'streams', + TEAMS: 'teams', +} as const; + +// Table configuration interface +export interface TableConfig { + year: number; + season: 'spring' | 'summer' | 'fall' | 'winter'; + suffix?: string; +} + +// Default configuration +export const DEFAULT_TABLE_CONFIG: TableConfig = { + year: 2025, + season: 'spring', + suffix: 'adr' +}; + +/** + * Generates a full table name using the provided configuration + * @param baseTableName - The base table name (e.g., 'streams' or 'teams') + * @param config - Optional configuration object. If not provided, uses DEFAULT_TABLE_CONFIG + * @returns The full table name with year, season, and suffix + */ +export function getTableName( + baseTableName: typeof BASE_TABLE_NAMES[keyof typeof BASE_TABLE_NAMES], + config: Partial = {} +): string { + const finalConfig = {...DEFAULT_TABLE_CONFIG, ...config}; + const suffix = finalConfig.suffix ? `_${finalConfig.suffix}` : ''; + + return `${baseTableName}_${finalConfig.year}_${finalConfig.season}${suffix}`; +} + +// Export commonly used full table names with default configuration +export const TABLE_NAMES = { + STREAMS: getTableName(BASE_TABLE_NAMES.STREAMS), + TEAMS: getTableName(BASE_TABLE_NAMES.TEAMS), +} as const; + diff --git a/lib/database.ts b/lib/database.ts new file mode 100644 index 0000000..92bba6b --- /dev/null +++ b/lib/database.ts @@ -0,0 +1,60 @@ +import sqlite3 from 'sqlite3'; +import { open, Database } from 'sqlite'; +import path from 'path'; +import fs from 'fs'; +import { TABLE_NAMES } from './constants'; + +let db: Database | null = null; + +const FILE_DIRECTORY = path.resolve(process.env.FILE_DIRECTORY || './files') + +const ensureDirectoryExists = (dirPath: string) => { + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + console.log(`Created directory: ${dirPath}`); + } +}; + +const initializeDatabase = async (database: Database) => { + // Create streams table + await database.exec(` + CREATE TABLE IF NOT EXISTS ${TABLE_NAMES.STREAMS} ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + obs_source_name TEXT NOT NULL, + url TEXT NOT NULL, + team_id INTEGER NOT NULL + ) + `); + + // Create teams table + await database.exec(` + CREATE TABLE IF NOT EXISTS ${TABLE_NAMES.TEAMS} ( + team_id INTEGER PRIMARY KEY, + team_name TEXT NOT NULL + ) + `); + + console.log('Database tables initialized.'); +}; + +export const getDatabase = async () => { + if (!db) { + // Ensure the files directory exists + ensureDirectoryExists(FILE_DIRECTORY); + + const dbPath = path.join(FILE_DIRECTORY, 'sources.db'); + + db = await open({ + filename: dbPath, + driver: sqlite3.Database, + }); + console.log('Database connection established.'); + + // Initialize database tables + await initializeDatabase(db); + } + return db; +} + +// export default getDatabase \ No newline at end of file diff --git a/lib/obsClient.js b/lib/obsClient.js new file mode 100644 index 0000000..c7a2d24 --- /dev/null +++ b/lib/obsClient.js @@ -0,0 +1,125 @@ +// const config = require('../config'); +const { OBSWebSocket } = require('obs-websocket-js'); + +let obs = null; + +async function connectToOBS() { + if (!obs) { + obs = new OBSWebSocket(); + } + + try { + const OBS_HOST = process.env.OBS_WEBSOCKET_HOST || '127.0.0.1'; + const OBS_PORT = process.env.OBS_WEBSOCKET_PORT || '4455'; + const OBS_PASSWORD = process.env.OBS_WEBSOCKET_PASSWORD || ''; + + console.log('Connecting to OBS WebSocket...'); + console.log('Host:', OBS_HOST); + console.log('Port:', OBS_PORT); + console.log('Password:', OBS_PASSWORD ? '***' : '(none)'); + + await obs.connect(`ws://${OBS_HOST}:${OBS_PORT}`, OBS_PASSWORD); + console.log('Connected to OBS WebSocket.'); + } catch (err) { + console.error('Failed to connect to OBS WebSocket:', err.message); + throw err; + } +} + +function getOBSClient() { + if (!obs) { + throw new Error('OBS WebSocket client is not initialized. Call connectToOBS() first.'); + } + // console.log('client', obs) + return obs; +} + +async function disconnectFromOBS() { + if (obs) { + await obs.disconnect(); + console.log('Disconnected from OBS WebSocket.'); + obs = null; + } +} + +async function addSourceToSwitcher(inputName, newSources) { + if (!obs) { + obs = new OBSWebSocket(); + } + + try { + const OBS_HOST = process.env.OBS_WEBSOCKET_HOST || '127.0.0.1'; + const OBS_PORT = process.env.OBS_WEBSOCKET_PORT || '4455'; + const OBS_PASSWORD = process.env.OBS_WEBSOCKET_PASSWORD || ''; + + await obs.connect(`ws://${OBS_HOST}:${OBS_PORT}`, OBS_PASSWORD); + + // Step 1: Get current input settings + const { inputSettings } = await obs.call('GetInputSettings', { inputName }); + // console.log('Current Settings:', inputSettings); + + // Step 2: Add new sources to the sources array + const updatedSources = [...inputSettings.sources, ...newSources]; + + // Step 3: Update the settings with the new sources array + await obs.call('SetInputSettings', { + inputName, + inputSettings: { + ...inputSettings, + sources: updatedSources, + }, + }); + + console.log('Updated settings successfully for', inputName); + obs.disconnect(); + } catch (error) { + console.error('Error updating settings:', error.message); + } +} + +// async function addSourceToGroup(obs, teamName, obs_source_name, url) { +// try { +// // Step 1: Check if the group exists +// const { scenes } = await obs.call('GetSceneList'); +// const groupExists = scenes.some((scene) => scene.sceneName === teamName); + +// // Step 2: Create the group if it doesn't exist +// if (!groupExists) { +// console.log(`Group "${teamName}" does not exist. Creating it.`); +// await obs.call('CreateScene', { sceneName: teamName }); +// } else { +// console.log(`Group "${teamName}" already exists.`); +// } + +// // Step 3: Add the source to the group +// console.log(`Adding source "${obs_source_name}" to group "${teamName}".`); +// await obs.call('CreateInput', { +// sceneName: teamName, +// inputName: obs_source_name, +// inputKind: 'browser_source', +// inputSettings: { +// width: 1600, +// height: 900, +// url, +// control_audio: true, +// }, +// }); + +// // Step 4: Enable "Control audio via OBS" +// await obs.call('SetInputSettings', { +// inputName: obs_source_name, +// inputSettings: { +// control_audio: true, // Enable audio control +// }, +// overlay: true, // Keep existing settings and apply changes +// }); + +// console.log(`Source "${obs_source_name}" successfully added to group "${teamName}".`); +// } catch (error) { +// console.error('Error adding source to group:', error.message); +// } +// } + + +// Export all functions +module.exports = { connectToOBS, getOBSClient, disconnectFromOBS, addSourceToSwitcher}; \ No newline at end of file diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..d65c117 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,11 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + eslint: { + // Warning: This allows production builds to successfully complete even if + // your project has ESLint errors. + ignoreDuringBuilds: true, + }, +}; + +export default nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e3f42bb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7741 @@ +{ + "name": "obs-source-switcher", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "obs-source-switcher", + "version": "0.1.0", + "dependencies": { + "@tailwindcss/postcss": "^4.1.11", + "bufferutil": "^4.0.8", + "next": "^15.4.1", + "obs-websocket-js": "^5.0.6", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "sqlite": "^5.1.1", + "sqlite3": "^5.1.7", + "ws": "^8.18.0" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.10", + "@types/node": "^22.13.1", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "autoprefixer": "^10.4.20", + "eslint": "^9.20.0", + "eslint-config-next": "^15.4.1", + "eslint-config-prettier": "^10.0.1", + "postcss": "^8.5.1", + "tailwindcss": "^4.0.0", + "typescript": "^5.8.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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.4.tgz", + "integrity": "sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz", + "integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.3.tgz", + "integrity": "sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/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, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", + "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz", + "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "license": "MIT", + "optional": true + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", + "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", + "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", + "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", + "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", + "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz", + "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", + "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", + "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", + "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", + "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", + "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", + "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", + "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", + "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", + "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", + "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", + "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", + "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.4" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", + "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", + "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", + "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@msgpack/msgpack": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-2.8.0.tgz", + "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@next/env": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.4.1.tgz", + "integrity": "sha512-DXQwFGAE2VH+f2TJsKepRXpODPU+scf5fDbKOME8MMyeyswe4XwgRdiiIYmBfkXU+2ssliLYznajTrOQdnLR5A==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.4.1.tgz", + "integrity": "sha512-lQnHUxN7mMksK7IxgKDIXNMWFOBmksVrjamMEURXiYfo7zgsc30lnU8u4y/MJktSh+nB80ktTQeQbWdQO6c8Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.4.1.tgz", + "integrity": "sha512-L+81yMsiHq82VRXS2RVq6OgDwjvA4kDksGU8hfiDHEXP+ncKIUhUsadAVB+MRIp2FErs/5hpXR0u2eluWPAhig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.4.1.tgz", + "integrity": "sha512-jfz1RXu6SzL14lFl05/MNkcN35lTLMJWPbqt7Xaj35+ZWAX342aePIJrN6xBdGeKl6jPXJm0Yqo3Xvh3Gpo3Uw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.4.1.tgz", + "integrity": "sha512-k0tOFn3dsnkaGfs6iQz8Ms6f1CyQe4GacXF979sL8PNQxjYS1swx9VsOyUQYaPoGV8nAZ7OX8cYaeiXGq9ahPQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.4.1.tgz", + "integrity": "sha512-4ogGQ/3qDzbbK3IwV88ltihHFbQVq6Qr+uEapzXHXBH1KsVBZOB50sn6BWHPcFjwSoMX2Tj9eH/fZvQnSIgc3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.4.1.tgz", + "integrity": "sha512-Jj0Rfw3wIgp+eahMz/tOGwlcYYEFjlBPKU7NqoOkTX0LY45i5W0WcDpgiDWSLrN8KFQq/LW7fZq46gxGCiOYlQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.4.1.tgz", + "integrity": "sha512-9WlEZfnw1vFqkWsTMzZDgNL7AUI1aiBHi0S2m8jvycPyCq/fbZjtE/nDkhJRYbSjXbtRHYLDBlmP95kpjEmJbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.4.1.tgz", + "integrity": "sha512-WodRbZ9g6CQLRZsG3gtrA9w7Qfa9BwDzhFVdlI6sV0OCPq9JrOrJSp9/ioLsezbV8w9RCJ8v55uzJuJ5RgWLZg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.4.1.tgz", + "integrity": "sha512-y+wTBxelk2xiNofmDOVU7O5WxTHcvOoL3srOM0kxTzKDjQ57kPU0tpnPJ/BWrRnsOwXEv0+3QSbGR7hY4n9LkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.12.0.tgz", + "integrity": "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", + "integrity": "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.11.tgz", + "integrity": "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-x64": "4.1.11", + "@tailwindcss/oxide-freebsd-x64": "4.1.11", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-x64-musl": "4.1.11", + "@tailwindcss/oxide-wasm32-wasi": "4.1.11", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz", + "integrity": "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz", + "integrity": "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz", + "integrity": "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz", + "integrity": "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz", + "integrity": "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz", + "integrity": "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz", + "integrity": "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz", + "integrity": "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz", + "integrity": "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz", + "integrity": "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.11", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz", + "integrity": "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz", + "integrity": "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide/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==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@tailwindcss/oxide/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@tailwindcss/oxide/node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@tailwindcss/oxide/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tailwindcss/oxide/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "license": "ISC", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@tailwindcss/oxide/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==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.11.tgz", + "integrity": "sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.11", + "@tailwindcss/oxide": "4.1.11", + "postcss": "^8.4.41", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.16.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.4.tgz", + "integrity": "sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.37.0.tgz", + "integrity": "sha512-jsuVWeIkb6ggzB+wPCsR4e6loj+rM72ohW6IBn2C+5NCvfUVY8s33iFPySSVXqtm5Hu29Ne/9bnA0JmyLmgenA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.37.0", + "@typescript-eslint/type-utils": "8.37.0", + "@typescript-eslint/utils": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.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.37.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.37.0.tgz", + "integrity": "sha512-kVIaQE9vrN9RLCQMQ3iyRlVJpTiDUY6woHGb30JDkfJErqrQEmtdWH3gV0PBAfGZgQXoqzXOO0T3K6ioApbbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.37.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.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.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.37.0.tgz", + "integrity": "sha512-BIUXYsbkl5A1aJDdYJCBAo8rCEbAvdquQ8AnLb6z5Lp1u3x5PNgSSx9A/zqYc++Xnr/0DVpls8iQ2cJs/izTXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.37.0", + "@typescript-eslint/types": "^8.37.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": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.37.0.tgz", + "integrity": "sha512-0vGq0yiU1gbjKob2q691ybTg9JX6ShiVXAAfm2jGf3q0hdP6/BruaFjL/ManAR/lj05AvYCH+5bbVo0VtzmjOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.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/tsconfig-utils": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.37.0.tgz", + "integrity": "sha512-1/YHvAVTimMM9mmlPvTec9NP4bobA1RkDbMydxG8omqwJJLEW/Iy2C4adsAESIXU3WGLXFHSZUU+C9EoFWl4Zg==", + "dev": true, + "license": "MIT", + "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.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.37.0.tgz", + "integrity": "sha512-SPkXWIkVZxhgwSwVq9rqj/4VFo7MnWwVaRNznfQDc/xPYHjXnPfLWn+4L6FF1cAz6e7dsqBeMawgl7QjUMj4Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.0", + "@typescript-eslint/utils": "8.37.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.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.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.37.0.tgz", + "integrity": "sha512-ax0nv7PUF9NOVPs+lmQ7yIE7IQmAf8LGcXbMvHX5Gm+YJUYNAl340XkGnrimxZ0elXyoQJuN5sbg6C4evKA4SQ==", + "dev": true, + "license": "MIT", + "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.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.37.0.tgz", + "integrity": "sha512-zuWDMDuzMRbQOM+bHyU4/slw27bAUEcKSKKs3hcv2aNnc/tvE/h7w60dwVw8vnal2Pub6RT1T7BI8tFZ1fE+yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.37.0", + "@typescript-eslint/tsconfig-utils": "8.37.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/visitor-keys": "8.37.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": "^2.1.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.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.37.0.tgz", + "integrity": "sha512-TSFvkIW6gGjN2p6zbXo20FzCABbyUAuq6tBvNRGsKdsSQ6a7rnV6ADfZ7f4iI3lIiXc4F4WWvtUfDw9CJ9pO5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.37.0", + "@typescript-eslint/types": "8.37.0", + "@typescript-eslint/typescript-estree": "8.37.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.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.37.0.tgz", + "integrity": "sha512-YzfhzcTnZVPiLfP/oeKtDp2evwvHLMe0LOy7oe+hb9KKIumLNohYS9Hgp1ifwpu42YWxhZE8yieggz6JpqO/1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.37.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC", + "optional": true + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "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==", + "license": "MIT", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "optional": true, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", + "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", + "license": "ISC", + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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, + "license": "Python-2.0" + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "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, + "license": "MIT", + "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.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "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" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "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==", + "dev": true, + "license": "MIT", + "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.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT", + "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==", + "devOptional": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC", + "optional": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "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, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT", + "optional": true + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.185", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.185.tgz", + "integrity": "sha512-dYOZfUk57hSMPePoIQ1fZWl1Fkj+OshhEVuPacNKWzC1efe56OsHY3l/jCfiAgIICOU3VgOIdoq7ahg7r7n6MQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT", + "optional": true + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "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/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", + "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.15.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.31.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.4.1.tgz", + "integrity": "sha512-XIIN+lq8XuSwXUrcv+0uHMDFGJFPxLAw04/a4muFZYygSvStvVa15nY7kh4Il6yOVJyxdMUyVdQ9ApGedaeupw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "15.4.1", + "@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-config-prettier": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "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.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "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/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "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, + "license": "ISC", + "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, + "license": "MIT", + "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-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "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.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "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.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.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, + "license": "BSD-3-Clause", + "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, + "license": "BSD-2-Clause", + "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, + "license": "BSD-2-Clause", + "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==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "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, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "license": "ISC", + "optional": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "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", + "license": "ISC", + "optional": 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==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "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, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "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==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC", + "optional": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "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" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC", + "optional": true + }, + "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.", + "license": "ISC", + "optional": 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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "optional": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "optional": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.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, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "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.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT", + "optional": true + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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-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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "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, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT", + "optional": true + }, + "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, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/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, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "license": "ISC", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/napi-postinstall": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.0.tgz", + "integrity": "sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "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, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/next/-/next-15.4.1.tgz", + "integrity": "sha512-eNKB1q8C7o9zXF8+jgJs2CzSLIU3T6bQtX6DcTnCq1sIR1CJ0GlSyRs1BubQi3/JgCnr9Vr+rS5mOMI38FFyQw==", + "license": "MIT", + "dependencies": { + "@next/env": "15.4.1", + "@swc/helpers": "0.5.15", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.4.1", + "@next/swc-darwin-x64": "15.4.1", + "@next/swc-linux-arm64-gnu": "15.4.1", + "@next/swc-linux-arm64-musl": "15.4.1", + "@next/swc-linux-x64-gnu": "15.4.1", + "@next/swc-linux-x64-musl": "15.4.1", + "@next/swc-win32-arm64-msvc": "15.4.1", + "@next/swc-win32-x64-msvc": "15.4.1", + "sharp": "^0.34.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "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/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" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-abi": { + "version": "3.75.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", + "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obs-websocket-js": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/obs-websocket-js/-/obs-websocket-js-5.0.6.tgz", + "integrity": "sha512-tHRq8py1XrdlMhSV+N/KTGHqoRIcsBBXbjcA9ex21k128iQ7YXjxzNWs3s9gidP1tEcIyVuJu8FnPgrSBWGm0Q==", + "license": "MIT", + "dependencies": { + "@msgpack/msgpack": "^2.7.1", + "crypto-js": "^4.1.1", + "debug": "^4.3.2", + "eventemitter3": "^5.0.1", + "isomorphic-ws": "^5.0.0", + "type-fest": "^3.11.0", + "ws": "^8.13.0" + }, + "engines": { + "node": ">16.0" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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, + "license": "MIT" + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "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": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", + "optional": true + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC", + "optional": 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==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/sharp": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", + "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.3", + "@img/sharp-darwin-x64": "0.34.3", + "@img/sharp-libvips-darwin-arm64": "1.2.0", + "@img/sharp-libvips-darwin-x64": "1.2.0", + "@img/sharp-libvips-linux-arm": "1.2.0", + "@img/sharp-libvips-linux-arm64": "1.2.0", + "@img/sharp-libvips-linux-ppc64": "1.2.0", + "@img/sharp-libvips-linux-s390x": "1.2.0", + "@img/sharp-libvips-linux-x64": "1.2.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", + "@img/sharp-libvips-linuxmusl-x64": "1.2.0", + "@img/sharp-linux-arm": "0.34.3", + "@img/sharp-linux-arm64": "0.34.3", + "@img/sharp-linux-ppc64": "0.34.3", + "@img/sharp-linux-s390x": "0.34.3", + "@img/sharp-linux-x64": "0.34.3", + "@img/sharp-linuxmusl-arm64": "0.34.3", + "@img/sharp-linuxmusl-x64": "0.34.3", + "@img/sharp-wasm32": "0.34.3", + "@img/sharp-win32-arm64": "0.34.3", + "@img/sharp-win32-ia32": "0.34.3", + "@img/sharp-win32-x64": "0.34.3" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "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/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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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==", + "license": "ISC", + "optional": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "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==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz", + "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==", + "license": "MIT", + "optional": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map-js": { + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/sqlite": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-5.1.1.tgz", + "integrity": "sha512-oBkezXa2hnkfuJwUo44Hl9hS3er+YFtueifoajrgidvqsJRQFpc5fKoAkAor1O5ZnLoa28GBScfHXs8j0K358Q==", + "license": "MIT" + }, + "node_modules/sqlite3": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/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==", + "license": "MIT", + "optional": true + }, + "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, + "license": "MIT", + "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.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", + "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "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/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a02a166 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "obs-source-switcher", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "type-check": "tsc --noEmit" + }, + "dependencies": { + "@tailwindcss/postcss": "^4.1.11", + "bufferutil": "^4.0.8", + "next": "^15.4.1", + "obs-websocket-js": "^5.0.6", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "sqlite": "^5.1.1", + "sqlite3": "^5.1.7", + "ws": "^8.18.0" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.10", + "@types/node": "^22.13.1", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "autoprefixer": "^10.4.20", + "eslint": "^9.20.0", + "eslint-config-next": "^15.4.1", + "eslint-config-prettier": "^10.0.1", + "postcss": "^8.5.1", + "tailwindcss": "^4.0.0", + "typescript": "^5.8.3" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..7907a52 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + '@tailwindcss/postcss': {}, + autoprefixer: {}, + } +} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..5d6d845 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; + +export default config; diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/Home.module.css b/styles/Home.module.css new file mode 100644 index 0000000..c890880 --- /dev/null +++ b/styles/Home.module.css @@ -0,0 +1,10 @@ +.linkButton { + padding: 10px 20px; + background: #0070f3; + color: #fff; + text-decoration: none; + border-radius: 5px; + display: inline-block; + text-align: center; + } + \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..f65b42e --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,13 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { +content: [ + './pages/**/*.{js,ts,jsx,tsx,mdx}', + './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', +], +theme: { + extend: {}, +}, +plugins: [require('@tailwindcss/forms')], +} + diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..e37d2ed --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,18 @@ +import type { Config } from "tailwindcss"; + +export default { + darkMode: 'class', + content: [ + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + background: "var(--background)", + foreground: "var(--foreground)", + }, + }, + }, + plugins: [], +} satisfies Config; diff --git a/testObs.js b/testObs.js new file mode 100644 index 0000000..15d49a2 --- /dev/null +++ b/testObs.js @@ -0,0 +1,20 @@ +const { connectToOBS, getOBSClient, disconnectFromOBS } = require('./lib/obsClient'); + +async function testOBS() { + try { + await connectToOBS(); + console.log('OBS WebSocket connected successfully.'); + // Perform additional OBS calls here, if needed. + const obs = getOBSClient(); + const { inputs } = await obs.call('GetInputList'); + console.log(inputs) + const { inputSettings } = await obs.call('GetInputSettings', { inputName:'ss_left' }); + console.log('Source Switcher Settings:', inputSettings); + // console.log(obs) + await disconnectFromOBS(); + } catch (error) { + console.error('Error:', error.message); + } +} + +testOBS(); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5e7c74b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + // "@config": ["./config.js"], + "@lib/*": ["./lib/*"], + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "lib/obsService.js"], + "exclude": ["node_modules"] +} diff --git a/types/index.ts b/types/index.ts new file mode 100644 index 0000000..1ba7870 --- /dev/null +++ b/types/index.ts @@ -0,0 +1,17 @@ +export type Stream = { + id: number; + name: string; + obs_source_name: string; + url: string; + team_id: number; + }; + +export type Screen = { + screen: string; + id: number; + }; + +export type Team = { + team_id: number; + team_name: string; +}; \ No newline at end of file