From 612a8127dfbdccd82acfbe029580191c0e4194d2 Mon Sep 17 00:00:00 2001 From: srinidhi-2006-bit Date: Tue, 19 May 2026 13:16:29 +0530 Subject: [PATCH] fix: reduce excessive footer gap in editor layout --- .editorconfig | 12 - .eslintrc.json | 3 +- .github/ISSUE_TEMPLATE/bug_report.md | 36 - .github/ISSUE_TEMPLATE/config.yml | 15 +- .github/ISSUE_TEMPLATE/feature_request.md | 22 - .github/ISSUE_TEMPLATE/workflows/ci.yml | 19 - .github/PULL_REQUEST_TEMPLATE.md | 41 - .github/dependabot.yml | 15 - .github/workflows/auto-label.yml | 89 - .github/workflows/claude-code-review.yml | 44 - .github/workflows/claude-manager.yml | 136 - .github/workflows/claude.yml | 51 - .github/workflows/issue-assignment-bot.yml | 278 - .github/workflows/lint.yml | 13 - .github/workflows/main.yml | 9 +- .github/workflows/pr-validator.yml | 92 - .github/workflows/pr-welcome-bot.yml | 85 - .github/workflows/stale.yml | 42 - .github/workflows/typecheck.yml | 16 - .github/workflows/welcome-issue-bot.yml | 62 - .prettierignore | 3 - .prettierrc | 8 - CLAUDE.md | 204 - CODE_OF_ CONDUCT.md | 69 - CODE_OF_CONDUCT.md | 83 - CONTRIBUTING.md | 192 +- CONTRIUBUTION.md | 113 - MIT LICENSE | 21 - README.md | 338 +- SECURITY.md | 48 - bun.lock | 330 +- docs/ARCHITECTURE.md | 204 - next.config.ts | 2 +- package-lock.json | 5444 ++++++++++++++++++++ package.json | 19 +- public/favicon.svg | 20 - public/robots.txt | 2 - public/sitemap.xml | 9 - public/sounds/export-complete.mp3 | Bin 178080 -> 0 bytes reframe | 1 - scripts/generate-sri.ts | 15 - src/app/contact/page.tsx | 47 - src/app/globals.css | 95 +- src/app/layout.tsx | 124 +- src/app/not-found.tsx | 34 - src/app/page.tsx | 18 +- src/app/privacy/page.tsx | 86 - src/components/AudioSpeedControl.tsx | 97 +- src/components/DownloadResult.tsx | 115 +- src/components/ErrorBoundary.tsx | 97 - src/components/ExportOverlay.tsx | 158 +- src/components/ExportSettings.tsx | 195 +- src/components/FileUpload.tsx | 256 +- src/components/Footer.tsx | 134 - src/components/FormatSelector.tsx | 52 - src/components/FramingControl.tsx | 6 +- src/components/ImageOverlay.tsx | 239 - src/components/LottiePlayer.tsx | 2 +- src/components/OnboardingTour.tsx | 335 -- src/components/PresetSelector.tsx | 238 +- src/components/RotateControl.tsx | 7 +- src/components/ScrollToTop.tsx | 44 - src/components/ThemeProvider.tsx | 106 - src/components/ThemeToggle.tsx | 77 - src/components/ThumbnailStrip.tsx | 397 -- src/components/TipCarousel.tsx | 129 - src/components/TrimControl.tsx | 155 +- src/components/VideoEditor.tsx | 262 +- src/components/VideoPreview.tsx | 247 +- src/components/components.tsx | 129 - src/hooks/useVideoEditor.ts | 400 +- src/lib/constants.ts | 22 - src/lib/exportEstimate.ts | 52 - src/lib/ffmpeg.ts | 426 +- src/lib/presetSuggestion.ts | 22 - src/lib/presets.test.ts | 52 - src/lib/presets.ts | 1 - src/lib/tests/ffmpeg.test.ts | 43 - src/lib/tests/presetSuggestion.test.ts | 20 - src/lib/tests/presets.test.ts | 24 - src/lib/tests/utils.test.ts | 71 - src/lib/types.ts | 51 +- src/lib/utils.ts | 38 - src/utils/video-validation.ts | 26 - tailwind.config.ts | 45 +- vercel.json | 28 - 86 files changed, 6098 insertions(+), 7309 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/workflows/ci.yml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/auto-label.yml delete mode 100644 .github/workflows/claude-code-review.yml delete mode 100644 .github/workflows/claude-manager.yml delete mode 100644 .github/workflows/claude.yml delete mode 100644 .github/workflows/issue-assignment-bot.yml delete mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/pr-validator.yml delete mode 100644 .github/workflows/pr-welcome-bot.yml delete mode 100644 .github/workflows/stale.yml delete mode 100644 .github/workflows/typecheck.yml delete mode 100644 .github/workflows/welcome-issue-bot.yml delete mode 100644 .prettierignore delete mode 100644 .prettierrc delete mode 100644 CLAUDE.md delete mode 100644 CODE_OF_ CONDUCT.md delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIUBUTION.md delete mode 100644 MIT LICENSE delete mode 100644 SECURITY.md delete mode 100644 docs/ARCHITECTURE.md create mode 100644 package-lock.json delete mode 100644 public/favicon.svg delete mode 100644 public/robots.txt delete mode 100644 public/sitemap.xml delete mode 100644 public/sounds/export-complete.mp3 delete mode 160000 reframe delete mode 100644 scripts/generate-sri.ts delete mode 100644 src/app/contact/page.tsx delete mode 100644 src/app/not-found.tsx delete mode 100644 src/app/privacy/page.tsx delete mode 100644 src/components/ErrorBoundary.tsx delete mode 100644 src/components/Footer.tsx delete mode 100644 src/components/FormatSelector.tsx delete mode 100644 src/components/ImageOverlay.tsx delete mode 100644 src/components/OnboardingTour.tsx delete mode 100644 src/components/ScrollToTop.tsx delete mode 100644 src/components/ThemeProvider.tsx delete mode 100644 src/components/ThemeToggle.tsx delete mode 100644 src/components/ThumbnailStrip.tsx delete mode 100644 src/components/TipCarousel.tsx delete mode 100644 src/components/components.tsx delete mode 100644 src/lib/constants.ts delete mode 100644 src/lib/exportEstimate.ts delete mode 100644 src/lib/presetSuggestion.ts delete mode 100644 src/lib/presets.test.ts delete mode 100644 src/lib/tests/ffmpeg.test.ts delete mode 100644 src/lib/tests/presetSuggestion.test.ts delete mode 100644 src/lib/tests/presets.test.ts delete mode 100644 src/lib/tests/utils.test.ts delete mode 100644 src/utils/video-validation.ts delete mode 100644 vercel.json diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 4a7ea303..00000000 --- a/.editorconfig +++ /dev/null @@ -1,12 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/.eslintrc.json b/.eslintrc.json index 97584d39..bffb357a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,4 +1,3 @@ { - "extends": ["next/core-web-vitals", "plugin:jsx-a11y/recommended"], - "plugins": ["jsx-a11y"] + "extends": "next/core-web-vitals" } diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index ed29357c..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve Reframe -title: '[BUG] ' -labels: bug -assignees: '' ---- - -**Bug description** -A clear and concise description of what the bug is. - -**Steps to reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Upload video '...' -3. Click on '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Actual behavior** -A clear and concise description of what actually happened. - -**Browser and OS info** - - OS: [e.g. Windows 11, macOS 14] - - Browser: [e.g. Chrome, Firefox, Safari] - - Version: [e.g. 122] - -**Video format (if relevant)** - - Input video format: [e.g. MP4, WebM, MOV] - - Export preset used: [e.g. Instagram Reels, 1080p, Custom] - - File size: [e.g. 15MB] - -**Screenshots/screen recording** -If applicable, add screenshots or a screen recording to help explain your problem. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index dcb594bc..35309303 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,14 +1,5 @@ blank_issues_enabled: false contact_links: - - name: ๐Ÿ’ก Feature Request or Idea - url: https://github.com/magic-peach/reframe/discussions/categories/ideas - about: Share your idea in Discussions before opening an issue - - name: ๐Ÿ™‹ Ask a Question - url: https://github.com/magic-peach/reframe/discussions/categories/q-a - about: Use Discussions for questions โ€” not Issues - - name: ๐Ÿ› Report a Bug - url: https://github.com/magic-peach/reframe/discussions/categories/bug-reports - about: Report bugs in Discussions first - - name: โญ Star the repo - url: https://github.com/magic-peach/reframe/stargazers - about: If Reframe helped you, please star the repo! + - name: GSSoC Support + url: https://gssoc.girlscript.tech/ + about: Please read the guidelines before creating issues. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index c93571e0..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '[FEATURE] ' -labels: 'enhancement, feature' -assignees: '' ---- - -**Feature description** -A clear and concise description of the feature you're requesting. - -**Problem this solves** -Is your feature request related to a problem? Please describe it. Ex. "I'm always frustrated when..." - -**Proposed solution** -A clear and concise description of what you want to happen. If you have an idea of how to implement this technically, please share it! - -**Alternatives considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/workflows/ci.yml b/.github/ISSUE_TEMPLATE/workflows/ci.yml deleted file mode 100644 index 6708ea08..00000000 --- a/.github/ISSUE_TEMPLATE/workflows/ci.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: CI -on: - pull_request: - branches: [main] -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v1 - - run: bun install --frozen-lockfile - - run: bun run lint - typecheck: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v1 - - run: bun install --frozen-lockfile - - run: bunx tsc --noEmit \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index e1356945..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,41 +0,0 @@ -## Description - - -## Related Issue - - -## Type of Contribution -- [ ] Bug fix -- [ ] New feature -- [ ] Documentation update -- [ ] GSSoC contribution - -## Participant Info -- GitHub username: -- Contribution level (Beginner/Intermediate/Advanced): - -## Screen Recording - - - - - -> **How to record:** run `bun run dev` โ†’ open http://localhost:3000 โ†’ demonstrate the full working flow of your change, including any edge cases. -> -> - **macOS**: `Cmd + Shift + 5` โ†’ Record Selected Portion, or use QuickTime Player -> - **Windows**: `Win + G` โ†’ Xbox Game Bar โ†’ Capture -> - **Linux**: OBS Studio, GNOME Screenshot tool, or `kazam` -> - **Any OS**: [Loom](https://loom.com) (free screen recorder, great for sharing) - -**Recording / Loom link:** - -## Checklist -- [ ] I have read the contribution guidelines -- [ ] My changes follow the project structure -- [ ] I have tested my changes in Chrome, Firefox, and Safari -- [ ] `bun run lint` passes (no ESLint errors) -- [ ] `bunx tsc --noEmit` passes (no TypeScript errors) -- [ ] New interactive elements have `aria-label` / accessible names -- [ ] No `console.log` statements left in -- [ ] This PR is related to a valid issue -- [ ] **Screen recording attached above** (required for UI/feature/design changes) diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index cac1d789..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: 2 -updates: - - package-ecosystem: npm - directory: / - schedule: - interval: weekly - open-pull-requests-limit: 5 - labels: - - dependencies - - gssoc'26 - - - package-ecosystem: github-actions - directory: / - schedule: - interval: weekly \ No newline at end of file diff --git a/.github/workflows/auto-label.yml b/.github/workflows/auto-label.yml deleted file mode 100644 index b5aa0d25..00000000 --- a/.github/workflows/auto-label.yml +++ /dev/null @@ -1,89 +0,0 @@ -name: Auto Label - -on: - issues: - types: [opened] - pull_request_target: - types: [opened, synchronize, reopened] - -permissions: - issues: write - pull-requests: write - contents: read - -jobs: - label: - runs-on: ubuntu-latest - steps: - - name: Apply keyword and size labels - uses: actions/github-script@v9 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const owner = context.repo.owner; - const repo = context.repo.repo; - const isPR = context.eventName === 'pull_request_target'; - - const number = isPR - ? context.payload.pull_request.number - : context.payload.issue.number; - const title = isPR - ? context.payload.pull_request.title - : context.payload.issue.title; - const body = (isPR - ? context.payload.pull_request.body - : context.payload.issue.body) || ''; - - const text = `${title} ${body}`.toLowerCase(); - const labelsToAdd = new Set(); - - // Keyword โ†’ type label - const keywordMap = [ - [/\bbug\b|\bfix(es|ed)?\b|\bbroken\b|\bcrash\b|\berror\b/, 'type:bug'], - [/\bfeature\b|\benhancement\b/, 'type:feature'], - [/\bdocs?\b|\bdocumentation\b|\breadme\b/, 'type:docs'], - [/\bsecurity\b|\bvulnerabilit|\bcve\b/, 'type:security'], - [/\bperformance\b|\boptimi[sz]e?\b|\bslow\b|\bspeed\b|\blatency\b/, 'type:performance'], - [/\bdesign\b|\bui\b|\bux\b|\bstyle\b|\bcsss?\b|\blayout\b/, 'type:design'], - [/\brefactor\b|\bclean.?up\b|\brestructure\b/, 'type:refactor'], - [/\btest(ing|s)?\b|\bspec\b|\bunit\b|\be2e\b/, 'type:testing'], - ]; - - for (const [pattern, label] of keywordMap) { - if (pattern.test(text)) labelsToAdd.add(label); - } - - // Line-count โ†’ level label (PRs only โ€” issues have no diff) - if (isPR) { - let totalLines = 0; - let page = 1; - while (true) { - const { data: files } = await github.rest.pulls.listFiles({ - owner, repo, pull_number: number, per_page: 100, page - }); - totalLines += files.reduce((sum, f) => sum + f.additions + f.deletions, 0); - if (files.length < 100) break; - page++; - } - - if (totalLines < 50) labelsToAdd.add('level:beginner'); - else if (totalLines <= 200) labelsToAdd.add('level:intermediate'); - else labelsToAdd.add('level:advanced'); - } - - if (labelsToAdd.size === 0) { - core.info('No labels matched. Skipping.'); - return; - } - - core.info(`Applying labels: ${Array.from(labelsToAdd).join(', ')}`); - try { - await github.rest.issues.addLabels({ - owner, - repo, - issue_number: number, - labels: Array.from(labelsToAdd) - }); - } catch (e) { - core.warning(`Failed to add labels: ${e?.message}`); - } diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml deleted file mode 100644 index 5ae9a3fc..00000000 --- a/.github/workflows/claude-code-review.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Claude Code Review - -on: - pull_request: - types: [opened, synchronize, ready_for_review, reopened] - # Optional: Only run on specific file changes - # paths: - # - "src/**/*.ts" - # - "src/**/*.tsx" - # - "src/**/*.js" - # - "src/**/*.jsx" - -jobs: - claude-review: - # Optional: Filter by PR author - # if: | - # github.event.pull_request.user.login == 'external-contributor' || - # github.event.pull_request.user.login == 'new-developer' || - # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' - - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: read - issues: read - id-token: write - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - fetch-depth: 1 - - - name: Run Claude Code Review - id: claude-review - uses: anthropics/claude-code-action@v1 - with: - claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} - plugin_marketplaces: 'https://github.com/anthropics/claude-code.git' - plugins: 'code-review@claude-code-plugins' - prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}' - # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md - # or https://code.claude.com/docs/en/cli-reference for available options - diff --git a/.github/workflows/claude-manager.yml b/.github/workflows/claude-manager.yml deleted file mode 100644 index cb276de5..00000000 --- a/.github/workflows/claude-manager.yml +++ /dev/null @@ -1,136 +0,0 @@ -name: Claude Repo Manager - -on: - pull_request: - types: [opened, synchronize, ready_for_review, reopened] - issues: - types: [opened] - issue_comment: - types: [created] - -jobs: - claude-pr-review: - if: github.event_name == 'pull_request' - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - checks: read - statuses: read - id-token: write - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Wait for other checks to settle (30s) - run: sleep 30 - - - name: Claude PR Review & Auto-merge - uses: anthropics/claude-code-action@beta - with: - anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - github_token: ${{ secrets.GITHUB_TOKEN }} - trigger_phrase: "" - direct_prompt: | - You are the automated manager for magic-peach/reframe, a GSSoC'26 open-source project. - Follow the rules in CLAUDE.md exactly. - - Current PR: #${{ github.event.pull_request.number }} - Author: @${{ github.event.pull_request.user.login }} - Title: ${{ github.event.pull_request.title }} - Base branch: ${{ github.event.pull_request.base.ref }} - - Steps: - 1. Fetch all CI check statuses for this PR using the GitHub API. - 2. Check the Vercel deployment check status specifically. - 3. Read the PR diff to review the code. - 4. Verify the code follows CLAUDE.md standards: - - Uses bun.lock (not package-lock.json) - - No not-found.tsx if output:export is set - - No CSS variable renames (--bg, --surface, --border, --text, --muted must stay) - - cn() not converted to template literals - - React hooks not placed after conditional returns - - No new video-processing dependencies added - 5. If ALL checks pass and code is correct: squash-merge the PR and post a comment explaining the merge. - 6. If ANY check failed or code has issues: post a detailed comment tagging @${{ github.event.pull_request.user.login }} with exactly what failed and how to fix it. Do NOT merge. - - claude-issue-triage: - if: github.event_name == 'issues' - runs-on: ubuntu-latest - permissions: - contents: read - issues: write - id-token: write - steps: - - uses: actions/checkout@v6 - - - name: Claude Issue Triage - uses: anthropics/claude-code-action@beta - with: - anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - github_token: ${{ secrets.GITHUB_TOKEN }} - trigger_phrase: "" - direct_prompt: | - You are the automated manager for magic-peach/reframe, a GSSoC'26 open-source project. - Follow the rules in CLAUDE.md exactly. - - A new issue was opened: #${{ github.event.issue.number }} - Author: @${{ github.event.issue.user.login }} - Title: ${{ github.event.issue.title }} - - Steps: - 1. Read the issue body via the GitHub API. - 2. Post a welcoming comment that: - - Thanks @${{ github.event.issue.user.login }} for opening the issue - - Acknowledges the specific problem they reported - - Asks 1-2 targeted clarifying questions if the issue is vague or missing reproduction steps - - Mentions a maintainer will review soon - 3. Apply the correct GSSoC labels. You MUST use the gh CLI to actually apply them โ€” - do NOT mention labels in a comment instead of applying them. Run: - gh issue edit ${{ github.event.issue.number }} \ - --add-label "label1,label2" \ - --repo ${{ github.repository }} - Choose labels from these lists: - - Exactly ONE level:* label โ†’ level:beginner / level:intermediate / level:advanced / level:critical - - One or more type:* labels โ†’ type:bug / type:feature / type:docs / type:testing / - type:security / type:performance / type:design / type:refactor / type:devops / type:accessibility - - Always include gssoc'26 - 4. Read all existing comments on the issue. If anyone said "I'd like to work on this", - "can I be assigned?", "I want to take this", or similar โ€” assign the issue to the - FIRST person who made such a request. Only assign one person. - - claude-discussion-reply: - if: | - (github.event_name != 'issue_comment' || (!contains(github.event.comment.body, '/assign') && !contains(github.event.comment.body, '/unassign'))) && - github.event_name == 'issue_comment' && - github.event.issue.pull_request == null - runs-on: ubuntu-latest - permissions: - contents: read - issues: write - id-token: write - steps: - - uses: actions/checkout@v6 - - - name: Claude Discussion Reply - uses: anthropics/claude-code-action@beta - with: - anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - github_token: ${{ secrets.GITHUB_TOKEN }} - trigger_phrase: "" - direct_prompt: | - You are the automated manager for magic-peach/reframe, a GSSoC'26 open-source project. - Follow the rules in CLAUDE.md exactly. - - A comment was posted on issue #${{ github.event.issue.number }} by @${{ github.event.comment.user.login }}. - - Steps: - 1. Read the full issue thread (title, body, all comments) via the GitHub API. - 2. Read the new comment: "${{ github.event.comment.body }}" - 3. Decide if a reply is genuinely needed: - - If the commenter is asking a question โ†’ answer it specifically - - If they are requesting assignment โ†’ assign them if no one else is assigned yet, and confirm in a comment - - If it is a status update or acknowledgment that needs no reply โ†’ skip posting - 4. If replying: post a concise, helpful, on-topic response. Tag @${{ github.event.comment.user.login }} if addressing them directly. - Never post generic filler responses. diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml deleted file mode 100644 index 16706469..00000000 --- a/.github/workflows/claude.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Claude Code - -on: - issue_comment: - types: [created] - pull_request_review_comment: - types: [created] - issues: - types: [opened, assigned] - pull_request_review: - types: [submitted] - -jobs: - claude: - if: | - (github.event_name != 'issue_comment' || (!contains(github.event.comment.body, '/assign') && !contains(github.event.comment.body, '/unassign'))) && - ((github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || - (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || - (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || - (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))) - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: read - issues: read - id-token: write - actions: read # Required for Claude to read CI results on PRs - steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - fetch-depth: 1 - - - name: Run Claude Code - id: claude - uses: anthropics/claude-code-action@v1 - with: - claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} - - # This is an optional setting that allows Claude to read CI results on PRs - additional_permissions: | - actions: read - - # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. - # prompt: 'Update the pull request description to include a summary of changes.' - - # Optional: Add claude_args to customize behavior and configuration - # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md - # or https://code.claude.com/docs/en/cli-reference for available options - # claude_args: '--allowed-tools Bash(gh pr *)' - diff --git a/.github/workflows/issue-assignment-bot.yml b/.github/workflows/issue-assignment-bot.yml deleted file mode 100644 index 73eb9707..00000000 --- a/.github/workflows/issue-assignment-bot.yml +++ /dev/null @@ -1,278 +0,0 @@ -name: Issue Assignment Bot - -on: - issue_comment: - types: [created] - schedule: - - cron: '0 */6 * * *' - -permissions: - issues: write - contents: read - -jobs: - handle-assignment: - if: github.event_name == 'issue_comment' && github.event.issue.pull_request == null - runs-on: ubuntu-latest - concurrency: - group: issue-assignment-${{ github.event.issue.number }} - cancel-in-progress: false - permissions: - issues: write - contents: read - steps: - - name: Handle assignment and unassignment requests - uses: actions/github-script@v9 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const commentBody = context.payload.comment.body.trim(); - const commentLower = commentBody.toLowerCase(); - const issueNumber = context.payload.issue.number; - const commenter = context.payload.comment.user.login; - const owner = context.repo.owner; - const repo = context.repo.repo; - - // โ”€โ”€ Detect intent โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - - // /unassign @username (maintainer targeted unassign) - const maintainerUnassignMatch = commentBody.match( - /^\/unassign\s+@([A-Za-z0-9\-]+)/i - ); - - // /unassign (self-unassign, no username) - const selfUnassign = - !maintainerUnassignMatch && - /^\/unassign\s*$/i.test(commentBody); - - // /assign or natural-language assignment triggers - const assignmentTriggers = [ - '/assign', - 'assign me', - 'i want to work on this', - 'can i work on this', - 'can i be assigned' - ]; - const isAssignRequest = - !maintainerUnassignMatch && - !selfUnassign && - assignmentTriggers.some(t => commentLower.includes(t)); - - if (!maintainerUnassignMatch && !selfUnassign && !isAssignRequest) { - core.info('Comment does not match any handled command. Skipping.'); - return; - } - - // โ”€โ”€ Fetch current issue state โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - const { data: issue } = await github.rest.issues.get({ - owner, - repo, - issue_number: issueNumber - }); - const currentAssignees = (issue.assignees || []).map(a => a.login); - - // โ”€โ”€ Helper โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - const postComment = body => - github.rest.issues.createComment({ owner, repo, issue_number: issueNumber, body }); - - // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• - // CASE 1 โ€” Maintainer: /unassign @username - // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• - if (maintainerUnassignMatch) { - const targetUser = maintainerUnassignMatch[1]; - - if (currentAssignees.length > 1) { - await github.rest.issues.removeAssignees({ - owner, repo, issue_number: issueNumber, - assignees: currentAssignees - }); - await postComment( - `All assignees have been removed from this issue. It is now open for anyone โ€” comment \`/assign\` to claim it!` - ); - } else { - await github.rest.issues.removeAssignees({ - owner, repo, issue_number: issueNumber, - assignees: [targetUser] - }); - await postComment( - `Hey @${targetUser}, you have been unassigned from this issue by a maintainer. It is now open for others to pick up โ€” comment \`/assign\` to claim it! ๐Ÿ‘‹` - ); - } - return; - } - - // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• - // CASE 2 โ€” Self-unassign: /unassign - // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• - if (selfUnassign) { - if (!currentAssignees.includes(commenter)) { - await postComment( - `Hey @${commenter}, you are not currently assigned to this issue. ๐Ÿ˜…` - ); - return; - } - - await github.rest.issues.removeAssignees({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - assignees: [commenter] - }); - await postComment( - `Hey @${commenter}, you have been unassigned from this issue. It is now open for anyone to pick up โ€” comment \`/assign\` to claim it! ๐Ÿ‘‹` - ); - return; - } - - // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• - // CASE 3 โ€” Assign request - // โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• - - // Enforce single assignee: reject if anyone is already assigned - if (currentAssignees.length > 0) { - await postComment( - `Hey @${commenter}, this issue is already assigned to @${currentAssignees[0]}. Please pick another issue or wait for it to become available. You can browse open unassigned issues here: https://github.com/magic-peach/reframe/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee` - ); - return; - } - - // Count open issues currently assigned to the commenter - let assignedCount = 0; - let page = 1; - while (true) { - const { data } = await github.rest.issues.listForRepo({ - owner, repo, state: 'open', assignee: commenter, per_page: 100, page - }); - assignedCount += data.filter(i => !i.pull_request).length; - if (data.length < 100) break; - page++; - } - - if (assignedCount >= 5) { - await postComment( - `Hey @${commenter}, you already have 5 issues assigned to you. Please complete or unassign one before picking up more. ๐Ÿ™` - ); - return; - } - - // Remove any stale assignees first, then set exactly this one person - if (currentAssignees.length > 0) { - await github.rest.issues.removeAssignees({ - owner, repo, issue_number: issueNumber, - assignees: currentAssignees - }); - } - await github.rest.issues.addAssignees({ - owner, repo, issue_number: issueNumber, - assignees: [commenter] - }); - await postComment( - `Hey @${commenter}, this issue has been assigned to you! ๐ŸŽ‰ Please make progress within 5 days or it will be automatically unassigned due to inactivity.` - ); - - inactivity-check: - if: github.event_name == 'schedule' - runs-on: ubuntu-latest - steps: - - name: Check for inactive assigned issues - uses: actions/github-script@v9 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const owner = context.repo.owner; - const repo = context.repo.repo; - const now = Date.now(); - const DAY_MS = 24 * 60 * 60 * 1000; - - // Fetch all open issues that have at least one assignee - let page = 1; - const assignedIssues = []; - while (true) { - const response = await github.rest.issues.listForRepo({ - owner, - repo, - state: 'open', - per_page: 100, - page - }); - - const filtered = response.data.filter( - i => !i.pull_request && i.assignees && i.assignees.length > 0 - ); - assignedIssues.push(...filtered); - - if (response.data.length < 100) break; - page++; - } - - core.info(`Found ${assignedIssues.length} open assigned issues to check.`); - - for (const issue of assignedIssues) { - const assignee = issue.assignees[0].login; - const issueNumber = issue.number; - - const commentsResponse = await github.rest.issues.listComments({ - owner, - repo, - issue_number: issueNumber, - per_page: 100 - }); - - let lastActivityTimestamp = new Date(issue.updated_at).getTime(); - if (commentsResponse.data.length > 0) { - const lastComment = commentsResponse.data[commentsResponse.data.length - 1]; - const lastCommentTime = new Date(lastComment.created_at).getTime(); - if (lastCommentTime > lastActivityTimestamp) { - lastActivityTimestamp = lastCommentTime; - } - } - - const daysSinceActivity = (now - lastActivityTimestamp) / DAY_MS; - core.info(`Issue #${issueNumber} (@${assignee}): ${daysSinceActivity.toFixed(2)} days since last activity.`); - - const botComments = commentsResponse.data.filter( - c => c.user.login === 'github-actions[bot]' - ); - const commentBodies = botComments.map(c => c.body); - - if (daysSinceActivity >= 5) { - await github.rest.issues.removeAssignees({ - owner, - repo, - issue_number: issueNumber, - assignees: [assignee] - }); - await github.rest.issues.createComment({ - owner, - repo, - issue_number: issueNumber, - body: `This issue has been unassigned from @${assignee} due to 5 days of inactivity and is open for anyone to pick up โ€” comment \`/assign\` to claim it!` - }); - - } else if (daysSinceActivity >= 4) { - const alreadyWarned = commentBodies.some(b => - b.includes('final warning') && b.includes('4 days') - ); - if (!alreadyWarned) { - await github.rest.issues.createComment({ - owner, - repo, - issue_number: issueNumber, - body: `Hey @${assignee}, final warning! โš ๏ธ This issue has had no activity for 4 days and will be automatically unassigned in 24 hours if there is no update.` - }); - } - - } else if (daysSinceActivity >= 2) { - const alreadyWarned = commentBodies.some(b => - b.includes('2 days') && b.includes('no activity') - ); - if (!alreadyWarned) { - await github.rest.issues.createComment({ - owner, - repo, - issue_number: issueNumber, - body: `Hey @${assignee}, just a friendly reminder that this issue has had no activity for 2 days. Please leave an update or let us know if you need help! โฐ` - }); - } - } - } diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 82974065..00000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Lint - -on: [push, pull_request] - -jobs: - lint: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v6 - - uses: oven-sh/setup-bun@v2 - - run: bun install - - run: bun run lint \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 430b885b..c2a41792 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,13 +12,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v6 - - - name: Setup Bun - uses: oven-sh/setup-bun@v2 + uses: actions/checkout@v3 - name: Install dependencies - run: bun install + run: npm install - name: Build - run: bun run build + run: npm run build diff --git a/.github/workflows/pr-validator.yml b/.github/workflows/pr-validator.yml deleted file mode 100644 index 23b27351..00000000 --- a/.github/workflows/pr-validator.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: ๐Ÿ” PR Validator - -on: - pull_request_target: - types: [opened, edited, synchronize, reopened] - -permissions: - pull-requests: write - issues: write - -concurrency: - group: pr-validator-${{ github.event.pull_request.number }} - cancel-in-progress: true - -jobs: - validate: - runs-on: ubuntu-latest - steps: - - name: Validate PR format - uses: actions/github-script@v9 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const pr = context.payload.pull_request; - const owner = context.repo.owner; - const repo = context.repo.repo; - const number = pr.number; - const body = pr.body || ''; - const title = pr.title || ''; - const username = pr.user.login; - - if (pr.user.type === 'Bot') return; - - const warnings = []; - - // Check conventional title - const conventionalRegex = /^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|security)(\(.+\))?: .+/i; - if (!conventionalRegex.test(title)) { - warnings.push('โš ๏ธ Use a conventional PR title. Examples:\n - `feat: add dark mode support`\n - `fix: resolve aria label missing on slider`\n - `docs: add deployment guide to README`'); - } - - // Check linked issue - const issueRegex = /(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s+#\d+/i; - if (!issueRegex.test(body)) { - warnings.push('โš ๏ธ No linked issue found. Add `Closes #` to your PR description.'); - } - - // Check if targeting main (warn, don't block) - if (pr.base.ref !== 'main') { - warnings.push(`โš ๏ธ Your PR targets \`${pr.base.ref}\` instead of \`main\`. Please check your base branch.`); - } - - const MARKER = ''; - const { data: comments } = await github.rest.issues.listComments({ - owner, repo, issue_number: number, per_page: 100 - }); - const existingComment = comments.find(c => c.body.includes(MARKER)); - - let commentBody; - if (warnings.length > 0) { - commentBody = [ - MARKER, - `## โš ๏ธ PR Format Issues โ€” @${username}`, - ``, - `Please fix the following before your PR can be reviewed:`, - ``, - ...warnings.map(w => `- ${w}`), - ``, - `Push new commits after fixing โ€” this comment will update automatically.`, - ``, - `๐Ÿ“– [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md)`, - ].join('\n'); - } else { - commentBody = [ - MARKER, - `## โœ… PR Format Check Passed โ€” @${username}`, - ``, - `Basic format checks passed. A maintainer will review your code changes.`, - ``, - `_This does not mean the PR is approved โ€” it just means the format is correct._`, - ].join('\n'); - } - - if (existingComment) { - await github.rest.issues.updateComment({ - owner, repo, comment_id: existingComment.id, body: commentBody - }); - } else { - await github.rest.issues.createComment({ - owner, repo, issue_number: number, body: commentBody - }); - } diff --git a/.github/workflows/pr-welcome-bot.yml b/.github/workflows/pr-welcome-bot.yml deleted file mode 100644 index 6bb5061a..00000000 --- a/.github/workflows/pr-welcome-bot.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: ๐Ÿ‘‹ PR Welcome Bot - -on: - pull_request_target: - types: [opened] - -permissions: - pull-requests: write - issues: write - -concurrency: - group: pr-welcome-${{ github.event.pull_request.number }} - cancel-in-progress: false - -jobs: - welcome: - runs-on: ubuntu-latest - steps: - - name: Post welcome comment - uses: actions/github-script@v9 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const pr = context.payload.pull_request; - const owner = context.repo.owner; - const repo = context.repo.repo; - const number = pr.number; - const author = pr.user.login; - - if (pr.user.type === 'Bot') return; - - const MARKER = ''; - const { data: existing } = await github.rest.issues.listComments({ - owner, repo, issue_number: number, per_page: 100 - }); - if (existing.some(c => c.body.includes(MARKER))) return; - - const body = pr.body || ''; - const isGssoc = body.toLowerCase().includes('gssoc') || - (pr.head.ref || '').toLowerCase().includes('gssoc'); - - const comment = [ - MARKER, - `## ๐Ÿ‘‹ Thanks for your PR, @${author}!`, - ``, - `Welcome to **Reframe** โ€” a browser-based video editor built for everyone ๐ŸŽฌ`, - ``, - `${isGssoc ? '> ๐ŸŸ  **GSSoC\'26 PR detected** โ€” thanks for contributing under GirlScript Summer of Code 2026!' : ''}`, - ``, - `### What happens next`, - ``, - `1. ๐Ÿค– **Automated checks** โ€” build & TypeScript typecheck will run automatically`, - `2. โœ… **Vercel preview** โ€” a preview deployment will be created (requires maintainer authorization for fork PRs)`, - `3. ๐Ÿ‘€ **Code review** โ€” a maintainer will review your changes`, - `4. ๐Ÿš€ **Merge** โ€” once approved, your PR will be merged!`, - ``, - `### Quick checklist`, - ``, - `- [ ] PR title follows [Conventional Commits](https://www.conventionalcommits.org/) (e.g. \`feat: add dark mode\`)`, - `- [ ] Linked the issue this PR closes (e.g. \`Closes #123\`)`, - `- [ ] Tested the changes locally (\`bun run dev\`)`, - `- [ ] Build passes (\`bun run build\`)`, - ``, - `### Useful links`, - ``, - `- ๐Ÿ“– [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md)`, - `- ๐Ÿ› [Open Issues](https://github.com/${owner}/${repo}/issues)`, - `- โญ [Star the repo](https://github.com/${owner}/${repo}) to support the project!`, - ``, - `Happy coding! ๐ŸŽ‰`, - ].join('\n'); - - await github.rest.issues.createComment({ - owner, repo, issue_number: number, body: comment - }); - - if (isGssoc) { - try { - await github.rest.issues.addLabels({ - owner, repo, issue_number: number, labels: ["gssoc'26"] - }); - } catch (e) { - core.warning(`Failed adding gssoc label: ${e?.message}`); - } - } diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index eacefe13..00000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: ๐Ÿ—“๏ธ Stale Issues & PRs - -on: - schedule: - - cron: '0 2 * * *' # Daily at 2 AM UTC - workflow_dispatch: - -permissions: - issues: write - pull-requests: write - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v10 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-issue-stale: 30 - days-before-issue-close: 14 - days-before-pr-stale: 21 - days-before-pr-close: 14 - stale-issue-message: | - ๐Ÿ‘‹ This issue has been inactive for **30 days**. It will be automatically closed in 14 days if there's no further activity. - - If you're still interested in working on this, please leave a comment! - For GSSoC'26 contributors: make sure to keep your assigned issues active. - - โญ [Star Reframe](https://github.com/magic-peach/reframe) if you find it useful! - stale-pr-message: | - ๐Ÿ‘‹ This PR has been inactive for **21 days**. It will be automatically closed in 14 days if there's no further activity. - - If you need help with this PR, please comment or ping a maintainer. - Make sure your branch is rebased onto `main` and all CI checks pass. - close-issue-message: | - ๐Ÿ”’ Closing this issue due to inactivity. Feel free to reopen if you'd like to work on it! - close-pr-message: | - ๐Ÿ”’ Closing this PR due to inactivity. Feel free to reopen and rebase onto `main` if you'd like to continue! - stale-issue-label: 'needs investigation' - stale-pr-label: 'needs-fixes' - exempt-issue-labels: 'pinned,security,priority: high' - exempt-pr-labels: 'merge-ready,gssoc:approved' diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml deleted file mode 100644 index a3ba017b..00000000 --- a/.github/workflows/typecheck.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Type Check - -on: [push, pull_request] - -jobs: - typecheck: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v6 - - - uses: oven-sh/setup-bun@v2 - - - run: bun install - - - run: bunx tsc --noEmit \ No newline at end of file diff --git a/.github/workflows/welcome-issue-bot.yml b/.github/workflows/welcome-issue-bot.yml deleted file mode 100644 index e91b35ab..00000000 --- a/.github/workflows/welcome-issue-bot.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: ๐Ÿ‘‹ Issue Welcome Bot - -on: - issues: - types: [opened] - -permissions: - issues: write - -jobs: - welcome: - runs-on: ubuntu-latest - steps: - - name: Welcome new issue reporters - uses: actions/github-script@v9 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const issue = context.payload.issue; - const owner = context.repo.owner; - const repo = context.repo.repo; - const username = issue.user.login; - - if (issue.user.type === 'Bot') return; - - const MARKER = ''; - const { data: existing } = await github.rest.issues.listComments({ - owner, repo, issue_number: issue.number, per_page: 10 - }); - if (existing.some(c => c.body.includes(MARKER))) return; - - const body = [ - MARKER, - `## ๐Ÿ‘‹ Thanks for opening an issue, @${username}!`, - ``, - `Our maintainers will review this shortly ๐Ÿš€`, - ``, - `### Before you start working`, - ``, - `- ๐Ÿ“– Read the [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md) guide`, - `- ๐Ÿ’ฌ Wait for a maintainer to **assign** you the issue before starting work`, - `- ๐Ÿ” Search for [existing issues](https://github.com/${owner}/${repo}/issues) to avoid duplicates`, - ``, - `### For GSSoC'26 contributors`, - ``, - `If you're contributing under **GirlScript Summer of Code 2026**, please mention it in your comment when requesting assignment:`, - ``, - `> *"I'd like to work on this โ€” contributing under GSSoC'26"*`, - ``, - `### Architecture notes`, - ``, - `Reframe is a **static Next.js app** with \`output: "export"\`. Key points:`, - `- All video processing uses FFmpeg.wasm (client-side, no server)`, - `- \`headers()\` in \`next.config.ts\` won't work โ€” use \`vercel.json\` instead`, - `- \`not-found.tsx\` requires \`public/404.html\` + \`vercel.json\` routes config`, - ``, - `Happy contributing! โญ [Star the repo](https://github.com/${owner}/${repo}) if you find it useful!`, - ].join('\n'); - - await github.rest.issues.createComment({ - owner, repo, issue_number: issue.number, body - }); diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 0a1b9e1d..00000000 --- a/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -.next/ -node_modules/ -bun.lock \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index c72204d1..00000000 --- a/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "semi": false, - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "printWidth": 100, - "plugins": ["prettier-plugin-tailwindcss"] -} \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index d6418fb9..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,204 +0,0 @@ -# CLAUDE.md โ€” Automated Repository Manager - -This file instructs Claude Code (and the Claude GitHub App) how to behave as an automated manager for this repository. - ---- - -## PR Automation - -When triggered on a pull request: - -**Step 1 โ€” Resolve merge conflicts first (if any).** -Before reviewing code or checking CI, check whether the PR has merge conflicts. If it does, resolve them automatically as described in the Merge Conflict Resolution section below. Only proceed to steps 2โ€“3 after the branch is clean. - -**Step 2 โ€” Check CI.** -Check whether **ALL** checks have passed โ€” including tests and the Vercel deployment check. - -**Step 3 โ€” Review the code.** -Review for correctness, security issues, and adherence to the standards in this file. - -**If ALL checks pass AND the code looks good** โ†’ merge the PR immediately using a squash merge. Leave a short comment explaining what was merged and why it passed. - -**If ANY check failed OR the code has issues** โ†’ do NOT merge. Post a comment on the PR tagging the author (`@username`) with: -- A clear summary of what failed -- Specific steps they need to take to fix it -- A friendly but direct tone - -Never merge a PR if any CI check or Vercel deployment check is still pending or has failed. - ---- - -## Merge Conflict Resolution - -When a PR has merge conflicts, resolve them automatically **before** doing anything else (before code review, before checking CI). - -### Steps: - -1. **Detect conflicts** โ€” check the PR's mergeability via the GitHub API (`mergeable` field). If `mergeable: false`, proceed with resolution. - -2. **Clone and resolve locally:** - ```bash - git clone https://github.com/magic-peach/reframe.git - cd reframe - git fetch origin - git checkout - git merge origin/main - # resolve conflicts (see rules below) - git add . - git commit -m "chore: resolve merge conflicts with main" - git push origin - ``` - -3. **Conflict resolution rules โ€” apply these in order:** - - - **`src/app/page.tsx`** โ€” Always keep the `main` version exactly. This file has a known stable structure; contributor changes that add a `
` wrapper or duplicate JSX must be discarded in favour of main. - - **`bun.lock` / `package-lock.json`** โ€” Keep `bun.lock` from `main`. Delete any `package-lock.json` the PR introduced. - - **`src/app/layout.tsx` metadata** โ€” Keep all fields from `main`; merge in any *new* fields from the PR branch (e.g. new `openGraph` keys). If the PR duplicates an existing field, keep the `main` version of that field. - - **CSS variables in `src/app/globals.css`** โ€” Keep `main`'s variable names (`--bg`, `--surface`, `--border`, `--text`, `--muted`). Discard any renames from the PR branch. - - **`.github/workflows/`** โ€” Keep `main` versions of all workflow files. Only accept new workflow files from the PR if they don't conflict. - - **All other files** โ€” Use standard semantic merge: keep both sets of changes if they don't logically conflict. If two edits touch the same line and both are meaningful, apply the PR's change on top of `main`'s version (i.e., prefer preserving contributor intent where safe). - -4. **Post a comment** on the PR after pushing the resolved branch, tagging the author: - - > Hey @username! This PR had merge conflicts with `main` โ€” I've resolved them automatically and pushed the result. Here's what was changed: - > - > - **`src/app/page.tsx`**: kept the `main` version (your `
` wrapper was removed โ€” this file has a fixed structure) - > - **`bun.lock`**: regenerated from `main` (removed `package-lock.json`) - > - _(list each file and what decision was made)_ - > - > CI has been re-triggered. If anything looks wrong, feel free to push additional changes. - -5. **Do not resolve conflicts that require domain judgement** โ€” if two branches both meaningfully modify the same function body in `src/lib/ffmpeg.ts` or a complex component, do not guess. Instead post a comment asking the author to rebase manually and explain exactly which lines conflict. - ---- - -## Auto-Labeling Rules - -Apply labels automatically whenever a PR or issue is opened. Do not wait to be asked. - -### On every new PR โ€” apply labels immediately: - -#### Difficulty (required โ€” pick exactly one): - -| Label | When to apply | -|---|---| -| `level:beginner` | Small/simple changes: typo fixes, minor copy edits, single-line tweaks, docs-only changes, adding a missing `aria-label` | -| `level:intermediate` | Moderate changes: new UI components, multi-file features, hooks, non-trivial bug fixes | -| `level:advanced` | Complex features: significant refactors, new lib integrations, multi-component architecture changes, FFmpeg filter changes | -| `level:critical` | Security fixes, critical bug patches, breaking changes that affect the entire app | - -Use the **diff size and conceptual complexity** together โ€” a 200-line diff that only reformats code is still `level:beginner`; a 20-line diff that changes FFmpeg filter logic is `level:advanced`. - -#### Quality (optional โ€” apply if clearly warranted): - -| Label | When to apply | -|---|---| -| `quality:clean` | Code is well-structured, readable, consistent with project style, and has no obvious issues | -| `quality:exceptional` | Outstanding quality: handles edge cases elegantly, adds meaningful tests, exemplary naming and structure | - -Apply `quality:clean` only when the code is genuinely clean โ€” not as a default. Apply `quality:exceptional` sparingly. - -#### Type (optional โ€” apply one or more that fit): - -| Label | When to apply | -|---|---| -| `type:bug` | Fixes a bug or error in existing behavior | -| `type:feature` | Adds new user-facing functionality | -| `type:docs` | Documentation-only changes (README, CONTRIBUTING, code comments) | -| `type:testing` | Adds or improves tests | -| `type:security` | Security-related changes (CSP, SRI, input validation, auth) | -| `type:performance` | Improves speed, reduces bundle size, optimizes rendering | -| `type:design` | UI/UX changes (layout, styling, animations, visual improvements) | -| `type:refactor` | Code restructuring with no behavior change | -| `type:devops` | CI/CD, GitHub Actions workflows, config files, build tooling | -| `type:accessibility` | Accessibility improvements (ARIA, keyboard nav, contrast, screen reader support) | - -Multiple type labels are fine when a PR genuinely covers multiple concerns (e.g., a bug fix that also improves accessibility gets both `type:bug` and `type:accessibility`). - -#### GSSoC labels: - -- Always add `gssoc'26` to every PR. -- **Do NOT add `gssoc:approved` automatically.** Only a human maintainer adds this label after reviewing the contribution. Without it, the contribution does not count for GSSoC points. - ---- - -### On every new issue โ€” apply labels immediately: - -Apply the same type labels (`type:bug`, `type:feature`, `type:docs`, etc.) based on what the issue is about. -Apply one difficulty label (`level:*`) based on the estimated complexity of solving it. -Do **not** add `gssoc:approved` to issues โ€” it only applies to PRs. - ---- - -## Issue Triage & Assignment - -When a new issue is opened: - -1. Read the issue title and body carefully. -2. Post a welcoming comment that: - - Acknowledges the issue - - Asks clarifying questions if the issue is vague or missing reproduction steps - - Explains what happens next (e.g., "a maintainer will review this soon") -3. Apply labels as described in the Auto-Labeling Rules above. -4. Scan all existing comments. If any commenter said something like "I'd like to work on this", "can I be assigned?", or "I want to take this" โ€” assign the issue to the **first** person who made such a request. Only assign one person. - ---- - -## Discussion & Open Issue Comments - -When a new discussion is created or a comment is posted on an open issue: - -1. Read the full thread for context. -2. Post a helpful, on-topic reply that answers the question, acknowledges feedback, or explains current status. -3. Keep replies concise and friendly. Do not post generic or filler responses. - ---- - -## Code Standards - -### Project Overview - -Reframe is a **static Next.js 15 SPA** (`output: "export"`) โ€” no server runtime. All video processing runs client-side via FFmpeg.wasm. - -### Critical Rules - -- **Lockfile**: This project uses `bun.lock`. Never commit `package-lock.json` or `yarn.lock`. Reject any PR that adds a wrong lockfile. -- **Static export**: `output: "export"` is set in `next.config.ts`. This means: - - `not-found.tsx` is incompatible โ€” reject PRs adding it - - `headers()` in `next.config.ts` is silently ignored โ€” security headers must go in `vercel.json` - - No server-side features (API routes, middleware rewrites, etc.) -- **CSS variables**: The design system uses `--bg`, `--surface`, `--border`, `--text`, `--muted`. Do NOT rename these โ€” it breaks all components. Reject PRs that rename CSS variables. -- **`cn()` utility**: Uses `clsx` + `tailwind-merge`. Never convert `cn()` calls to plain template literals โ€” this loses Tailwind class conflict resolution. -- **React Hooks Rules**: All hooks (`useState`, `useEffect`, `useCallback`, etc.) must be called **before** any conditional `return`. Reject PRs where hooks appear after an early return. -- **FFmpeg dependency**: Do not add new video-processing dependencies (e.g., `mp4box`, `fluent-ffmpeg`). FFmpeg.wasm is the only video engine. - -### Architecture - -- Single `EditRecipe` object holds all user settings, updated via `updateRecipe(patch)` pattern -- FFmpeg.wasm (~30 MB) is lazy-loaded on first export only -- Components live in `src/components/`, hooks in `src/hooks/`, FFmpeg logic in `src/lib/ffmpeg.ts` - ---- - -## GSSoC Label Schema - -Every PR must have: -- One `level:*` label (difficulty) โ€” applied automatically on open -- One or more `type:*` labels (category) โ€” applied automatically on open -- `gssoc'26` label โ€” applied automatically on open -- `gssoc:approved` label โ€” **added by a maintainer only**, never automatically - -**Quality multipliers** (optional, applied by maintainer): -- `quality:clean` โ€” well-implemented, clean code -- `quality:exceptional` โ€” outstanding implementation - -**Score** = (difficulty ร— quality multiplier) + type bonus - ---- - -## General Rules - -- Always take real actions via the GitHub API โ€” post comments, merge PRs, assign issues, apply labels. -- Follow the code style and architecture patterns visible in the existing codebase. -- Tag contributors by their GitHub username when addressing them in comments. -- If uncertain about something, post a comment asking for clarification rather than guessing. diff --git a/CODE_OF_ CONDUCT.md b/CODE_OF_ CONDUCT.md deleted file mode 100644 index 841c78ff..00000000 --- a/CODE_OF_ CONDUCT.md +++ /dev/null @@ -1,69 +0,0 @@ -# Code of Conduct - -## Our Pledge - -We as contributors and maintainers pledge to make participation in this project a respectful, inclusive, and harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -We are committed to creating an open and welcoming environment for all contributors. - ---- - -## Our Standards - -Examples of behavior that contributes to a positive environment include: - -- Using welcoming and inclusive language -- Respecting differing viewpoints and experiences -- Giving and accepting constructive feedback gracefully -- Showing empathy toward other community members -- Helping beginners and encouraging collaboration - -Examples of unacceptable behavior include: - -- Harassment, trolling, or insulting comments -- Discrimination of any kind -- Personal or political attacks -- Publishing othersโ€™ private information without permission -- Any behavior that creates a hostile environment - ---- - -## Enforcement Responsibilities - -Project maintainers are responsible for clarifying and enforcing the standards of acceptable behavior. - -Maintainers may remove, edit, or reject comments, commits, code, issues, pull requests, and other contributions that violate this Code of Conduct. - ---- - -## Scope - -This Code of Conduct applies within all project spaces, including: - -- GitHub repositories -- Issues and Pull Requests -- Discussions and community spaces -- Project-related communications - ---- - -## Reporting Guidelines - -If you experience or witness unacceptable behavior, please report it to the project maintainers through GitHub Issues or the appropriate communication channels. - -All reports will be reviewed and handled respectfully. - ---- - -## Enforcement - -Contributors who do not follow the Code of Conduct may face temporary or permanent restrictions from the project community depending on the severity of the violation. - ---- - -## Attribution - -This Code of Conduct is adapted from the Contributor Covenant, version 2.1. - -For more information: -https://www.contributor-covenant.org/version/2/1/code_of_conduct/ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 737de08a..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,83 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [INSERT CONTACT METHOD]. All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of actions. - -**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index af91ea2c..0e47a16f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,3 @@ -> โญ **If Reframe helped you, [star the repo](https://github.com/magic-peach/reframe)** โ€” it helps more people discover it! -> -> ๐Ÿ’ฌ **Have a question or idea?** Head to [Discussions](https://github.com/magic-peach/reframe/discussions) instead of opening an issue. -> -> ๐ŸŸข **Ready to contribute?** Check out our [Good First Issues](https://github.com/magic-peach/reframe/issues?q=is%3Aopen+label%3A%22good+first+issue%22) โ€” perfect for first-time contributors! - -*** - # Contributing to Reframe First off, **thank you for considering contributing to Reframe**! ๐ŸŽ‰ @@ -28,13 +20,11 @@ If you're ready to tackle some open issues, **[we've collected some good first i - [Development Setup](#development-setup) - [Project Structure](#project-structure) - [Finding Issues](#finding-issues) -- [Claiming Issues](#-claiming-issues) - [Making Changes](#making-changes) - [Submitting a Pull Request](#submitting-a-pull-request) - [Code Style](#code-style) - [Development Tips](#development-tips) - [GSSoC'26 Participants](#gssoc26-participants) -- [Code of Conduct](#code-of-conduct) --- @@ -116,110 +106,6 @@ reframe/ โ”œโ”€โ”€ tailwind.config.ts โ””โ”€โ”€ tsconfig.json ``` ---- - -## Development Tips - -### 1. Next.js Fast Refresh -This project uses Next.js Fast Refresh in development mode. Most changes to React components, hooks, and styles are reflected instantly in the browser without restarting the dev server. - -- Component updates appear immediately -- State is often preserved during edits -- Restarting `npm run dev` is usually unnecessary for UI changes - -Learn more: https://nextjs.org/docs/architecture/fast-refresh - ---- - -### 2. FFmpeg Module Changes -Changes to `ffmpeg.ts` may not hot-reload correctly because FFmpeg initialization and WebAssembly modules can persist in memory. - -If updates are not reflected: - -- Perform a full browser page reload -- Clear cached worker instances if necessary -- Restart the development server only when required - -FFmpeg WASM reference: https://ffmpegwasm.netlify.app/docs/overview - ---- - -### 3. Monitor FFmpeg Downloads -FFmpeg WebAssembly assets can be large and may take time to download during development. - -Use the browser DevTools **Network** tab to: - -- Verify FFmpeg assets are loading correctly -- Inspect caching behavior -- Detect failed `.wasm` or worker requests -- Measure initialization performance - -Chrome DevTools: https://developer.chrome.com/docs/devtools/network - ---- - -### 4. Use React DevTools -Install React DevTools for easier component inspection and debugging. - -Helpful for: - -- Inspecting component props and state -- Tracing re-renders -- Debugging hooks -- Monitoring React component trees - -React DevTools: https://react.dev/learn/react-developer-tools - ---- - -### 5. Keep Console Open During Development -The browser console provides important runtime diagnostics for: - -- FFmpeg initialization issues -- Hydration warnings -- API request failures -- WebAssembly loading errors - -Filtering logs by warnings/errors can speed up debugging significantly. - ---- - -### 6. Use Source Maps for Easier Debugging -Development builds include source maps, allowing you to debug original TypeScript/React source files directly from DevTools. - -Tips: - -- Set breakpoints in source files -- Use async stack traces -- Inspect runtime variables during rendering - -JavaScript debugging guide: https://developer.chrome.com/docs/devtools/javascript - ---- - -### 7. Watch for Memory Usage -FFmpeg WebAssembly processing can consume significant browser memory during video operations. - -Recommendations: - -- Close unused tabs while testing -- Refresh the page after heavy processing tasks -- Monitor memory usage in browser performance tools - -Performance tools: https://developer.chrome.com/docs/devtools/performance - ---- - -### 8. Verify Environment Variables -After modifying `.env.local`, restart the Next.js development server because environment variables are loaded only during server startup. - -Example: - -```bash -npm run dev -``` - -Environment variables guide: https://nextjs.org/docs/app/guides/environment-variables --- @@ -239,45 +125,9 @@ We have **300+ open issues** across all skill levels: | โšก **Performance** | [`performance`](https://github.com/magic-peach/reframe/issues?q=is%3Aopen+label%3Aperformance) label | **Before claiming an issue:** -1. Check if it already has an assignee โ€” if so, pick a different one -2. Comment `/assign` on the issue to claim it instantly via our bot -3. If an issue has been idle and unassigned for a while, it's fair game - ---- - -## ๐Ÿ™‹ Claiming Issues - -We use a bot to automatically manage issue assignments. Here's how it works: - -### Claiming an Issue -Comment `/assign` on any open issue to claim it: -- The bot will assign it to you instantly -- You have **5 days** to make progress before it is automatically unassigned -- You can only hold **5 issues** at a time across the repo - -### Unassigning Yourself -If you can no longer work on an issue, comment `/unassign` to release it: -- This frees it up for other contributors immediately -- No hard feelings โ€” we appreciate the honesty! - -### Assignment Rules -- โœ… First person to comment `/assign` gets the issue -- โœ… Only **one contributor** can be assigned per issue at a time -- โœ… Maximum **5 issues** per contributor at once -- โš ๏ธ You will get a warning after **2 days** of no activity -- โš ๏ธ You will get a final warning after **4 days** of no activity -- โŒ Issue is automatically unassigned after **5 days** of no activity - -### Inactivity Warnings -The bot will ping you if your assigned issue has no activity: -- **Day 2** โ€” friendly reminder to update your progress -- **Day 4** โ€” final warning, 24 hours left before unassignment -- **Day 5** โ€” automatic unassignment, issue reopens for others - -### Tips -- Leave a comment on your issue if you are stuck or need help โ€” any comment resets the inactivity timer -- Link your PR to the issue using `Fixes #issue_number` in your PR description -- If you see an issue already assigned, please pick a different one +1. Check if someone is already working on it (look at comments and assignees) +2. Comment on the issue to let maintainers know you're working on it +3. If it's been idle for 7+ days, feel free to take it over --- @@ -325,28 +175,9 @@ git commit -m "feat: add aria-label to export button" 3. Fill in the PR template: - Describe what you changed and why - Reference the issue: `Closes #` - - **Attach a screen recording** (required for UI/feature changes โ€” see below) + - Add screenshots for UI changes 4. Submit the PR โ€” maintainers will review within a few days -### Screen Recording Requirement - -**Any PR that adds or modifies a UI element, a user-facing feature, or any visual behaviour must include a screen recording of the working change running on your local machine.** - -This is a hard requirement โ€” PRs without a recording will not be merged until one is added. - -**What to record:** -- Run `bun run dev` and open `http://localhost:3000` -- Demonstrate the full working flow of your change (e.g. upload a video โ†’ use the new control โ†’ export โ†’ see the result) -- Show any edge cases your implementation handles (empty state, error state, etc.) - -**How to record:** -- **macOS**: `Cmd + Shift + 5` โ†’ Record Selected Portion, or use QuickTime Player -- **Windows**: `Win + G` โ†’ Xbox Game Bar โ†’ Capture -- **Linux**: OBS Studio, GNOME Screenshot tool, or `kazam` -- **Any OS**: [Loom](https://loom.com) (free, great for sharing) - -Attach the recording directly to the PR by dragging the file into the GitHub comment box, or paste a Loom/shareable link. - ### PR Checklist - [ ] Code works in Chrome, Firefox, and Safari @@ -355,7 +186,6 @@ Attach the recording directly to the PR by dragging the file into the GitHub com - [ ] UI changes tested on mobile (use browser DevTools) - [ ] Accessibility: new interactive elements have ARIA labels - [ ] Issue number referenced in PR description -- [ ] **Screen recording attached** (required for all UI/feature PRs) --- @@ -390,8 +220,9 @@ Reframe is an **official GirlScript Summer of Code 2026 project**! 1. Browse issues labeled [`gssoc'26`](https://github.com/magic-peach/reframe/issues?q=is%3Aopen+label%3A%22gssoc%2726%22) 2. Start with [`good first issue`](https://github.com/magic-peach/reframe/issues?q=is%3Aopen+label%3A%22good+first+issue%22+label%3A%22gssoc%2726%22) if you're new to open source -3. Comment `/assign` on the issue โ€” our bot will assign it to you instantly, no maintainer needed -4. Submit your PR within **5 days** and remember to link it with `Fixes #issue_number` +3. Comment on the issue with: "I'd like to work on this for GSSoC'26 โ€” @magic-peach" +4. Wait for a maintainer to assign the issue to you +5. Submit your PR within **7 days** of being assigned ### Tips for GSSoC Success @@ -409,13 +240,4 @@ Reframe is an **official GirlScript Summer of Code 2026 project**! - **Have a feature idea?** โ†’ [Open a feature request](https://github.com/magic-peach/reframe/issues/new?labels=feature) - **Stuck on an issue?** โ†’ Comment on the issue and tag `@magic-peach` ---- - -## Code of Conduct - -We expect all contributors to follow our Code of Conduct to create a safe, welcoming, and inclusive community. -- **Be respectful and welcoming.** -- **Harassment and discrimination are strictly prohibited.** -- **Constructive feedback is encouraged.** - Thank you for making Reframe better! ๐ŸŽฌ diff --git a/CONTRIUBUTION.md b/CONTRIUBUTION.md deleted file mode 100644 index ad7001f1..00000000 --- a/CONTRIUBUTION.md +++ /dev/null @@ -1,113 +0,0 @@ - # Contribution Guide - -Thank you for contributing to this project! ๐Ÿš€ - -We welcome all kinds of contributions including bug fixes, features, documentation improvements, and design enhancements. - ---- - -## Getting Started - -1. Fork the repository -2. Clone your fork locally: git clone https://github.com/your-username/project-name.git -3. Navigate to the project directory : cd project-name -4. Install dependencies : npm install -5. Start the development server : npm start - ---- - -## Contribution Workflow -- Check existing issues before creating a new one -- Comment on the issue you want to work on -- Create a new branch -- Make your changes -- Test your changes properly -- Commit and push your changes -- Open a Pull Request -- Branch Naming Convention - ---- - -Use meaningful branch names. - -## Examples -- feature/add-login-page -- fix/navbar-overflow -- docs/update-readme - -## Prefixes -- feature/ โ†’ New features -- fix/ โ†’ Bug fixes -- docs/ โ†’ Documentation updates -- refactor/ โ†’ Code improvements -- Commit Message Guidelines - -## Use short and meaningful commit messages. - -Examples -- Add responsive navbar -- Fix login validation bug -- Update CONTRIBUTION.md - -## Avoid vague messages like: - -- update -- changes -- fixed stuff -- Pull Request Guidelines - -## Before submitting a PR: - -- Ensure the project builds successfully -- Test your changes properly -- Keep PRs focused on a single issue -- Write a clear PR title and description -- Link related issues properly - -Example -- Fixes #12 -- Coding Style Expectations -- Write clean and readable code -- Use meaningful variable and function names -- Keep functions modular and focused -- Add comments where necessary -- Follow the existing project structure and formatting - ---- - -## Reporting Bugs - - When reporting a bug, include: - -- Steps to reproduce -- Expected behavior -- Screenshots (if applicable) -- Environment details -- Suggesting Features - ---- - -## Feature suggestions are welcome. - -## Please include: - -- A clear title -- Feature description -- Why the feature would be useful -- Code of Conduct - -By contributing, you agree to follow the project's CODE_OF_CONDUCT.md. - -Please be respectful and supportive toward other contributors. - ---- - -## Need Help? - -Feel free to: - -1. Open an issue -2. Start a discussion -3. Ask maintainers for guidance - -Happy Contributing! ๐ŸŽ‰ diff --git a/MIT LICENSE b/MIT LICENSE deleted file mode 100644 index b9a9448d..00000000 --- a/MIT LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2026 magic-peach - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 90cd671f..6ead7711 100644 --- a/README.md +++ b/README.md @@ -6,56 +6,24 @@ ### No login. No uploads. No ads. 100% private. -

- - - - - - - - - -

- -

- - - - - - - - - -

- -

- - - - - - - - - -

+[![GitHub Stars](https://img.shields.io/github/stars/magic-peach/reframe?style=flat-square&logo=github)](https://github.com/magic-peach/reframe/stargazers) - +[![GitHub Forks](https://img.shields.io/github/forks/magic-peach/reframe?style=flat-square&logo=github)](https://github.com/magic-peach/reframe/network/members) ---- +[![GitHub Issues](https://img.shields.io/github/issues/magic-peach/reframe?style=flat-square)](https://github.com/magic-peach/reframe/issues) -## Built With +[![Next.js](https://img.shields.io/badge/Next.js-15-black?style=flat-square&logo=next.js)](https://nextjs.org) +[![TypeScript](https://img.shields.io/badge/TypeScript-5-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org) +[![FFmpeg.wasm](https://img.shields.io/badge/FFmpeg.wasm-0.12.10-green?style=flat-square)](https://ffmpegwasm.netlify.app) +[![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) +<<<<<<< HEAD +[![GSSoC 2026](https://img.shields.io/badge/GSSoC-2026-FF6B35?style=flat-square)](https://gssoc.girlscript.tech) +[![CI](https://github.com/Sneha079-codes/reframe/actions/workflows/main.yml/badge.svg)](https://github.com/Sneha079-codes/reframe/actions/workflows/main.yml) -
+======= +>>>>>>> e86251b (docs: add GSSoC 2026 badge to README) -![Next.js](https://img.shields.io/badge/Next.js-15-black?style=flat-square&logo=next.js) -![TypeScript](https://img.shields.io/badge/TypeScript-5-blue?style=flat-square&logo=typescript) -![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-3-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white) -![FFmpeg](https://img.shields.io/badge/FFmpeg.wasm-0.12.10-green?style=flat-square&logo=ffmpeg) -![Lucide](https://img.shields.io/badge/Lucide_React-latest-orange?style=flat-square) -![Lottie](https://img.shields.io/badge/Lottie_Web-latest-purple?style=flat-square) +**[Try it now โ†’](https://github.com/magic-peach/reframe)** ยท **[Report a Bug](https://github.com/magic-peach/reframe/issues/new?labels=bug)** ยท **[Request a Feature](https://github.com/magic-peach/reframe/issues/new?labels=feature)**
@@ -81,16 +49,6 @@ Reframe is a **browser-based video editor** โ€” everything happens on your devic Everything stays on your device. No servers. No tracking. No login. --- -## Keyboard Shortcuts - -| Shortcut | Action | -|----------|--------| -| Ctrl+Enter / Cmd+Enter | Export video | -| Space | Play/pause video preview | -| M | Toggle audio mute | -| Escape | Cancel export | - -> On macOS, use `Cmd` instead of `Ctrl` for keyboard shortcuts. ## Getting Started @@ -112,7 +70,7 @@ bun install bun run dev ``` -Open [http://localhost:3000](http://localhost:3000) โ€” component changes reflect instantly with [Next.js Fast Refresh](https://nextjs.org/docs/architecture/fast-refresh), so you usually do not need to restart the dev server. For FFmpeg reload notes and debugging tools, see the [Development Tips](CONTRIBUTING.md#development-tips). +Open [http://localhost:3000](http://localhost:3000) โ€” changes reflect instantly with Next.js Fast Refresh. ### Production Build @@ -126,116 +84,14 @@ Outputs a static site to `out/` โ€” deploy to Vercel, Netlify, GitHub Pages, or ## Deploying -Reframe uses static export (`output: 'export'`), so it can be deployed to any static hosting provider. - -### Deploying to Vercel - -Reframe uses static export (`output: 'export'`) and can be deployed easily on Vercel. - -#### Option 1 โ€” Vercel Dashboard (Recommended) - -1. Fork this repository -2. Go to https://vercel.com/new -3. Import your forked repository -4. Configure: - - Framework Preset: Next.js - - Build Command: `bun run build` - - Output Directory: `out` -5. Click **Deploy** - -Vercel will automatically build and host the static output. - -#### Option 2 โ€” Vercel CLI - -```bash -# Install Vercel CLI globally -npm i -g vercel - -# Login to Vercel -vercel login - -# Deploy from project root -vercel --prod -``` - -#### FFmpeg.wasm Configuration - -FFmpeg.wasm requires COOP/COEP headers for SharedArrayBuffer support. - -Add the following to `vercel.json`: - -```json -{ - "headers": [ - { - "source": "/(.*)", - "headers": [ - { - "key": "Cross-Origin-Opener-Policy", - "value": "same-origin" - }, - { - "key": "Cross-Origin-Embedder-Policy", - "value": "require-corp" - } - ] - } - ] -} -``` - -### Alternative Static Hosts - -You can also deploy Reframe on other static hosting providers: +Reframe is a fully static app. Deploy the `out/` folder anywhere: -| Platform | Deployment Method | -| -------------------- | ----------------------------------------------------------- | -| **Netlify** | Connect your fork at https://app.netlify.com/start | -| **GitHub Pages** | Deploy the generated `out/` folder to the `gh-pages` branch | -| **Cloudflare Pages** | Connect your fork in Cloudflare Pages | - -### Deploying to Vercel - -The quickest way to get Reframe live: - -**Option 1 โ€” Vercel Dashboard (Recommended)** - -1. Fork this repository on GitHub -2. Go to [vercel.com/new](https://vercel.com/new) and import your fork -3. Vercel auto-detects Next.js settings: - - **Framework Preset:** Next.js - - **Build Command:** `bun run build` - - **Output Directory:** `out` -4. Click **Deploy** โ€” your site will be live in ~2 minutes - -**Option 2 โ€” Vercel CLI** - -```bash -# Install Vercel CLI globally -npm i -g vercel - -# Login to Vercel -vercel login - -# Deploy from project root -vercel --prod -``` - -> **Note:** FFmpeg.wasm requires COOP/COEP headers for SharedArrayBuffer support. On Vercel, add a `vercel.json` in your project root: -> -> ```json -> { -> "headers": [ -> { -> "source": "/(.*)", -> "headers": [ -> { "key": "Cross-Origin-Opener-Policy", "value": "same-origin" }, -> { "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" } -> ] -> } -> ] -> } -> ``` +| Platform | Command | +| -------------------- | ----------------------------------------------------------------- | +| **Vercel** | Connect your fork at [vercel.com/new](https://vercel.com/new) | +| **Netlify** | Connect your fork at [netlify.com](https://app.netlify.com/start) | +| **GitHub Pages** | Push `out/` to `gh-pages` branch | +| **Cloudflare Pages** | Connect your fork in the Cloudflare dashboard | ### Deploying to Netlify @@ -265,115 +121,64 @@ You can deploy the `out/` folder using: --- -## Architecture - -For detailed technical information about Reframe's architecture, design choices, and implementation details, see the [Architecture Documentation](docs/ARCHITECTURE.md). - -> Reframe requires WebAssembly (WASM) support to process videos in the browser. ---- - -## Development Tips +## How It Works -### 1. Next.js Fast Refresh -This project uses Next.js Fast Refresh in development mode. Most changes to React components, hooks, and styles are reflected instantly in the browser without restarting the dev server. - -- Component updates appear immediately -- State is often preserved during edits -- Restarting `npm run dev` is usually unnecessary for UI changes - -Learn more: https://nextjs.org/docs/architecture/fast-refresh - ---- +1. **Load Video** โ†’ User selects a file โ†’ App detects resolution and duration +2. **Build Recipe** โ†’ User adjusts presets, framing, trim, speed โ†’ Creates `EditRecipe` +3. **Export** โ†’ Click Export โ†’ FFmpeg WASM loads from CDN (~30 MB, cached after first use) โ†’ Filtergraph runs locally โ†’ File downloads +4. **Done** โ†’ Your edited video is ready. Nothing was uploaded anywhere. -### 2. FFmpeg Module Changes -Changes to `ffmpeg.ts` may not hot-reload correctly because FFmpeg initialization and WebAssembly modules can persist in memory. +### Architecture -If updates are not reflected: - -- Perform a full browser page reload -- Clear cached worker instances if necessary -- Restart the development server only when required - -FFmpeg WASM reference: https://ffmpegwasm.netlify.app/docs/overview - ---- - -### 3. Monitor FFmpeg Downloads -FFmpeg WebAssembly assets can be large and may take time to download during development. - -Use the browser DevTools **Network** tab to: - -- Verify FFmpeg assets are loading correctly -- Inspect caching behavior -- Detect failed `.wasm` or worker requests -- Measure initialization performance - -Chrome DevTools: https://developer.chrome.com/docs/devtools/network - ---- - -### 4. Use React DevTools -Install React DevTools for easier component inspection and debugging. - -Helpful for: - -- Inspecting component props and state -- Tracing re-renders -- Debugging hooks -- Monitoring React component trees - -React DevTools: https://react.dev/learn/react-developer-tools - ---- - -### 5. Keep Console Open During Development -The browser console provides important runtime diagnostics for: - -- FFmpeg initialization issues -- Hydration warnings -- API request failures -- WebAssembly loading errors - -Filtering logs by warnings/errors can speed up debugging significantly. - ---- - -### 6. Use Source Maps for Easier Debugging -Development builds include source maps, allowing you to debug original TypeScript/React source files directly from DevTools. - -Tips: +```mermaid +graph TD + A["UI Layer ยท Next.js Components"] --> B["VideoEditor ยท FileUpload ยท PresetSelector ยท FramingControl ยท TrimControl"] + A --> C["AudioSpeedControl ยท RotateControl ยท ExportSettings"] + B --> D["useVideoEditor Hook ยท State Management"] + C --> D + D --> E["ffmpeg.ts ยท Lazy-loads WASM, builds filter chains"] + E --> F["FFmpeg.wasm ยท Single-threaded core via CDN ยท ~30MB"] + F --> G["Video Pipeline: trim โ†’ rotate โ†’ scale/crop โ†’ speed"] + G --> I["Output: MP4 or WebM ยท Blob URL โ†’ Download"] +``` -- Set breakpoints in source files -- Use async stack traces -- Inspect runtime variables during rendering +### Key Files -JavaScript debugging guide: https://developer.chrome.com/docs/devtools/javascript +| File | Purpose | +| -------------------------------- | -------------------------------------------------------- | +| `src/components/VideoEditor.tsx` | Root component; layout, state orchestration | +| `src/hooks/useVideoEditor.ts` | State management (file, recipe, export status) | +| `src/lib/ffmpeg.ts` | FFmpeg wrapper; lazy-loads WASM, builds filter chains | +| `src/lib/presets.ts` | 11 preset definitions (9:16, 16:9, 4:5, etc.) | +| `src/lib/types.ts` | TypeScript types for EditRecipe, ExportResult, etc. | +| `src/components/*.tsx` | Individual control panels (Trim, Rotate, Speed, Quality) | --- -### 7. Watch for Memory Usage -FFmpeg WebAssembly processing can consume significant browser memory during video operations. +## Tech Stack -Recommendations: - -- Close unused tabs while testing -- Refresh the page after heavy processing tasks -- Monitor memory usage in browser performance tools - -Performance tools: https://developer.chrome.com/docs/devtools/performance +| Layer | Tech | +| -------------------- | -------------------------------------- | +| **Framework** | Next.js 15 (App Router, static export) | +| **Language** | TypeScript 5 | +| **Styling** | Tailwind CSS v3 | +| **Icons** | Lucide React | +| **Animations** | Lottie Web | +| **Video Processing** | FFmpeg.wasm (single-threaded) | +| **Fonts** | Bebas Neue ยท Syne ยท DM Sans | --- -### 8. Verify Environment Variables -After modifying `.env.local`, restart the Next.js development server because environment variables are loaded only during server startup. - -Example: +## Supported Browsers -```bash -npm run dev -``` - -Environment variables guide: https://nextjs.org/docs/app/guides/environment-variables +| Browser | Support | Notes | +| ------------- | ---------- | ----------------------- | +| Chrome 90+ | โœ… Full | Recommended | +| Firefox 89+ | โœ… Full | | +| Safari 15+ | โœ… Full | | +| Edge 90+ | โœ… Full | | +| Mobile Chrome | โœ… Full | | +| Mobile Safari | โš ๏ธ Partial | Large files may be slow | --- @@ -430,15 +235,6 @@ Thank you to everyone who has contributed to Reframe! ๐ŸŽ‰ ## Privacy Reframe processes all videos **100% client-side**. Your video files are never uploaded to any server. You can even use Reframe offline (after first load). The source code is fully open for inspection. ---- - -## Contributors - -Thanks to all the amazing people who have contributed to Reframe! - -[![Contributors](https://contrib.rocks/image?repo=magic-peach/reframe)](https://github.com/magic-peach/reframe/graphs/contributors) - -We welcome contributions of all kinds โ€” code, documentation, design, and feedback. Check out our [Contributing Guide](CONTRIBUTING.md) to get started. --- @@ -455,5 +251,3 @@ MIT License โ€” See [LICENSE](LICENSE) for details. Made with โค๏ธ for everyone who just wants to edit a video without the hassle. - ---- \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 85c9cc49..00000000 --- a/SECURITY.md +++ /dev/null @@ -1,48 +0,0 @@ -# Security Policy - -## Supported Versions - -| Version | Supported | -|---------|-----------| -| latest | โœ… | - -## Reporting a Vulnerability - -If you discover a security vulnerability in Reframe, please **do not** open a public GitHub issue until the vulnerability has been reviewed and fixed. - -Instead, report it using one of the following methods: - -- **GitHub Issue (labeled `security`):** Open a [new issue](https://github.com/magic-peach/reframe/issues/new) and apply the `security` label. For sensitive details, use a private channel below. -- **Email:** Contact the maintainer directly at [maintainer email] with the subject line `[SECURITY] Reframe Vulnerability Report`. - -### What to Include in Your Report - -Please provide as much detail as possible to help us understand and reproduce the issue: - -- A clear description of the vulnerability -- Steps to reproduce the issue -- The potential impact (e.g., data exposure, code execution) -- Any suggested mitigations or fixes (if known) - -### Our Commitment - -- We will acknowledge your report within **3 business days** -- We will provide a resolution timeline within **7 business days** -- We will credit you in the fix (unless you prefer to remain anonymous) - -## Security Considerations - -Reframe processes all video files **100% client-side** using FFmpeg.wasm. Your files are never uploaded to any server. However, vulnerabilities in the browser sandbox, WebAssembly execution, or third-party dependencies are still in scope for this policy. - -## Scope - -| In Scope | Out of Scope | -|----------|--------------| -| XSS / script injection vulnerabilities | Vulnerabilities in FFmpeg.wasm itself (report upstream) | -| Dependency vulnerabilities (npm packages) | Issues with user's browser or OS configuration | -| Malicious file handling / path traversal | Third-party CDN reliability | -| Logic bugs that could expose user data | Social engineering attacks | - -## Disclosure Policy - -We follow **responsible disclosure**. Please give us reasonable time to address the issue before any public disclosure. We aim to resolve critical vulnerabilities within **14 days** of confirmation. diff --git a/bun.lock b/bun.lock index 5f4d80c3..3c4b38e5 100644 --- a/bun.lock +++ b/bun.lock @@ -3,61 +3,53 @@ "configVersion": 1, "workspaces": { "": { - "name": "reframe", + "name": "video-editor", "dependencies": { "@ffmpeg/ffmpeg": "^0.12.10", "@ffmpeg/util": "^0.12.2", "clsx": "^2.1.1", - "focus-trap-react": "^12.0.1", - "jszip": "^3.10.1", + "lottie-react": "^2.4.0", "lottie-web": "^5.12.2", "lucide-react": "^0.469.0", "next": "^15.1.8", "react": "^19.0.0", "react-dom": "^19.0.0", - "reframe": ".", "tailwind-merge": "^3.6.0", - "wasm-feature-detect": "^1.8.0", }, "devDependencies": { - "@types/bun": "^1.3.14", - "@types/node": "^25", + "@types/node": "^22", "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "^15.1.8", - "eslint-plugin-jsx-a11y": "^6.10.2", "postcss": "^8", - "prettier": "^3.8.3", - "prettier-plugin-tailwindcss": "^0.8.0", "tailwindcss": "^3.4.17", "typescript": "^5", - "vitest": "^4.1.6", }, }, }, "packages": { "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], + "@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], - "@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - "@eslint/config-array": ["@eslint/config-array@0.21.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.5" } }, "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw=="], + "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], - "@eslint/eslintrc": ["@eslint/eslintrc@3.3.5", "", { "dependencies": { "ajv": "^6.14.0", "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.1", "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" } }, "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg=="], + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.4", "", { "dependencies": { "ajv": "^6.14.0", "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.1", "minimatch": "^3.1.3", "strip-json-comments": "^3.1.1" } }, "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ=="], - "@eslint/js": ["@eslint/js@9.39.4", "", {}, "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw=="], + "@eslint/js": ["@eslint/js@9.39.3", "", {}, "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], @@ -69,17 +61,15 @@ "@ffmpeg/util": ["@ffmpeg/util@0.12.2", "", {}, "sha512-ouyoW+4JB7WxjeZ2y6KpRvB+dLp7Cp4ro8z0HIVpZVCM7AwFlHa0c4R8Y/a4M3wMqATpYKhC7lSFHQ0T11MEDw=="], - "@humanfs/core": ["@humanfs/core@0.19.2", "", { "dependencies": { "@humanfs/types": "^0.15.0" } }, "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA=="], + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], - "@humanfs/node": ["@humanfs/node@0.16.8", "", { "dependencies": { "@humanfs/core": "^0.19.2", "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ=="], - - "@humanfs/types": ["@humanfs/types@0.15.0", "", {}, "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q=="], + "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], - "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], + "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], @@ -139,25 +129,25 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], - "@next/env": ["@next/env@15.5.18", "", {}, "sha512-hAV85Ckd9QR6RvH04MEKwsfLTksvFpO47j9xwtoIuvuPnlwecpSi+uZTtm8HirVbtlI2Fnz//xpcSTjFdyJk+g=="], + "@next/env": ["@next/env@15.5.12", "", {}, "sha512-pUvdJN1on574wQHjaBfNGDt9Mz5utDSZFsIIQkMzPgNS8ZvT4H2mwOrOIClwsQOb6EGx5M76/CZr6G8i6pSpLg=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.5.18", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-w4MYq8M26a8PNrfto0JosLf5/3ssln1rsyP96g2DkC8uFVymStM5DLSz5ElxxrPRg2XnTMnFo3kREFlhYvxhWw=="], + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.5.12", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-+ZRSDFTv4aC96aMb5E41rMjysx8ApkryevnvEYZvPZO52KvkqP5rNExLUXJFr9P4s0f3oqNQR6vopCZsPWKDcQ=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.5.18", "", { "os": "darwin", "cpu": "arm64" }, "sha512-w0WvQf1n+txiwns/9pwIQteCJpZTbxzO2SE0FLcwuD4v0WEh1JPOjdyxWL21XwJsdpx8cFRjyzxzCS/siP7HcQ=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.5.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RnRjBtH8S8eXCpUNkQ+543DUc7ys8y15VxmFU9HRqlo9BG3CcBUiwNtF8SNoi2xvGCVJq1vl2yYq+3oISBS0Zg=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.5.18", "", { "os": "darwin", "cpu": "x64" }, "sha512-znn71QmDuxm+BOaglihMZfvyySMnNljkVIY5Z2TCssBmm+WqL6c19VhtH5ktFkHa8EZ2bnTUpcNcmNSQsg67og=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.5.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-nqa9/7iQlboF1EFtNhWxQA0rQstmYRSBGxSM6g3GxvxHxcoeqVXfGNr9stJOme674m2V7r4E3+jEhhGvSQhJRA=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.5.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-yPPe5MNL+igZUa+OsqQJisqSfh6oarIuA1Q0BDxljGJhRQyZeP+WRHh7rs/jZUGMh5aY0YdIjXZG0VohkKkUdw=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.5.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-dCzAjqhDHwmoB2M4eYfVKqXs99QdQxNQVpftvP1eGVppamXh/OkDAwV737Zr0KPXEqRUMN4uCjh6mjO+XtF3Mw=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.5.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-glaCczEWIrHsokFZ3pP08U4BpKxwIdnT+txdOM32OBgpL9Yw4aqx8NejmgtZQZOdstQ5f0L3CasIZudzCuD+nw=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.5.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-+fpGWvQiITgf7PUtbWY1H7qUSnBZsPPLyyq03QuAKpVoTy/QUx1JptEDTQMVvQhvizCEuNLEeghrQUyXQOekuw=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.5.18", "", { "os": "linux", "cpu": "x64" }, "sha512-oUfg2EgJmU3R0OCOWiokGFUTvZiPfXtriXiuF3YNxRoROCdgvTedHIzYoeKH34gsZxS/V7mHbfq2hpAHwhH1/A=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.5.12", "", { "os": "linux", "cpu": "x64" }, "sha512-jSLvgdRRL/hrFAPqEjJf1fFguC719kmcptjNVDJl26BnJIpjL3KH5h6mzR4mAweociLQaqvt4UyzfbFjgAdDcw=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.5.18", "", { "os": "linux", "cpu": "x64" }, "sha512-JLxSP3KTd9iu/bvUMQxH7RJo9xKSHf55/6RPE4a6FTSZygGn7uvZbCej0AHXydwkggQGSD9UddSjwv6Xz5ESfA=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.5.12", "", { "os": "linux", "cpu": "x64" }, "sha512-/uaF0WfmYqQgLfPmN6BvULwxY0dufI2mlN2JbOKqqceZh1G4hjREyi7pg03zjfyS6eqNemHAZPSoP84x17vo6w=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.5.18", "", { "os": "win32", "cpu": "arm64" }, "sha512-ir1v7enP52K2HNz3tQQvwF+x7VNxBk1ciiZ18WBPvxf4C59IqdfmHPJYK3vH7rSxpuCVw/8C712wTXNAtEp+NA=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.5.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-xhsL1OvQSfGmlL5RbOmU+FV120urrgFpYLq+6U8C6KIym32gZT6XF/SDE92jKzzlPWskkbjOKCpqk5m4i8PEfg=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.5.18", "", { "os": "win32", "cpu": "x64" }, "sha512-LIu5me6QTANCd25E7I5uIEfvgQ06RK7tvHAbYo3zCb3VpxQEPvMcSpd87NwUABDT6MbGPdEGR5VRiK4PPTJhQg=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.5.12", "", { "os": "win32", "cpu": "x64" }, "sha512-Z1Dh6lhFkxvBDH1FoW6OU/L6prYwPSlwjLiZkExIAh8fbP6iI/M7iGTQAJPYJ9YFlWobCZ1PHbchFhFYb2ADkw=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -167,87 +157,45 @@ "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], - "@oxc-project/types": ["@oxc-project/types@0.130.0", "", {}, "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q=="], - - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.1", "", { "os": "android", "cpu": "arm64" }, "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg=="], - - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg=="], - - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg=="], - - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw=="], - - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.1", "", { "os": "linux", "cpu": "arm" }, "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ=="], - - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A=="], - - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg=="], - - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg=="], - - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ=="], - - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw=="], - - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ=="], - - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.1", "", { "os": "none", "cpu": "arm64" }, "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ=="], - - "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.1", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ=="], - - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw=="], - - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.1", "", { "os": "win32", "cpu": "x64" }, "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ=="], - - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], - "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.16.1", "", {}, "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag=="], - "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], - - "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], - - "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], - - "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], - "@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="], + "@types/node": ["@types/node@22.19.13", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-akNQMv0wW5uyRpD2v2IEyRSZiR+BeGuoB6L310EgGObO44HSMNT8z1xzio28V8qOrgYaopIDNA18YgdXd+qTiw=="], "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="], "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.59.3", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.59.3", "@typescript-eslint/type-utils": "8.59.3", "@typescript-eslint/utils": "8.59.3", "@typescript-eslint/visitor-keys": "8.59.3", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.59.3", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.56.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/type-utils": "8.56.1", "@typescript-eslint/utils": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.56.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.59.3", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.59.3", "@typescript-eslint/types": "8.59.3", "@typescript-eslint/typescript-estree": "8.59.3", "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.56.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.59.3", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.59.3", "@typescript-eslint/types": "^8.59.3", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.56.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.56.1", "@typescript-eslint/types": "^8.56.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.59.3", "", { "dependencies": { "@typescript-eslint/types": "8.59.3", "@typescript-eslint/visitor-keys": "8.59.3" } }, "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.56.1", "", { "dependencies": { "@typescript-eslint/types": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1" } }, "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.59.3", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.56.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.59.3", "", { "dependencies": { "@typescript-eslint/types": "8.59.3", "@typescript-eslint/typescript-estree": "8.59.3", "@typescript-eslint/utils": "8.59.3", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.56.1", "", { "dependencies": { "@typescript-eslint/types": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1", "@typescript-eslint/utils": "8.56.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.59.3", "", {}, "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.56.1", "", {}, "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.59.3", "", { "dependencies": { "@typescript-eslint/project-service": "8.59.3", "@typescript-eslint/tsconfig-utils": "8.59.3", "@typescript-eslint/types": "8.59.3", "@typescript-eslint/visitor-keys": "8.59.3", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.56.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.56.1", "@typescript-eslint/tsconfig-utils": "8.56.1", "@typescript-eslint/types": "8.56.1", "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.59.3", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.59.3", "@typescript-eslint/types": "8.59.3", "@typescript-eslint/typescript-estree": "8.59.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.56.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.56.1", "@typescript-eslint/types": "8.56.1", "@typescript-eslint/typescript-estree": "8.56.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.59.3", "", { "dependencies": { "@typescript-eslint/types": "8.59.3", "eslint-visitor-keys": "^5.0.0" } }, "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.56.1", "", { "dependencies": { "@typescript-eslint/types": "8.56.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw=="], "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], @@ -287,25 +235,11 @@ "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.11.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g=="], - "@vitest/expect": ["@vitest/expect@4.1.6", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.6", "@vitest/utils": "4.1.6", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg=="], - - "@vitest/mocker": ["@vitest/mocker@4.1.6", "", { "dependencies": { "@vitest/spy": "4.1.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ=="], - - "@vitest/pretty-format": ["@vitest/pretty-format@4.1.6", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw=="], - - "@vitest/runner": ["@vitest/runner@4.1.6", "", { "dependencies": { "@vitest/utils": "4.1.6", "pathe": "^2.0.3" } }, "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA=="], - - "@vitest/snapshot": ["@vitest/snapshot@4.1.6", "", { "dependencies": { "@vitest/pretty-format": "4.1.6", "@vitest/utils": "4.1.6", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw=="], - - "@vitest/spy": ["@vitest/spy@4.1.6", "", {}, "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg=="], - - "@vitest/utils": ["@vitest/utils@4.1.6", "", { "dependencies": { "@vitest/pretty-format": "4.1.6", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ=="], - "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "ajv": ["ajv@6.15.0", "", { "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" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], + "ajv": ["ajv@6.14.0", "", { "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" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -335,15 +269,13 @@ "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "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" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], - "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], - "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "axe-core": ["axe-core@4.11.4", "", {}, "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA=="], + "axe-core": ["axe-core@4.11.1", "", {}, "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], @@ -351,13 +283,11 @@ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - "brace-expansion": ["brace-expansion@1.1.14", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g=="], + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "call-bind": ["call-bind@1.0.9", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" } }, "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ=="], + "call-bind": ["call-bind@1.0.8", "", { "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" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], @@ -367,9 +297,7 @@ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001792", "", {}, "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw=="], - - "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + "caniuse-lite": ["caniuse-lite@1.0.30001774", "", {}, "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -387,10 +315,6 @@ "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - - "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], @@ -405,7 +329,7 @@ "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], @@ -425,15 +349,13 @@ "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "es-abstract": ["es-abstract@1.24.2", "", { "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" } }, "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg=="], + "es-abstract": ["es-abstract@1.24.1", "", { "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" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-iterator-helpers": ["es-iterator-helpers@1.3.2", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.2", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.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", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "math-intrinsics": "^1.1.0" } }, "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw=="], - - "es-module-lexer": ["es-module-lexer@2.1.0", "", {}, "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ=="], + "es-iterator-helpers": ["es-iterator-helpers@1.2.2", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.1", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.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", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "safe-array-concat": "^1.1.3" } }, "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w=="], "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], @@ -445,15 +367,15 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "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.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="], + "eslint": ["eslint@9.39.3", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.3", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "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" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg=="], - "eslint-config-next": ["eslint-config-next@15.5.18", "", { "dependencies": { "@next/eslint-plugin-next": "15.5.18", "@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" }, "optionalPeers": ["typescript"] }, "sha512-HuoJU6uUPD00eyiud78IBnT4HLhztFj2V+ild2Uon5ZUrYZKe0Olu2QRD99e9IgL4/H1eg5Onka3BsfRW2U0Xw=="], + "eslint-config-next": ["eslint-config-next@15.5.12", "", { "dependencies": { "@next/eslint-plugin-next": "15.5.12", "@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" }, "optionalPeers": ["typescript"] }, "sha512-ktW3XLfd+ztEltY5scJNjxjHwtKWk6vU2iwzZqSN09UsbBmMeE/cVlJ1yESg6Yx5LW7p/Z8WzUAgYXGLEmGIpg=="], - "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.10", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.16.1", "resolve": "^2.0.0-next.6" } }, "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ=="], + "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "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" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], - "eslint-module-utils": ["eslint-module-utils@2.12.1", "", { "dependencies": { "debug": "^3.2.7" }, "peerDependencies": { "eslint": "*" }, "optionalPeers": ["eslint"] }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], + "eslint-module-utils": ["eslint-module-utils@2.12.1", "", { "dependencies": { "debug": "^3.2.7" } }, "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw=="], "eslint-plugin-import": ["eslint-plugin-import@2.32.0", "", { "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" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA=="], @@ -475,12 +397,8 @@ "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], - "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-glob": ["fast-glob@3.3.3", "", { "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" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], @@ -501,11 +419,7 @@ "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], - "flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="], - - "focus-trap": ["focus-trap@8.2.0", "", { "dependencies": { "tabbable": "^6.4.0" } }, "sha512-CaBdQ9P4fa/yCA6pDf/3aJd8bf9IOG5QGK21/E+86o2V4V8kzXaR4A9E6tNR7KkkS1+T5ZIU1tJDBDLwsucz9g=="], - - "focus-trap-react": ["focus-trap-react@12.0.1", "", { "dependencies": { "focus-trap": "^8.1.0", "tabbable": "^6.4.0" }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-MUlm5W4YP9qXZt6J7cRkdZtVekN7WQRqh5STvcRM8s2juTQWNFIz2BYlvaEddij9h04H/9SL8QcXkvqEEWUD6A=="], + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], @@ -525,7 +439,7 @@ "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], - "get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="], + "get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="], "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], @@ -547,18 +461,14 @@ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="], + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], - "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], @@ -575,7 +485,7 @@ "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], - "is-core-module": ["is-core-module@2.16.2", "", { "dependencies": { "hasown": "^2.0.3" } }, "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA=="], + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], @@ -615,7 +525,7 @@ "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], - "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], @@ -637,8 +547,6 @@ "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], - "jszip": ["jszip@3.10.1", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g=="], - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], "language-subtag-registry": ["language-subtag-registry@0.3.23", "", {}, "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ=="], @@ -647,32 +555,6 @@ "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], - - "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], - - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], - - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], - - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], - - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], - - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], - - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], - - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], - - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], - - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], - - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], - - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], - "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], @@ -683,12 +565,12 @@ "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + "lottie-react": ["lottie-react@2.4.1", "", { "dependencies": { "lottie-web": "^5.10.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw=="], + "lottie-web": ["lottie-web@5.13.0", "", {}, "sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ=="], "lucide-react": ["lucide-react@0.469.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw=="], - "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], @@ -703,13 +585,13 @@ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], - "nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="], + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "napi-postinstall": ["napi-postinstall@0.3.4", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ=="], "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "next": ["next@15.5.18", "", { "dependencies": { "@next/env": "15.5.18", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.14", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.5.18", "@next/swc-darwin-x64": "15.5.18", "@next/swc-linux-arm64-gnu": "15.5.18", "@next/swc-linux-arm64-musl": "15.5.18", "@next/swc-linux-x64-gnu": "15.5.18", "@next/swc-linux-x64-musl": "15.5.18", "@next/swc-win32-arm64-msvc": "15.5.18", "@next/swc-win32-x64-msvc": "15.5.18", "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" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-eKL8zUJkX9Y5lE+RX/2YJoItVdGlIscyVyboeD9wSpp0PaGqjoA4tTpT2qPqz9ax+5IzGESyLSeZ/RCwbSZ2uQ=="], + "next": ["next@15.5.12", "", { "dependencies": { "@next/env": "15.5.12", "@swc/helpers": "0.5.15", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.5.12", "@next/swc-darwin-x64": "15.5.12", "@next/swc-linux-arm64-gnu": "15.5.12", "@next/swc-linux-arm64-musl": "15.5.12", "@next/swc-linux-x64-gnu": "15.5.12", "@next/swc-linux-x64-musl": "15.5.12", "@next/swc-win32-arm64-msvc": "15.5.12", "@next/swc-win32-x64-msvc": "15.5.12", "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" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Fi/wQ4Etlrn60rz78bebG1i1SR20QxvV8tVp6iJspjLUSHcZoeUXCt+vmWoEcza85ElZzExK/jJ/F6SvtGktjA=="], "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], @@ -733,8 +615,6 @@ "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], - "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], - "optionator": ["optionator@0.9.4", "", { "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" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], @@ -743,8 +623,6 @@ "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], @@ -753,11 +631,9 @@ "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], @@ -765,7 +641,7 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="], + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], @@ -781,37 +657,27 @@ "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - "prettier": ["prettier@3.8.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw=="], - - "prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.8.0", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-hermes": "*", "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-hermes", "@prettier/plugin-oxc", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-svelte"] }, "sha512-V8ITGH87yuBDF6JpEZTOVlUz/saAwqb8f3HRgUj8Lh+tGCcrmorhsLpYqzygwFwK0PE2Ib6Mv3M7T/uE2tZV1g=="], - - "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], - "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "react": ["react@19.2.6", "", {}, "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q=="], + "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], - "react-dom": ["react-dom@19.2.6", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.6" } }, "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g=="], + "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], - "readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "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" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], - "reframe": ["reframe@root:", {}], - "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "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" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], - "resolve": ["resolve@1.22.12", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA=="], + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], @@ -819,13 +685,9 @@ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - "rolldown": ["rolldown@1.0.1", "", { "dependencies": { "@oxc-project/types": "=0.130.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.1", "@rolldown/binding-darwin-arm64": "1.0.1", "@rolldown/binding-darwin-x64": "1.0.1", "@rolldown/binding-freebsd-x64": "1.0.1", "@rolldown/binding-linux-arm-gnueabihf": "1.0.1", "@rolldown/binding-linux-arm64-gnu": "1.0.1", "@rolldown/binding-linux-arm64-musl": "1.0.1", "@rolldown/binding-linux-ppc64-gnu": "1.0.1", "@rolldown/binding-linux-s390x-gnu": "1.0.1", "@rolldown/binding-linux-x64-gnu": "1.0.1", "@rolldown/binding-linux-x64-musl": "1.0.1", "@rolldown/binding-openharmony-arm64": "1.0.1", "@rolldown/binding-wasm32-wasi": "1.0.1", "@rolldown/binding-win32-arm64-msvc": "1.0.1", "@rolldown/binding-win32-x64-msvc": "1.0.1" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - "safe-array-concat": ["safe-array-concat@1.1.4", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg=="], - - "safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + "safe-array-concat": ["safe-array-concat@1.1.3", "", { "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" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], @@ -841,8 +703,6 @@ "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], - "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -851,22 +711,16 @@ "side-channel": ["side-channel@1.1.0", "", { "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" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], - "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "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" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], - "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], - "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], - - "std-env": ["std-env@4.1.0", "", {}, "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ=="], - "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], "string.prototype.includes": ["string.prototype.includes@2.0.1", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3" } }, "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg=="], @@ -881,13 +735,11 @@ "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], - "string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "@babel/core": "*", "babel-plugin-macros": "*", "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "optionalPeers": ["@babel/core", "babel-plugin-macros"] }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], + "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], @@ -895,8 +747,6 @@ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "tabbable": ["tabbable@6.4.0", "", {}, "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg=="], - "tailwind-merge": ["tailwind-merge@3.6.0", "", {}, "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w=="], "tailwindcss": ["tailwindcss@3.4.19", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ=="], @@ -905,17 +755,11 @@ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], - "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], - - "tinyexec": ["tinyexec@1.1.2", "", {}, "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA=="], - - "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], - - "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="], + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - "ts-api-utils": ["ts-api-utils@2.5.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA=="], + "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="], "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], @@ -937,7 +781,7 @@ "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], - "undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "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" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], @@ -945,12 +789,6 @@ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - "vite": ["vite@8.0.13", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.14", "rolldown": "1.0.1", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw=="], - - "vitest": ["vitest@4.1.6", "", { "dependencies": { "@vitest/expect": "4.1.6", "@vitest/mocker": "4.1.6", "@vitest/pretty-format": "4.1.6", "@vitest/runner": "4.1.6", "@vitest/snapshot": "4.1.6", "@vitest/spy": "4.1.6", "@vitest/utils": "4.1.6", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.6", "@vitest/browser-preview": "4.1.6", "@vitest/browser-webdriverio": "4.1.6", "@vitest/coverage-istanbul": "4.1.6", "@vitest/coverage-v8": "4.1.6", "@vitest/ui": "4.1.6", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ=="], - - "wasm-feature-detect": ["wasm-feature-detect@1.8.0", "", {}, "sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ=="], - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "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" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], @@ -961,8 +799,6 @@ "which-typed-array": ["which-typed-array@1.1.20", "", { "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" } }, "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg=="], - "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], - "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], @@ -971,53 +807,37 @@ "@next/eslint-plugin-next/fast-glob": ["fast-glob@3.3.1", "", { "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" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], - "@rolldown/binding-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], - "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="], - "@typescript-eslint/typescript-estree/semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="], + "@typescript-eslint/typescript-estree/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="], - "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], - - "bun-types/@types/node": ["@types/node@22.19.19", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew=="], - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], - "eslint-import-resolver-node/resolve": ["resolve@2.0.0-next.7", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.2", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ=="], - "eslint-module-utils/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], - "eslint-plugin-react/resolve": ["resolve@2.0.0-next.7", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.2", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ=="], + "eslint-plugin-react/resolve": ["resolve@2.0.0-next.6", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA=="], "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "is-bun-module/semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="], - - "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], - - "readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "is-bun-module/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "safe-array-concat/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], - "safe-push-apply/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + "sharp/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "sharp/semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="], - - "which-builtin-type/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], "@next/eslint-plugin-next/fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], - - "bun-types/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@5.0.4", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg=="], "@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], } diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md deleted file mode 100644 index 7dd8e230..00000000 --- a/docs/ARCHITECTURE.md +++ /dev/null @@ -1,204 +0,0 @@ -# Reframe Architecture - -This document provides detailed technical information about Reframe's architecture, design choices, and implementation details. - ---- - -## Table of Contents - -- [How It Works](#how-it-works) -- [Architecture Diagram](#architecture-diagram) -- [Key Files](#key-files) -- [Tech Stack](#tech-stack) -- [Video Processing Pipeline](#video-processing-pipeline) -- [Design Choices](#design-choices) - ---- - -## How It Works - -1. **Load Video** โ†’ User selects a file โ†’ App detects resolution and duration -2. **Build Recipe** โ†’ User adjusts presets, framing, trim, speed โ†’ Creates `EditRecipe` -3. **Export** โ†’ Click Export โ†’ FFmpeg WASM loads from CDN (~30 MB, cached after first use) โ†’ Filtergraph runs locally โ†’ File downloads -4. **Done** โ†’ Your edited video is ready. Nothing was uploaded anywhere. - ---- - -## Architecture Diagram - -```mermaid -graph TD - A["UI Layer ยท Next.js Components"] --> B["VideoEditor ยท FileUpload ยท PresetSelector ยท FramingControl ยท TrimControl"] - A --> C["AudioSpeedControl ยท RotateControl ยท ExportSettings"] - B --> D["useVideoEditor Hook ยท State Management"] - C --> D - D --> E["ffmpeg.ts ยท Lazy-loads WASM, builds filter chains"] - E --> F["FFmpeg.wasm ยท Single-threaded core via CDN ยท ~30MB"] - F --> G["Video Pipeline: trim โ†’ rotate โ†’ scale/crop โ†’ speed"] - G --> I["Output: MP4 or WebM ยท Blob URL โ†’ Download"] -``` - ---- - -## Key Files - -| File | Purpose | -| -------------------------------- | -------------------------------------------------------- | -| `src/components/VideoEditor.tsx` | Root component; layout, state orchestration | -| `src/hooks/useVideoEditor.ts` | State management (file, recipe, export status) | -| `src/lib/ffmpeg.ts` | FFmpeg wrapper; lazy-loads WASM, builds filter chains | -| `src/lib/presets.ts` | 11 preset definitions (9:16, 16:9, 4:5, etc.) | -| `src/lib/types.ts` | TypeScript types for EditRecipe, ExportResult, etc. | -| `src/components/*.tsx` | Individual control panels (Trim, Rotate, Speed, Quality) | - ---- - -## Tech Stack - -| Layer | Tech | -| -------------------- | -------------------------------------- | -| **Framework** | Next.js 15 (App Router, static export) | -| **Language** | TypeScript 5 | -| **Styling** | Tailwind CSS v3 | -| **Icons** | Lucide React | -| **Animations** | Lottie Web | -| **Video Processing** | FFmpeg.wasm (single-threaded) | -| **Fonts** | Bebas Neue ยท Syne ยท DM Sans | - ---- - -## Video Processing Pipeline - -Reframe uses FFmpeg.wasm to process videos entirely in the browser. The processing pipeline follows these steps: - -1. **Video Input** โ€” User-selected video file is loaded into memory -2. **Trim** โ€” If trim times are specified, the video is trimmed using FFmpeg's `trim` filter -3. **Rotate** โ€” Video is rotated using FFmpeg's `transpose` filter (0ยฐ, 90ยฐ, 180ยฐ, 270ยฐ) -4. **Scale/Crop** โ€” Video is resized based on the selected preset and framing mode: - - **Fit mode**: Video is scaled to fit within the target dimensions with letterboxing/pillarboxing - - **Fill mode**: Video is scaled to fill the target dimensions and cropped -5. **Speed Adjustment** โ€” Playback speed is adjusted using `setpts` (video) and `atempo` (audio) filters -6. **Audio Processing** โ€” Audio is either kept (with speed adjustment) or removed based on user preference -7. **Encoding** โ€” Final video is encoded to MP4 (H.264) or WebM (VP9) format -8. **Download** โ€” Processed video is made available as a Blob URL for download - ---- - -## Design Choices - -### Why FFmpeg.wasm? - -- **Client-side processing** โ€” No server infrastructure needed, complete privacy -- **Industry-standard** โ€” FFmpeg is the gold standard for video processing -- **Feature-rich** โ€” Supports all common video operations (trim, rotate, scale, speed, etc.) -- **Browser compatibility** โ€” Works in all modern browsers via WebAssembly - -### Why Next.js Static Export? - -- **Zero backend** โ€” Entire app is static HTML/CSS/JS -- **Fast deployment** โ€” Can be hosted on any static file server -- **Offline-capable** โ€” Works offline after initial load (with service worker) -- **SEO-friendly** โ€” Static pages are easily crawlable - -### Why Single-threaded FFmpeg? - -- **Broader compatibility** โ€” Multi-threaded WASM requires SharedArrayBuffer, which has strict CORS requirements -- **Simpler deployment** โ€” No need for special HTTP headers (COOP/COEP) -- **Good enough performance** โ€” For typical video editing tasks, single-threaded performance is acceptable - -### State Management - -Reframe uses a custom React hook (`useVideoEditor`) for state management instead of external libraries like Redux or Zustand: - -- **Simplicity** โ€” No additional dependencies -- **Type safety** โ€” Full TypeScript support -- **Sufficient for scope** โ€” App state is relatively simple and doesn't require complex state management - -### Component Architecture - -Components are organized by feature: - -- **Atomic components** โ€” Small, reusable components (LottiePlayer, buttons) -- **Feature components** โ€” Components for specific features (TrimControl, RotateControl) -- **Layout components** โ€” High-level layout and orchestration (VideoEditor) - -This structure makes it easy to: -- Find and modify specific features -- Add new features without affecting existing code -- Test components in isolation - ---- - -## Browser Support - -| Browser | Support | Notes | -| ------------- | ---------- | ----------------------- | -| Chrome 90+ | โœ… Full | Recommended | -| Firefox 89+ | โœ… Full | | -| Safari 15+ | โœ… Full | | -| Edge 90+ | โœ… Full | | -| Mobile Chrome | โœ… Full | | -| Mobile Safari | โš ๏ธ Partial | Large files may be slow | - -### Browser Requirements - -- **WebAssembly support** โ€” Required for FFmpeg.wasm -- **File API** โ€” For reading user-selected video files -- **Blob URLs** โ€” For downloading processed videos -- **Modern JavaScript** โ€” ES2017+ features - ---- - -## Performance Considerations - -### Memory Usage - -- Video files are loaded entirely into memory -- FFmpeg.wasm requires additional memory for processing -- Large videos (>500 MB) may cause performance issues on low-memory devices - -### Processing Speed - -Processing speed depends on: -- Video resolution and duration -- Selected quality settings (CRF value) -- Device CPU performance -- Browser implementation - -Typical processing times: -- 1080p, 30s video: ~30-60 seconds -- 4K, 30s video: ~2-5 minutes - -### Optimization Strategies - -- **Lazy loading** โ€” FFmpeg.wasm is only loaded when user clicks Export -- **CDN caching** โ€” FFmpeg core files are cached by the browser after first load -- **Efficient filters** โ€” Filter chains are optimized to minimize processing steps -- **Quality presets** โ€” CRF slider allows users to balance quality vs. processing time - ---- - -## Future Architecture Improvements - -Potential improvements for future versions: - -1. **Multi-threaded FFmpeg** โ€” Faster processing with SharedArrayBuffer (requires COOP/COEP headers) -2. **Web Workers** โ€” Offload processing to background thread to keep UI responsive -3. **Streaming processing** โ€” Process video in chunks to reduce memory usage -4. **GPU acceleration** โ€” Use WebGPU for faster video processing (when browser support improves) -5. **Service Worker** โ€” Enable full offline functionality with caching -6. **IndexedDB storage** โ€” Store processed videos locally for later download - ---- - -## Contributing to Architecture - -When contributing architecture changes: - -1. **Maintain privacy** โ€” All processing must remain client-side -2. **Keep it simple** โ€” Avoid over-engineering; prefer simple solutions -3. **Document decisions** โ€” Update this file when making architectural changes -4. **Consider performance** โ€” Test with large videos on low-end devices -5. **Ensure compatibility** โ€” Test in all supported browsers - -See [CONTRIBUTING.md](../CONTRIBUTING.md) for general contribution guidelines. diff --git a/next.config.ts b/next.config.ts index fb2f90ee..13c5d0b0 100644 --- a/next.config.ts +++ b/next.config.ts @@ -10,4 +10,4 @@ const nextConfig: NextConfig = { }, }; -export default nextConfig; \ No newline at end of file +export default nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..fddb027f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5444 @@ +{ + "name": "reframe", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "reframe", + "version": "0.1.0", + "dependencies": { + "@ffmpeg/ffmpeg": "^0.12.10", + "@ffmpeg/util": "^0.12.2", + "clsx": "^2.1.1", + "lottie-react": "^2.4.0", + "lottie-web": "^5.12.2", + "lucide-react": "^0.469.0", + "next": "^15.1.8", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "tailwind-merge": "^3.6.0" + }, + "devDependencies": { + "@types/node": "^22", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "^15.1.8", + "postcss": "^8", + "tailwindcss": "^3.4.17", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "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", + "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.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "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.4.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "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.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "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.1", + "minimatch": "^3.1.3", + "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.39.3", + "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.7", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@ffmpeg/ffmpeg": { + "version": "0.12.15", + "license": "MIT", + "dependencies": { + "@ffmpeg/types": "^0.12.4" + }, + "engines": { + "node": ">=18.x" + } + }, + "node_modules/@ffmpeg/types": { + "version": "0.12.4", + "license": "MIT", + "engines": { + "node": ">=16.x" + } + }, + "node_modules/@ffmpeg/util": { + "version": "0.12.2", + "license": "MIT", + "engines": { + "node": ">=18.x" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "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.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "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.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "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.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "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.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "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.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "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.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "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.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "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-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "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.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "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.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "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.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "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.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "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.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "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.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "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.5", + "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/@jridgewell/gen-mapping": { + "version": "0.3.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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==", + "dev": true, + "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.5.12", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.5.12", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/fast-glob": { + "version": "3.3.1", + "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/@next/eslint-plugin-next/node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.12.tgz", + "integrity": "sha512-RnRjBtH8S8eXCpUNkQ+543DUc7ys8y15VxmFU9HRqlo9BG3CcBUiwNtF8SNoi2xvGCVJq1vl2yYq+3oISBS0Zg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.12.tgz", + "integrity": "sha512-nqa9/7iQlboF1EFtNhWxQA0rQstmYRSBGxSM6g3GxvxHxcoeqVXfGNr9stJOme674m2V7r4E3+jEhhGvSQhJRA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.12.tgz", + "integrity": "sha512-dCzAjqhDHwmoB2M4eYfVKqXs99QdQxNQVpftvP1eGVppamXh/OkDAwV737Zr0KPXEqRUMN4uCjh6mjO+XtF3Mw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.12.tgz", + "integrity": "sha512-+fpGWvQiITgf7PUtbWY1H7qUSnBZsPPLyyq03QuAKpVoTy/QUx1JptEDTQMVvQhvizCEuNLEeghrQUyXQOekuw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.12.tgz", + "integrity": "sha512-jSLvgdRRL/hrFAPqEjJf1fFguC719kmcptjNVDJl26BnJIpjL3KH5h6mzR4mAweociLQaqvt4UyzfbFjgAdDcw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.12.tgz", + "integrity": "sha512-/uaF0WfmYqQgLfPmN6BvULwxY0dufI2mlN2JbOKqqceZh1G4hjREyi7pg03zjfyS6eqNemHAZPSoP84x17vo6w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.5.12", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.12.tgz", + "integrity": "sha512-xhsL1OvQSfGmlL5RbOmU+FV120urrgFpYLq+6U8C6KIym32gZT6XF/SDE92jKzzlPWskkbjOKCpqk5m4i8PEfg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.5.12", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.16.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.19.13", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/type-utils": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.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.56.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3" + }, + "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 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", + "debug": "^4.4.3" + }, + "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 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" + }, + "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.56.1", + "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 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.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 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.56.1", + "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.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.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 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.4", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/node_modules/brace-expansion": { + "version": "5.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" + }, + "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 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.1", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/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", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/acorn": { + "version": "8.16.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "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-styles": { + "version": "4.3.0", + "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/any-promise": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.11.1", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "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", + "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", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001774", + "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", + "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/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "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", + "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", + "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.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "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", + "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/detect-libc": { + "version": "2.1.2", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "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/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.1", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.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", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "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/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.3", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "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.5.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "15.5.12", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.0.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "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", + "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", + "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.6", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "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/eslint-scope": { + "version": "8.4.0", + "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", + "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", + "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.7.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "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/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "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", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "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", + "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", + "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.13.6", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "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", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "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/is-array-buffer": { + "version": "3.0.5", + "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-async-function": { + "version": "2.1.1", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "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", + "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", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "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-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "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", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "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": "1.21.7", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lottie-react": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "lottie-web": "^5.10.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/lottie-web": { + "version": "5.13.0", + "license": "MIT" + }, + "node_modules/lucide-react": { + "version": "0.469.0", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "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-postinstall": { + "version": "0.3.4", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "15.5.12", + "license": "MIT", + "dependencies": { + "@next/env": "15.5.12", + "@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.5.12", + "@next/swc-darwin-x64": "15.5.12", + "@next/swc-linux-arm64-gnu": "15.5.12", + "@next/swc-linux-arm64-musl": "15.5.12", + "@next/swc-linux-x64-gnu": "15.5.12", + "@next/swc-linux-x64-musl": "15.5.12", + "@next/swc-win32-arm64-msvc": "15.5.12", + "@next/swc-win32-x64-msvc": "15.5.12", + "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", + "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-exports-info": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "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", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "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/optionator": { + "version": "0.9.4", + "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", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "dev": true, + "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-import": { + "version": "15.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "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/react": { + "version": "19.2.4", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "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", + "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.11", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "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", + "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-push-apply": { + "version": "1.0.0", + "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", + "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/scheduler": { + "version": "0.27.0", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "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", + "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", + "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.5", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.4", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "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", + "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", + "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", + "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/source-map-js": { + "version": "1.2.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "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", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "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", + "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", + "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-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "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/sucrase": { + "version": "3.35.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", + "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "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", + "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", + "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", + "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.9.3", + "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", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "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/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "dev": 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", + "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", + "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", + "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.20", + "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/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 428bc076..71a70c61 100644 --- a/package.json +++ b/package.json @@ -6,37 +6,28 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "next lint", - "test": "vitest" + "lint": "next lint" }, "dependencies": { "@ffmpeg/ffmpeg": "^0.12.10", "@ffmpeg/util": "^0.12.2", "clsx": "^2.1.1", - "focus-trap-react": "^12.0.1", - "jszip": "^3.10.1", + "lottie-react": "^2.4.0", "lottie-web": "^5.12.2", "lucide-react": "^0.469.0", "next": "^15.1.8", "react": "^19.0.0", "react-dom": "^19.0.0", - "reframe": ".", - "tailwind-merge": "^3.6.0", - "wasm-feature-detect": "^1.8.0" + "tailwind-merge": "^3.6.0" }, "devDependencies": { - "@types/bun": "^1.3.14", - "@types/node": "^25", + "@types/node": "^22", "@types/react": "^19", "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "^15.1.8", - "eslint-plugin-jsx-a11y": "^6.10.2", "postcss": "^8", - "prettier": "^3.8.3", - "prettier-plugin-tailwindcss": "^0.8.0", "tailwindcss": "^3.4.17", - "typescript": "^5", - "vitest": "^4.1.6" + "typescript": "^5" } } diff --git a/public/favicon.svg b/public/favicon.svg deleted file mode 100644 index 2d3a8d90..00000000 --- a/public/favicon.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index c2a49f4f..00000000 --- a/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Allow: / diff --git a/public/sitemap.xml b/public/sitemap.xml deleted file mode 100644 index 34bffc3d..00000000 --- a/public/sitemap.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - https://reframe.video/ - 2025-01-01 - monthly - 1.0 - - \ No newline at end of file diff --git a/public/sounds/export-complete.mp3 b/public/sounds/export-complete.mp3 deleted file mode 100644 index f2843b06cec845d487e3a23076dddaff619cc36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178080 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

9w<*Wrq?F=}3-u?n;a|ERE78E3};) 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 H8Ho}AjuP7u diff --git a/reframe b/reframe deleted file mode 160000 index 9022ede4..00000000 --- a/reframe +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9022ede4215ab686a829b4bd88a25cf67bdeb248 diff --git a/scripts/generate-sri.ts b/scripts/generate-sri.ts deleted file mode 100644 index f376b2f4..00000000 --- a/scripts/generate-sri.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createHash } from "crypto"; - -const urls = [ - "https://cdn.jsdelivr.net/npm/@ffmpeg/core@0.12.10/dist/umd/ffmpeg-core.js", - "https://cdn.jsdelivr.net/npm/@ffmpeg/core@0.12.10/dist/umd/ffmpeg-core.wasm", - "https://cdn.jsdelivr.net/npm/@ffmpeg/core-mt@0.12.10/dist/umd/ffmpeg-core.js", - "https://cdn.jsdelivr.net/npm/@ffmpeg/core-mt@0.12.10/dist/umd/ffmpeg-core.wasm", - ]; - -for (const url of urls) { - const res = await fetch(url); - const buf = await res.arrayBuffer(); - const hash = createHash("sha384").update(Buffer.from(buf)).digest("base64"); - console.log(`"${url}": "sha384-${hash}"`); -} \ No newline at end of file diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx deleted file mode 100644 index bd52c171..00000000 --- a/src/app/contact/page.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import Link from "next/link"; - -export default function ContactPage() { - return ( -

-
- - ← Back to Reframe - -
-

Contact

- -

- Have a question, feedback, or found a bug? -

- -
-
- - GitHub Issues - -

For bug reports and feature requests.

-
- -
- - GitHub Discussions - -

For questions, ideas, and general help.

-
-
-
- ); -} diff --git a/src/app/globals.css b/src/app/globals.css index 52b2929d..f049f4bb 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -2,77 +2,56 @@ @tailwind components; @tailwind utilities; -/* โ”€โ”€ Light mode tokens โ”€โ”€ */ :root { --bg: #F7F4F0; --surface: #ffffff; --border: #E8E3DC; --text: #181412; - --muted: #5C5550; - --accent: #2563eb; - --accent-hover: #1d4ed8; - --film-600: #e63946; - --film-400: #ff6b6b; - --warning: #f59e0b; - --error: #ef4444; - --error-bg: #fee2e2; - --error-border: #fca5a5; - --error-hover: #fecaca; + --muted: #7C756F; + --accent: #e63946; } -/* โ”€โ”€ Dark mode tokens โ”€โ”€ */ -.dark { - --bg: #0f172a; - --surface: #1e293b; - --border: #334155; - --text: #f1f5f9; - --muted: #94a3b8; - --accent: #3b82f6; - --accent-hover: #2563eb; - --warning: #fbbf24; - --error: #f87171; - --error-bg: #7f1d1d; - --error-border: #991b1b; - --error-hover: #991b1b; +* { + box-sizing: border-box; } -/* โ”€โ”€ High contrast mode tokens โ”€โ”€ */ -[data-theme="high-contrast"] { - --bg: #000000; - --surface: #000000; - --border: #FFFFFF; - - --text: #FFFFFF; - --muted: #FFFFFF; - - --accent: #FFFF00; - --accent-hover: #FFFF00; - - --error: #FF6666; - --success: #66FF66; - - --film-600: #FF6666; - --film-400: #66FF66; -} - -/* โ”€โ”€ Base styles โ”€โ”€ */ body { background-color: var(--bg); color: var(--text); - transition: background-color 0.3s ease, color 0.3s ease; + font-family: var(--font-body), "DM Sans", system-ui, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -/* Smooth transitions for all themed elements */ -*, -*::before, -*::after { - transition-property: background-color, border-color, color, fill, stroke; - transition-timing-function: ease; - transition-duration: 200ms; +body::before { + content: ""; + position: fixed; + inset: 0; + pointer-events: none; + z-index: 0; + opacity: 0.025; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E"); + background-size: 300px 300px; } -:focus-visible { - outline: 2px solid var(--accent); - outline-offset: 2px; - border-radius: 4px; -} \ No newline at end of file +#__next, main, [data-nextjs-scroll-focus-boundary] { + position: relative; + z-index: 1; +} + +@keyframes fade-in { + from { opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); } +} + +@layer utilities { + .font-display { + font-family: var(--font-display), sans-serif; + } + .font-heading { + font-family: var(--font-heading), sans-serif; + } + .animate-fade-in { + animation: fade-in 0.4s ease-out both; + } +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 0f949be2..a3fa4de7 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,105 +1,45 @@ import type { Metadata } from "next"; import { Bebas_Neue, Syne, DM_Sans } from "next/font/google"; -import ErrorBoundary from "@/components/ErrorBoundary"; import "./globals.css"; -import { ThemeProvider } from "@/components/ThemeProvider"; -import { ThemeToggle } from "@/components/ThemeToggle"; -import ScrollToTop from "@/components/ScrollToTop"; -export const metadata: Metadata = { - title: "Reframe โ€” Resize, trim, and export videos in your browser", - description: "Free, open-source video editor that runs entirely in your browser. No login, no uploads, no ads. Resize for any platform, trim, rotate, adjust speed, and export.", - keywords: [ - "video editor", - "browser video editor", - "open source video editor", - "resize videos", - "trim videos", - "rotate videos", - "online video editor", - ], +const bebasNeue = Bebas_Neue({ + weight: "400", + subsets: ["latin"], + variable: "--font-display", + display: "swap", +}); - authors: [{ name: "Reframe" }], +const syne = Syne({ + subsets: ["latin"], + variable: "--font-heading", + weight: ["400", "500", "600", "700", "800"], + display: "swap", +}); - openGraph: { - title: "Reframe", - description: - "Free, open-source browser-based video editor. Resize, trim, rotate, and export videos directly in your browser.", - type: "website", - }, +const dmSans = DM_Sans({ + subsets: ["latin"], + variable: "--font-body", + weight: ["300", "400", "500", "600"], + display: "swap", +}); - twitter: { - card: "summary_large_image", - title: "Reframe", - description: - "Free, open-source browser-based video editor. Resize, trim, rotate, and export videos directly in your browser.", - }, - icons: { - icon: [{ url: "/favicon.svg", type: "image/svg+xml" }], - shortcut: "/favicon.svg", - }, +export const metadata: Metadata = { + title: "Reframe โ€” Resize, trim, and export videos in your browser", + description: "Free, open-source video editor that runs entirely in your browser. No login, no uploads, no ads. Resize for any platform, trim, rotate, adjust speed, and export.", }; -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { +export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - - - - -