diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index be519d1fe..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "extends": [ - "next/core-web-vitals", - "eslint:recommended", - "plugin:@typescript-eslint/recommended-type-checked", - "plugin:jsx-a11y/recommended", - "plugin:react/recommended", - "plugin:@tanstack/eslint-plugin-query/recommended", - "plugin:@eslint-react/recommended-type-checked-legacy" - ], - "parser": "@typescript-eslint/parser", - "plugins": ["@typescript-eslint", "jsx-a11y", "react"], - "parserOptions": { - "project": "./tsconfig.json" - }, - "root": true, - "ignorePatterns": ["**/components/ui", "**/test"], - "rules": { - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "off", - "no-console": "error", - "react/react-in-jsx-scope": "off", - "react/prop-types": "off", - "react/jsx-curly-brace-presence": "warn", - "react/jsx-no-useless-fragment": "warn", - "react/no-array-index-key": "warn", - "no-constant-binary-expression": "error", - "object-shorthand": "warn", - "prefer-template": "warn", - "no-else-return": "warn", - "@typescript-eslint/no-empty-object-type": "off", - "@typescript-eslint/no-misused-promises": [ - "error", - { - "checksVoidReturn": { - "arguments": false, - "attributes": false - } - } - ], - "@eslint-react/no-array-index-key": "off", - "@eslint-react/hooks-extra/no-direct-set-state-in-use-effect": "off" - } -} diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 9e3fdced1..ce82d981d 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [22.x] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 022de8405..b6216b800 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [22.x] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/migrate.yml b/.github/workflows/migrate.yml new file mode 100644 index 000000000..07c235b7f --- /dev/null +++ b/.github/workflows/migrate.yml @@ -0,0 +1,39 @@ +name: Prisma Migrate Deploy +permissions: + contents: read + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + migrate: + runs-on: ubuntu-latest + + environment: + name: production + + strategy: + matrix: + node-version: [22.x] + + steps: + - uses: actions/checkout@v3 + + - uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: pnpm + + - run: pnpm install --ignore-scripts + + - name: Deploy Prisma migrations + env: + DATABASE_URL: ${{ secrets.DATABASE_URL_PROD }} + run: pnpm dlx prisma migrate deploy diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml index 22cedbf19..e88037a16 100644 --- a/.github/workflows/typecheck.yml +++ b/.github/workflows/typecheck.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [22.x] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/vitest.yml b/.github/workflows/vitest.yml index 0ea2434de..ba33505b9 100644 --- a/.github/workflows/vitest.yml +++ b/.github/workflows/vitest.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [22.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: diff --git a/components.json b/components.json index b4caaa7a0..751be1362 100644 --- a/components.json +++ b/components.json @@ -1,16 +1,24 @@ { "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", + "style": "radix-vega", "rsc": true, "tsx": true, "tailwind": { - "config": "tailwind.config.js", - "css": "src/app/globals.css", - "baseColor": "zinc", - "cssVariables": true + "config": "", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" }, + "iconLibrary": "lucide", "aliases": { "components": "@/components", - "utils": "@/lib/utils" - } + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} } diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..cc9431373 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,120 @@ +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import { defineConfig, globalIgnores } from "eslint/config"; +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; +import tseslint from "typescript-eslint"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + + // React configs + react.configs.flat.recommended, + react.configs.flat["jsx-runtime"], + reactHooks.configs.flat.recommended, + + // TypeScript baseline (non-typed) + ...tseslint.configs.recommended, + + // Custom rules for all TS/JS files + { + files: ["**/*.{ts,tsx,js,jsx}"], + rules: { + // JS + "no-undef": "off", + "no-console": "error", + "no-constant-binary-expression": "error", + "object-shorthand": "warn", + "prefer-template": "warn", + "no-else-return": "warn", + "func-style": ["error", "declaration"], + + // React + "react/react-in-jsx-scope": "off", + "react/prop-types": "off", + "react/jsx-curly-brace-presence": "warn", + "react/jsx-no-useless-fragment": "warn", + "react/no-array-index-key": "error", + "react/jsx-no-literals": "off", + + // Hooks + "react-hooks/exhaustive-deps": "error", + "react-hooks/set-state-in-effect": "off", + }, + }, + + ...tseslint.configs.recommendedTypeChecked.map((config) => ({ + ...config, + files: ["src/**/*.{ts,tsx}"], + })), + { + files: ["src/**/*.{ts,tsx}"], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: __dirname, + }, + }, + rules: { + "@typescript-eslint/no-empty-object-type": "off", + "@typescript-eslint/no-misused-promises": [ + "error", + { checksVoidReturn: { arguments: false, attributes: false } }, + ], + "@typescript-eslint/adjacent-overload-signatures": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/consistent-generic-constructors": "error", + "@typescript-eslint/consistent-type-assertions": [ + "error", + { + assertionStyle: "as", + objectLiteralTypeAssertions: "allow-as-parameter", + arrayLiteralTypeAssertions: "allow-as-parameter", + }, + ], + "@typescript-eslint/consistent-type-definitions": ["error", "type"], + "@typescript-eslint/no-confusing-non-null-assertion": "error", + "no-empty-function": "off", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/non-nullable-type-assertion-style": "error", + "@typescript-eslint/prefer-find": "error", + "@typescript-eslint/prefer-for-of": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-nullish-coalescing": "error", + "@typescript-eslint/prefer-optional-chain": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "@typescript-eslint/consistent-type-exports": [ + "warn", + { fixMixedExportsWithInlineTypeSpecifier: true }, + ], + "@typescript-eslint/consistent-type-imports": [ + "warn", + { fixStyle: "inline-type-imports", prefer: "type-imports" }, + ], + "@typescript-eslint/no-import-type-side-effects": "warn", + "@eslint-react/hooks-extra/no-direct-set-state-in-use-effect": "off", + "@eslint-react/no-array-index-key": "off", + }, + }, + + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + "**/components/ui/**", + "scripts/**", + ]), +]); + +export default eslintConfig; diff --git a/messages/en.json b/messages/en.json index ac8b44746..b84a3202f 100644 --- a/messages/en.json +++ b/messages/en.json @@ -75,10 +75,12 @@ "symmetra": "Symmetra", "torbjorn": "Torbjörn", "tracer": "Tracer", + "vendetta": "Vendetta", "venture": "Venture", "widowmaker": "Widowmaker", "winston": "Winston", "wreckingball": "Wrecking Ball", + "wuyang": "Wuyang", "zarya": "Zarya", "zenyatta": "Zenyatta" }, @@ -214,15 +216,31 @@ "ogTitle": "Sign Up | Parsertime", "ogDescription": "Sign up for an account. Parsertime is a tool for analyzing Overwatch scrims." }, + "parsertime": "Parsertime", "signUp": "Sign Up", "signIn": "Sign In", + "welcomeBack": "Welcome back", + "oauthSignIn": "Login with your account below", + "email": "Email", "login": "Login", + "dontHaveAccount": "Don't have an account? Sign up", + "alreadyHaveAccount": "Already have an account? Sign in", + "loginWithDiscord": "Login with Discord", + "loginWithGoogle": "Login with Google", + "loginWithGitHub": "Login with GitHub", "createAccount": "Create an account", "enterEmailCreateAccount": "Enter your email below to create your account", "enterEmailSignIn": "Enter your email below to sign in", "signInEmail": "Sign In with Email", "orContinueWith": "Or continue with", - "madeBy": "Made with ❤️ by lux.dev" + "byClickingContinue": "By clicking continue, you agree to our Terms of Service and Privacy Policy.", + "lastUsed": "Last used", + "provider": { + "discord": "Discord", + "google": "Google", + "github": "GitHub", + "email": "Email" + } }, "dashboard": { "metadata": { @@ -248,7 +266,8 @@ "contact": "Contact", "docs": "Docs", "admin": "Admin", - "signOut": "Sign Out" + "signOut": "Sign Out", + "profile": "Profile" }, "commandMenu": { "searchPlaceholder": "Type a command or search...", @@ -333,7 +352,10 @@ "select": "Select a filter", "oldToNew": "Oldest to Newest", "newToOld": "Newest to Oldest", - "search": "Search..." + "search": "Search...", + "noScrimsFound": "No scrims found matching your filters.", + "tryAdjustingFilters": "Try adjusting your search terms or filters.", + "searchDescription": "Tip: Improve your search results by using the following syntax: team:teamname, creator:username." }, "pagination": { "previous": "Previous", @@ -346,7 +368,12 @@ "teams": "Teams", "settings": "Settings", "contact": "Contact", - "docs": "Docs" + "docs": "Docs", + "leaderboard": "Leaderboard", + "playerStats": "Player Stats", + "heroStats": "Hero Stats", + "compareStats": "Compare Players", + "teamStats": "Team Stats" }, "teamSwitcher": { "searchTeamPlaceholder": "Search team...", @@ -381,6 +408,41 @@ "question": "Unsure how to get the data for a scrim?", "documentation": "Check out our documentation here." }, + "tour": { + "title": "Dashboard-Tour", + "step1": { + "title": "Welcome to Parsertime!", + "description": "This tour will guide you through the main features of the dashboard. Let's get started!" + }, + "step2": { + "title": "First Steps", + "description": "Everything starts here! Click the Create Scrim button to set up your first session. Don't worry, we'll guide you through the upload process next!" + }, + "step3": { + "title": "Name your Scrim", + "description": "Give your scrim a name! Use something like 'Team A vs Team B' to keep things organized." + }, + "step4": { + "title": "Assign a Team", + "description": "Select a team to share the scrim with. If you haven't created any teams yet, you can do so from the Teams page." + }, + "step5": { + "title": "Set the Date", + "description": "Choose the date when the scrim took place. This helps keep your scrims organized chronologically." + }, + "step6": { + "title": "Upload your first map", + "description": "Upload your Workshop Log (.xlsx or .txt) here. We'll process it and create your scrim." + }, + "step7": { + "title": "Hero Bans (Optional)", + "description": "If your scrim had hero bans, you can add them here. This helps provide context upon reviewing the scrim." + }, + "step8": { + "title": "All set!", + "description": "You're all set to start analyzing your scrim data!" + } + }, "addScrim": { "title": "Add a scrim...", "description": "Click the button to create a scrim.", @@ -424,6 +486,18 @@ "errorTitle": "Error", "errorDescription": "An error occurred: {res}. Please read the docs here to see if the error can be resolved." }, + "dataCorruption": { + "warning": { + "title": "Data Corruption Detected", + "baseDescription": "Corrupted data detected. Attempting to fix automatically:", + "invalidMercyRez": "Invalid mercy_rez lines will be removed", + "asteriskValues": "Asterisk values will be replaced with 0" + }, + "success": { + "title": "Scrim Created Successfully", + "description": "Corrupted data was automatically fixed and your scrim has been created successfully." + } + }, "scrimName": "Scrim Name", "scrimPlaceholder": "New Scrim", "scrimDescription": "This is the name of the scrim. It will be displayed on the dashboard.", @@ -447,7 +521,18 @@ "mapName": "First Map", "mapDescription": "Upload the first map of the scrim. Only .xlsx and .txt files are accepted, and max file size is 1MB. You can add more maps after the scrim is created.", "submit": "Submit", - "submitting": "Submitting..." + "submitting": "Submitting...", + "heroBansName": "Hero Bans", + "heroBansDescription": "Add the heroes banned by each team. Ban order will be preserved.", + "addHeroBan": "Add Hero Ban", + "orderName": "Order", + "selectTeam": "Select team", + "team": "Team", + "hero": "Hero", + "selectHero": "Select hero", + "heroBanRequiredError": "A hero to ban is required.", + "banPositionRequiredError": "A ban order is required.", + "cancel": "Cancel" } }, "updateModal": { @@ -480,7 +565,7 @@ }, "addMap": { "title": "Add a map...", - "description": "Drag and drop or select a file to upload.", + "description": "or, click to browse (1MB max)", "addFile": "Add a file", "fileMessage": { "required": "File is required.", @@ -494,7 +579,24 @@ "createDescription": "Your map has been created successfully.", "errorTitle": "Error", "errorDescription": "An error occurred: {res}. Please read the docs here to see if the error can be resolved." - } + }, + "dataCorruption": { + "warning": { + "title": "Data Corruption Detected", + "baseDescription": "Corrupted data detected. Attempting to fix automatically:", + "invalidMercyRez": "Invalid mercy_rez lines will be removed", + "asteriskValues": "Asterisk values will be replaced with 0" + }, + "success": { + "title": "Map Added Successfully", + "description": "Corrupted data was automatically fixed and your map has been added successfully." + } + }, + "submitting": "Submitting", + "submit": "Submit", + "addHeroBan": "Add Hero Ban", + "heroBansDescription": "Configure hero bans for this map. You can skip this step by clicking Submit without adding any bans.", + "heroBansTitle": "Add Hero Bans (Optional)" }, "editScrim": { "back": "Back to scrim", @@ -571,15 +673,18 @@ "errorTitle": "Error", "errorDescription": "An error occurred: {res}" } - } + }, + "scrimNotFound": "Scrim not found" }, "replayCode": { "title": "Replay Code (click to copy)", "onClick": { "title": "Copied to clipboard!", "description": "The replay code has been copied to your clipboard." - } - } + }, + "code": "Replay code: {replayCode}" + }, + "viewStats": "View team stats" }, "mapPage": { "mapMetadata": { @@ -697,7 +802,7 @@ "footer": "This chart shows the cumulative damage taken and healing received by round. The x-axis represents the round number, and the y-axis represents the cumulative damage taken or healing received.", "round": "Round {round}", "dmgTaken": "Damage Taken", - "healingReceived": "Healing Receieved" + "healingReceived": "Healing Received" }, "dmgDoneDmgTaken": { "title": "Hero Damage Dealt vs Damage Taken", @@ -705,6 +810,14 @@ "round": "Round {round}", "dmgDone": "Damage Done", "dmgTaken": "Damage Taken" + }, + "mvpScore": { + "title": "MVP Score", + "footer": "The MVP score is a calculation based on a player's statistics compared to the averages of all other players who have played the same hero in scrims. Hover over this card to see how the MVP score is calculated.", + "totalScore": "Total Score: {score}", + "per10Value": "{per10Value}/10min vs avg {heroAverage}", + "percentile": "{percentile, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} percentile", + "explanation": "The MVP score can be used to understand how a player is performing compared to similar players on their hero. The MVP stat does not take into account a player's performance compared to their teammates—it is a way to see who is having a stand-out performance compared to the global averages on their hero. MVP scores typically range between -100 and +100, with a normal distribution centered around 0." } }, "charts": { @@ -743,7 +856,12 @@ "kills": "Kills", "charts": "Charts", "events": "Events", - "compare": "Compare" + "compare": "Compare", + "notes": "Notes" + }, + "tiptap": { + "placeholder": "Write, format, and highlight your text below.", + "notes": "Notes" }, "overview": { "matchTime": "Total Match Time", @@ -962,9 +1080,18 @@ "healingDealtPer10Min": "{num} healing dealt per 10 minutes", "healingReceived": "Healing Receieved", "healingReceivedNum": "{num} Healing Receieved", - "healingReceivedPer10Min": "{num} healing received per 10 minutes" - } + "healingReceivedPer10Min": "{num} healing received per 10 minutes", + "ratingTooltip": "Your hero SR is calculated based on map performance. For overall hero SR, hover over your player name in the statistics table on the map overview page.", + "unratedTooltip": "Play at least 60 seconds to be ranked", + "unplaced": "Unplaced" + }, + "percentile": "{percentile, selectordinal, one {#st} two {#nd} few {#rd} other {#th}} percentile", + "percentileExplanation": "{stat} performance in the top {percent}% of {hero} players", + "vsAverage": "vs avg {average}/10min" } + }, + "heroBans": { + "bannedBy": "{hero} banned by {team}" } }, "statsPage": { @@ -1114,6 +1241,27 @@ "damage": "Damage", "support": "Support" }, + "heroFilter": { + "selectHeroes": "Select Heroes", + "allHeroes": "All Heroes", + "heroesSelected": "{count} heroes selected", + "searchHeroes": "Search heroes...", + "noHeroesFound": "No heroes found", + "quickSelect": "Quick Select", + "reset": "Reset", + "allTanks": "All Tanks", + "allDamage": "All Damage", + "allSupport": "All Support", + "hitscanDPS": "Hitscan DPS", + "flexDPS": "Flex DPS", + "groundTanks": "Ground Tanks", + "diveTanks": "Dive Tanks", + "flexSupports": "Flex Supports", + "mainSupports": "Main Supports", + "tank": "Tanks", + "damage": "Damage", + "support": "Support" + }, "mostPlayed": { "title": "Most Played Heroes", "rank": "Rank", @@ -1225,6 +1373,23 @@ "hero_damage_dealt": "Hero Damage Dealt" } }, + "compareStats": { + "title": "Compare Player Statistics", + "enterPlayerNames": "Enter Player Names", + "player1": "Player 1", + "player2": "Player 2", + "player1Placeholder": "Enter first player name", + "player2Placeholder": "Enter second player name", + "compare": "Compare", + "reset": "Reset", + "loading": "Loading player statistics...", + "errorLoading": "Error loading player data", + "errorPlayer1": "Failed to load Player 1 data", + "errorPlayer2": "Failed to load Player 2 data", + "errorBoth": " and ", + "enterPlayersPrompt": "Enter two player names above to compare their statistics", + "filters": "Filters" + }, "heroStats": { "title": "Hero Stats", "description": "Select a hero to view their stats. Stats are aggregated from all scrims played.", @@ -1328,6 +1493,17 @@ "deaths": "Deaths", "hero_damage_dealt": "Hero Damage Dealt" } + }, + "playerMetrics": { + "mvpScore": "Avg MVP Score", + "fletaDeadliftPercentage": "Fleta Deadlift %", + "firstPickPercentage": "First Pick %", + "firstDeathPercentage": "First Death %", + "fightReversalPercentage": "Fight Reversal %", + "killsPerUltimate": "Kills per Ultimate", + "averageUltChargeTime": "Avg Ult Charge Time", + "droughtTime": "Avg Drought Time", + "mapMVPCount": "Total Map MVPs" } }, "teamPage": { @@ -1523,7 +1699,14 @@ "errorTitle": "Error", "errorDescription": "An error occurred: {res}" } - } + }, + "teamMemberUsage": { + "title": "Usage Details", + "description": "Your team member usage is shown below. The usage is based on your billing plan and the number of teams you have created.", + "teamMemberCount": "Team Members", + "usage": "{current} of {allowed} used" + }, + "viewStats": "View stats" }, "settingsPage": { "metadata": { @@ -1538,7 +1721,12 @@ "sideNav": { "profile": "Profile", "linkedAccounts": "Linked Accounts", - "admin": "Admin" + "admin": "Admin", + "dashboard": "Dashboard", + "analytics": "Analytics", + "impersonateUser": "Impersonate User", + "auditLogs": "Audit Logs", + "billing": "Billing" }, "profile": { "title": "Profile", @@ -1552,6 +1740,23 @@ "planUpgrade": "Upgrade your plan", "manageSubscription": "Manage your subscription" }, + "billing": { + "title": "Billing", + "description": "Manage your billing settings and preferences.", + "planDescription": "Your current plan is the {billingPlan} plan.", + "billingPlan": { + "FREE": "Free", + "BASIC": "Basic", + "PREMIUM": "Premium" + }, + "planUpgrade": "Upgrade your plan", + "manageSubscription": "Manage your subscription", + "teamCount": "Teams", + "teamMemberCount": "Team Members", + "scrimCount": "Scrims", + "viewOtherPlans": "View other plans", + "usage": "{current} of {allowed} used" + }, "profileForm": { "minMessage": "Name must be at least 2 characters.", "maxMessage": "Name must not be longer than 30 characters.", @@ -1561,6 +1766,10 @@ "errorTitle": "An error occurred", "errorDescription": "An error occurred: {res}" }, + "seenOnboarding": { + "title": "Seen Onboarding", + "description": "If enabled, you will not see the introduction the next time you visit the dashboard." + }, "username": { "title": "Username", "description": "This is your public display name. It can be your real name or a pseudonym." @@ -1584,7 +1793,47 @@ } } }, - "update": "Update profile" + "banner": { + "title": "Profile Banner", + "altText": "Profile banner", + "ariaLabel": "Banner upload", + "placeholder": "Click to upload banner", + "description": "This is your profile banner. Click on the banner to upload a custom one from your files.", + "editBanner": { + "title": "Edit Banner", + "description": "Upload and crop your banner image. Click save when you're done.", + "save": "Save Changes", + "updating": "Updating...", + "handleCrop": { + "title": "Banner updated successfully", + "description": "Your banner has been updated successfully.", + "errorTitle": "An error occurred", + "errorDescription1": "An error occurred: {res}", + "errorDescription2": "An error occurred while updating your banner. Please try again later or contact support." + } + } + }, + "update": "Update profile", + "colorblindMode": { + "title": "Accessibility Settings", + "description": "Configure colorblind accessibility options to improve your experience", + "label": "Colorblind Mode", + "team1": "Team 1", + "team2": "Team 2", + "customTeamColors": "Custom Team Colors", + "customTeamColorsDescription": "Choose custom colors for each team", + "team1Color": "Team 1 Color", + "team2Color": "Team 2 Color" + }, + "updating": "Updating...", + "battletag": { + "title": "Battletag", + "description": "This is the in-game username to associate your account with. Do not include the numbers after the hashtag." + }, + "title": { + "title": "Title", + "description": "Select a title to use on your profile." + } }, "linkedAccounts": { "title": "Linked Accounts", @@ -1595,6 +1844,179 @@ } }, "admin": { + "impersonateUser": { + "title": "Impersonate User", + "description": "Impersonate a user to see the site as they do.", + "email": { + "title": "Email", + "description": "This is the email of the user you want to impersonate.", + "message": "Please enter a valid email address." + } + }, + "audit-log": { + "title": "Recent User Actions", + "action-types": "Action Types", + "filter-label": "Filter by Action Type", + "clear-filters": "Clear All", + "user-email": "User Email: {userEmail}", + "target": "Target: {target}", + "search-user-email": "Search User Email", + "search-target": "Search Target", + "download": { + "button": "Download CSV", + "downloading": "Downloading...", + "filename": "audit-logs-{date}.csv", + "tooltip": "Downloads the currently filtered audit logs as a CSV file.", + "error": "Error downloading CSV: {error}", + "unknown-error": "Unknown error" + }, + "table": { + "user-email": "User Email", + "action": "Action", + "target": "Target", + "details": "Details", + "date-time": "Date & Time", + "date-time-format": "{date} at {time}", + "no-logs-found": "No audit logs found matching your filters.", + "error-loading-logs": "Error loading audit logs" + }, + "showing-logs": "Showing {count} logs.", + "hover": { + "user-email": "User Email", + "action": "Action", + "target": "Target", + "details": "Details", + "id": "ID: {id}", + "timestamp": "Timestamp", + "auto-generated": "This action was performed automatically by the system." + } + }, + "dashboard": { + "title": "Admin Dashboard", + "description": "Manage users, content, and monitor platform activity", + "user-search": { + "title": "User Search", + "description": "Search for users with advanced filtering options" + }, + "audit-log": { + "title": "Audit Log", + "description": "Recent actions performed by staff members" + }, + "stats-cards": { + "total-users": { + "title": "Total Users", + "delta": "{delta} new users this month" + }, + "user-growth": { + "title": "User Growth", + "delta": "{delta} vs {lastMonth} last month" + }, + "scrim-activity": { + "title": "Scrim Activity", + "delta": "{delta} vs {lastMonth} last month" + }, + "conversion-rate": { + "title": "Conversion Rate", + "delta": "{paidUsers} paid users" + }, + "monthly-chart": { + "title": "Monthly User Registrations", + "description": "New user registrations over the last 12 months" + }, + "low-trust-users": { + "title": "Low Trust Users", + "delta": "{delta} from last week" + }, + "pending-reports": { + "title": "Pending Reports", + "delta": "{delta} from last week" + }, + "images-pending-review": { + "title": "Images Pending Review", + "delta": "{delta} from last week" + } + } + }, + "user-search": { + "metadata": { + "title": "User Search — Admin | Enter Queue", + "description": "Search for users with advanced filtering options" + }, + "title": "User Search", + "description": "Search for users with advanced filtering options", + "search-placeholder": "Search by username or email...", + "filters": { + "title": "Filters", + "trust-score": "Trust Score Range", + "status": "User Status", + "select-status": "Select status", + "all-statuses": "All Statuses", + "verification-status": "Verification Status", + "select-verification-status": "Select verification status", + "all-users": "All Users", + "verified-only": "Verified Only", + "unverified-only": "Unverified Only", + "billing-plan": "Billing Plan", + "select-billing-plan": "Select billing plan", + "all-plans": "All Plans", + "join-date-range": "Join Date Range", + "reset-filters": "Reset Filters" + }, + "table": { + "username": "Username", + "email": "Email", + "trust-score": "Trust Score", + "verification": "Verification Status", + "join-date": "Join Date", + "actions": "Actions", + "view-profile": "View Profile", + "edit-user": "Edit User", + "adjust-trust-score": "Adjust Trust Score", + "ban-user": "Ban User", + "unban-user": "Unban User", + "no-users-found": "No users found matching your filters.", + "open-menu": "Open Menu", + "error-loading-users": "Error loading users", + "status": "Status", + "banned": "Banned", + "active": "Active", + "name": "Name", + "billing-plan": "Billing Plan", + "role": "Role", + "email-verified": "Email Verified?", + "unverified": "Unverified", + "verified": "Verified" + }, + "showing-users": "Showing {count} users." + }, + "analytics": { + "title": "Analytics", + "description": "View detailed analytics and charts for user activity and growth.", + "userGrowth": { + "title": "User Growth Over Time", + "description": "Monthly user registration trends over the last 12 months" + }, + "scrimActivity": { + "title": "Scrim Activity", + "description": "Daily scrim creation activity over the last 30 days" + }, + "teamCreations": { + "title": "Team Creations", + "description": "Monthly team creation trends over the last 12 months" + }, + "teamManagerDistribution": { + "title": "User Roles Distribution", + "description": "Percentage breakdown of regular users vs team managers" + }, + "signupMethods": { + "title": "User Signup Methods", + "description": "Breakdown of how users signed up (OAuth providers vs email)" + }, + "billingPlans": { + "title": "Billing Plan Distribution", + "description": "Breakdown of users by billing plan (Free, Basic, Premium)" + } + }, "title": "Admin Settings", "description": "Manage admin settings and preferences.", "email": { @@ -1917,6 +2339,12 @@ } }, "privacyPage": { + "metadata": { + "title": "Privacy Policy | Parsertime", + "description": "Privacy Policy for Parsertime - A tool for analyzing Overwatch scrims.", + "ogTitle": "Privacy Policy | Parsertime", + "ogDescription": "Privacy Policy for Parsertime - A tool for analyzing Overwatch scrims." + }, "privacyPolicy": { "title": "Privacy Policy", "description": "At Parsertime, we are committed to maintaining the trust and confidence of our visitors to our web site. In particular, we want you to know that Parsertime is not in the business of selling, renting, or trading email lists with other companies and businesses for marketing purposes. In this Privacy Policy, we've provided detailed information on when and why we collect your personal information, how we use it, and how we keep it secure." @@ -1962,6 +2390,85 @@ "description": "For more information about our privacy practices, if you have questions, or if you would like to make a complaint, please contact us by email at privacy@lux.dev." } }, + "termsPage": { + "metadata": { + "title": "Terms of Service | Parsertime", + "description": "Terms of Service for Parsertime - A tool for analyzing Overwatch scrims.", + "ogTitle": "Terms of Service | Parsertime", + "ogDescription": "Terms of Service for Parsertime - A tool for analyzing Overwatch scrims." + }, + "termsOfService": { + "title": "Terms of Service", + "description": "These Terms of Service govern your use of Parsertime, an open source tool for analyzing Overwatch scrims. By accessing or using our service, you agree to be bound by these Terms." + }, + "acceptance": { + "title": "Acceptance of Terms", + "description": "By accessing and using this website, you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to abide by the above, please do not use this service." + }, + "openSource": { + "title": "Open Source License", + "description": "Parsertime is released under the MIT License, which means:", + "list1": "The source code is freely available and can be modified, distributed, and used for any purpose;", + "list2": "There are no trademark restrictions - the name 'Parsertime' is not trademarked;", + "list3": "You are free to fork, modify, and create derivative works of the software." + }, + "useOfService": { + "title": "Use of Service", + "description": "While Parsertime is open source, when using our hosted service you agree to:", + "list1": "Use the service for its intended purpose of analyzing Overwatch scrims;", + "list2": "Not attempt to overload or disrupt our servers;", + "list3": "Respect other users and maintain appropriate conduct;", + "list4": "Not use the service for any illegal or harmful activities." + }, + "userAccounts": { + "title": "User Accounts", + "description": "When you create an account with us, you must provide information that is accurate, complete, and current at all times. You are responsible for:", + "list1": "Safeguarding the password and all activities that occur under your account;", + "list2": "Notifying us immediately upon becoming aware of any breach of security or unauthorized use of your account;", + "list3": "Ensuring that your account information remains accurate and up-to-date." + }, + "prohibitedUses": { + "title": "Prohibited Uses", + "description": "You may not use our service:", + "list1": "For any unlawful purpose or to solicit others to perform unlawful acts;", + "list2": "To violate any international, federal, provincial, or state regulations, rules, laws, or local ordinances;", + "list3": "To harass, abuse, insult, harm, defame, slander, disparage, intimidate, or discriminate;", + "list4": "To submit false or misleading information or to interfere with the proper functioning of the service;", + "list5": "To attempt to gain unauthorized access to our systems or other users' accounts.", + "list6": "To upload, post, or share NSFW, pornographic, sexually explicit, or otherwise adult content." + }, + "abuseAndMisuse": { + "title": "Abuse and Misuse", + "description": "We reserve the right to take action against users who abuse or misuse our service:", + "list1": "Accounts may be suspended or terminated for violations of these terms;", + "list2": "We may implement rate limiting or other technical measures to prevent abuse;", + "list3": "Repeated violations may result in permanent bans from the service." + }, + "disclaimers": { + "title": "Disclaimers", + "description": "The information on this website is provided on an 'as is' basis. To the fullest extent permitted by law, we exclude all representations, warranties, conditions and terms relating to our website and the use of this website." + }, + "limitationOfLiability": { + "title": "Limitation of Liability", + "description": "In no event shall Parsertime, nor its contributors, be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your use of the service." + }, + "termination": { + "title": "Termination", + "description": "We may terminate or suspend your account and bar access to the service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever and without limitation, including but not limited to a breach of the Terms." + }, + "governingLaw": { + "title": "Governing Law", + "description": "These Terms shall be interpreted and governed by the laws of the United States, without regard to its conflict of law provisions. Our failure to enforce any right or provision of these Terms will not be considered a waiver of those rights." + }, + "changesToTerms": { + "title": "Changes to Terms", + "description": "We reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is material, we will provide at least 30 days notice prior to any new terms taking effect." + }, + "contactUs": { + "title": "Contact Information", + "description": "If you have any questions about these Terms of Service, please contact us at legal@lux.dev." + } + }, "notFound": { "404": "404", "header": "Page not found", @@ -1990,5 +2497,397 @@ "demo": "You are viewing a demo of Parsertime. Click here to sign up", "dismiss": "Dismiss" } + }, + "notifications": { + "title": "Notifications", + "mark-all-as-read": "Mark all as read", + "view-all-notifications": "View all notifications", + "no-notifications": "No notifications", + "unread-notifications": "You have {count, plural, =0 {no unread notifications} =1 {one unread notification} other {unread notifications}}", + "notifications": "Notifications ({count, plural, =0 {no unread} =1 {one unread} other {unread}})", + "mark-all-as-read-error": "Failed to mark all as read", + "mark-as-read-error": "Failed to mark as read", + "error-loading": "Error loading notifications", + "marking-all-as-read": "Updating...", + "mark-as-read": "Mark as read", + "delete": "Delete", + "delete-error": "Failed to delete notification", + "notification-created": "Notification created successfully", + "create-notification-error": "Failed to create notification", + "error-loading-description": "Please try refreshing the page.", + "no-notifications-description": "You'll see notifications here when they arrive." + }, + "dataCorruption": { + "warning": { + "title": "Data Corruption Detected", + "baseDescription": "Corrupted data detected. Attempting to fix automatically:", + "invalidMercyRez": "Invalid mercy_rez lines will be removed", + "asteriskValues": "Asterisk values will be replaced with 0" + } + }, + "profilePage": { + "layoutMetadata": { + "title": "{playerName}'s Profile | Parsertime", + "description": "View {playerName}'s profile and stats on Parsertime.", + "ogTitle": "{playerName}'s Profile | Parsertime", + "ogDescription": "View {playerName}'s profile and stats on Parsertime.", + "ogImage": "{playerName}'s Profile" + } + }, + "titles": { + "DEVELOPER": "Parsertime Developer", + "DEVELOPER-description": "Awarded to users who have contributed to the development of Parsertime.", + "EMPLOYEE": "lux.dev Employee", + "EMPLOYEE-description": "Awarded to users who are employees of lux.dev LLC.", + "BETA_TESTER": "Beta Tester", + "BETA_TESTER-description": "Awarded to users who have been added to the beta tester list.", + "DAY_ONE_USER": "Here Since the Beginning", + "DAY_ONE_USER-description": "For users who have been with us since the beginning. This title is awarded to users who have signed up before the launch date (April 14, 2024).", + "BASIC_PLAN_SUBSCRIBER": "Supporter", + "BASIC_PLAN_SUBSCRIBER-description": "For users who have subscribed to the basic plan. Subscribers are also rewarded with a pink heart icon next to their name.", + "PREMIUM_PLAN_SUBSCRIBER": "Premium Supporter", + "PREMIUM_PLAN_SUBSCRIBER-description": "For users who have subscribed to the premium plan. Subscribers are also rewarded with a gold heart icon next to their name.", + "VIP": "VIP", + "VIP-description": "Awarded to users who have contributed significantly to the Parsertime community.", + "HIGHEST_RANK_ON_A_HERO": "Achieved Greatness", + "HIGHEST_RANK_ON_A_HERO-description": "Awarded to users who have achieved the highest rank on a hero.", + "HIGHEST_AJAX_COUNT": "Ajax King", + "HIGHEST_AJAX_COUNT-description": "Awarded to users who have achieved the highest Ajax count.", + "HIGHEST_FLETA_DEADLIFT_PERCENTAGE": "Fleta's Disciple", + "HIGHEST_FLETA_DEADLIFT_PERCENTAGE-description": "Awarded to users who have achieved the highest Fleta deadlift percentage.", + "TOP_3_KILLS": "Serial Killer", + "TOP_3_KILLS-description": "Awarded to users who have achieved a spot on the top 3 kills leaderboard.", + "TOP_3_DAMAGE_DEALT": "Damage Dealer", + "TOP_3_DAMAGE_DEALT-description": "Awarded to users who have achieved a spot on the top 3 damage dealt leaderboard.", + "TOP_3_HEALING": "Ultimate Medic", + "TOP_3_HEALING-description": "Awarded to users who have achieved a spot on the top 3 healing leaderboard.", + "TOP_3_DAMAGE_BLOCKED": "Damage Sponge", + "TOP_3_DAMAGE_BLOCKED-description": "Awarded to users who have achieved a spot on the top 3 damage blocked leaderboard.", + "TOP_3_DEATHS": "Feeder", + "TOP_3_DEATHS-description": "Awarded to users who have achieved a spot on the top 3 deaths leaderboard.", + "TOP_3_TIME_PLAYED": "Chronically Online", + "TOP_3_TIME_PLAYED-description": "Awarded to users who have achieved a spot on the top 3 time played leaderboard. Go outside!" + }, + "leaderboardPage": { + "metadata": { + "title": "Leaderboard | Parsertime", + "description": "View the highest ranked players for each hero.", + "ogTitle": "Leaderboard | Parsertime", + "ogDescription": "View the highest ranked players for each hero.", + "ogImage": "Leaderboard" + } + }, + "teamStats": { + "fightStats": { + "title": "Team Fight Statistics", + "description": "Analyzed across {count} total fights", + "noData": "No fight data available yet. Upload scrims to see team fight statistics.", + "overallWinrate": "Overall Fight Winrate", + "record": "{wins}W - {losses}L", + "firstPickWinrate": "First Pick Winrate", + "firstPickCount": "In {count} fights with first pick", + "firstDeathWinrate": "First Death Winrate", + "firstDeathCount": "In {count} fights losing first pick", + "firstUltWinrate": "First Ultimate Winrate", + "firstUltCount": "In {count} fights using first ult", + "dryFights": "Dry Fight Rate", + "dryFightDetails": "{count} dry fights ({winrate}% winrate)", + "avgUltsPerFight": "Avg Ults Per Fight", + "avgUltsDescription": "In {count} non-dry fights" + } + }, + "teamStatsPage": { + "layoutMetadata": { + "defaultTeam": "Team", + "title": "{teamName} Stats | Parsertime", + "description": "Stats for {teamName} on Parsertime. Parsertime is a tool for analyzing Overwatch scrims.", + "ogTitle": "{teamName} Stats | Parsertime", + "ogDescription": "Stats for {teamName} on Parsertime. Parsertime is a tool for analyzing Overwatch scrims.", + "ogImage": "{teamName} Stats" + }, + "roleBalanceRadar": { + "title": "Role Balance", + "noData": "Not enough data to analyze role balance yet.", + "eliminations": "Eliminations", + "survivability": "Survivability", + "ultUsage": "Ult Usage", + "activity": "Activity", + "balanced": "Balanced", + "tankHeavy": "Tank-heavy", + "damageHeavy": "Damage-heavy", + "supportHeavy": "Support-heavy", + "insufficientData": "Insufficient data", + "tank": "Tank", + "damage": "Damage", + "support": "Support", + "insights": "Insights", + "excellentBalance": "Your team shows excellent balance across all roles.", + "fairlyBalanced": "Your team is fairly balanced with minor role disparities.", + "considerStrengthening": "Consider strengthening your {weakestRole} performance to improve team balance.", + "negativeKD": "{role} players have a negative K/D ratio.", + "dyingFrequently": "{role} players are dying frequently - focus on positioning.", + "strongest": "Strongest:", + "needsWork": "Needs Work:", + "balanceScore": "Balance Score:" + }, + "bestRoleTriosCard": { + "title": "Best Role Trios", + "noData": "Not enough data to determine best player combinations yet. Need at least 3 games with the same roster.", + "gamesPlayed": "{count, plural, =0 {no games} =1 {one game} other {# games}}", + "wins": "{count}W", + "losses": "{count}L", + "tank": "Tank", + "damage": "Damage", + "support": "Support", + "winRate": "Win Rate", + "playMoreGames": "Play more games to see your best roster combinations" + }, + "heroPickrateHeatmap": { + "title": "Hero Pickrate Heatmap", + "noData": "No hero pickrate data available yet.", + "description": "Top 15 most played heroes across the team", + "hoverText": "{playerName} on {heroName}: {playtime}", + "hoverTextDescription": "Hover over a cell to see the player's pickrate for that hero." + }, + "heroPoolContainer": { + "selectTimeframe": "Select timeframe", + "lastWeek": "Last Week", + "last2Weeks": "Last 2 Weeks", + "lastMonth": "Last Month", + "last3Months": "Last 3 Months", + "last6Months": "Last 6 Months", + "lastYear": "Last Year", + "allTime": "All Time", + "customRange": "Custom Range", + "upgrade": "Upgrade to view more timeframes", + "pickDateRange": "Pick a date range" + }, + "heroPoolOverviewCard": { + "title": "Hero Pool Overview", + "noData": "No hero pool data available yet.", + "excellent": "Excellent", + "good": "Good", + "average": "Average", + "limited": "Limited", + "totalHeroes": "Total Heroes", + "effectivePool": "Effective Pool", + "diversityScore": "Diversity Score", + "minGames": "3+ games", + "specialists": "Specialists", + "minOwnership": "30%+ ownership", + "mostPlayedByRole": "Most Played by Role", + "gamesPlayed": "{count, plural, =0 {no games} =1 {1 game} other {# games}}", + "players": "{count, plural, =0 {no players} =1 {1 player} other {# players}}", + "roleDistribution": "Role Distribution", + "tankHeroes": "Tank Heroes", + "dpsHeroes": "Damage Heroes", + "supportHeroes": "Support Heroes" + }, + "heroWinratesCard": { + "title": "Top Hero Winrates", + "noData": "Not enough games played to calculate hero winrates (need 3+ games per hero).", + "winsAndLosses": "{wins}W - {losses}L • {games} games" + }, + "mapModePerformanceCard": { + "winrate": "Winrate: {winrate}", + "winsAndLosses": "{wins}W - {losses}L ({games, plural, =0 {no games} =1 {1 game} other {# games}})", + "title": "Map Mode Performance", + "noData": "No map mode data available yet.", + "best": "Best: {mode}", + "winrateLabel": "Winrate %", + "record": "Record", + "winsLossesRecord": "{wins}W - {losses}L", + "gamesLabel": "Games", + "avgTimeLabel": "Avg Time", + "bestMap": "Best Map", + "worstMap": "Worst Map", + "insights": "Insights", + "excelsAt": "Your team excels at {mode} maps ({winrate}% winrate)", + "considerPracticing": "Consider practicing {mode} maps to improve balance ({winrate}% winrate)" + }, + "mapRosterDetailsSheet": { + "overall": "Overall: {wins}W - {losses}L ({winrate}% winrate) • {games, plural, =0 {no games} =1 {1 game} other {# games}} played", + "noData": "No roster data available for this map yet.", + "rosterPerformance": "Roster Performance ({count, plural, =0 {no lineups} =1 {1 lineup} other {# lineups}})", + "bestLineup": "Best Lineup", + "winsLossesRecord": "{wins}W - {losses}L", + "gamesLabel": "{count, plural, =0 {no games} =1 {1 game} other {# games}} played", + "smallSample": "Small sample" + }, + "mapWinrateGallery": { + "title": "Map Performance", + "noData": "No map data available yet. Play some matches to see your team's map performance!", + "mapFilters": "Map Filters", + "clearFilters": "Clear Filters", + "searchMaps": "Search Maps", + "searchMapNames": "Search map names...", + "mapType": "Map Type", + "allTypes": "All Types", + "sortBy": "Sort By", + "sortByPlaceholder": "Sort by...", + "highestWinrate": "Highest Winrate", + "mostPlayed": "Most Played", + "alphabetical": "Alphabetical", + "showingMaps": "Showing {count} of {total} maps", + "noMapsMatchFilters": "No maps match your current filters. Try adjusting your search or filters.", + "gamesLabel": "{count, plural, =0 {no games} =1 {1 game} other {# games}} played", + "clickToSeeRosterPerformance": "Click on any map to see roster performance details" + }, + "playerMapPerformanceCard": { + "title": "Player Map Performance Matrix", + "noData": "No map performance data available yet.", + "description": "Each player's best and worst maps by winrate", + "playerOnMap": "{player} on {map}: {winrate}% ({wins}W-{losses}L)", + "noDataTitle": "{player} - {map}: No data", + "winsLossesRecord": "{wins}W - {losses}L", + "hasntPlayedMap": "{player} hasn't played {map} yet.", + "playerMapPerformance": "{player} on {map}: {winrate}% ({wins}W-{losses}L) in {games, plural, =0 {0 games} =1 {1 game} other {# games}} played", + "hoverToSeePerformance": "Hover over a cell to see the player's performance on that map.", + "bestMap": "Best map", + "worstMap": "Worst map" + }, + "quickStatsCard": { + "title": "Quick Stats", + "last10Games": "Last 10 Games", + "winsLossesRecord": "{wins}W - {losses}L", + "bestDay": "Best Day", + "notEnoughData": "Not enough data (need 3+ games per day)", + "gamesLabel": "{count, plural, =0 {no games} =1 {1 game} other {# games}} played", + "avgFightDuration": "Avg Fight Duration", + "quickFights": "Quick fights", + "standard": "Standard", + "longFights": "Long fights", + "firstPickSuccess": "First Pick Success", + "firstPickSuccessRate": "{successfulFirstPicks} / {totalFirstPicks} picks won", + "noData": "No data" + }, + "recentFormCard": { + "title": "Recent Form", + "noData": "No recent matches to display.", + "winsLosses": "{wins}W - {losses}L • {winrate}% winrate", + "last5": "Last 5", + "last10": "Last 10", + "last20": "Last 20", + "strongRecentPerformance": "Strong recent performance", + "strugglingRecently": "Struggling recently", + "averagePerformance": "Average performance", + "win": "W", + "loss": "L" + }, + "rolePerformanceCard": { + "title": "Role Performance", + "noDataAvailable": "No role performance data available yet.", + "noData": "No data", + "playtime": "Playtime", + "maps": "Maps", + "kd": "K/D", + "damagePerMin": "Damage/10 min", + "healingPerMin": "Healing/10 min", + "deathsPerMin": "Deaths/10 min", + "ultEfficiency": "Ult Efficiency", + "elims": "Elims", + "deaths": "Deaths", + "assists": "Assists" + }, + "selector": { + "select": "Select a team..." + }, + "strengthsWeaknessesCard": { + "title": "Strengths & Weaknesses", + "noData": "Not enough data to determine strengths and weaknesses yet.", + "strongestMap": "Strongest Map", + "bestPerformance": "Best performance", + "playtime": "{time} played", + "blindSpot": "Blind Spot", + "needsImprovement": "Needs improvement" + }, + "teamRosterGrid": { + "title": "Team Roster", + "noData": "No roster data available. Players will appear here once they've played in matches." + }, + "topMapsCard": { + "title": "Top Maps by Playtime", + "noData": "No map data available yet." + }, + "ultimateEconomyCard": { + "title": "Ultimate Economy", + "noData": "No ultimate usage data available yet.", + "description": "How efficiently your team uses ultimates", + "ultimateEfficiency": "Ultimate Efficiency", + "fightsWonPerUltUsed": "Fights won per ult used", + "wastedUltimates": "Wasted Ultimates", + "wastePercentage": "{percentage}% of total ults", + "usedInLostSituations": "Used in lost situations", + "totalUltimates": "Total Ultimates", + "acrossFights": "Across {fights} fights", + "ultimatesPerFight": "{ultimates} per fight", + "excellent": "Excellent", + "good": "Good", + "average": "Average", + "poor": "Poor", + "ultimateUsage": "Ultimate Usage: Won vs Lost Fights", + "winningFights": "Winning Fights", + "fights": "{count} fights", + "averageUltsUsed": "Average ultimates used", + "losingFights": "Losing Fights", + "goodUltDiscipline": "Good ult discipline: You use more ults when winning ({ultsInWonFights}) than when losing ({ultsInLostFights}), showing you avoid wasting resources in lost fights.", + "roomForImprovement": "Room for improvement: You use more ults when losing ({ultsInLostFights}) than when winning ({ultsInWonFights}). Consider holding ults in disadvantaged situations.", + "context": "Context", + "dryFights": "Dry Fights:", + "dryFightWinrate": "{count} dry fights ({winrate}% WR)", + "nonDryFights": "Non-Dry Fights:", + "nonDryFightsCount": "{count} non-dry fights ({ults} ults avg)" + }, + "winLossStreaksCard": { + "title": "Win/Loss Streaks", + "noData": "No streak data available yet.", + "na": "N/A", + "currentStreak": "Current Streak", + "winStreakCount": "{count} {count, plural, =0 {wins} =1 {win} other {wins}}", + "lossStreakCount": "{count} {count, plural, =0 {losses} =1 {loss} other {losses}}", + "hot": "🔥 Hot", + "cold": "❄️ Cold", + "longestWinStreak": "Longest Win Streak", + "noWinsYet": "No wins yet", + "longestLossStreak": "Longest Loss Streak", + "noLossesYet": "No losses yet", + "keepMomentumGoing": "Keep the momentum going!", + "timeToBreakStreak": "Time to break the streak - review recent VODs" + }, + "winProbabilityInsights": { + "title": "Win Probability Insights", + "noData": "No teamfight data available yet.", + "firstPickImpact": "First Pick Impact", + "firstPickImpactDescription": "When getting first pick, your team wins {winrate}% of fights", + "firstPickCount": "{wins}W / {fights} fights", + "firstDeathComeback": "First Death Comeback", + "firstDeathComebackDescription": "When suffering first death, your team still wins {winrate}% of fights", + "firstDeathCount": "{wins}W / {fights} fights", + "ultimateAdvantage": "Ultimate Advantage", + "ultimateAdvantageDescription": "Using first ultimate leads to {winrate}% fight winrate", + "ultimateCount": "{wins}W / {fights} fights", + "dryFightSuccess": "Dry Fight Success", + "dryFightSuccessDescription": "Winning {winrate}% of fights without using ultimates", + "dryFightCount": "{wins}W / {fights} dry fights", + "strongAdvantage": "Strong Advantage", + "needsImprovement": "Needs Improvement", + "average": "Average", + "description": "How different fight scenarios impact your win probability", + "overallFightPerformance": "Overall Fight Performance", + "totalFights": "Total Fights", + "fightsWon": "Fights Won", + "overallWinrate": "Overall Winrate" + }, + "winrateOverTimeChart": { + "title": "Winrate Over Time", + "noData": "Not enough data to show winrate trends yet.", + "average": "Average: {avgWinrate}% • {trend} {trendValue}%", + "weekly": "Weekly", + "monthly": "Monthly", + "winrateLabel": "Winrate (%)", + "50PercentLine": "50% Line", + "winrate": "Winrate: {winrate}%", + "winsAndLosses": "{wins}W - {losses}L" + } } } diff --git a/messages/ko.json b/messages/ko.json index bcb52bd23..553512f0e 100644 --- a/messages/ko.json +++ b/messages/ko.json @@ -214,15 +214,31 @@ "ogTitle": "가입하기 | Parsertime", "ogDescription": "계정을 생성하세요. Parsertime은 오버워치 스크림 분석 도구입니다." }, + "welcomeBack": "환영합니다", + "oauthSignIn": "아래 계정으로 로그인하세요", + "email": "이메일", + "parsertime": "Parsertime", "signUp": "가입하기", "signIn": "로그인", "login": "로그인", + "dontHaveAccount": "계정이 없으신가요? 가입하기", + "alreadyHaveAccount": "계정이 있으신가요? 로그인", + "loginWithDiscord": "Discord로 로그인", + "loginWithGoogle": "Google로 로그인", + "loginWithGitHub": "GitHub로 로그인", "createAccount": "계정 생성", "enterEmailCreateAccount": "아래 이메일을 입력하여 계정을 생성하세요", "enterEmailSignIn": "아래 이메일을 입력하여 로그인하세요", "signInEmail": "이메일로 로그인", "orContinueWith": "또는 계속하기", - "madeBy": "❤️로 만든 lux.dev" + "byClickingContinue": "계속하기를 클릭하면, 우리의 서비스 약관개인정보 보호정책에 동의하게 됩니다.", + "lastUsed": "마지막 사용", + "provider": { + "discord": "Discord", + "google": "Google", + "github": "GitHub", + "email": "이메일" + } }, "dashboard": { "metadata": { @@ -476,7 +492,7 @@ }, "addMap": { "title": "맵 추가...", - "description": "파일을 드래그 앤 드롭하거나 선택하여 업로드하세요.", + "description": "또는, 클릭하여 탐색 (1MB 최대)", "addFile": "파일 추가", "fileMessage": { "required": "파일이 필요합니다.", @@ -567,7 +583,8 @@ "errorTitle": "오류", "errorDescription": "오류가 발생했습니다: {res}" } - } + }, + "scrimNotFound": "스크림을 찾을 수 없습니다" }, "replayCode": { "title": "리플레이 코드 (클릭하여 복사)", @@ -1577,6 +1594,26 @@ } } }, + "banner": { + "title": "프로필 배너", + "altText": "프로필 배너", + "ariaLabel": "배너 업로드", + "placeholder": "클릭하여 배너 업로드", + "description": "프로필 배너입니다. 배너를 클릭하여 파일에서 커스텀 배너를 업로드하세요.", + "editBanner": { + "title": "배너 편집", + "description": "배너 이미지를 업로드하고 자르세요. 완료되면 저장을 클릭하세요.", + "save": "변경 사항 저장", + "updating": "업데이트 중...", + "handleCrop": { + "title": "배너가 성공적으로 업데이트되었습니다", + "description": "배너가 성공적으로 업데이트되었습니다.", + "errorTitle": "오류가 발생했습니다", + "errorDescription1": "오류가 발생했습니다: {res}", + "errorDescription2": "배너를 업데이트하는 중 오류가 발생했습니다. 나중에 다시 시도하거나 지원팀에 문의하세요." + } + } + }, "update": "프로필 업데이트" }, "linkedAccounts": { @@ -1955,6 +1992,79 @@ "description": "당사의 개인정보 보호 관행에 대한 추가 정보가 필요하거나, 질문이 있거나, 불만을 제기하고 싶으신 경우, privacy@lux.dev으로 이메일을 보내주십시오." } }, + "termsPage": { + "termsOfService": { + "title": "서비스 이용약관", + "description": "이 서비스 이용약관은 오버워치 스크림 분석을 위한 오픈소스 도구인 Parsertime의 사용을 규정합니다. 당사의 서비스에 접근하거나 사용함으로써 이 약관에 구속되는 것에 동의합니다." + }, + "acceptance": { + "title": "약관 수락", + "description": "이 웹사이트에 접근하고 사용함으로써 귀하는 이 계약의 조건과 조항에 구속되는 것에 동의합니다. 위의 내용에 동의하지 않으시면 이 서비스를 사용하지 마십시오." + }, + "openSource": { + "title": "오픈소스 라이선스", + "description": "Parsertime은 MIT 라이선스 하에 출시되며, 이는 다음을 의미합니다:", + "list1": "소스 코드가 자유롭게 제공되며 수정, 배포 및 어떤 목적으로든 사용할 수 있습니다;", + "list2": "상표권 제한이 없습니다 - 'Parsertime'이라는 이름은 상표권이 없습니다;", + "list3": "소프트웨어를 포크, 수정 및 파생 작품을 자유롭게 만들 수 있습니다." + }, + "useOfService": { + "title": "서비스 사용", + "description": "Parsertime이 오픈소스이지만, 당사의 호스팅 서비스를 사용할 때 다음에 동의합니다:", + "list1": "오버워치 스크림 분석이라는 의도된 목적으로 서비스를 사용하기;", + "list2": "당사 서버에 과부하를 주거나 방해하지 않기;", + "list3": "다른 사용자를 존중하고 적절한 행동을 유지하기;", + "list4": "불법적이거나 유해한 활동에 서비스를 사용하지 않기." + }, + "userAccounts": { + "title": "사용자 계정", + "description": "당사와 계정을 생성할 때 정확하고 완전하며 항상 최신 상태인 정보를 제공해야 합니다. 귀하는 다음에 대해 책임집니다:", + "list1": "비밀번호를 보호하고 귀하의 계정에서 발생하는 모든 활동에 대해 책임지기;", + "list2": "보안 위반이나 계정의 무단 사용을 인지하는 즉시 당사에 즉시 알리기;", + "list3": "계정 정보가 정확하고 최신 상태로 유지되도록 하기." + }, + "prohibitedUses": { + "title": "금지된 사용", + "description": "다음 목적으로 당사 서비스를 사용할 수 없습니다:", + "list1": "불법적인 목적이나 다른 사람에게 불법 행위를 수행하도록 유도하기;", + "list2": "국제, 연방, 주 또는 지방 규정, 규칙, 법률 또는 조례를 위반하기;", + "list3": "괴롭힘, 학대, 모욕, 해를 끼치거나, 명예훼손, 중상, 경멸, 위협 또는 차별하기;", + "list4": "거짓이거나 오해의 소지가 있는 정보를 제출하거나 서비스의 정상적인 기능을 방해하기;", + "list5": "당사 시스템이나 다른 사용자의 계정에 무단으로 접근하려고 시도하기.", + "list6": "NSFW(부적절) 콘텐츠, 포르노, 성적으로 노골적이거나 성인용 콘텐츠를 업로드, 게시 또는 공유하기." + }, + "abuseAndMisuse": { + "title": "남용 및 오용", + "description": "당사는 서비스를 남용하거나 오용하는 사용자에 대해 조치를 취할 권리를 보유합니다:", + "list1": "이 약관을 위반한 경우 계정이 정지되거나 해지될 수 있습니다;", + "list2": "남용을 방지하기 위해 속도 제한이나 기타 기술적 조치를 구현할 수 있습니다;", + "list3": "반복적인 위반은 서비스에서 영구적으로 차단될 수 있습니다." + }, + "disclaimers": { + "title": "면책 조항", + "description": "이 웹사이트의 정보는 '있는 그대로' 제공됩니다. 법률에서 허용하는 최대 범위까지, 당사는 웹사이트 및 이 웹사이트 사용과 관련된 모든 표현, 보증, 조건 및 약관을 제외합니다." + }, + "limitationOfLiability": { + "title": "책임의 제한", + "description": "어떠한 경우에도 Parsertime이나 그 기여자들은 서비스 사용으로 인한 간접적, 부수적, 특별, 결과적 또는 징벌적 손해, 이익 손실, 데이터, 사용, 평판 또는 기타 무형 손실을 포함하되 이에 국한되지 않는 손해에 대해 책임지지 않습니다." + }, + "termination": { + "title": "해지", + "description": "당사는 단독 재량에 따라 사전 통지나 책임 없이 약관 위반을 포함하되 이에 국한되지 않는 어떠한 이유로든 계정을 해지하거나 정지하고 서비스 접근을 즉시 차단할 수 있습니다." + }, + "governingLaw": { + "title": "준거법", + "description": "이 약관은 법률 충돌 조항에 관계없이 미국 법률에 따라 해석되고 적용됩니다. 이 약관의 권리나 조항을 시행하지 않는 것은 해당 권리의 포기로 간주되지 않습니다." + }, + "changesToTerms": { + "title": "약관 변경", + "description": "당사는 단독 재량에 따라 언제든지 이 약관을 수정하거나 교체할 권리를 보유합니다. 수정사항이 중요한 경우, 새로운 약관이 효력을 발생하기 전에 최소 30일 전에 통지하겠습니다." + }, + "contactUs": { + "title": "연락처 정보", + "description": "이 서비스 이용약관에 대한 질문이 있으시면 legal@lux.dev로 연락해 주십시오." + } + }, "notFound": { "404": "404", "header": "페이지를 찾을 수 없습니다", @@ -1983,5 +2093,22 @@ "demo": "Parsertime의 데모를 보고 계십니다. 가입하려면 여기를 클릭하세요.", "dismiss": "닫기" } + }, + "notifications": { + "title": "알림", + "mark-all-as-read": "모두 읽음으로 표시", + "view-all-notifications": "모든 알림 보기", + "no-notifications": "알림이 없습니다.", + "unread-notifications": "읽지 않은 알림이 {count, plural, =0 {없습니다} =1 {하나} other {개}}", + "notifications": "알림 ({count, plural, =0 {읽지 않은 알림 없음} =1 {읽지 않은 알림 하나} other {읽지 않은 알림}})", + "mark-all-as-read-error": "모두 읽음으로 표시 실패", + "mark-as-read-error": "읽음으로 표시 실패", + "error-loading": "알림 로딩 오류", + "marking-all-as-read": "업데이트 중...", + "mark-as-read": "읽음으로 표시", + "delete": "삭제", + "delete-error": "알림 삭제 실패", + "notification-created": "알림 생성 성공", + "create-notification-error": "알림 생성 실패" } } diff --git a/messages/zh.json b/messages/zh.json index 74aec55c3..78ac0f75f 100644 --- a/messages/zh.json +++ b/messages/zh.json @@ -214,15 +214,31 @@ "ogTitle": "注册 | Parsertime", "ogDescription": "注册账户。Parsertime 是一款用于分析《守望先锋》训练赛的工具。" }, + "welcomeBack": "欢迎回来", + "oauthSignIn": "使用您的账户登录", + "email": "电子邮件", + "parsertime": "Parsertime", "signUp": "注册", "signIn": "登录", "login": "登录", + "dontHaveAccount": "没有账户?注册", + "alreadyHaveAccount": "已有账户?登录", + "loginWithDiscord": "使用 Discord 登录", + "loginWithGoogle": "使用 Google 登录", + "loginWithGitHub": "使用 GitHub 登录", "createAccount": "创建账户", "enterEmailCreateAccount": "请输入您的电子邮件地址以创建账户", "enterEmailSignIn": "请输入您的电子邮件地址以登录", "signInEmail": "使用电子邮件登录", "orContinueWith": "或者继续使用", - "madeBy": "使用 ❤️ 制作,作者 lux.dev" + "byClickingContinue": "点击继续,您同意我们的 服务条款隐私政策。", + "lastUsed": "上次使用", + "provider": { + "discord": "Discord", + "google": "Google", + "github": "GitHub", + "email": "电子邮件" + } }, "dashboard": { "metadata": { @@ -476,7 +492,7 @@ }, "addMap": { "title": "添加地图...", - "description": "拖放或选择要上传的文件。", + "description": "或, 点击浏览 (1MB 最大)", "addFile": "添加文件", "fileMessage": { "required": "需要文件。", @@ -567,7 +583,8 @@ "errorTitle": "错误", "errorDescription": "发生错误: {res}" } - } + }, + "scrimNotFound": "训练赛未找到" }, "replayCode": { "title": "重播代码(点击复制)", @@ -1580,6 +1597,26 @@ } } }, + "banner": { + "title": "个人资料横幅", + "altText": "个人资料横幅", + "ariaLabel": "横幅上传", + "placeholder": "点击上传横幅", + "description": "这是您的个人资料横幅。点击横幅可以从您的文件中上传自定义横幅。", + "editBanner": { + "title": "编辑横幅", + "description": "上传并裁剪您的横幅图片。完成后点击保存。", + "save": "保存更改", + "updating": "更新中...", + "handleCrop": { + "title": "横幅更新成功", + "description": "您的横幅已成功更新。", + "errorTitle": "发生错误", + "errorDescription1": "发生错误:{res}", + "errorDescription2": "更新横幅时发生错误。请稍后再试或联系支持。" + } + } + }, "update": "更新个人资料" }, "linkedAccounts": { @@ -1881,7 +1918,6 @@ "allTime": "所有时间", "custom": "自定义时间范围" }, - "support": { "title": "支持", "discord": "社区 Discord", @@ -1959,6 +1995,79 @@ "description": "如果您想了解更多关于我们的隐私实践的信息,有任何问题,或希望提出投诉,请通过电子邮件联系我们:privacy@lux.dev。" } }, + "termsPage": { + "termsOfService": { + "title": "服务条款", + "description": "本服务条款规范您对 Parsertime 的使用,这是一个用于分析《守望先锋》训练赛的开源工具。通过访问或使用我们的服务,您同意受这些条款的约束。" + }, + "acceptance": { + "title": "条款接受", + "description": "通过访问和使用本网站,您接受并同意受本协议条款和规定的约束。如果您不同意遵守上述条款,请不要使用本服务。" + }, + "openSource": { + "title": "开源许可证", + "description": "Parsertime 在 MIT 许可证下发布,这意味着:", + "list1": "源代码可自由获取,可以修改、分发和用于任何目的;", + "list2": "没有商标限制 - 'Parsertime' 名称未注册商标;", + "list3": "您可以自由分叉、修改和创建软件的衍生作品。" + }, + "useOfService": { + "title": "服务使用", + "description": "虽然 Parsertime 是开源的,但在使用我们的托管服务时,您同意:", + "list1": "将服务用于分析《守望先锋》训练赛的预期目的;", + "list2": "不试图使我们的服务器过载或中断;", + "list3": "尊重其他用户并保持适当的行为;", + "list4": "不将服务用于任何非法或有害的活动。" + }, + "userAccounts": { + "title": "用户账户", + "description": "当您与我们创建账户时,您必须提供准确、完整且始终最新的信息。您负责:", + "list1": "保护密码和您账户下发生的所有活动;", + "list2": "在发现安全漏洞或账户被未经授权使用时立即通知我们;", + "list3": "确保您的账户信息保持准确和最新。" + }, + "prohibitedUses": { + "title": "禁止使用", + "description": "您不得将我们的服务用于:", + "list1": "任何非法目的或怂恿他人进行非法行为;", + "list2": "违反任何国际、联邦、省或州法规、规则、法律或地方法令;", + "list3": "骚扰、虐待、侮辱、伤害、诽谤、中伤、贬低、恐吓或歧视;", + "list4": "提交虚假或误导性信息或干扰服务的正常功能;", + "list5": "试图未经授权访问我们的系统或其他用户的账户。", + "list6": "上传、发布或分享 NSFW、色情、性露骨或其他成人内容。" + }, + "abuseAndMisuse": { + "title": "滥用和误用", + "description": "我们保留对滥用或误用我们服务的用户采取行动的权利:", + "list1": "违反这些条款的账户可能被暂停或终止;", + "list2": "我们可能实施速率限制或其他技术措施来防止滥用;", + "list3": "重复违规可能导致永久禁止使用服务。" + }, + "disclaimers": { + "title": "免责声明", + "description": "本网站上的信息按“原样”提供。在法律允许的最大范围内,我们排除与我们的网站和本网站使用相关的所有陈述、保证、条件和条款。" + }, + "limitationOfLiability": { + "title": "责任限制", + "description": "在任何情况下,Parsertime 或其贡献者均不对因使用服务而产生的任何间接、偶然、特殊、后果性或惩罚性损害承担责任,包括但不限于利润、数据、使用、商誉或其他无形损失的损失。" + }, + "termination": { + "title": "终止", + "description": "我们可以在我们的唯一裁量权下,出于任何原因(包括但不限于违反条款)立即终止或暂停您的账户并禁止访问服务,无需事先通知或承担责任。" + }, + "governingLaw": { + "title": "适用法律", + "description": "这些条款应根据美国法律进行解释和管辖,不考虑其法律冲突条款。我们不执行这些条款的任何权利或规定不应被视为放弃这些权利。" + }, + "changesToTerms": { + "title": "条款变更", + "description": "我们保留在我们的唯一裁量权下随时修改或替换这些条款的权利。如果修订是重要的,我们将在任何新条款生效前至少提前 30 天通知。" + }, + "contactUs": { + "title": "联系信息", + "description": "如果您对这些服务条款有任何疑问,请通过 legal@lux.dev 联系我们。" + } + }, "notFound": { "404": "404", "header": "页面未找到", @@ -1987,5 +2096,22 @@ "demo": "您正在查看 Parsertime 的演示。点击此处注册", "dismiss": "关闭" } + }, + "notifications": { + "title": "通知", + "mark-all-as-read": "全部已读", + "view-all-notifications": "查看所有通知", + "no-notifications": "没有通知", + "unread-notifications": "您有 {count, plural, =0 {没有未读通知} =1 {一个未读通知} other {未读通知}}", + "notifications": "通知 ({count, plural, =0 {没有未读} =1 {一个未读} other {未读}})", + "mark-all-as-read-error": "标记全部已读失败", + "mark-as-read-error": "标记已读失败", + "error-loading": "加载通知失败", + "marking-all-as-read": "更新中...", + "mark-as-read": "标记已读", + "delete": "删除", + "delete-error": "删除通知失败", + "notification-created": "通知创建成功", + "create-notification-error": "创建通知失败" } } diff --git a/next.config.js b/next.config.ts similarity index 85% rename from next.config.js rename to next.config.ts index 08eb08aea..e0d2c867f 100644 --- a/next.config.js +++ b/next.config.ts @@ -1,4 +1,7 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ +import withVercelToolbar from "@vercel/toolbar/plugins/next"; +import { withBotId } from "botid/next/config"; +import { withAxiom } from "next-axiom"; +import createNextIntlPlugin from "next-intl/plugin"; const cspHeader = ` default-src 'self'; @@ -21,14 +24,15 @@ const cspHeader = ` upgrade-insecure-requests; `; -/** @type {import('next').NextConfig} */ const nextConfig = { - eslint: { - ignoreDuringBuilds: true, - }, + reactCompiler: true, + typedRoutes: true, typescript: { ignoreBuildErrors: true, }, + experimental: { + authInterrupts: true, + }, images: { remotePatterns: [ { @@ -90,9 +94,9 @@ const nextConfig = { }, }; -const withVercelToolbar = require("@vercel/toolbar/plugins/next")(); -const { withAxiom } = require("next-axiom"); -const createNextIntlPlugin = require("next-intl/plugin"); const withNextIntl = createNextIntlPlugin(); -module.exports = withNextIntl(withAxiom(withVercelToolbar(nextConfig))); +export default withBotId( + // @ts-expect-error - broken types + withNextIntl(withAxiom(withVercelToolbar()(nextConfig))) +); diff --git a/package.json b/package.json index ded0f874e..e4c9733f5 100644 --- a/package.json +++ b/package.json @@ -1,133 +1,174 @@ { "name": "parsertime", - "version": "1.4.0", + "version": "2.0.0", "private": true, "scripts": { - "dev": "next dev", - "dev:turbo": "next dev --turbo", + "dev": "next dev --turbopack", "build": "next build", "postinstall": "prisma generate", "start": "next start", - "lint": "next lint", - "lint:json": "next lint --format=json --output-file=reports/lint.json", + "lint": "next typegen && eslint .", + "lint:json": "next typegen && eslint --format=json --output-file=reports/lint.json .", "test": "vitest", "format": "prettier --write .", "format:check": "prettier --check .", - "typecheck": "tsc --noEmit", + "typecheck": "next typegen && tsc --noEmit", "db:push": "prisma db push", "db:generate": "prisma generate", - "db:migrate": "prisma migrate dev" + "db:migrate": "prisma migrate dev", + "db:deploy": "prisma migrate deploy" }, "dependencies": { "@auth/prisma-adapter": "1.0.5", - "@aws-sdk/client-ses": "^3.554.0", - "@headlessui/react": "^1.7.18", - "@heroicons/react": "^2.1.3", - "@hookform/resolvers": "^3.3.4", - "@prisma/client": "^5.19.1", - "@radix-ui/react-accordion": "^1.1.2", - "@radix-ui/react-alert-dialog": "^1.0.5", - "@radix-ui/react-aspect-ratio": "^1.0.3", - "@radix-ui/react-avatar": "^1.0.4", - "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-collapsible": "^1.0.3", - "@radix-ui/react-context-menu": "^2.1.5", - "@radix-ui/react-dialog": "^1.0.5", - "@radix-ui/react-dropdown-menu": "^2.0.6", - "@radix-ui/react-hover-card": "^1.0.7", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-menubar": "^1.0.4", - "@radix-ui/react-navigation-menu": "^1.1.4", - "@radix-ui/react-popover": "^1.0.7", - "@radix-ui/react-progress": "^1.0.3", - "@radix-ui/react-radio-group": "^1.1.3", - "@radix-ui/react-scroll-area": "^1.0.5", - "@radix-ui/react-select": "^2.0.0", - "@radix-ui/react-separator": "^1.0.3", - "@radix-ui/react-slider": "^1.1.2", - "@radix-ui/react-slot": "^1.0.2", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-toast": "^1.1.5", - "@radix-ui/react-toggle": "^1.0.3", - "@radix-ui/react-tooltip": "^1.0.7", - "@react-email/components": "^0.0.15", - "@react-email/render": "^0.0.12", - "@react-email/tailwind": "^0.0.14", - "@sendgrid/mail": "^8.1.3", - "@stripe/stripe-js": "^3.3.0", - "@tailwindcss/forms": "^0.5.7", - "@tanstack/react-query": "^5.52.1", - "@tanstack/react-table": "^8.16.0", - "@upstash/ratelimit": "^1.0.3", - "@upstash/redis": "^1.29.0", - "@vercel/analytics": "^1.2.2", - "@vercel/blob": "^0.22.3", - "@vercel/edge-config": "^1.1.0", - "@vercel/kv": "^2.0.0", - "@vercel/speed-insights": "^1.0.10", - "@vercel/toolbar": "^0.1.13", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.0", - "cmdk": "^0.2.1", - "date-fns": "^3.6.0", - "framer-motion": "^11.0.28", - "geist": "^1.3.0", - "input-otp": "^1.2.4", - "json-edit-react": "^1.17.0", - "lucide-react": "^0.344.0", - "nanoid": "^5.0.7", - "next": "14.2.23", - "next-auth": "5.0.0-beta.4", - "next-axiom": "^1.1.1", - "next-intl": "^3.26.3", - "next-themes": "^0.2.1", - "react": "^18.2.0", - "react-day-picker": "^8.10.0", - "react-dom": "^18.2.0", - "react-easy-crop": "^5.0.6", - "react-hook-form": "^7.51.3", - "recharts": "^2.12.5", - "sonner": "^1.4.41", - "stripe": "^14.25.0", - "tailwind-merge": "^2.2.2", + "@aws-sdk/client-ses": "^3.890.0", + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/sortable": "^10.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@effect/language-service": "^0.40.0", + "@floating-ui/react": "^0.27.16", + "@headlessui/react": "^2.2.8", + "@heroicons/react": "^2.2.0", + "@hookform/resolvers": "^5.2.2", + "@prisma/client": "^6.16.2", + "@radix-ui/react-accordion": "^1.2.12", + "@radix-ui/react-alert-dialog": "^1.1.15", + "@radix-ui/react-aspect-ratio": "^1.1.7", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", + "@radix-ui/react-context-menu": "^2.2.16", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-hover-card": "^1.1.15", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-menubar": "^1.1.16", + "@radix-ui/react-navigation-menu": "^1.2.14", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.8", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-toast": "^1.2.15", + "@radix-ui/react-toggle": "^1.1.10", + "@radix-ui/react-toggle-group": "^1.1.11", + "@radix-ui/react-tooltip": "^1.2.8", + "@react-email/components": "^0.5.3", + "@react-email/render": "^1.2.3", + "@react-email/tailwind": "^1.2.2", + "@sendgrid/mail": "^8.1.5", + "@stripe/stripe-js": "^7.9.0", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/postcss": "^4.1.13", + "@tanstack/react-query": "^5.89.0", + "@tanstack/react-table": "^8.21.3", + "@tiptap/extension-highlight": "^3.6.6", + "@tiptap/extension-text-align": "^3.6.6", + "@tiptap/pm": "^3.6.6", + "@tiptap/react": "^3.6.6", + "@tiptap/starter-kit": "^3.6.6", + "@upstash/ratelimit": "^2.0.6", + "@upstash/redis": "^1.35.3", + "@vercel/analytics": "^1.5.0", + "@vercel/blob": "^2.0.0", + "@vercel/edge-config": "^1.4.0", + "@vercel/functions": "^3.1.0", + "@vercel/kv": "^3.0.0", + "@vercel/speed-insights": "^1.2.0", + "@vercel/toolbar": "^0.1.41", + "@xstate/store": "^3.9.2", + "babel-plugin-react-compiler": "^1.0.0", + "botid": "^1.5.10", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "color": "^5.0.2", + "date-fns": "^4.1.0", + "effect": "^3.17.13", + "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.23.13", + "fuse.js": "^7.1.0", + "geist": "^1.5.1", + "input-otp": "^1.4.2", + "json-edit-react": "^1.28.2", + "lucide-react": "^0.544.0", + "motion": "^12.23.26", + "nanoid": "^5.1.5", + "next": "16.1.1", + "next-auth": "5.0.0-beta.29", + "next-axiom": "^1.9.2", + "next-intl": "^4.3.9", + "next-themes": "^0.4.6", + "nextstepjs": "^2.1.2", + "radix-ui": "^1.4.3", + "react": "19.2.3", + "react-day-picker": "^9.12.0", + "react-dom": "19.2.3", + "react-easy-crop": "^5.5.1", + "react-hook-form": "^7.62.0", + "react-resizable-panels": "^3.0.6", + "react-scan": "^0.4.3", + "recharts": "^2.15.4", + "sonner": "^2.0.7", + "stripe": "^18.5.0", + "tailwind-merge": "^3.3.1", "tailwindcss-animate": "^1.0.7", - "validator": "^13.11.0", + "use-debounce": "^10.0.6", + "validator": "^13.15.15", + "vaul": "^1.1.2", "xlsx": "^0.18.5", - "zod": "^3.22.4" + "zod": "^4.1.8" }, "devDependencies": { - "@eslint-react/eslint-plugin": "^1.14.3", - "@tanstack/eslint-plugin-query": "^5.52.0", - "@tanstack/react-query-devtools": "^5.52.1", - "@total-typescript/ts-reset": "^0.5.1", - "@types/node": "^20.12.7", - "@types/react": "^18.2.78", - "@types/react-dom": "^18.2.25", - "@types/validator": "^13.11.9", - "@typescript-eslint/eslint-plugin": "^8.6.0", - "@typescript-eslint/parser": "^8.6.0", - "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-config-next": "14.0.1", - "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-react": "^7.34.1", - "postcss": "^8.4.38", - "prettier": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.1", - "prisma": "^5.19.1", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5", - "vitest": "^2.0.5", - "vitest-mock-extended": "^1.3.1" + "@eslint-react/eslint-plugin": "^2.3.13", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.39.2", + "@next/eslint-plugin-next": "16.0.1", + "@tanstack/eslint-plugin-query": "^5.89.0", + "@tanstack/react-query-devtools": "^5.89.0", + "@total-typescript/ts-reset": "^0.6.1", + "@types/color": "^4.2.0", + "@types/node": "^20.19.15", + "@types/react": "19.2.2", + "@types/react-dom": "19.2.2", + "@types/validator": "^13.15.3", + "@typescript-eslint/eslint-plugin": "^8.44.0", + "@typescript-eslint/parser": "^8.44.0", + "eslint": "^9.39.2", + "eslint-config-next": "16.0.1", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.0.1", + "globals": "^16.4.0", + "postcss": "^8.5.6", + "prettier": "^3.7.4", + "prettier-plugin-tailwindcss": "^0.6.14", + "prisma": "^6.16.2", + "sass": "^1.93.2", + "tailwindcss": "^4.1.13", + "tw-animate-css": "^1.3.8", + "typescript": "^5.7.3", + "typescript-eslint": "^8.50.0", + "vitest": "^3.2.4", + "vitest-mock-extended": "^3.1.0" }, "pnpm": { "overrides": { - "axios@>=0.8.1 <1.6.0": ">=1.6.0", - "follow-redirects@<=1.15.5": ">=1.15.6", - "follow-redirects@<1.15.4": ">=1.15.6", - "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz" - } + "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", + "@types/react": "19.2.2", + "@types/react-dom": "19.2.2" + }, + "onlyBuiltDependencies": [ + "@tailwindcss/oxide", + "@vercel/speed-insights", + "@prisma/client", + "@prisma/engines", + "prisma" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 502c34e28..0f7f6ec07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,10 +5,9 @@ settings: excludeLinksFromLockfile: false overrides: - axios@>=0.8.1 <1.6.0: '>=1.6.0' - follow-redirects@<=1.15.5: '>=1.15.6' - follow-redirects@<1.15.4: '>=1.15.6' xlsx: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 importers: @@ -16,320 +15,417 @@ importers: dependencies: '@auth/prisma-adapter': specifier: 1.0.5 - version: 1.0.5(@prisma/client@5.19.1(prisma@5.19.1)) + version: 1.0.5(@prisma/client@6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2)) '@aws-sdk/client-ses': - specifier: ^3.554.0 - version: 3.554.0 + specifier: ^3.890.0 + version: 3.890.0 + '@dnd-kit/core': + specifier: ^6.3.1 + version: 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@dnd-kit/sortable': + specifier: ^10.0.0 + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + '@dnd-kit/utilities': + specifier: ^3.2.2 + version: 3.2.2(react@19.2.3) + '@effect/language-service': + specifier: ^0.40.0 + version: 0.40.0 + '@floating-ui/react': + specifier: ^0.27.16 + version: 0.27.16(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@headlessui/react': - specifier: ^1.7.18 - version: 1.7.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.2.8 + version: 2.2.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@heroicons/react': - specifier: ^2.1.3 - version: 2.1.3(react@18.2.0) + specifier: ^2.2.0 + version: 2.2.0(react@19.2.3) '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.51.3(react@18.2.0)) + specifier: ^5.2.2 + version: 5.2.2(react-hook-form@7.62.0(react@19.2.3)) '@prisma/client': - specifier: ^5.19.1 - version: 5.19.1(prisma@5.19.1) + specifier: ^6.16.2 + version: 6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2) '@radix-ui/react-accordion': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.2.12 + version: 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-alert-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-aspect-ratio': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.7 + version: 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-avatar': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.10 + version: 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-checkbox': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.3.3 + version: 1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-collapsible': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.12 + version: 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-context-menu': - specifier: ^2.1.5 - version: 2.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.2.16 + version: 2.2.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-dropdown-menu': - specifier: ^2.0.6 - version: 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.1.16 + version: 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-hover-card': - specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-icons': - specifier: ^1.3.0 - version: 1.3.0(react@18.2.0) + specifier: ^1.3.2 + version: 1.3.2(react@19.2.3) '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.1.7 + version: 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-menubar': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.16 + version: 1.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-navigation-menu': - specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.2.14 + version: 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-popover': - specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.15 + version: 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-progress': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.7 + version: 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-radio-group': - specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.3.8 + version: 1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-scroll-area': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.2.10 + version: 1.2.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.2.6 + version: 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-separator': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.7 + version: 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-slider': - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.3.6 + version: 1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.78)(react@18.2.0) + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.2.2)(react@19.2.3) '@radix-ui/react-switch': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.2.6 + version: 1.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-tabs': - specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.13 + version: 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-toast': - specifier: ^1.1.5 - version: 1.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.2.15 + version: 1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-toggle': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.10 + version: 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle-group': + specifier: ^1.1.11 + version: 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@radix-ui/react-tooltip': - specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.2.8 + version: 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-email/components': - specifier: ^0.0.15 - version: 0.0.15(@types/react@18.2.78)(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0) + specifier: ^0.5.3 + version: 0.5.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-email/render': - specifier: ^0.0.12 - version: 0.0.12 + specifier: ^1.2.3 + version: 1.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-email/tailwind': - specifier: ^0.0.14 - version: 0.0.14(react@18.2.0) + specifier: ^1.2.2 + version: 1.2.2(react@19.2.3) '@sendgrid/mail': - specifier: ^8.1.3 - version: 8.1.3 + specifier: ^8.1.5 + version: 8.1.5 '@stripe/stripe-js': - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^7.9.0 + version: 7.9.0 '@tailwindcss/forms': - specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.3) + specifier: ^0.5.10 + version: 0.5.10(tailwindcss@4.1.13) + '@tailwindcss/postcss': + specifier: ^4.1.13 + version: 4.1.13 '@tanstack/react-query': - specifier: ^5.52.1 - version: 5.52.1(react@18.2.0) + specifier: ^5.89.0 + version: 5.89.0(react@19.2.3) '@tanstack/react-table': - specifier: ^8.16.0 - version: 8.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^8.21.3 + version: 8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tiptap/extension-highlight': + specifier: ^3.6.6 + version: 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-text-align': + specifier: ^3.6.6 + version: 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/pm': + specifier: ^3.6.6 + version: 3.6.6 + '@tiptap/react': + specifier: ^3.6.6 + version: 3.6.6(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tiptap/starter-kit': + specifier: ^3.6.6 + version: 3.6.6 '@upstash/ratelimit': - specifier: ^1.0.3 - version: 1.0.3 + specifier: ^2.0.6 + version: 2.0.6(@upstash/redis@1.35.3) '@upstash/redis': - specifier: ^1.29.0 - version: 1.31.5 + specifier: ^1.35.3 + version: 1.35.3 '@vercel/analytics': - specifier: ^1.2.2 - version: 1.2.2(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + specifier: ^1.5.0 + version: 1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) '@vercel/blob': - specifier: ^0.22.3 - version: 0.22.3 - '@vercel/edge-config': - specifier: ^1.1.0 - version: 1.1.0(@opentelemetry/api@1.9.0)(typescript@5.4.5) - '@vercel/kv': specifier: ^2.0.0 version: 2.0.0 + '@vercel/edge-config': + specifier: ^1.4.0 + version: 1.4.0 + '@vercel/functions': + specifier: ^3.1.0 + version: 3.1.0(@aws-sdk/credential-provider-web-identity@3.890.0) + '@vercel/kv': + specifier: ^3.0.0 + version: 3.0.0 '@vercel/speed-insights': - specifier: ^1.0.10 - version: 1.0.10(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + specifier: ^1.2.0 + version: 1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) '@vercel/toolbar': - specifier: ^0.1.13 - version: 0.1.13(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + specifier: ^0.1.41 + version: 0.1.41(@vercel/analytics@1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(@vercel/speed-insights@1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5)) + '@xstate/store': + specifier: ^3.9.2 + version: 3.9.2(react@19.2.3) + babel-plugin-react-compiler: + specifier: ^1.0.0 + version: 1.0.0 + botid: + specifier: ^1.5.10 + version: 1.5.10(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 clsx: - specifier: ^2.1.0 - version: 2.1.0 + specifier: ^2.1.1 + version: 2.1.1 cmdk: - specifier: ^0.2.1 - version: 0.2.1(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + color: + specifier: ^5.0.2 + version: 5.0.2 date-fns: - specifier: ^3.6.0 - version: 3.6.0 + specifier: ^4.1.0 + version: 4.1.0 + effect: + specifier: ^3.17.13 + version: 3.17.13 + embla-carousel-react: + specifier: ^8.6.0 + version: 8.6.0(react@19.2.3) framer-motion: - specifier: ^11.0.28 - version: 11.0.28(@emotion/is-prop-valid@0.8.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^12.23.13 + version: 12.23.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + fuse.js: + specifier: ^7.1.0 + version: 7.1.0 geist: - specifier: ^1.3.0 - version: 1.3.0(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) + specifier: ^1.5.1 + version: 1.5.1(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2)) input-otp: - specifier: ^1.2.4 - version: 1.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^1.4.2 + version: 1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) json-edit-react: - specifier: ^1.17.0 - version: 1.17.0(react@18.2.0) + specifier: ^1.28.2 + version: 1.28.2(react@19.2.3) lucide-react: - specifier: ^0.344.0 - version: 0.344.0(react@18.2.0) + specifier: ^0.544.0 + version: 0.544.0(react@19.2.3) + motion: + specifier: ^12.23.26 + version: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) nanoid: - specifier: ^5.0.7 - version: 5.0.7 + specifier: ^5.1.5 + version: 5.1.5 next: - specifier: 14.2.23 - version: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: 16.1.1 + version: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) next-auth: - specifier: 5.0.0-beta.4 - version: 5.0.0-beta.4(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + specifier: 5.0.0-beta.29 + version: 5.0.0-beta.29(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) next-axiom: - specifier: ^1.1.1 - version: 1.1.1(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + specifier: ^1.9.2 + version: 1.9.2(@aws-sdk/credential-provider-web-identity@3.890.0)(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) next-intl: - specifier: ^3.26.3 - version: 3.26.3(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + specifier: ^4.3.9 + version: 4.3.9(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3)(typescript@5.9.2) next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + nextstepjs: + specifier: ^2.1.2 + version: 2.1.2(motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + radix-ui: + specifier: ^1.4.3 + version: 1.4.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: - specifier: ^18.2.0 - version: 18.2.0 + specifier: 19.2.3 + version: 19.2.3 react-day-picker: - specifier: ^8.10.0 - version: 8.10.0(date-fns@3.6.0)(react@18.2.0) + specifier: ^9.12.0 + version: 9.12.0(react@19.2.3) react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) + specifier: 19.2.3 + version: 19.2.3(react@19.2.3) react-easy-crop: - specifier: ^5.0.6 - version: 5.0.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^5.5.1 + version: 5.5.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-hook-form: - specifier: ^7.51.3 - version: 7.51.3(react@18.2.0) + specifier: ^7.62.0 + version: 7.62.0(react@19.2.3) + react-resizable-panels: + specifier: ^3.0.6 + version: 3.0.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-scan: + specifier: ^0.4.3 + version: 0.4.3(@types/react@19.2.2)(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.50.2) recharts: - specifier: ^2.12.5 - version: 2.12.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.15.4 + version: 2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) sonner: - specifier: ^1.4.41 - version: 1.4.41(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: ^2.0.7 + version: 2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) stripe: - specifier: ^14.25.0 - version: 14.25.0 + specifier: ^18.5.0 + version: 18.5.0(@types/node@20.19.16) tailwind-merge: - specifier: ^2.2.2 - version: 2.2.2 + specifier: ^3.3.1 + version: 3.3.1 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.3) + version: 1.0.7(tailwindcss@4.1.13) + use-debounce: + specifier: ^10.0.6 + version: 10.0.6(react@19.2.3) validator: - specifier: ^13.11.0 - version: 13.11.0 + specifier: ^13.15.15 + version: 13.15.15 + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) xlsx: specifier: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz version: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz zod: - specifier: ^3.22.4 - version: 3.22.4 + specifier: ^4.1.8 + version: 4.1.9 devDependencies: '@eslint-react/eslint-plugin': - specifier: ^1.14.3 - version: 1.14.3(eslint@8.57.0)(typescript@5.4.5) + specifier: ^2.3.13 + version: 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint/eslintrc': + specifier: ^3.3.1 + version: 3.3.1 + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.2 + '@next/eslint-plugin-next': + specifier: 16.0.1 + version: 16.0.1 '@tanstack/eslint-plugin-query': - specifier: ^5.52.0 - version: 5.52.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^5.89.0 + version: 5.89.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) '@tanstack/react-query-devtools': - specifier: ^5.52.1 - version: 5.52.1(@tanstack/react-query@5.52.1(react@18.2.0))(react@18.2.0) + specifier: ^5.89.0 + version: 5.89.0(@tanstack/react-query@5.89.0(react@19.2.3))(react@19.2.3) '@total-typescript/ts-reset': - specifier: ^0.5.1 - version: 0.5.1 + specifier: ^0.6.1 + version: 0.6.1 + '@types/color': + specifier: ^4.2.0 + version: 4.2.0 '@types/node': - specifier: ^20.12.7 - version: 20.12.7 + specifier: ^20.19.15 + version: 20.19.16 '@types/react': - specifier: ^18.2.78 - version: 18.2.78 + specifier: 19.2.2 + version: 19.2.2 '@types/react-dom': - specifier: ^18.2.25 - version: 18.2.25 + specifier: 19.2.2 + version: 19.2.2(@types/react@19.2.2) '@types/validator': - specifier: ^13.11.9 - version: 13.11.9 + specifier: ^13.15.3 + version: 13.15.3 '@typescript-eslint/eslint-plugin': - specifier: ^8.6.0 - version: 8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) + specifier: ^8.44.0 + version: 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': - specifier: ^8.6.0 - version: 8.6.0(eslint@8.57.0)(typescript@5.4.5) - autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.38) + specifier: ^8.44.0 + version: 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) eslint: - specifier: ^8.57.0 - version: 8.57.0 + specifier: ^9.39.2 + version: 9.39.2(jiti@2.5.1) eslint-config-next: - specifier: 14.0.1 - version: 14.0.1(eslint@8.57.0)(typescript@5.4.5) + specifier: 16.0.1 + version: 16.0.1(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) + specifier: ^6.10.2 + version: 6.10.2(eslint@9.39.2(jiti@2.5.1)) eslint-plugin-react: - specifier: ^7.34.1 - version: 7.34.1(eslint@8.57.0) + specifier: ^7.37.5 + version: 7.37.5(eslint@9.39.2(jiti@2.5.1)) + eslint-plugin-react-hooks: + specifier: ^7.0.1 + version: 7.0.1(eslint@9.39.2(jiti@2.5.1)) + globals: + specifier: ^16.4.0 + version: 16.4.0 postcss: - specifier: ^8.4.38 - version: 8.4.38 + specifier: ^8.5.6 + version: 8.5.6 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.7.4 + version: 3.7.4 prettier-plugin-tailwindcss: - specifier: ^0.6.1 - version: 0.6.1(prettier@3.3.3) + specifier: ^0.6.14 + version: 0.6.14(prettier@3.7.4) prisma: - specifier: ^5.19.1 - version: 5.19.1 + specifier: ^6.16.2 + version: 6.16.2(typescript@5.9.2) + sass: + specifier: ^1.93.2 + version: 1.93.2 tailwindcss: - specifier: ^3.4.3 - version: 3.4.3 + specifier: ^4.1.13 + version: 4.1.13 + tw-animate-css: + specifier: ^1.3.8 + version: 1.3.8 typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.7.3 + version: 5.9.2 + typescript-eslint: + specifier: ^8.50.0 + version: 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) vitest: - specifier: ^2.0.5 - version: 2.0.5(@types/node@20.12.7)(terser@5.28.1) + specifier: ^3.2.4 + version: 3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) vitest-mock-extended: - specifier: ^1.3.1 - version: 1.3.1(typescript@5.4.5)(vitest@2.0.5(@types/node@20.12.7)(terser@5.28.1)) + specifier: ^3.1.0 + version: 3.1.0(typescript@5.9.2)(vitest@3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5)) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@auth/core@0.18.0': resolution: {integrity: sha512-Xb41H3FIv4PlTZmwoFvntaNlVTwIqFxIg7i0/ieHOOxf/7H8EJpGTWoNrqKhwMyZEPU6fHp+VcUiqdX3vFrWSg==} peerDependencies: @@ -338,11 +434,17 @@ packages: nodemailer: optional: true - '@auth/core@0.18.4': - resolution: {integrity: sha512-GsNhsP1xE/3FoNS3dVkPjqRljLNJ4iyL2OLv3klQGNvw3bMpROFcK4lqhx7+pPHiamnVaYt2vg1xbB+lsNaevg==} + '@auth/core@0.40.0': + resolution: {integrity: sha512-n53uJE0RH5SqZ7N1xZoMKekbHfQgjd0sAEyUbE+IYJnmuQkbvuZnXItCU7d+i7Fj8VGOgqvNO7Mw4YfBTlZeQw==} peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 nodemailer: ^6.8.0 peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true nodemailer: optional: true @@ -351,535 +453,765 @@ packages: peerDependencies: '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5' - '@aws-crypto/ie11-detection@3.0.0': - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} - - '@aws-crypto/sha256-browser@3.0.0': - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - '@aws-crypto/sha256-js@3.0.0': - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} - - '@aws-crypto/supports-web-crypto@3.0.0': - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} - '@aws-crypto/util@3.0.0': - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - '@aws-sdk/client-ses@3.554.0': - resolution: {integrity: sha512-fOUfnvqnMjjYfsNb62ue1YIxMhBSZIqDMeLhOF2H3El3BMeF24BOTloB76pHgu9bLJ0SWmbOBDDnBS0hiqT63w==} - engines: {node: '>=14.0.0'} + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-sso-oidc@3.554.0': - resolution: {integrity: sha512-M86rkiRqbZBF5VyfTQ/vttry9VSoQkZ1oCqYF+SAGlXmD0Of8587yRSj2M4rYe0Uj7nRQIfSnhDYp1UzsZeRfQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.554.0 + '@aws-sdk/client-ses@3.890.0': + resolution: {integrity: sha512-MBdizYIAZ49kwjOst+0v/8cgjPj8BE8YLehWb5uxhVgHZxYrNolvn9QZjT6cAKAEFK74IUgUGTx/YY79sxXosw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.554.0': - resolution: {integrity: sha512-yj6CgIxCT3UwMumEO481KH4QvwArkAPzD7Xvwe1QKgJATc9bKNEo/FxV8LfnWIJ7nOtMDxbNxYLMXH/Fs1qGaQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/client-sso@3.890.0': + resolution: {integrity: sha512-vefYNwh/K5V5YiJpFJfoMPNqsoiRTqD7ZnkvR0cjJdwhOIwFnSKN1vz0OMjySTQmVMcG4JKGVul82ou7ErtOhQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/client-sts@3.554.0': - resolution: {integrity: sha512-EhaA6T0M0DNg5M8TCF1a7XJI5D/ZxAF3dgVIchyF98iNzjYgl/7U8K6hJay2A11aFvVu70g46xYMpz3Meky4wQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/credential-provider-node': ^3.554.0 + '@aws-sdk/core@3.890.0': + resolution: {integrity: sha512-CT+yjhytHdyKvV3Nh/fqBjnZ8+UiQZVz4NMm4LrPATgVSOdfygXHqrWxrPTVgiBtuJWkotg06DF7+pTd5ekLBw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.554.0': - resolution: {integrity: sha512-JrG7ToTLeNf+/S3IiCUPVw9jEDB0DXl5ho8n/HwOa946mv+QyCepCuV2U/8f/1KAX0mD8Ufm/E4/cbCbFHgbSg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-env@3.890.0': + resolution: {integrity: sha512-BtsUa2y0Rs8phmB2ScZ5RuPqZVmxJJXjGfeiXctmLFTxTwoayIK1DdNzOWx6SRMPVc3s2RBGN4vO7T1TwN+ajA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.535.0': - resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-http@3.890.0': + resolution: {integrity: sha512-0sru3LVwsuGYyzbD90EC/d5HnCZ9PL4O9BA2LYT6b9XceC005Oj86uzE47LXb+mDhTAt3T6ZO0+ZcVQe0DDi8w==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.552.0': - resolution: {integrity: sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-ini@3.890.0': + resolution: {integrity: sha512-Mxv7ByftHKH7dE6YXu9gQ6ODXwO1iSO32t8tBrZLS3g8K1knWADIqDFv3yErQtJ8hp27IDxbAbVH/1RQdSkmhA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.554.0': - resolution: {integrity: sha512-BQenhg43S6TMJHxrdjDVdVF+HH5tA1op9ZYLyJrvV5nn7CCO4kyAkkOuSAv1NkL+RZsIkW0/vHTXwQOQw3cUsg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-node@3.890.0': + resolution: {integrity: sha512-zbPz3mUtaBdch0KoH8/LouRDcYSzyT2ecyCOo5OAFVil7AxT1jvsn4vX78FlnSVpZ4mLuHY8pHTVGi235XiyBA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.554.0': - resolution: {integrity: sha512-poX/+2OE3oxqp4f5MiaJh251p8l+bzcFwgcDBwz0e2rcpvMSYl9jw4AvGnCiG2bmf9yhNJdftBiS1A+KjxV0qA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-process@3.890.0': + resolution: {integrity: sha512-dWZ54TI1Q+UerF5YOqGiCzY+x2YfHsSQvkyM3T4QDNTJpb/zjiVv327VbSOULOlI7gHKWY/G3tMz0D9nWI7YbA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.535.0': - resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-sso@3.890.0': + resolution: {integrity: sha512-ajYCZ6f2+98w8zG/IXcQ+NhWYoI5qPUDovw+gMqMWX/jL1cmZ9PFAwj2Vyq9cbjum5RNWwPLArWytTCgJex4AQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.554.0': - resolution: {integrity: sha512-8QPpwBA31i/fZ7lDZJC4FA9EdxLg5SJ8sPB2qLSjp5UTGTYL2HRl0Eznkb7DXyp/wImsR/HFR1NxuFCCVotLCg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-web-identity@3.890.0': + resolution: {integrity: sha512-qZ2Mx7BeYR1s0F/H6wePI0MAmkFswmBgrpgMCOt2S4b2IpQPnUa2JbxY3GwW2WqX3nV0KjPW08ctSLMmlq/tKA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.554.0': - resolution: {integrity: sha512-HN54DzLjepw5ZWSF9ycGevhFTyg6pjLuLKy5Y8t/f1jFDComzYdGEDe0cdV9YO653W3+PQwZZGz09YVygGYBLg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-host-header@3.887.0': + resolution: {integrity: sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.535.0': - resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-logger@3.887.0': + resolution: {integrity: sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.535.0': - resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-recursion-detection@3.887.0': + resolution: {integrity: sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.535.0': - resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-user-agent@3.890.0': + resolution: {integrity: sha512-x4+gLrOFGN7PnfxCaQbs3QEF8bMQE4CVxcOp066UEJqr2Pn4yB12Q3O+YntOtESK5NcTxIh7JlhGss95EHzNng==} + engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.540.0': - resolution: {integrity: sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/nested-clients@3.890.0': + resolution: {integrity: sha512-D5qVNd+qlqdL8duJShzffAqPllGRA4tG7n/GEpL13eNfHChPvGkkUFBMrxSgCAETaTna13G6kq+dMO+SAdbm1A==} + engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.535.0': - resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/region-config-resolver@3.890.0': + resolution: {integrity: sha512-VfdT+tkF9groRYNzKvQCsCGDbOQdeBdzyB1d6hWiq22u13UafMIoskJ1ec0i0H1X29oT6mjTitfnvPq1UiKwzQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.554.0': - resolution: {integrity: sha512-KMMQ5Cw0FUPL9H8g69Lp08xtzRo7r/MK+lBV6LznWBbCP/NwtZ8awVHaPy2P31z00cWtu9MYkUTviWPqJTaBvg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/token-providers@3.890.0': + resolution: {integrity: sha512-+pK/0iQEpPmnztbAw0NNmb+B5pPy8VLu+Ab4SJLgVp41RE9NO13VQtrzUbh61TTAVMrzqWlLQ2qmAl2Fk4VNgw==} + engines: {node: '>=18.0.0'} - '@aws-sdk/types@3.535.0': - resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/types@3.887.0': + resolution: {integrity: sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.540.0': - resolution: {integrity: sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-endpoints@3.890.0': + resolution: {integrity: sha512-nJ8v1x9ZQKzMRK4dS4oefOMIHqb6cguctTcx1RB9iTaFOR5pP7bvq+D4mvNZ6vBxiHg1dQGBUUgl5XJmdR7atQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.535.0': - resolution: {integrity: sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-locate-window@3.873.0': + resolution: {integrity: sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.535.0': - resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} + '@aws-sdk/util-user-agent-browser@3.887.0': + resolution: {integrity: sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==} - '@aws-sdk/util-user-agent-node@3.535.0': - resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-user-agent-node@3.890.0': + resolution: {integrity: sha512-s85NkCxKoAlUvx7UP7OelxLqwTi27Tps9/Q+4N+9rEUjThxEnDsqJSStJ1XiYhddz1xc/vxMvPjYN0qX6EKPtA==} + engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' peerDependenciesMeta: aws-crt: optional: true - '@aws-sdk/util-utf8-browser@3.259.0': - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + '@aws-sdk/xml-builder@3.887.0': + resolution: {integrity: sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.0.1': + resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.24.0': - resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@emotion/is-prop-valid@0.8.8': - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} - '@emotion/memoize@0.7.4': - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - '@esbuild/aix-ppc64@0.19.11': - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} - engines: {node: '>=12'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@clack/core@0.3.5': + resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} + + '@clack/prompts@0.8.2': + resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==} + + '@date-fns/tz@1.4.1': + resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} + + '@dnd-kit/accessibility@3.1.1': + resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.3.1': + resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/sortable@10.0.0': + resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} + peerDependencies: + '@dnd-kit/core': ^6.3.0 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + + '@effect/language-service@0.40.0': + resolution: {integrity: sha512-VHikOhYXm+ECy+mLSszHgCfP9YyKQyB9GLFGBKY2nbnru9xwgCnar8pBLA0AkSUjAgn3hc/mdcFdb/XL9uywLQ==} + hasBin: true + + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + + '@emnapi/runtime@1.7.0': + resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.19.11': - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.19.11': - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.19.11': - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.19.11': - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.19.11': - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.19.11': - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.11': - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.19.11': - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.19.11': - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.19.11': - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.19.11': - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.19.11': - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.19.11': - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.19.11': - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.19.11': - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.19.11': - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.19.11': - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} - engines: {node: '>=12'} + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.19.11': - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.19.11': - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} - engines: {node: '>=12'} + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.19.11': - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.19.11': - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.19.11': - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-react/ast@1.14.3': - resolution: {integrity: sha512-JU0619vNfl0RaqbsyyEfLJWKupJOmf5JmHt4sCAD6Y1LCW80Pi0ZbBXeCUTdCR36mA8IJxm9PoLFliQyDYj6uw==} + '@eslint-react/ast@2.3.13': + resolution: {integrity: sha512-OP2rOhHYLx2nfd9uA9uACKZJN9z9rX9uuAMx4PjT75JNOdYr1GgqWQZcYCepyJ+gmVNCyiXcLXuyhavqxCSM8Q==} + engines: {node: '>=20.19.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@eslint-react/core@2.3.13': + resolution: {integrity: sha512-4bWBE+1kApuxJKIrLJH2FuFtCbM4fXfDs6Ou8MNamGoX6hdynlntssvaMZTd/lk/L8dt01H/3btr7xBX4+4BNA==} + engines: {node: '>=20.19.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@eslint-react/core@1.14.3': - resolution: {integrity: sha512-1T/Zubn9PSwJHNN+4SnXXPb6ZjL1ILl9hN2pkPClh8IyBoCTM+u/BHTfxI3aVF5I8yWLNDaiG7nkaxmxoBEOfQ==} + '@eslint-react/eff@2.3.13': + resolution: {integrity: sha512-byXsssozwh3VaiqcOonAKQgLXgpMVNSxBWFjdfbNhW7+NttorSt950qtiw+P7A9JoRab1OuGYk4MDY5UVBno8Q==} + engines: {node: '>=20.19.0'} - '@eslint-react/eslint-plugin@1.14.3': - resolution: {integrity: sha512-U06zO3F56RAYXI0ZKTEpdwyWllV+muvi2gdC1SLARwk4AOmLAV8ke+iHW5EXBfNkCJQ3SgKRan4tpQqqwfEsMA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + '@eslint-react/eslint-plugin@2.3.13': + resolution: {integrity: sha512-gq0Z0wADAXvJS8Y/Wk3isK7WIEcfrQGGGdWvorAv0T7MxPd3d32TVwdc1Gx3hVLka3fYq1BBlQ5Fr8e1VgNuIg==} + engines: {node: '>=20.19.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' + + '@eslint-react/shared@2.3.13': + resolution: {integrity: sha512-ESE7dVeOXtem3K6BD6k2wJaFt35kPtTT9SWCL99LFk7pym4OEGoMxPcyB2R7PMWiVudwl63BmiOgQOdaFYPONg==} + engines: {node: '>=20.19.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@eslint-react/jsx@1.14.3': - resolution: {integrity: sha512-LJqS63/S8koDJNIqKZ/yLuFvVk4RiK7K3emjUFx+UXHrIdKwFDMpFkksVVbxqeMX70E+toMXgMepABE0pA54ag==} + '@eslint-react/var@2.3.13': + resolution: {integrity: sha512-BozBfUZkzzobD6x/M8XERAnZQ3UvZPsD49zTGFKKU9M/bgsM78HwzxAPLkiu88W55v3sO/Kqf8fQTXT4VEeZ/g==} + engines: {node: '>=20.19.0'} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/shared@1.14.3': - resolution: {integrity: sha512-GP+mjNZBGXq2CuwyVTE2+74K3tBixxNeaG3ho3ovpQ7e8NlTD3TOZk5vZyOJaeRqaOJoJa54PURe12Qt6loCdw==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/tools@1.14.3': - resolution: {integrity: sha512-NtewO4fWxzGtVCjAhD6NG4FwLev5Xq87KWpW92brPF+AvTzkr04abt3/14CpojJlW9L9SMK6FsX9tFVP7ZBqJQ==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/types@1.14.3': - resolution: {integrity: sha512-Hi3rBCX0pAxoQs3MQYX/rt4Fxdz97U0pTjSQsm03dGUBb/BEVgrVK9SEZkCqpfPZ7NXrVhuiYudoJRUylNZyCw==} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint-react/var@1.14.3': - resolution: {integrity: sha512-APJJVSyrDrvJn3t4qXBg1XpWMxmW5AEym56a9/ILzLtgOWFsDj6gJCy4o2g5UB2AZqtfS6YS5IfU5B1G/wYtiw==} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@fastify/busboy@2.1.0': - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@floating-ui/core@1.5.0': - resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/dom@1.5.3': - resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} - '@floating-ui/react-dom@2.0.4': - resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.1.6': - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.16': + resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@formatjs/ecma402-abstract@2.3.1': - resolution: {integrity: sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==} + '@formatjs/ecma402-abstract@2.3.4': + resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} - '@formatjs/fast-memoize@2.2.5': - resolution: {integrity: sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==} + '@formatjs/fast-memoize@2.2.7': + resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} - '@formatjs/icu-messageformat-parser@2.9.7': - resolution: {integrity: sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==} + '@formatjs/icu-messageformat-parser@2.11.2': + resolution: {integrity: sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==} - '@formatjs/icu-skeleton-parser@1.8.11': - resolution: {integrity: sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==} + '@formatjs/icu-skeleton-parser@1.8.14': + resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} - '@formatjs/intl-localematcher@0.5.9': - resolution: {integrity: sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==} + '@formatjs/intl-localematcher@0.5.10': + resolution: {integrity: sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==} - '@headlessui/react@1.7.18': - resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} + '@formatjs/intl-localematcher@0.6.1': + resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + + '@headlessui/react@2.2.8': + resolution: {integrity: sha512-vkiZulDC0lFeTrZTbA4tHvhZHvkUb2PFh5xJ1BvWAZdRK0fayMKO1QEO4inWkXxK1i0I1rcwwu1d6mo0K7Pcbw==} engines: {node: '>=10'} peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc - '@heroicons/react@2.1.3': - resolution: {integrity: sha512-fEcPfo4oN345SoqdlCDdSa4ivjaKbk0jTd+oubcgNxnNgAfzysfwWfQUr+51wigiWHQQRiZNd1Ao0M5Y3M2EGg==} + '@heroicons/react@2.2.0': + resolution: {integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==} peerDependencies: - react: '>= 16' + react: '>= 16 || ^19.0.0-rc' - '@hookform/resolvers@3.3.4': - resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} + '@hookform/resolvers@5.2.2': + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} peerDependencies: - react-hook-form: ^7.0.0 + react-hook-form: ^7.55.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - deprecated: Use @eslint/object-schema instead - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@next/env@14.1.0': - resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} - '@next/env@14.2.23': - resolution: {integrity: sha512-CysUC9IO+2Bh0omJ3qrb47S8DtsTKbFidGm6ow4gXIG6reZybqxbkH2nhdEm1tC8SmgzDdpq3BIML0PWsmyUYA==} - - '@next/eslint-plugin-next@14.0.1': - resolution: {integrity: sha512-bLjJMwXdzvhnQOnxvHoTTUh/+PYk6FF/DCgHi4BXwXCINer+o1ZYfL9aVeezj/oI7wqGJOqwGIXrlBvPbAId3w==} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} - '@next/swc-darwin-arm64@14.1.0': - resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} - engines: {node: '>= 10'} + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@14.2.23': - resolution: {integrity: sha512-WhtEntt6NcbABA8ypEoFd3uzq5iAnrl9AnZt9dXdO+PZLACE32z3a3qA5OoV20JrbJfSJ6Sd6EqGZTrlRnGxQQ==} - engines: {node: '>= 10'} - cpu: [arm64] + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@14.1.0': - resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} - engines: {node: '>= 10'} - cpu: [x64] + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.23': - resolution: {integrity: sha512-vwLw0HN2gVclT/ikO6EcE+LcIN+0mddJ53yG4eZd0rXkuEr/RnOaMH8wg/sYl5iz5AYYRo/l6XX7FIo6kwbw1Q==} - engines: {node: '>= 10'} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.1.0': - resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} - engines: {node: '>= 10'} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@14.2.23': - resolution: {integrity: sha512-uuAYwD3At2fu5CH1wD7FpP87mnjAv4+DNvLaR9kiIi8DLStWSW304kF09p1EQfhcbUI1Py2vZlBO2VaVqMRtpg==} - engines: {node: '>= 10'} - cpu: [arm64] + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] os: [linux] - '@next/swc-linux-arm64-musl@14.1.0': - resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} - engines: {node: '>= 10'} - cpu: [arm64] + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.23': - resolution: {integrity: sha512-Mm5KHd7nGgeJ4EETvVgFuqKOyDh+UMXHXxye6wRRFDr4FdVRI6YTxajoV2aHE8jqC14xeAMVZvLqYqS7isHL+g==} - engines: {node: '>= 10'} - cpu: [arm64] + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] os: [linux] - '@next/swc-linux-x64-gnu@14.1.0': - resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} - engines: {node: '>= 10'} - cpu: [x64] + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] os: [linux] - '@next/swc-linux-x64-gnu@14.2.23': - resolution: {integrity: sha512-Ybfqlyzm4sMSEQO6lDksggAIxnvWSG2cDWnG2jgd+MLbHYn2pvFA8DQ4pT2Vjk3Cwrv+HIg7vXJ8lCiLz79qoQ==} - engines: {node: '>= 10'} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.1.0': - resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} - engines: {node: '>= 10'} - cpu: [x64] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] os: [linux] - '@next/swc-linux-x64-musl@14.2.23': - resolution: {integrity: sha512-OSQX94sxd1gOUz3jhhdocnKsy4/peG8zV1HVaW6DLEbEmRRtUCUQZcKxUD9atLYa3RZA+YJx+WZdOnTkDuNDNA==} - engines: {node: '>= 10'} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.1.0': - resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} - engines: {node: '>= 10'} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] - os: [win32] + os: [linux] - '@next/swc-win32-arm64-msvc@14.2.23': - resolution: {integrity: sha512-ezmbgZy++XpIMTcTNd0L4k7+cNI4ET5vMv/oqNfTuSXkZtSA9BURElPFyarjjGtRgZ9/zuKDHoMdZwDZIY3ehQ==} - engines: {node: '>= 10'} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.1.0': - resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} - engines: {node: '>= 10'} + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.23': - resolution: {integrity: sha512-zfHZOGguFCqAJ7zldTKg4tJHPJyJCOFhpoJcVxKL9BSUHScVDnMdDuOU1zPPGdOzr/GWxbhYTjyiEgLEpAoFPA==} - engines: {node: '>= 10'} - cpu: [ia32] + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@14.1.0': - resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@next/env@15.1.6': + resolution: {integrity: sha512-d9AFQVPEYNr+aqokIiPLNK/MTyt3DWa/dpKveiAaVccUadFbhFEvY6FXYX2LJO2Hv7PHnLBu2oWwB4uBuHjr/w==} + + '@next/env@16.1.1': + resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==} + + '@next/eslint-plugin-next@16.0.1': + resolution: {integrity: sha512-g4Cqmv/gyFEXNeVB2HkqDlYKfy+YrlM2k8AVIO/YQVEPfhVruH1VA99uT1zELLnPLIeOnx8IZ6Ddso0asfTIdw==} + + '@next/swc-darwin-arm64@16.1.1': + resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.1.1': + resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.1.1': + resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@16.1.1': + resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@16.1.1': + resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@16.1.1': + resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==} engines: {node: '>= 10'} cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@16.1.1': + resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==} + engines: {node: '>= 10'} + cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@14.2.23': - resolution: {integrity: sha512-xCtq5BD553SzOgSZ7UH5LH+OATQihydObTrCTvVzOro8QiWYKdBVwcB2Mn2MLMo6DGW9yH1LSPw7jS7HhgJgjw==} + '@next/swc-win32-x64-msvc@16.1.1': + resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -896,1316 +1228,1456 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@one-ini/wasm@0.1.1': - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} + '@panva/hkdf@1.2.1': + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} - '@panva/hkdf@1.1.1': - resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + + '@pivanov/utils@0.0.2': + resolution: {integrity: sha512-q9CN0bFWxWgMY5hVVYyBgez1jGiLBa6I+LkG37ycylPhFvEGOOeaADGtUSu46CaZasPnlY8fCdVJZmrgKb1EPA==} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + '@preact/signals-core@1.12.1': + resolution: {integrity: sha512-BwbTXpj+9QutoZLQvbttRg5x3l5468qaV2kufh+51yha1c53ep5dY4kTuZR35+3pAZxpfQerGJiQqg34ZNZ6uA==} - '@prisma/client@5.19.1': - resolution: {integrity: sha512-x30GFguInsgt+4z5I4WbkZP2CGpotJMUXy+Gl/aaUjHn2o1DnLYNTA+q9XdYmAQZM8fIIkvUiA2NpgosM3fneg==} - engines: {node: '>=16.13'} + '@preact/signals@1.3.2': + resolution: {integrity: sha512-naxcJgUJ6BTOROJ7C3QML7KvwKwCXQJYTc5L/b0eEsdYgPB6SxwoQ1vDGcS0Q7GVjAenVq/tXrybVdFShHYZWg==} + peerDependencies: + preact: 10.x + + '@prisma/client@6.16.2': + resolution: {integrity: sha512-E00PxBcalMfYO/TWnXobBVUai6eW/g5OsifWQsQDzJYm7yaY+IRLo7ZLsaefi0QkTpxfuhFcQ/w180i6kX3iJw==} + engines: {node: '>=18.18'} peerDependencies: prisma: '*' + typescript: '>=5.1.0' peerDependenciesMeta: prisma: optional: true + typescript: + optional: true - '@prisma/debug@5.19.1': - resolution: {integrity: sha512-lAG6A6QnG2AskAukIEucYJZxxcSqKsMK74ZFVfCTOM/7UiyJQi48v6TQ47d6qKG3LbMslqOvnTX25dj/qvclGg==} - - '@prisma/engines-version@5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3': - resolution: {integrity: sha512-xR6rt+z5LnNqTP5BBc+8+ySgf4WNMimOKXRn6xfNRDSpHvbOEmd7+qAOmzCrddEc4Cp8nFC0txU14dstjH7FXA==} + '@prisma/config@6.16.2': + resolution: {integrity: sha512-mKXSUrcqXj0LXWPmJsK2s3p9PN+aoAbyMx7m5E1v1FufofR1ZpPoIArjjzOIm+bJRLLvYftoNYLx1tbHgF9/yg==} - '@prisma/engines@5.19.1': - resolution: {integrity: sha512-kR/PoxZDrfUmbbXqqb8SlBBgCjvGaJYMCOe189PEYzq9rKqitQ2fvT/VJ8PDSe8tTNxhc2KzsCfCAL+Iwm/7Cg==} + '@prisma/debug@6.16.2': + resolution: {integrity: sha512-bo4/gA/HVV6u8YK2uY6glhNsJ7r+k/i5iQ9ny/3q5bt9ijCj7WMPUwfTKPvtEgLP+/r26Z686ly11hhcLiQ8zA==} - '@prisma/fetch-engine@5.19.1': - resolution: {integrity: sha512-pCq74rtlOVJfn4pLmdJj+eI4P7w2dugOnnTXpRilP/6n5b2aZiA4ulJlE0ddCbTPkfHmOL9BfaRgA8o+1rfdHw==} + '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': + resolution: {integrity: sha512-ThvlDaKIVrnrv97ujNFDYiQbeMQpLa0O86HFA2mNoip4mtFqM7U5GSz2ie1i2xByZtvPztJlNRgPsXGeM/kqAA==} - '@prisma/get-platform@5.19.1': - resolution: {integrity: sha512-sCeoJ+7yt0UjnR+AXZL7vXlg5eNxaFOwC23h0KvW1YIXUoa7+W2ZcAUhoEQBmJTW4GrFqCuZ8YSP0mkDa4k3Zg==} + '@prisma/engines@6.16.2': + resolution: {integrity: sha512-7yf3AjfPUgsg/l7JSu1iEhsmZZ/YE00yURPjTikqm2z4btM0bCl2coFtTGfeSOWbQMmq45Jab+53yGUIAT1sjA==} - '@radix-ui/colors@1.0.1': - resolution: {integrity: sha512-xySw8f0ZVsAEP+e7iLl3EvcBXX7gsIlC1Zso/sPBW9gIWerBTgz6axrjU+MZ39wD+WFi5h5zdWpsg3+hwt2Qsg==} + '@prisma/fetch-engine@6.16.2': + resolution: {integrity: sha512-wPnZ8DMRqpgzye758ZvfAMiNJRuYpz+rhgEBZi60ZqDIgOU2694oJxiuu3GKFeYeR/hXxso4/2oBC243t/whxQ==} - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + '@prisma/get-platform@6.16.2': + resolution: {integrity: sha512-U/P36Uke5wS7r1+omtAgJpEB94tlT4SdlgaeTc6HVTTT93pXj7zZ+B/cZnmnvjcNPfWddgoDx8RLjmQwqGDYyA==} - '@radix-ui/primitive@1.0.0': - resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - '@radix-ui/react-accordion@1.1.2': - resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} + '@radix-ui/react-accessible-icon@1.1.7': + resolution: {integrity: sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-alert-dialog@1.0.5': - resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + '@radix-ui/react-alert-dialog@1.1.15': + resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-aspect-ratio@1.0.3': - resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==} + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-avatar@1.0.4': - resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} + '@radix-ui/react-aspect-ratio@1.1.7': + resolution: {integrity: sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-checkbox@1.0.4': - resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} + '@radix-ui/react-avatar@1.1.10': + resolution: {integrity: sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.0.3': - resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} + '@radix-ui/react-checkbox@1.3.3': + resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.0.0': - resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context-menu@2.1.5': - resolution: {integrity: sha512-R5XaDj06Xul1KGb+WP8qiOh7tKJNz2durpLBXAGZjSVtctcRFCuEvy2gtMwRJGePwQQE5nV77gs4FwRi8T+r2g==} + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-context@1.0.0': - resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-dialog@1.0.0': - resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-dialog@1.0.5': - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + '@radix-ui/react-context-menu@2.2.16': + resolution: {integrity: sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.0.0': - resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==} + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-dismissable-layer@1.0.4': - resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-dismissable-layer@1.0.5': - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-dropdown-menu@2.0.6': - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.0.0': - resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-focus-scope@1.0.0': - resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==} + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@radix-ui/react-focus-scope@1.0.3': - resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-focus-scope@1.0.4': - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + '@radix-ui/react-form@0.1.8': + resolution: {integrity: sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-hover-card@1.0.7': - resolution: {integrity: sha512-OcUN2FU0YpmajD/qkph3XzMcK/NmSk9hGWnjV68p6QiZMgILugusgQwnLSDs3oFSJYGKf3Y49zgFedhGh04k9A==} + '@radix-ui/react-hover-card@1.1.15': + resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-icons@1.3.0': - resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} - peerDependencies: - react: ^16.x || ^17.x || ^18.x - - '@radix-ui/react-id@1.0.0': - resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-label@2.0.2': - resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} + '@radix-ui/react-label@2.1.7': + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-menu@2.0.6': - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-menubar@1.0.4': - resolution: {integrity: sha512-bHgUo9gayKZfaQcWSSLr++LyS0rgh+MvD89DE4fJ6TkGHvjHgPaBZf44hdka7ogOxIOdj9163J+5xL2Dn4qzzg==} + '@radix-ui/react-menubar@1.1.16': + resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-navigation-menu@1.1.4': - resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} + '@radix-ui/react-navigation-menu@1.2.14': + resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popover@1.0.6': - resolution: {integrity: sha512-cZ4defGpkZ0qTRtlIBzJLSzL6ht7ofhhW4i1+pkemjV1IKXm0wgCRnee154qlV6r9Ttunmh2TNZhMfV2bavUyA==} + '@radix-ui/react-one-time-password-field@0.1.8': + resolution: {integrity: sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popover@1.0.7': - resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} + '@radix-ui/react-password-toggle-field@0.1.3': + resolution: {integrity: sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popper@1.1.2': - resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-popper@1.1.3': - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-portal@1.0.0': - resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-portal@1.0.3': - resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-portal@1.0.4': - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-presence@1.0.0': - resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-presence@1.0.1': - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-primitive@1.0.0': - resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + '@radix-ui/react-progress@1.1.7': + resolution: {integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-progress@1.0.3': - resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==} + '@radix-ui/react-radio-group@1.3.8': + resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-radio-group@1.1.3': - resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==} + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-scroll-area@1.0.5': - resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} + '@radix-ui/react-select@2.2.6': + resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-select@2.0.0': - resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} + '@radix-ui/react-separator@1.1.7': + resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-separator@1.0.3': - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} + '@radix-ui/react-slider@1.3.6': + resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-slider@1.1.2': - resolution: {integrity: sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==} + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.0': - resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + '@radix-ui/react-switch@1.2.6': + resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true - '@radix-ui/react-switch@1.0.3': - resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-tabs@1.0.4': - resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} + '@radix-ui/react-toast@1.2.15': + resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-toast@1.1.5': - resolution: {integrity: sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==} + '@radix-ui/react-toggle-group@1.1.11': + resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-toggle-group@1.0.4': - resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} + '@radix-ui/react-toggle@1.1.10': + resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-toggle@1.0.3': - resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} + '@radix-ui/react-toolbar@1.1.11': + resolution: {integrity: sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.0.6': - resolution: {integrity: sha512-DmNFOiwEc2UDigsYj6clJENma58OelxD24O4IODoZ+3sQc3Zb+L8w1EP+y9laTuKCLAysPw4fD6/v0j4KNV8rg==} + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.0.7': - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.0.0': - resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.0.0': - resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.0.0': - resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-layout-effect@1.0.0': - resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} + '@radix-ui/react-use-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@react-email/body@0.0.7': - resolution: {integrity: sha512-vjJ5P1MUNWV0KNivaEWA6MGj/I3c764qQJMsKjCHlW6mkFJ4SXbm2OlQFtKAb++Bj8LDqBlnE6oW77bWcMc0NA==} + '@react-aria/focus@3.21.1': + resolution: {integrity: sha512-hmH1IhHlcQ2lSIxmki1biWzMbGgnhdxJUM0MFfzc71Rv6YAzhlx4kX3GYn4VNcjCeb6cdPv4RZ5vunV4kgMZYQ==} peerDependencies: - react: 18.2.0 + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-email/button@0.0.14': - resolution: {integrity: sha512-SMk40moGcAvkHIALX4XercQlK0PNeeEIam6OXHw68ea9WtzzqVwiK4pzLY0iiMI9B4xWHcaS2lCPf3cKbQBf1Q==} + '@react-aria/interactions@3.25.5': + resolution: {integrity: sha512-EweYHOEvMwef/wsiEqV73KurX/OqnmbzKQa2fLxdULbec5+yDj6wVGaRHIzM4NiijIDe+bldEl5DG05CAKOAHA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/ssr@3.9.10': + resolution: {integrity: sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-aria/utils@3.30.1': + resolution: {integrity: sha512-zETcbDd6Vf9GbLndO6RiWJadIZsBU2MMm23rBACXLmpRztkrIqPEb2RVdlLaq1+GklDx0Ii6PfveVjx+8S5U6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-email/body@0.1.0': + resolution: {integrity: sha512-o1bcSAmDYNNHECbkeyceCVPGmVsYvT+O3sSO/Ct7apKUu3JphTi31hu+0Nwqr/pgV5QFqdoT5vdS3SW5DJFHgQ==} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-email/button@0.2.0': + resolution: {integrity: sha512-8i+v6cMxr2emz4ihCrRiYJPp2/sdYsNNsBzXStlcA+/B9Umpm5Jj3WJKYpgTPM+aeyiqlG/MMI1AucnBm4f1oQ==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/code-block@0.0.3': - resolution: {integrity: sha512-nxhl7WjjM2cOYtl0boBZfSObTrUCz2LbarcMyHkTVAsA9rbjbtWAQF7jmlefXJusk3Uol5l2c8hTh2lHLlHTRQ==} + '@react-email/code-block@0.1.0': + resolution: {integrity: sha512-jSpHFsgqnQXxDIssE4gvmdtFncaFQz5D6e22BnVjcCPk/udK+0A9jRwGFEG8JD2si9ZXBmU4WsuqQEczuZn4ww==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/code-inline@0.0.1': - resolution: {integrity: sha512-SeZKTB9Q4+TUafzeUm/8tGK3dFgywUHb1od/BrAiJCo/im65aT+oJfggJLjK2jCdSsus8odcK2kReeM3/FCNTQ==} + '@react-email/code-inline@0.0.5': + resolution: {integrity: sha512-MmAsOzdJpzsnY2cZoPHFPk6uDO/Ncpb4Kh1hAt9UZc1xOW3fIzpe1Pi9y9p6wwUmpaeeDalJxAxH6/fnTquinA==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/column@0.0.9': - resolution: {integrity: sha512-1ekqNBgmbS6m97/sUFOnVvQtLYljUWamw8Y44VId95v6SjiJ4ca+hMcdOteHWBH67xkRofEOWTvqDRea5SBV8w==} + '@react-email/column@0.0.13': + resolution: {integrity: sha512-Lqq17l7ShzJG/d3b1w/+lVO+gp2FM05ZUo/nW0rjxB8xBICXOVv6PqjDnn3FXKssvhO5qAV20lHM6S+spRhEwQ==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/components@0.0.15': - resolution: {integrity: sha512-jXfKiuyi94JBYfPVptEUwF57nRCvhEZIfyl2LqbL53fKsMrGlcjlN921iNnx1z41GAJOqZ8LPogeix3Iid23zw==} + '@react-email/components@0.5.3': + resolution: {integrity: sha512-8G5vsoMehuGOT4cDqaYLdpagtqCYPl4vThXNylClxO6SrN2w9Mh1+i2RNGj/rdqh/woamHORjlXMYCA/kzDMew==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/container@0.0.11': - resolution: {integrity: sha512-jzl/EHs0ClXIRFamfH+NR/cqv4GsJJscqRhdYtnWYuRAsWpKBM1muycrrPqIVhWvWi6sFHInWTt07jX+bDc3SQ==} + '@react-email/container@0.0.15': + resolution: {integrity: sha512-Qo2IQo0ru2kZq47REmHW3iXjAQaKu4tpeq/M8m1zHIVwKduL2vYOBQWbC2oDnMtWPmkBjej6XxgtZByxM6cCFg==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/font@0.0.5': - resolution: {integrity: sha512-if/qKYmH3rJ2egQJoKbV8SfKCPavu+ikUq/naT/UkCr8Q0lkk309tRA0x7fXG/WeIrmcipjMzFRGTm2TxTecDw==} + '@react-email/font@0.0.9': + resolution: {integrity: sha512-4zjq23oT9APXkerqeslPH3OZWuh5X4crHK6nx82mVHV2SrLba8+8dPEnWbaACWTNjOCbcLIzaC9unk7Wq2MIXw==} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/head@0.0.7': - resolution: {integrity: sha512-IcXL4jc0H1qzAXJCD9ajcRFBQdbUHkjKJyiUeogpaYSVZSq6cVDWQuGaI23TA9k+pI2TFeQimogUFb3Kgeeudw==} + '@react-email/head@0.0.12': + resolution: {integrity: sha512-X2Ii6dDFMF+D4niNwMAHbTkeCjlYYnMsd7edXOsi0JByxt9wNyZ9EnhFiBoQdqkE+SMDcu8TlNNttMrf5sJeMA==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/heading@0.0.11': - resolution: {integrity: sha512-EF5ZtRCxhHPw3m+8iibKKg0RAvAeHj1AP68sjU7s6+J+kvRgllr/E972Wi5Y8UvcIGossCvpX1WrSMDzeB4puA==} + '@react-email/heading@0.0.15': + resolution: {integrity: sha512-xF2GqsvBrp/HbRHWEfOgSfRFX+Q8I5KBEIG5+Lv3Vb2R/NYr0s8A5JhHHGf2pWBMJdbP4B2WHgj/VUrhy8dkIg==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/hr@0.0.7': - resolution: {integrity: sha512-8suK0M/deXHt0DBSeKhSC4bnCBCBm37xk6KJh9M0/FIKlvdltQBem52YUiuqVl1XLB87Y6v6tvspn3SZ9fuxEA==} + '@react-email/hr@0.0.11': + resolution: {integrity: sha512-S1gZHVhwOsd1Iad5IFhpfICwNPMGPJidG/Uysy1AwmspyoAP5a4Iw3OWEpINFdgh9MHladbxcLKO2AJO+cA9Lw==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/html@0.0.7': - resolution: {integrity: sha512-oy7OoRtoOKApVI/5Lz1OZptMKmMYJu9Xn6+lOmdBQchAuSdQtWJqxhrSj/iI/mm8HZWo6MZEQ6SFpfOuf8/P6Q==} + '@react-email/html@0.0.11': + resolution: {integrity: sha512-qJhbOQy5VW5qzU74AimjAR9FRFQfrMa7dn4gkEXKMB/S9xZN8e1yC1uA9C15jkXI/PzmJ0muDIWmFwatm5/+VA==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/img@0.0.7': - resolution: {integrity: sha512-up9tM2/dJ24u/CFjcvioKbyGuPw1yeJg605QA7VkrygEhd0CoQEjjgumfugpJ+VJgIt4ZjT9xMVCK5QWTIWoaA==} + '@react-email/img@0.0.11': + resolution: {integrity: sha512-aGc8Y6U5C3igoMaqAJKsCpkbm1XjguQ09Acd+YcTKwjnC2+0w3yGUJkjWB2vTx4tN8dCqQCXO8FmdJpMfOA9EQ==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/link@0.0.7': - resolution: {integrity: sha512-hXPChT3ZMyKnUSA60BLEMD2maEgyB2A37yg5bASbLMrXmsExHi6/IS1h2XiUPLDK4KqH5KFaFxi2cdNo1JOKwA==} + '@react-email/link@0.0.12': + resolution: {integrity: sha512-vF+xxQk2fGS1CN7UPQDbzvcBGfffr+GjTPNiWM38fhBfsLv6A/YUfaqxWlmL7zLzVmo0K2cvvV9wxlSyNba1aQ==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/markdown@0.0.8': - resolution: {integrity: sha512-x/2iTWskE0XoM13Rx80ckwbWaWdS6koYvxW6PHkOJ/k88NPnDIm+TaYvvg2DYSFJAUI0gK/LmIwenbebgNDS+w==} + '@react-email/markdown@0.0.15': + resolution: {integrity: sha512-UQA9pVm5sbflgtg3EX3FquUP4aMBzmLReLbGJ6DZQZnAskBF36aI56cRykDq1o+1jT+CKIK1CducPYziaXliag==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/preview@0.0.8': - resolution: {integrity: sha512-Jm0KUYBZQd2w0s2QRMQy0zfHdo3Ns+9bYSE1OybjknlvhANirjuZw9E5KfWgdzO7PyrRtB1OBOQD8//Obc4uIQ==} + '@react-email/preview@0.0.13': + resolution: {integrity: sha512-F7j9FJ0JN/A4d7yr+aw28p4uX7VLWs7hTHtLo7WRyw4G+Lit6Zucq4UWKRxJC8lpsUdzVmG7aBJnKOT+urqs/w==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/render@0.0.12': - resolution: {integrity: sha512-S8WRv/PqECEi6x0QJBj0asnAb5GFtJaHlnByxLETLkgJjc76cxMYDH4r9wdbuJ4sjkcbpwP3LPnVzwS+aIjT7g==} + '@react-email/render@1.2.3': + resolution: {integrity: sha512-qu3XYNkHGao3teJexVD5CrcgFkNLrzbZvpZN17a7EyQYUN3kHkTkE9saqY4VbvGx6QoNU3p8rsk/Xm++D/+pTw==} engines: {node: '>=18.0.0'} + peerDependencies: + react: ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/row@0.0.7': - resolution: {integrity: sha512-h7pwrLVGk5CIx7Ai/oPxBgCCAGY7BEpCUQ7FCzi4+eThcs5IdjSwDPefLEkwaFS8KZc56UNwTAH92kNq5B7blg==} + '@react-email/row@0.0.12': + resolution: {integrity: sha512-HkCdnEjvK3o+n0y0tZKXYhIXUNPDx+2vq1dJTmqappVHXS5tXS6W5JOPZr5j+eoZ8gY3PShI2LWj5rWF7ZEtIQ==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/section@0.0.11': - resolution: {integrity: sha512-3bZ/DuvX1julATI7oqYza6pOtWZgLJDBaa62LFFEvYjisyN+k6lrP2KOucPsDKu2DOkUzlQgK0FOm6VQJX+C0w==} + '@react-email/section@0.0.16': + resolution: {integrity: sha512-FjqF9xQ8FoeUZYKSdt8sMIKvoT9XF8BrzhT3xiFKdEMwYNbsDflcjfErJe3jb7Wj/es/lKTbV5QR1dnLzGpL3w==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/tailwind@0.0.14': - resolution: {integrity: sha512-SRRcm08zxrAR5XozaW0X+GAJlTJITakZe0UXBiFZDlSDBLwFMxjaGuQwccqNF0LxDnxmduxYB71mzEAqecgTZg==} + '@react-email/tailwind@1.2.2': + resolution: {integrity: sha512-heO9Khaqxm6Ulm6p7HQ9h01oiiLRrZuuEQuYds/O7Iyp3c58sMVHZGIxiRXO/kSs857NZQycpjewEVKF3jhNTw==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/text@0.0.7': - resolution: {integrity: sha512-eHCx0mdllGcgK9X7wiLKjNZCBRfxRVNjD3NNYRmOc3Icbl8M9JHriJIfxBuGCmGg2UAORK5P3KmaLQ8b99/pbA==} + '@react-email/text@0.1.5': + resolution: {integrity: sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg==} engines: {node: '>=18.0.0'} peerDependencies: - react: 18.2.0 + react: ^18.0 || ^19.0 || ^19.0.0-rc + + '@react-stately/flags@3.1.2': + resolution: {integrity: sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==} + + '@react-stately/utils@3.10.8': + resolution: {integrity: sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@react-types/shared@3.32.0': + resolution: {integrity: sha512-t+cligIJsZYFMSPFMvsJMjzlzde06tZMOIOFa1OV5Z0BcMowrb2g4mB57j/9nP28iJIRYn10xCniQts+qadrqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + + '@remirror/core-constants@3.0.0': + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@rollup/rollup-android-arm-eabi@4.9.6': - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + '@rollup/rollup-android-arm-eabi@4.50.2': + resolution: {integrity: sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.9.6': - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + '@rollup/rollup-android-arm64@4.50.2': + resolution: {integrity: sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.9.6': - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + '@rollup/rollup-darwin-arm64@4.50.2': + resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.9.6': - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + '@rollup/rollup-darwin-x64@4.50.2': + resolution: {integrity: sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.9.6': - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + '@rollup/rollup-freebsd-arm64@4.50.2': + resolution: {integrity: sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.50.2': + resolution: {integrity: sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.50.2': + resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.50.2': + resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.9.6': - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + '@rollup/rollup-linux-arm64-gnu@4.50.2': + resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.9.6': - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + '@rollup/rollup-linux-arm64-musl@4.50.2': + resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.9.6': - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + '@rollup/rollup-linux-loong64-gnu@4.50.2': + resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.50.2': + resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.50.2': + resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.50.2': + resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.9.6': - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} + '@rollup/rollup-linux-s390x-gnu@4.50.2': + resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.50.2': + resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.9.6': - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + '@rollup/rollup-linux-x64-musl@4.50.2': + resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.9.6': - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} + '@rollup/rollup-openharmony-arm64@4.50.2': + resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.50.2': + resolution: {integrity: sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.9.6': - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} + '@rollup/rollup-win32-ia32-msvc@4.50.2': + resolution: {integrity: sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.9.6': - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} + '@rollup/rollup-win32-x64-msvc@4.50.2': + resolution: {integrity: sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==} cpu: [x64] os: [win32] - '@rushstack/eslint-patch@1.5.1': - resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@schummar/icu-type-parser@1.21.5': + resolution: {integrity: sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==} '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@sendgrid/client@8.1.3': - resolution: {integrity: sha512-mRwTticRZIdUTsnyzvlK6dMu3jni9ci9J+dW/6fMMFpGRAJdCJlivFVYQvqk8kRS3RnFzS7sf6BSmhLl1ldDhA==} + '@sendgrid/client@8.1.5': + resolution: {integrity: sha512-Jqt8aAuGIpWGa15ZorTWI46q9gbaIdQFA21HIPQQl60rCjzAko75l3D1z7EyjFrNr4MfQ0StusivWh8Rjh10Cg==} engines: {node: '>=12.*'} '@sendgrid/helpers@8.0.0': resolution: {integrity: sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==} engines: {node: '>= 12.0.0'} - '@sendgrid/mail@8.1.3': - resolution: {integrity: sha512-Wg5iKSUOER83/cfY6rbPa+o3ChnYzWwv1OcsR8gCV8SKi+sUPIMroildimlnb72DBkQxcbylxng1W7f0RIX7MQ==} + '@sendgrid/mail@8.1.5': + resolution: {integrity: sha512-W+YuMnkVs4+HA/bgfto4VHKcPKLc7NiZ50/NH2pzO6UHCCFuq8/GNB98YJlLEr/ESDyzAaDr7lVE7hoBwFTT3Q==} engines: {node: '>=12.*'} - '@smithy/abort-controller@2.2.0': - resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} - engines: {node: '>=14.0.0'} + '@smithy/abort-controller@4.1.1': + resolution: {integrity: sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==} + engines: {node: '>=18.0.0'} - '@smithy/config-resolver@2.2.0': - resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} - engines: {node: '>=14.0.0'} + '@smithy/config-resolver@4.2.2': + resolution: {integrity: sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ==} + engines: {node: '>=18.0.0'} - '@smithy/core@1.4.2': - resolution: {integrity: sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==} - engines: {node: '>=14.0.0'} + '@smithy/core@3.11.0': + resolution: {integrity: sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA==} + engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@2.3.0': - resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} - engines: {node: '>=14.0.0'} + '@smithy/credential-provider-imds@4.1.2': + resolution: {integrity: sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg==} + engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@2.5.0': - resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + '@smithy/fetch-http-handler@5.2.1': + resolution: {integrity: sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==} + engines: {node: '>=18.0.0'} - '@smithy/hash-node@2.2.0': - resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} - engines: {node: '>=14.0.0'} + '@smithy/hash-node@4.1.1': + resolution: {integrity: sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==} + engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@2.2.0': - resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} + '@smithy/invalid-dependency@4.1.1': + resolution: {integrity: sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==} + engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/middleware-content-length@2.2.0': - resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} - engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@4.1.0': + resolution: {integrity: sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@2.5.1': - resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-content-length@4.1.1': + resolution: {integrity: sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@2.3.1': - resolution: {integrity: sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-endpoint@4.2.2': + resolution: {integrity: sha512-M51KcwD+UeSOFtpALGf5OijWt915aQT5eJhqnMKJt7ZTfDfNcvg2UZgIgTZUoiORawb6o5lk4n3rv7vnzQXgsA==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@2.3.0': - resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-retry@4.2.2': + resolution: {integrity: sha512-KZJueEOO+PWqflv2oGx9jICpHdBYXwCI19j7e2V3IMwKgFcXc9D9q/dsTf4B+uCnYxjNoS1jpyv6pGNGRsKOXA==} + engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@2.2.0': - resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-serde@4.1.1': + resolution: {integrity: sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==} + engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@2.3.0': - resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} - engines: {node: '>=14.0.0'} + '@smithy/middleware-stack@4.1.1': + resolution: {integrity: sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==} + engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@2.5.0': - resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} - engines: {node: '>=14.0.0'} + '@smithy/node-config-provider@4.2.2': + resolution: {integrity: sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A==} + engines: {node: '>=18.0.0'} - '@smithy/property-provider@2.2.0': - resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} - engines: {node: '>=14.0.0'} + '@smithy/node-http-handler@4.2.1': + resolution: {integrity: sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==} + engines: {node: '>=18.0.0'} - '@smithy/protocol-http@3.3.0': - resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} - engines: {node: '>=14.0.0'} + '@smithy/property-provider@4.1.1': + resolution: {integrity: sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==} + engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@2.2.0': - resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} - engines: {node: '>=14.0.0'} + '@smithy/protocol-http@5.2.1': + resolution: {integrity: sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==} + engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@2.2.0': - resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} - engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@4.1.1': + resolution: {integrity: sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==} + engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@2.1.5': - resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} - engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@4.1.1': + resolution: {integrity: sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==} + engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@2.4.0': - resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} - engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@4.1.1': + resolution: {integrity: sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw==} + engines: {node: '>=18.0.0'} - '@smithy/signature-v4@2.3.0': - resolution: {integrity: sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==} - engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@4.2.0': + resolution: {integrity: sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw==} + engines: {node: '>=18.0.0'} - '@smithy/smithy-client@2.5.1': - resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} - engines: {node: '>=14.0.0'} + '@smithy/signature-v4@5.2.1': + resolution: {integrity: sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==} + engines: {node: '>=18.0.0'} - '@smithy/types@2.12.0': - resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} - engines: {node: '>=14.0.0'} + '@smithy/smithy-client@4.6.2': + resolution: {integrity: sha512-u82cjh/x7MlMat76Z38TRmEcG6JtrrxN4N2CSNG5o2v2S3hfLAxRgSgFqf0FKM3dglH41Evknt/HOX+7nfzZ3g==} + engines: {node: '>=18.0.0'} - '@smithy/url-parser@2.2.0': - resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + '@smithy/types@4.5.0': + resolution: {integrity: sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==} + engines: {node: '>=18.0.0'} - '@smithy/util-base64@2.3.0': - resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} - engines: {node: '>=14.0.0'} + '@smithy/url-parser@4.1.1': + resolution: {integrity: sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==} + engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@2.2.0': - resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} + '@smithy/util-base64@4.1.0': + resolution: {integrity: sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==} + engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@2.3.0': - resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} - engines: {node: '>=14.0.0'} + '@smithy/util-body-length-browser@4.1.0': + resolution: {integrity: sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.1.0': + resolution: {integrity: sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==} + engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-config-provider@2.3.0': - resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} - engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@4.1.0': + resolution: {integrity: sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==} + engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@2.2.1': - resolution: {integrity: sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==} - engines: {node: '>= 10.0.0'} + '@smithy/util-config-provider@4.1.0': + resolution: {integrity: sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==} + engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@2.3.1': - resolution: {integrity: sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==} - engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@4.1.2': + resolution: {integrity: sha512-QKrOw01DvNHKgY+3p4r9Ut4u6EHLVZ01u6SkOMe6V6v5C+nRPXJeWh72qCT1HgwU3O7sxAIu23nNh+FOpYVZKA==} + engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@1.2.0': - resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} - engines: {node: '>= 14.0.0'} + '@smithy/util-defaults-mode-node@4.1.2': + resolution: {integrity: sha512-l2yRmSfx5haYHswPxMmCR6jGwgPs5LjHLuBwlj9U7nNBMS43YV/eevj+Xq1869UYdiynnMrCKtoOYQcwtb6lKg==} + engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@2.2.0': - resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} - engines: {node: '>=14.0.0'} + '@smithy/util-endpoints@3.1.2': + resolution: {integrity: sha512-+AJsaaEGb5ySvf1SKMRrPZdYHRYSzMkCoK16jWnIMpREAnflVspMIDeCVSZJuj+5muZfgGpNpijE3mUNtjv01Q==} + engines: {node: '>=18.0.0'} - '@smithy/util-middleware@2.2.0': - resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} - engines: {node: '>=14.0.0'} + '@smithy/util-hex-encoding@4.1.0': + resolution: {integrity: sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==} + engines: {node: '>=18.0.0'} - '@smithy/util-retry@2.2.0': - resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} - engines: {node: '>= 14.0.0'} + '@smithy/util-middleware@4.1.1': + resolution: {integrity: sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==} + engines: {node: '>=18.0.0'} - '@smithy/util-stream@2.2.0': - resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} - engines: {node: '>=14.0.0'} + '@smithy/util-retry@4.1.1': + resolution: {integrity: sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q==} + engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@2.2.0': - resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} - engines: {node: '>=14.0.0'} + '@smithy/util-stream@4.3.1': + resolution: {integrity: sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.1.0': + resolution: {integrity: sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==} + engines: {node: '>=18.0.0'} '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-waiter@2.2.0': - resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} - engines: {node: '>=14.0.0'} + '@smithy/util-utf8@4.1.0': + resolution: {integrity: sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.1.1': + resolution: {integrity: sha512-PJBmyayrlfxM7nbqjomF4YcT1sApQwZio0NHSsT0EzhJqljRmvhzqZua43TyEs80nJk2Cn2FGPg/N8phH6KeCQ==} + engines: {node: '>=18.0.0'} + + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@socket.io/component-emitter@3.1.0': - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} - '@stripe/stripe-js@3.3.0': - resolution: {integrity: sha512-dUgAsko9KoYC1U2TIawHzbkQJzPoApxCc1Qf6/j318d1ArViyh6ROHVYTxnU3RlOQL/utUD9I4/QoyiCowsgrw==} + '@stripe/stripe-js@7.9.0': + resolution: {integrity: sha512-ggs5k+/0FUJcIgNY08aZTqpBTtbExkJMYMLSMwyucrhtWexVOEY1KJmhBsxf+E/Q15f5rbwBpj+t0t2AW2oCsQ==} engines: {node: '>=12.16'} - '@swc/core-darwin-arm64@1.3.101': - resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==} - engines: {node: '>=10'} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tailwindcss/forms@0.5.10': + resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' + + '@tailwindcss/node@4.1.13': + resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} + + '@tailwindcss/oxide-android-arm64@4.1.13': + resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.13': + resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.3.101': - resolution: {integrity: sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==} - engines: {node: '>=10'} + '@tailwindcss/oxide-darwin-x64@4.1.13': + resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==} + engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.3.101': - resolution: {integrity: sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==} - engines: {node: '>=10'} + '@tailwindcss/oxide-freebsd-x64@4.1.13': + resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': + resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==} + engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.3.101': - resolution: {integrity: sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==} - engines: {node: '>=10'} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': + resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.3.101': - resolution: {integrity: sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==} - engines: {node: '>=10'} + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': + resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} + engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.3.101': - resolution: {integrity: sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==} - engines: {node: '>=10'} + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': + resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.3.101': - resolution: {integrity: sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==} - engines: {node: '>=10'} + '@tailwindcss/oxide-linux-x64-musl@4.1.13': + resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.3.101': - resolution: {integrity: sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==} - engines: {node: '>=10'} + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==} + engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.3.101': - resolution: {integrity: sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.3.101': - resolution: {integrity: sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==} - engines: {node: '>=10'} + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@swc/core@1.3.101': - resolution: {integrity: sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.2': - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - - '@swc/types@0.1.5': - resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} + '@tailwindcss/oxide@4.1.13': + resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==} + engines: {node: '>= 10'} - '@tailwindcss/forms@0.5.7': - resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} - peerDependencies: - tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + '@tailwindcss/postcss@4.1.13': + resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==} - '@tanstack/eslint-plugin-query@5.52.0': - resolution: {integrity: sha512-i02fOM3TRURI46AswPNlKb4Gwu+/mAPssI+pVu0AifA7/qzOJRgco17vdqjq/VgChKLLIltd9/KI4MCJFFfWEw==} + '@tanstack/eslint-plugin-query@5.89.0': + resolution: {integrity: sha512-vz8TEuw9GO0xXIdreMpcofvOY17T3cjgob9bSFln8yQsKsbsUvtpvV3F8pVC3tZEDq0IwO++3/e0/+7YKEarNA==} peerDependencies: - eslint: ^8 || ^9 + eslint: ^8.57.0 || ^9.0.0 - '@tanstack/query-core@5.52.0': - resolution: {integrity: sha512-U1DOEgltjUwalN6uWYTewSnA14b+tE7lSylOiASKCAO61ENJeCq9VVD/TXHA6O5u9+6v5+UgGYBSccTKDoyMqw==} + '@tanstack/query-core@5.89.0': + resolution: {integrity: sha512-joFV1MuPhSLsKfTzwjmPDrp8ENfZ9N23ymFu07nLfn3JCkSHy0CFgsyhHTJOmWaumC/WiNIKM0EJyduCF/Ih/Q==} - '@tanstack/query-devtools@5.51.16': - resolution: {integrity: sha512-ajwuq4WnkNCMj/Hy3KR8d3RtZ6PSKc1dD2vs2T408MdjgKzQ3klVoL6zDgVO7X+5jlb5zfgcO3thh4ojPhfIaw==} + '@tanstack/query-devtools@5.87.3': + resolution: {integrity: sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==} - '@tanstack/react-query-devtools@5.52.1': - resolution: {integrity: sha512-6KwSm9vcIIK26osQJtT52Gyccz/DyHPT216B7kt4ihg22G2rtGZ7sCXYQO25XEHyVwVingwHdZ7auj+ydgg4Zg==} + '@tanstack/react-query-devtools@5.89.0': + resolution: {integrity: sha512-Syc4UjZeIJCkXCRGyQcWwlnv89JNb98MMg/DAkFCV3rwOcknj98+nG3Nm6xLXM6ne9sK6RZeDJMPLKZUh6NUGA==} peerDependencies: - '@tanstack/react-query': ^5.52.1 + '@tanstack/react-query': ^5.89.0 react: ^18 || ^19 - '@tanstack/react-query@5.52.1': - resolution: {integrity: sha512-soyn4dNIUZ8US8NaPVXv06gkZFHaZnPfKWPDjRJjFRW3Y7WZ0jx72eT6zhw3VQlkMPysmXye8l35ewPHspKgbQ==} + '@tanstack/react-query@5.89.0': + resolution: {integrity: sha512-SXbtWSTSRXyBOe80mszPxpEbaN4XPRUp/i0EfQK1uyj3KCk/c8FuPJNIRwzOVe/OU3rzxrYtiNabsAmk1l714A==} peerDependencies: react: ^18 || ^19 - '@tanstack/react-table@8.16.0': - resolution: {integrity: sha512-rKRjnt8ostqN2fercRVOIH/dq7MAmOENCMvVlKx6P9Iokhh6woBGnIZEkqsY/vEJf1jN3TqLOb34xQGLVRuhAg==} + '@tanstack/react-table@8.21.3': + resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} engines: {node: '>=12'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/react-virtual@3.1.3': - resolution: {integrity: sha512-YCzcbF/Ws/uZ0q3Z6fagH+JVhx4JLvbSflgldMgLsuvB8aXjZLLb3HvrEVxY480F9wFlBiXlvQxOyXb5ENPrNA==} + '@tanstack/react-virtual@3.13.12': + resolution: {integrity: sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + 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 - '@tanstack/table-core@8.16.0': - resolution: {integrity: sha512-dCG8vQGk4js5v88/k83tTedWOwjGnIyONrKpHpfmSJB8jwFHl8GSu1sBBxbtACVAPtAQgwNxl0rw1d3RqRM1Tg==} + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} engines: {node: '>=12'} - '@tanstack/virtual-core@3.1.3': - resolution: {integrity: sha512-Y5B4EYyv1j9V8LzeAoOVeTg0LI7Fo5InYKgAjkY1Pu9GjtUwX/EKxNcU7ng3sKr99WEf+bPTcktAeybyMOYo+g==} + '@tanstack/virtual-core@3.13.12': + resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} '@tinyhttp/accepts@1.3.0': resolution: {integrity: sha512-YaJ4EMgVUI6JHzWO14lr6vn/BLJEoFN4Sqd20l0/oBcLLENkP8gnPtX1jB7OhIu0AE40VCweAqvSP+0/pgzB1g==} @@ -2267,17 +2739,185 @@ packages: resolution: {integrity: sha512-GgdKez5AaQRIm0kFNp7BZnxFQ2F7LZ7g3rOQ/v11oYZR3jhH7JPGM+7hZQjYqFXD/5TK/of7hepu418K2fghvg==} engines: {node: '>=12.4.0'} - '@total-typescript/ts-reset@0.5.1': - resolution: {integrity: sha512-AqlrT8YA1o7Ff5wPfMOL0pvL+1X+sw60NN6CcOCqs658emD6RfiXhF7Gu9QcfKBH7ELY2nInLhKSCWVoNL70MQ==} + '@tiptap/core@3.6.6': + resolution: {integrity: sha512-7Mx3Vc2qS9IpT6s/Xarxot1PKvbNIq6Avp3vU/BubyrH6gaGApd4UOvTMwGfS4itpradzd/DfwkmB4/r6wAjNQ==} + peerDependencies: + '@tiptap/pm': ^3.6.6 + + '@tiptap/extension-blockquote@3.6.6': + resolution: {integrity: sha512-+llmJhPuztYbYzc5TQvn37LXNrTmqyzLoUhF1oc8WTopeqOfSQgjXwX2WgS4D7Irf1VsE0DlO6g8vnLuEpxK0A==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-bold@3.6.6': + resolution: {integrity: sha512-ABUBUYvVJxND5SjlpX7aDECuZlqCRQ0A4s2r+z/+iXUZRKVIP3cH2YleMIsX48fZdktdqGFv1fin0ElVYMHL+Q==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-bubble-menu@3.6.6': + resolution: {integrity: sha512-O+V+9T4encURWEccn17koU4rPBHA9QuyWErvx+XnVnC+cabhAcEVJEeCD5SjU4KarLBmnmw+bhDARe+AuR8WSw==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 - '@types/cookie@0.4.1': - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + '@tiptap/extension-bullet-list@3.6.6': + resolution: {integrity: sha512-+kYRewKnw8CBxLg8a33TjoHYqd8cSWpcYGvlfYanwR/3jsGAJNrb6XpZv+URsQWjHznYKbYh8i+UdvvR45cTwQ==} + peerDependencies: + '@tiptap/extension-list': ^3.6.6 - '@types/cors@2.8.17': - resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + '@tiptap/extension-code-block@3.6.6': + resolution: {integrity: sha512-brZGE4n+ZzBv0ozMWeX8Og03QDs8Fn9nmz6IeSYfd3mGIfda7M1+irPVjV4E5Jq4S53jVLePhptukpsc8XT55w==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + + '@tiptap/extension-code@3.6.6': + resolution: {integrity: sha512-ihnhlxO3sz/E1nep57JsRRgfZW4mlp0ghHNrV8PEKw99Q7S2MSXRV3o8zkw/ZHgvTbzPrT6854GwvOLGSiHOyQ==} + peerDependencies: + '@tiptap/core': ^3.6.6 - '@types/d3-array@3.2.1': - resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + '@tiptap/extension-document@3.6.6': + resolution: {integrity: sha512-MnPvlEsoNKYwvuNOFC4mKbsie1G5LFz9DeOte/waON1zZ3vwChWuP6p0sGVoS3/s1TIlUtH8/XpxP9tZH7VFrA==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-dropcursor@3.6.6': + resolution: {integrity: sha512-cSWsPA6yC1Gky49OMfvFQ/e7Rg5MBG4qdaENUvtjrVy9/FuihttedUSsiGI6TJJveCWdrrfCah7sL5pkY2TNoA==} + peerDependencies: + '@tiptap/extensions': ^3.6.6 + + '@tiptap/extension-floating-menu@3.6.6': + resolution: {integrity: sha512-2ZKhBIgCs88Mju/9Kv4ngY5D1luwX7Fb8yemc6kXp9pYNFfJnXYeVP/110dRHJUbRrKtGXmnz8I5cgL/nqGEVQ==} + peerDependencies: + '@floating-ui/dom': ^1.0.0 + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + + '@tiptap/extension-gapcursor@3.6.6': + resolution: {integrity: sha512-aaYvK4/a5lg1k1fwIqzRz1TqokVZATRMzs0pvAcAXIqrM0Dsou1IzVGocIukmzPoesCysGwI5021FSH+ilo54A==} + peerDependencies: + '@tiptap/extensions': ^3.6.6 + + '@tiptap/extension-hard-break@3.6.6': + resolution: {integrity: sha512-U6huFh4xQ9ml4YdJETl2lANyybJYucXgF9UFrPkAOrZF9jcwLJ5Ndejc9YJoH1WjuIB/y44//CPonXvxfP94aQ==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-heading@3.6.6': + resolution: {integrity: sha512-aIQLodCEI1+c4vmEhZrrvTTPGSaURfKdwzK+HnweN8p20XPly3EWSnC5ocqv0msiYYjnhLKIATU1pmjiLssrWg==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-highlight@3.6.6': + resolution: {integrity: sha512-XHa4k8TTNAXtnZtjWeAIdFe+z4IXIEcPMvrm4GNU/KpjRx2giwCKAINl5MsXLr9WD54TQrjItEeAhtZO0aacJw==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-horizontal-rule@3.6.6': + resolution: {integrity: sha512-SprNpSoz2or/Ju3qXHrD3NbqL3xCHxdPk9uJsrbIDvB+1ZANKN3gxB40lyxf9mIYMcNavYVE6fzjGyODk0iAEg==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + + '@tiptap/extension-italic@3.6.6': + resolution: {integrity: sha512-yhKIVRcfEAmoB3ri4RDAOvtVklIN4Bwc8GqN2n4ISYiaxvjyiKvCUcgyqpzKBx5EbIEYJxgYgcUS6zykD86hpQ==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-link@3.6.6': + resolution: {integrity: sha512-Uq41J6WpbZkyZinbikVxLNqu2WfwUJcErTmNkPdel1gvYoQajkXZkHz2NzQ2jS9DicHHPV1cJel5f/YvX7nm5w==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + + '@tiptap/extension-list-item@3.6.6': + resolution: {integrity: sha512-grmtF74nkxtwzzmPfoi3uiowxs1FAYsJskSBucxkStQbLqlfHVrpyj/BEclSRjk/m7iQ3AFgt+jjiH8nLb1HTw==} + peerDependencies: + '@tiptap/extension-list': ^3.6.6 + + '@tiptap/extension-list-keymap@3.6.6': + resolution: {integrity: sha512-x9fXEDRVko1gGQqZRjbHEGFMVD5xLWcLJwkVB5doVEX4XIZ/H6cig9VUzjP0nLJVP8aDTep83dXqecSLqWSLYA==} + peerDependencies: + '@tiptap/extension-list': ^3.6.6 + + '@tiptap/extension-list@3.6.6': + resolution: {integrity: sha512-JOPOAl78gDycPD/fAby92M1I/59cgNQzsXXrY8lqFSl4d52RmqzYHx8VrBee1X441xnerZBpHkfsxFYwJCLaWg==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + + '@tiptap/extension-ordered-list@3.6.6': + resolution: {integrity: sha512-QDhRadLlv91g/rbtaELV9QGbtwSrwQBbkNrcN6G6t4WsHdWUcFgkRiiyWPGJb8TEJ/LOHuBPyxzahIT6Zt5LAA==} + peerDependencies: + '@tiptap/extension-list': ^3.6.6 + + '@tiptap/extension-paragraph@3.6.6': + resolution: {integrity: sha512-xfqK19PwD8YNIylRduYF3VCjSFrvhiUGBogj6Vf5OaogkUWSkpHxR0yd1Ftb1jOMYo9z1hp2Zg+6cNkXwx/e2g==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-strike@3.6.6': + resolution: {integrity: sha512-sVRdOH7wRNz9Kz0KH1+/4Uaj0Z2gPNbGVq6FKy9tgh/MXwAhUzbUdnv37wBuSy0xLeBkO54+/tQrjUEtOXqpbg==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-text-align@3.6.6': + resolution: {integrity: sha512-rnoTlecTsiE7bkAWT8kcb2tnrytS+F0mew939QgEcd3wXyndRIMaRVRrEk2AkK7Zma94uBj+aH6mzspU5ASeug==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-text@3.6.6': + resolution: {integrity: sha512-dlD1cNuouaPNeF6iXfaHuGt4aXaxROQMkfuhbYXeImcQMzO+tjPF4WESxahBC+VPpKvi3H9tUv1CVqwrRJL5Qw==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extension-underline@3.6.6': + resolution: {integrity: sha512-PXhWYTZHM9IvGr3ElJl25qsyvKUejlul9TpFeBHv2awTY+0xoUL9FeEwOWOGx3sk8XTrz15b0/gjsgOV6U6Hiw==} + peerDependencies: + '@tiptap/core': ^3.6.6 + + '@tiptap/extensions@3.6.6': + resolution: {integrity: sha512-+U4ppBItDa75HVeJ861G/O1F1nKPUkTgM2Qed9akPx/IB8ELuOUXNEytIHPONqx0XqjJ+953fQans2xQowMBjg==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + + '@tiptap/pm@3.6.6': + resolution: {integrity: sha512-E/rtpPEqPiQJrchdOUDcMPR69x96a+JeMWLL12fos4KfF7YVzQ5oUIij21RffV+qeHxug7HMUpQKBtCuJfek/Q==} + + '@tiptap/react@3.6.6': + resolution: {integrity: sha512-x1pGju+D/vazuBptE8ztsH55sXgF7CTOCAzSc7/6b4dXCZc1IrrciHOEbZLZix/UInPu4HgrPiVA+6xUj7e3+A==} + peerDependencies: + '@tiptap/core': ^3.6.6 + '@tiptap/pm': ^3.6.6 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tiptap/starter-kit@3.6.6': + resolution: {integrity: sha512-pKTlQEdyiy6aebjpOyWzjxmyPHM6mUEOHhyAN9hxCpHhkDHcOt3+CX+YlodDtrIfNdPEDyrvsDlvtrEavSTQLw==} + + '@total-typescript/ts-reset@0.6.1': + resolution: {integrity: sha512-cka47fVSo6lfQDIATYqb/vO1nvFfbPw7uWLayIXIhGETj0wcOOlrlkobOMDNQOFr9QOafegUPq13V2+6vtD7yg==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + + '@types/color-convert@2.0.4': + resolution: {integrity: sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==} + + '@types/color-name@1.1.5': + resolution: {integrity: sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==} + + '@types/color@4.2.0': + resolution: {integrity: sha512-6+xrIRImMtGAL2X3qYkd02Mgs+gFGs+WsK0b7VVMaO4mYRISwyTjcqNrO0mNSmYEoq++rSLDB2F5HDNmqfOe+A==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} '@types/d3-color@3.1.3': resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} @@ -2288,29 +2928,26 @@ packages: '@types/d3-interpolate@3.0.4': resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - '@types/d3-path@3.0.2': - resolution: {integrity: sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==} + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} - '@types/d3-scale@4.0.8': - resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} - '@types/d3-shape@3.1.6': - resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} - '@types/d3-time@3.0.3': - resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} '@types/d3-timer@3.0.2': resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/eslint@8.56.5': - resolution: {integrity: sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2318,217 +2955,303 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - '@types/node@20.12.7': - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/prismjs@1.26.3': - resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} + '@types/node@20.19.16': + resolution: {integrity: sha512-VS6TTONVdgwJwtJr7U+ghEjpfmQdqehLLpg/iMYGOd1+ilaFjdBJwFuPggJ4EAYPDCzWfDUHoIxyVnu+tOWVuQ==} - '@types/prop-types@15.7.10': - resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==} + '@types/react-dom@19.2.2': + resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} + peerDependencies: + '@types/react': 19.2.2 + + '@types/react-reconciler@0.28.9': + resolution: {integrity: sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==} + peerDependencies: + '@types/react': 19.2.2 - '@types/react-dom@18.2.25': - resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} + '@types/react@19.2.2': + resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} - '@types/react@18.2.78': - resolution: {integrity: sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==} + '@types/use-sync-external-store@0.0.6': + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} - '@types/validator@13.11.9': - resolution: {integrity: sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@types/webpack@5.28.5': - resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} + '@types/validator@13.15.3': + resolution: {integrity: sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==} - '@typescript-eslint/eslint-plugin@8.6.0': - resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==} + '@typescript-eslint/eslint-plugin@8.44.0': + resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.44.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@6.19.1': - resolution: {integrity: sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/eslint-plugin@8.50.0': + resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser': ^8.50.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.6.0': - resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==} + '@typescript-eslint/parser@8.44.0': + resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@6.19.1': - resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/parser@8.50.0': + resolution: {integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.0.0-alpha.30': - resolution: {integrity: sha512-FGW/iPWGyPFamAVZ60oCAthMqQrqafUGebF8UKuq/ha+e9SVG6YhJoRzurlQXOVf8dHfOhJ0ADMXyFnMc53clg==} + '@typescript-eslint/project-service@8.44.0': + resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.6.0': - resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} + '@typescript-eslint/project-service@8.50.0': + resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.8.0': - resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + '@typescript-eslint/scope-manager@8.44.0': + resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.6.0': - resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==} + '@typescript-eslint/scope-manager@8.50.0': + resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/type-utils@8.8.0': - resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} + '@typescript-eslint/tsconfig-utils@8.44.0': + resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@6.19.1': - resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==} - engines: {node: ^16.0.0 || >=18.0.0} + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.0.0-alpha.30': - resolution: {integrity: sha512-4WzLlw27SO9pK9UFj/Hu7WGo8WveT0SEiIpFVsV2WwtQmLps6kouwtVCB8GJPZKJyurhZhcqCoQVQFmpv441Vg==} + '@typescript-eslint/tsconfig-utils@8.50.0': + resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.6.0': - resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} + '@typescript-eslint/type-utils@8.44.0': + resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.8.0': - resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + '@typescript-eslint/type-utils@8.50.0': + resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@6.19.1': - resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==} - engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.0.0-alpha.30': - resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==} + '@typescript-eslint/types@8.44.0': + resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@8.6.0': - resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} + '@typescript-eslint/types@8.50.0': + resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@8.8.0': - resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + '@typescript-eslint/typescript-estree@8.44.0': + resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.0.0-alpha.30': - resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==} + '@typescript-eslint/typescript-estree@8.50.0': + resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.6.0': - resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} + '@typescript-eslint/utils@8.44.0': + resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.8.0': - resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + '@typescript-eslint/utils@8.50.0': + resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@6.19.1': - resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/visitor-keys@8.0.0-alpha.30': - resolution: {integrity: sha512-XZuNurZxBqmr6ZIRIwWFq7j5RZd6ZlkId/HZEWyfciK+CWoyOxSF9Pv2VXH9Rlu2ZG2PfbhLz2Veszl4Pfn7yA==} + '@typescript-eslint/visitor-keys@8.44.0': + resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.6.0': - resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} + '@typescript-eslint/visitor-keys@8.50.0': + resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.8.0': - resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] - '@upstash/core-analytics@0.0.7': - resolution: {integrity: sha512-lC2j5efqb1haX/fpTGaPUx1rue1WUkOZBVHDzCB7eMIVsRdFFp4xiHtyH/G9omiR1zj39fU5SCTWFiKJH3KOpw==} + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + + '@upstash/core-analytics@0.0.10': + resolution: {integrity: sha512-7qJHGxpQgQr9/vmeS1PktEwvNAF7TI4iJDi8Pu2CFZ9YUGHZH4fOP5TfYlZ4aVxfopnELiE4BS4FBjyK7V1/xQ==} engines: {node: '>=16.0.0'} - '@upstash/ratelimit@1.0.3': - resolution: {integrity: sha512-uaws/6Ar28TICm61wfIbL4Ba91WYtIfl6HMj0PNJ0H/nm0SSXwVbCxPEiX9aXa41gMlVWujaJcOreqIuO8/mqg==} + '@upstash/ratelimit@2.0.6': + resolution: {integrity: sha512-Uak5qklMfzFN5RXltxY6IXRENu+Hgmo9iEgMPOlUs2etSQas2N+hJfbHw37OUy4vldLRXeD0OzL+YRvO2l5acg==} + peerDependencies: + '@upstash/redis': ^1.34.3 - '@upstash/redis@1.31.5': - resolution: {integrity: sha512-2MatqeqftroSJ9Q+pqbyGAIwXX6KEPtUTUna2c/fq09h12ffwvltDTgfppeF+NzJo/SyZfHY8e1RoflduMbz1A==} + '@upstash/redis@1.35.3': + resolution: {integrity: sha512-hSjv66NOuahW3MisRGlSgoszU2uONAY2l5Qo3Sae8OT3/Tng9K+2/cBRuyPBX8egwEGcNNCF9+r0V6grNnhL+w==} - '@vercel/analytics@1.2.2': - resolution: {integrity: sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==} + '@vercel/analytics@1.5.0': + resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==} peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 next: '>= 13' - react: ^18 || ^19 + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true next: optional: true react: optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true - '@vercel/blob@0.22.3': - resolution: {integrity: sha512-l0t2KhbOO/I8ZNOl9zypYf1NE0837aO4/CPQNGR/RAxtj8FpdYKjhyUADUXj2gERLQmnhun+teaVs/G7vZJ/TQ==} - engines: {node: '>=16.14'} + '@vercel/blob@2.0.0': + resolution: {integrity: sha512-oAj7Pdy83YKSwIaMFoM7zFeLYWRc+qUpW3PiDSblxQMnGFb43qs4bmfq7dr/+JIfwhs6PTwe1o2YBwKhyjWxXw==} + engines: {node: '>=20.0.0'} '@vercel/edge-config-fs@0.1.0': resolution: {integrity: sha512-NRIBwfcS0bUoUbRWlNGetqjvLSwgYH/BqKqDN7vK1g32p7dN96k0712COgaz6VFizAm9b0g6IG6hR6+hc0KCPg==} - '@vercel/edge-config@1.1.0': - resolution: {integrity: sha512-es/4BzzKfyUilL5E1knR42MZHJqHMRfqitrnv18gVZZUha9ywrX3qNoCrPsNMJ1HS8xAAz/FJEyel7YFIDfKoQ==} + '@vercel/edge-config@1.4.0': + resolution: {integrity: sha512-69Wg5gw9DzwnyUmnjToSeLRm1nm8mCPgN0kflX8EHRHyqvzH80wPem5A8rI2LXPb2Y9tJNoqN3vXPcQhS2Wh5g==} engines: {node: '>=14.6'} peerDependencies: '@opentelemetry/api': ^1.7.0 @@ -2536,17 +3259,70 @@ packages: '@opentelemetry/api': optional: true - '@vercel/kv@2.0.0': - resolution: {integrity: sha512-zdVrhbzZBYo5d1Hfn4bKtqCeKf0FuzW8rSHauzQVMUgv1+1JOwof2mWcBuI+YMJy8s0G0oqAUfQ7HgUDzb8EbA==} + '@vercel/functions@2.2.13': + resolution: {integrity: sha512-14ArBSIIcOBx9nrEgaJb4Bw+en1gl6eSoJWh8qjifLl5G3E4dRXCFOT8HP+w66vb9Wqyd1lAQBrmRhRwOj9X9A==} + engines: {node: '>= 18'} + peerDependencies: + '@aws-sdk/credential-provider-web-identity': '*' + peerDependenciesMeta: + '@aws-sdk/credential-provider-web-identity': + optional: true + + '@vercel/functions@3.1.0': + resolution: {integrity: sha512-V+p8dO+sg1VjiJJUO5rYPp1KG17SzDcR74OWwW7Euyde6L8U5wuTMe9QfEOfLTiWPUPzN1MXZvLcYxqSYhKc4Q==} + engines: {node: '>= 20'} + peerDependencies: + '@aws-sdk/credential-provider-web-identity': '*' + peerDependenciesMeta: + '@aws-sdk/credential-provider-web-identity': + optional: true + + '@vercel/kv@3.0.0': + resolution: {integrity: sha512-pKT8fRnfyYk2MgvyB6fn6ipJPCdfZwiKDdw7vB+HL50rjboEBHDVBEcnwfkEpVSp2AjNtoaOUH7zG+bVC/rvSg==} engines: {node: '>=14.6'} - '@vercel/speed-insights@1.0.10': - resolution: {integrity: sha512-4uzdKB0RW6Ff2FkzshzjZ+RlJfLPxgm/00i0XXgxfMPhwnnsk92YgtqsxT9OcPLdJUyVU1DqFlSWWjIQMPkh0g==} + '@vercel/microfrontends@1.3.0': + resolution: {integrity: sha512-7hvza7+osdfowUllyDthk3QerhoU/8kQgr9QNsIxOJQxpbpwGlN3mMNvYG7CaPB41kQutY6D7StCiOg0E0xGFg==} + hasBin: true + peerDependencies: + '@sveltejs/kit': '>=1' + '@vercel/analytics': '>=1.5.0' + '@vercel/speed-insights': '>=1.2.0' + next: '>=13' + react: '>=17.0.0' + react-dom: '>=17.0.0' + vite: '>=5' + peerDependenciesMeta: + '@sveltejs/kit': + optional: true + '@vercel/analytics': + optional: true + '@vercel/speed-insights': + optional: true + next: + optional: true + react: + optional: true + react-dom: + optional: true + vite: + optional: true + + '@vercel/oidc@2.0.2': + resolution: {integrity: sha512-59PBFx3T+k5hLTEWa3ggiMpGRz1OVvl9eN8SUai+A43IsqiOuAe7qPBf+cray/Fj6mkgnxm/D7IAtjc8zSHi7g==} + engines: {node: '>= 18'} + + '@vercel/oidc@3.0.0': + resolution: {integrity: sha512-XOoUcf/1VfGArUAfq0ELxk6TD7l4jGcrOsWjQibj4wYM74uNihzZ9gA46ywWegoqKWWdph4y5CKxGI9823deoA==} + engines: {node: '>= 20'} + + '@vercel/speed-insights@1.2.0': + resolution: {integrity: sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==} peerDependencies: '@sveltejs/kit': ^1 || ^2 next: '>= 13' - react: ^18 || ^19 - svelte: ^4 + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' vue: ^3 vue-router: ^4 peerDependenciesMeta: @@ -2563,207 +3339,133 @@ packages: vue-router: optional: true - '@vercel/toolbar@0.1.13': - resolution: {integrity: sha512-HZsHCmCicJvQZ+M6mekVijM+vOJ4EtvMXCINuabmGYAD18kWXHGWj6x4KC0mwHF1lv6lxJoRHG//brBqDtdpfA==} + '@vercel/toolbar@0.1.41': + resolution: {integrity: sha512-e7JumeKvdZISe+kOGJPOflaQq7t5tZOYaQ9wMKpdXhcCmyvsYiTAKNxLvsQnKdSU7Av1AYXbaRTC7JhQraKuWw==} peerDependencies: next: '>=11.0.0' + nuxt: '>=3.0.0' react: '>=17' + vite: '>=5' peerDependenciesMeta: next: optional: true + nuxt: + optional: true react: optional: true + vite: + optional: true - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - - '@vitest/runner@2.0.5': - resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} - - '@vitest/snapshot@2.0.5': - resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} - - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - - '@webassemblyjs/ast@1.11.6': - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.11.6': - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.11.6': - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.11.6': - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - - '@webassemblyjs/wasm-gen@1.11.6': - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} - - '@webassemblyjs/wasm-opt@1.11.6': - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@webassemblyjs/wasm-parser@1.11.6': - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@webassemblyjs/wast-printer@1.11.6': - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - deprecated: package has been renamed to acorn-import-attributes + '@xstate/store@3.9.2': + resolution: {integrity: sha512-wOMS4WNrDA3STbO8JtGnOvFdXlIG4rCRsWas7MNljFm87lQUIL3dj7yQ2Smb5WQq/M88gYLd9Ju2d+cyLBRt1Q==} peerDependencies: - acorn: ^8 + react: ^18.2.0 || ^19.0.0 + solid-js: ^1.7.6 + peerDependenciesMeta: + react: + optional: true + solid-js: + optional: true acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.4: - resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} - array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - - array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} @@ -2772,136 +3474,116 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} - asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.14: - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + axe-core@4.10.3: + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} engines: {node: '>=4'} - axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - base64id@2.0.0: - resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} - engines: {node: ^4.5.0 || >= 5.9} + baseline-browser-mapping@2.8.7: + resolution: {integrity: sha512-bxxN2M3a4d1CRoQC//IqsR5XrLh0IJ8TCv2x6Y9N0nckNz/rTjZB3//GGscZziZOxmjP55rzxg/ze7usFI9FqQ==} + hasBin: true - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bippy@0.3.27: + resolution: {integrity: sha512-0k9M+yXcgUDpMgSl+7QjYRqUk8Ud4Z18uL7m34AKkkXy7Fi79Yl8q2pdyDGOyb0uhmRzHgJUOsAIYW1qvlnGaA==} + peerDependencies: + react: '>=17.0.1' + birecord@0.1.1: resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + botid@1.5.10: + resolution: {integrity: sha512-hhgty1u0CxozqTqLbTQMtYBwmWdzWZTAsBCvN7/qhkN3fM7MlXacmmcMoyc0f+vV+U6RRoLYdlo32td+PhJyew==} + peerDependencies: + next: '*' + react: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + next: + optional: true + react: + optional: true - bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + c12@3.1.0: + resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==} + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001609: - resolution: {integrity: sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==} - - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} - engines: {node: '>=12'} + caniuse-lite@1.0.30001743: + resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} - chalk@1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2911,122 +3593,101 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - cli-spinner@0.2.10: - resolution: {integrity: sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q==} - engines: {node: '>=0.10'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - - cmdk@0.2.1: - resolution: {integrity: sha512-U6//9lQ6JvT47+6OF6Gi8BvkxYQ8SCRRSKIJkthIMsFsLZRG0cKvTtuTaefyIKMQb8rvvXy0wGdpTNq/jPtm+g==} + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-convert@3.1.2: + resolution: {integrity: sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg==} + engines: {node: '>=14.6'} color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@2.0.2: + resolution: {integrity: sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A==} + engines: {node: '>=12.20'} + + color-string@2.1.2: + resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==} + engines: {node: '>=18'} + + color@5.0.2: + resolution: {integrity: sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==} + engines: {node: '>=18'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + cookie@0.4.0: + resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} engines: {node: '>= 0.6'} cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} @@ -3075,12 +3736,23 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - date-fns@3.6.0: - resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} - debounce@2.0.0: - resolution: {integrity: sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==} - engines: {node: '>=18'} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + date-fns-jalali@4.1.0-0: + resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -3090,28 +3762,20 @@ packages: supports-color: optional: true - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: - supports-color: - optional: true - - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + supports-color: + optional: true decimal.js-light@2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} @@ -3120,13 +3784,14 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge-ts@7.1.5: + resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==} + engines: {node: '>=16.0.0'} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -3135,6 +3800,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3143,27 +3811,29 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.1.0: + resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} + engines: {node: '>=8'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} @@ -3177,62 +3847,64 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} - editorconfig@1.0.4: - resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} - engines: {node: '>=14'} - hasBin: true + effect@3.16.12: + resolution: {integrity: sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==} - electron-to-chromium@1.4.692: - resolution: {integrity: sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==} + effect@3.17.13: + resolution: {integrity: sha512-JMz5oBxs/6mu4FP9Csjub4jYMUwMLrp+IzUmSDVIzn2NoeoyOXMl7x1lghfr3dLKWffWrdnv/d8nFFdgrHXPqw==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + electron-to-chromium@1.5.224: + resolution: {integrity: sha512-kWAoUu/bwzvnhpdZSIc6KUyvkI1rbRXMT0Eq8pKReyOyaPZcctMli+EgvcN1PAvwVc7Tdo4Fxi2PsLNDU05mdg==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + embla-carousel-react@8.6.0: + resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + embla-carousel-reactive-utils@8.6.0: + resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==} + peerDependencies: + embla-carousel: 8.6.0 - engine.io-client@6.5.3: - resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + embla-carousel@8.6.0: + resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} - engine.io-parser@5.2.2: - resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} - engines: {node: '>=10.0.0'} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - engine.io@6.5.4: - resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} - engines: {node: '>=10.2.0'} + empathic@2.0.0: + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + engines: {node: '>=14'} - enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.22.5: - resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-content-type@0.0.10: resolution: {integrity: sha512-yCgcv1M2IuFUoGZ3zE4OR2INGmZOwEuyaE5WX4MOKGpJcO8JXgVOIcXVicwnTqlxvx6qs9IJGl/Rr1+YtCkRgg==} engines: {node: '>=12.x'} - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} es-errors@1.3.0: @@ -3243,84 +3915,80 @@ packages: resolution: {integrity: sha512-ZM+K/T/zHJVuOhaz19iymidACazB1fl2uihBtSfRie8YzN1YM+KldVmNaU+GSmVvTOPSO2utKOhxcOinr5tKjw==} engines: {node: '>=12.x'} - es-iterator-helpers@1.0.17: - resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} engines: {node: '>= 0.4'} es-mime-types@0.0.16: resolution: {integrity: sha512-84QoSLeA7cdTeHpALFNl3ZOstXfvLt426/kaOgmSxmNUOhi4GesKVkhJgIfnsqGNziYezVA8rvZUsXj7oWX2qQ==} engines: {node: '>=12.x'} - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} es-vary@0.0.8: resolution: {integrity: sha512-fiERjQiCHrXUAToNRT/sh7MtXnfei9n7cF9oVQRUEp9L5BGXsTKSPaXq8L+4v0c/ezfvuTWd/f0JSl5IBRUvSg==} engines: {node: '>=12.x'} - esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} - engines: {node: '>=12'} + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + engines: {node: '>=18'} hasBin: true - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-next@14.0.1: - resolution: {integrity: sha512-QfIFK2WD39H4WOespjgf6PLv9Bpsd7KGGelCtmq4l67nGvnlsGpuvj0hIT+aIy6p5gKH+lAChYILsyDlxP52yg==} + eslint-config-next@16.0.1: + resolution: {integrity: sha512-wNuHw5gNOxwLUvpg0cu6IL0crrVC9hAwdS/7UwleNkwyaMiWIOAwf8yzXVqBBzL3c9A7jVRngJxjoSpPP1aEhg==} peerDependencies: - eslint: ^7.23.0 || ^8.0.0 + eslint: '>=9.0.0' typescript: '>=3.3.1' peerDependenciesMeta: typescript: optional: true - eslint-config-prettier@9.0.0: - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-turbo@1.10.12: - resolution: {integrity: sha512-z3jfh+D7UGYlzMWGh+Kqz++hf8LOE96q3o5R8X4HTjmxaBWlLAWG+0Ounr38h+JLR2TJno0hU9zfzoPNkR9BdA==} - peerDependencies: - eslint: '>6.6.0' - eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.1: - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3340,137 +4008,110 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.29.0: - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 peerDependenciesMeta: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-react-debug@1.14.3: - resolution: {integrity: sha512-qEsGT5LGFtYR1Hs9nqfrCqgE8MxrTe5VA7LO7Old8epgHgpgOGIuSIdIKYu7dxlEFGAXFB3JLW7ieYJYcgobbQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-dom@1.14.3: - resolution: {integrity: sha512-tVA7RQI6Jxomeqrckqi/y1gEmcdI29b268p7K8WjRUWNUDXbZR6vEyaLBqzI8+ykO1HsK8+QhOKUHgUKHjOZBQ==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-dom@2.3.13: + resolution: {integrity: sha512-O9jglTOnnuyfJcSxjeVc8lqIp5kuS9/0MLLCHlOTH8ZjIifHHxUr6GZ2fd4la9y0FsoEYXEO7DBIMjWx2vCwjg==} + engines: {node: '>=20.19.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - eslint-plugin-react-hooks-extra@1.14.3: - resolution: {integrity: sha512-G6mFfYiKgKbGJOUlmvcsN+n0hNiRGa9pNenv4hSlbm3TJFmlrLG+cHvOa9xe88AvaLJHfF5obgF8X/zhSekIfA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-hooks-extra@2.3.13: + resolution: {integrity: sha512-NSnY8yvtrvu2FAALLuvc2xesIAkMqGyJgilpy8wEi1w/Nw6v0IwBEffoNKLq9OHW4v3nikud3aBTqWfWKOx67Q==} + engines: {node: '>=20.0.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + engines: {node: '>=18'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-naming-convention@1.14.3: - resolution: {integrity: sha512-qj7XpwYQAKNCTloWA9vPNYDRMsiLa5H/jlF3mH17Is+j/pLH97NRG9CQXbh6kEdLbBFSsHwTDvyP22+CPVZhiA==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-naming-convention@2.3.13: + resolution: {integrity: sha512-2iler1ldFpB/PaNpN8WAVk6dKYKwKcoGm1j0JAAjdCrsfOTJ007ol2xTAyoHKAbMOvkZSi7qq90q+Q//RuhWwA==} + engines: {node: '>=20.19.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - eslint-plugin-react-web-api@1.14.3: - resolution: {integrity: sha512-1G/WIUe+ZIPW8px1lmn7ib5fy6LcuwoHDsnq9G92iE8MFXYPA0Pry0ZKaB2lAsjP8rUROv1L9B457QjyCpro2g==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-web-api@2.3.13: + resolution: {integrity: sha512-+UypRPHP9GFMulIENpsC/J+TygWywiyz2mb4qyUP6y/IwdcSilk1MyF9WquNYKB/4/FN4Rl1oRm6WMbfkbpMnQ==} + engines: {node: '>=20.19.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - eslint-plugin-react-x@1.14.3: - resolution: {integrity: sha512-VKyF4v1kWp9P6vI7JDJfonmny0HOQiS5v/rMLyldK9UC8k+efJN7dUtLE2Kt7TfxggE5gf+v4rsDB2Opvt5Tvg==} - engines: {bun: '>=1.0.15', node: '>=18.18.0'} + eslint-plugin-react-x@2.3.13: + resolution: {integrity: sha512-+m+V/5VLMxgx0VsFUUyflMNLQG0WFYspsfv0XJFqx7me3A2b3P20QatNDHQCYswz0PRbRFqinTPukPRhZh68ag==} + engines: {node: '>=20.19.0'} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: ^4.9.5 || ^5.3.3 - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <6.0.0' - eslint-plugin-react@7.34.1: - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-turbo@1.10.12: - resolution: {integrity: sha512-uNbdj+ohZaYo4tFJ6dStRXu2FZigwulR1b3URPXe0Q8YaE7thuekKNP+54CHtZPH9Zey9dmDx5btAQl9mfzGOw==} - peerDependencies: - eslint: '>6.6.0' - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -3481,27 +4122,37 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + engines: {node: '>=12.0.0'} + + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + + fast-check@3.23.2: + resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} + engines: {node: '>=8.0.0'} + + fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-equals@5.0.1: - resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + fast-equals@5.2.2: + resolution: {integrity: sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==} engines: {node: '>=6.0.0'} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -3510,38 +4161,46 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} hasBin: true - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.1.1: - resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} - engines: {node: '>=12.0.0'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -3549,37 +4208,34 @@ packages: debug: optional: true - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - framer-motion@10.17.4: - resolution: {integrity: sha512-CYBSs6cWfzcasAX8aofgKFZootmkQtR4qxbfTOksBLny/lbUfkGbQAFOS3qnl6Uau1N9y8tUpI7mVIrHgkFjLQ==} + framer-motion@12.23.13: + resolution: {integrity: sha512-OMF57Xh0fuTXfJQPtCieYGeU9Fam4SxqPLVz78YI7ATRFrfz8SARtqr1+qv56cX45kPFcIEfkUorVfxlOsjcUg==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true react: optional: true react-dom: optional: true - framer-motion@11.0.28: - resolution: {integrity: sha512-j/vNYTCH5MX5sY/3dwMs00z1+qAqKX3iIHF762bwqlU814ooD5dDbuj3pA0LmIT5YqyryCkXEb/q+zRblin0lw==} + framer-motion@12.23.26: + resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} peerDependencies: '@emotion/is-prop-valid': '*' - react: ^18.0.0 - react-dom: ^18.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/is-prop-valid': optional: true @@ -3588,8 +4244,10 @@ packages: react-dom: optional: true - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3599,23 +4257,28 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - geist@1.3.0: - resolution: {integrity: sha512-IoGBfcqVEYB4bEwsfHd35jF4+X9LHRPYZymHL4YOltHSs9LJa24DYs1Z7rEMQ/lsEvaAIc61Y9aUxgcJaQ8lrg==} + fuse.js@7.1.0: + resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==} + engines: {node: '>=10'} + + geist@1.5.1: + resolution: {integrity: sha512-mAHZxIsL2o3ZITFaBVFBnwyDOw+zNLYum6A6nIjpzCGIO8QtC3V76XF2RnZTyLx1wlDTmMDy8jg3Ib52MIjGvQ==} peerDependencies: - next: '>=13.2.0 <15.0.0-0' + next: '>=13.2.0' - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-nonce@1.0.1: @@ -3626,20 +4289,24 @@ packages: resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} engines: {node: '>=8'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + giget@2.0.0: + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + hasBin: true glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -3649,45 +4316,21 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@10.3.4: - resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} - globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -3695,20 +4338,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - - has-ansi@2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -3717,24 +4349,27 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} @@ -3743,203 +4378,177 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + immutable@5.1.3: + resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - input-otp@1.2.4: - resolution: {integrity: sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==} + input-otp@1.4.2: + resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - intl-messageformat@10.7.10: - resolution: {integrity: sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + intl-messageformat@10.7.16: + resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} - ipaddr.js@2.1.0: - resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-immutable-type@5.0.0: - resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} + is-immutable-type@5.0.1: + resolution: {integrity: sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==} peerDependencies: eslint: '*' typescript: '>=4.7.4' - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} - is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3947,53 +4556,49 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + jiti@2.5.1: + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true - jose@4.15.5: - resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} - jose@5.1.3: - resolution: {integrity: sha512-GPExOkcMsCLBTi1YetY2LmkoY559fss0+0KVa6kOfb2YFe84nAM7Nm/XzuZozah4iHgmBGrCOHL5/cy670SBRw==} - - js-beautify@1.14.11: - resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} - engines: {node: '>=14'} - hasBin: true + jose@6.1.0: + resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-edit-react@1.17.0: - resolution: {integrity: sha512-kIDsPuCLDBJtECVastgQgKvPta2w8FI4az74W4ghsy4pkBQI2tyBx886g8N5w7IqYe1hGG/9hz0ZWvCmLW2GFA==} + json-edit-react@1.28.2: + resolution: {integrity: sha512-+ZsVXwnuOvuyqeQBDOxMS63JmF3VwHDrA0TtjSEBSBtR+lteHN/QjQohqFzsam7AHPu75AabGXciVf0H6ne+/g==} peerDependencies: react: '>=16.0.0' - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -4001,6 +4606,14 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -4008,12 +4621,12 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} @@ -4026,83 +4639,124 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + linkifyjs@4.3.2: + resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==} locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} - engines: {node: 14 || >=16.14} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@0.344.0: - resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} + lucide-react@0.544.0: + resolution: {integrity: sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==} peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true marked@7.0.4: resolution: {integrity: sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==} engines: {node: '>= 16'} hasBin: true - md-to-react-email@4.1.0: - resolution: {integrity: sha512-aQvj4dCuy0wmBVvSB377qTErlpjN5Pl61+5v+B8Z76KoxOgKhbzvK3qnO94eOsuGSWwI+9n4zb3xD3/MypxM4w==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md-to-react-email@5.0.5: + resolution: {integrity: sha512-OvAXqwq57uOk+WZqFFNCMZz8yDp8BD3WazW1wAKHUrPbbdr89K9DWS6JXY09vd9xNdPNeurI8DU/X4flcfaD8A==} peerDependencies: - react: 18.x - react-email: '>1.9.3' + react: ^18.0 || ^19.0 - meow@7.1.1: - resolution: {integrity: sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==} - engines: {node: '>=10'} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4111,8 +4765,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -4125,165 +4779,181 @@ packages: mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} + engines: {node: '>=6'} mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.1: - resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} + motion-dom@12.23.12: + resolution: {integrity: sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==} + + motion-dom@12.23.23: + resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==} + + motion-utils@12.23.6: + resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + + motion@12.23.26: + resolution: {integrity: sha512-Ll8XhVxY8LXMVYTCfme27WH2GjBrCIzY4+ndr5QKxsK+YwCtOi2B/oBi5jcIbik5doXuWT/4KKDOVAZJkeY5VQ==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + nanoid@5.1.5: + resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} engines: {node: ^18 || >=20} hasBin: true + napi-postinstall@0.3.3: + resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - next-auth@5.0.0-beta.4: - resolution: {integrity: sha512-vgocjvwPA8gxd/zrIP/vr9lJ/HeNe+C56lPP1D3sdyenHt8KncQV6ro7q0xCsDp1fcOKx7WAWVZH5o8aMxDzgw==} + next-auth@5.0.0-beta.29: + resolution: {integrity: sha512-Ukpnuk3NMc/LiOl32njZPySk7pABEzbjhMUFd5/n10I0ZNC7NCuVv8IY2JgbDek2t/PUOifQEoUiOOTLy4os5A==} peerDependencies: - next: ^14 + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + next: ^14.0.0-0 || ^15.0.0-0 nodemailer: ^6.6.5 - react: ^18.2.0 + react: ^18.2.0 || ^19.0.0-0 peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true nodemailer: optional: true - next-axiom@1.1.1: - resolution: {integrity: sha512-0r/TJ+/zetD+uDc7B+2E7WpC86hEtQ1U+DuWYrP/JNmUz+ZdPFbrZgzOSqaZ6TwYbXP56VVlPfYwq1YsKHTHYQ==} + next-axiom@1.9.2: + resolution: {integrity: sha512-M0CKNJ39WQ8Hrb+OuBHDdC2Yev7pu0B5z296ZMT8W6IiPCW2FHCLS8naVzGH8Fyia58zNTeVXQaZ33THAoQWSQ==} engines: {node: '>=18'} peerDependencies: - next: '>=13.4' + next: '>=14.0' react: '>=18.0.0' - next-intl@3.26.3: - resolution: {integrity: sha512-6Y97ODrDsEE1J8cXKMHwg1laLdtkN66QMIqG8BzH4zennJRUNTtM8UMtBDyhfmF6uiZ+xsbWLXmHUgmUymUsfQ==} + next-intl@4.3.9: + resolution: {integrity: sha512-4oSROHlgy8a5Qr2vH69wxo9F6K0uc6nZM2GNzqSe6ET79DEzOmBeSijCRzD5txcI4i+XTGytu4cxFsDXLKEDpQ==} peerDependencies: - next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 + next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true - next-themes@0.2.1: - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: - next: '*' - react: '*' - react-dom: '*' + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@14.1.0: - resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} - engines: {node: '>=18.17.0'} + next@16.1.1: + resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.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 - next@14.2.23: - resolution: {integrity: sha512-mjN3fE6u/tynneLiEg56XnthzuYw+kD7mCujgVqioxyPqbmiotUCGJpIZGS/VaPg3ZDT1tvWxiVyRzeqJFm/kw==} - engines: {node: '>=18.17.0'} - hasBin: true + nextstepjs@2.1.2: + resolution: {integrity: sha512-m9WnoeSFJaA9804vZo78GJZT9emmCfmmlR7Mewnd4OGcYSZv8PGt2uNeJRG3KedWt/sPov+rlMLA+kA3NWzXoQ==} peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 + '@remix-run/react': '>=1.0.0' + motion: '>=11' + next: '>=13.0.0' + react: '>=18' + react-dom: '>=18' + react-router: '>=7.0.0' peerDependenciesMeta: - '@opentelemetry/api': + '@remix-run/react': optional: true - '@playwright/test': + next: optional: true - sass: + react-router: optional: true - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - nopt@7.2.0: - resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - normalize-wheel@1.0.1: resolution: {integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==} @@ -4291,103 +4961,85 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + nypm@0.6.2: + resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + oauth4webapi@2.17.0: + resolution: {integrity: sha512-lbC0Z7uzAFNFyzEYRIC+pkSVvDHJTbEW+dYlSBAlCYDe6RxUkJ26bClhk8ocBZip1wfI9uKTe0fm4Ib4RHn6uQ==} - oauth4webapi@2.10.3: - resolution: {integrity: sha512-9FkXEXfzVKzH63GUOZz1zMr3wBaICSzk6DLXx+CGdrQ10ItNk2ePWzYYc1fdmKq1ayGFb2aX97sRCoZ2s0mkDw==} + oauth4webapi@3.8.1: + resolution: {integrity: sha512-olkZDELNycOWQf9LrsELFq8n05LwJgV8UkrS0cburk6FOwf8GvLam+YB+Uj5Qvryee+vwWOfQVeI5Vm0MVg7SA==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object-property-assigner@1.3.1: - resolution: {integrity: sha512-3R6x1l1sQA4jQBOqxkxH3DHw0PMh7K5UY4x1Yc5QYbbkzZpAJ8l9w+Trq/64ZRe2thiOsa8JpB4M7D61hnkjRA==} + object-property-assigner@1.3.5: + resolution: {integrity: sha512-DIzHzNSTnpoG8QPQCDNrHa6O3vLMhktK3Igirqpk523UYIVe8JNCKcn5C9WyLQxJc58EGsAIiiEu10gqPrud8w==} - object-property-extractor@1.0.12: - resolution: {integrity: sha512-X6rMK1O6O3EU4O06BtATezWKr+5idX6Yo0PndVqr8NlED3Eoa2YE+VKQgQL4EK0+vh+YA83Sjj9Nsi/PuXXeDQ==} + object-property-extractor@1.0.13: + resolution: {integrity: sha512-9kgEjTWDhTPuPn7nyof+5mLmCKBPKdU0c7IVpTbOvYKYSdXQ5skH4Pa/8MPbZXeyXBGrqS82JyWecsh6tMxiLw==} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - - object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - parseley@0.12.1: resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} @@ -4395,109 +5047,63 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 + playwright-core@1.55.1: + resolution: {integrity: sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==} + engines: {node: '>=18'} + hasBin: true - postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} - engines: {node: '>=4'} + playwright@1.55.1: + resolution: {integrity: sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==} + engines: {node: '>=18'} + hasBin: true - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} preact-render-to-string@5.2.3: @@ -4505,28 +5111,42 @@ packages: peerDependencies: preact: '>=10' + preact-render-to-string@6.5.11: + resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} + peerDependencies: + preact: '>=10' + preact@10.11.3: resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + preact@10.24.3: + resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} + + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-tailwindcss@0.6.1: - resolution: {integrity: sha512-AnbeYZu0WGj+QgKciUgdMnRxrqcxltleZPgdwfA5104BHM3siBLONN/HLW1yS2HvzSNkzpQ/JAj+LN0jcJO+0w==} + prettier-plugin-tailwindcss@0.6.14: + resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==} engines: {node: '>=14.21.3'} 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-melody': '*' + '@zackad/prettier-plugin-twig': '*' prettier: ^3.0 prettier-plugin-astro: '*' prettier-plugin-css-order: '*' prettier-plugin-import-sort: '*' prettier-plugin-jsdoc: '*' prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' prettier-plugin-organize-attributes: '*' prettier-plugin-organize-imports: '*' prettier-plugin-sort-imports: '*' @@ -4535,13 +5155,17 @@ packages: peerDependenciesMeta: '@ianvs/prettier-plugin-sort-imports': optional: true + '@prettier/plugin-hermes': + optional: true + '@prettier/plugin-oxc': + optional: true '@prettier/plugin-pug': optional: true '@shopify/prettier-plugin-liquid': optional: true '@trivago/prettier-plugin-sort-imports': optional: true - '@zackad/prettier-plugin-twig-melody': + '@zackad/prettier-plugin-twig': optional: true prettier-plugin-astro: optional: true @@ -4553,6 +5177,8 @@ packages: optional: true prettier-plugin-marko: optional: true + prettier-plugin-multiline-arrays: + optional: true prettier-plugin-organize-attributes: optional: true prettier-plugin-organize-imports: @@ -4564,132 +5190,220 @@ packages: prettier-plugin-svelte: optional: true - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true pretty-format@3.8.0: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} - prism-react-renderer@2.1.0: - resolution: {integrity: sha512-I5cvXHjA1PVGbGm1MsWCpvBCRrYyxEri0MC7/JbfIfYfcXAxHyO5PaUjs3A8H5GW6kJcLhTHxxMaOZZpRZD2iQ==} - peerDependencies: - react: '>=16.0.0' - - prisma@5.19.1: - resolution: {integrity: sha512-c5K9MiDaa+VAAyh1OiYk76PXOme9s3E992D7kvvIOhCrNsBQfy2mP2QAQtX0WNj140IgG++12kwZpYB9iIydNQ==} - engines: {node: '>=16.13'} + prisma@6.16.2: + resolution: {integrity: sha512-aRvldGE5UUJTtVmFiH3WfNFNiqFlAtePUxcI0UEGlnXCX7DqhiMT5TRYwncHFeA/Reca5W6ToXXyCMTeFPdSXA==} + engines: {node: '>=18.18'} hasBin: true + peerDependencies: + typescript: '>=5.1.0' + peerDependenciesMeta: + typescript: + optional: true - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + prosemirror-changeset@2.3.1: + resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==} + + prosemirror-collab@1.3.1: + resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} + + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} + + prosemirror-dropcursor@1.8.2: + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} + + prosemirror-gapcursor@1.3.2: + resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} + + prosemirror-history@1.4.1: + resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==} + + prosemirror-inputrules@1.5.0: + resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==} + + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} + + prosemirror-markdown@1.13.2: + resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} + + prosemirror-menu@1.2.5: + resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==} + + prosemirror-model@1.25.3: + resolution: {integrity: sha512-dY2HdaNXlARknJbrManZ1WyUtos+AP97AmvqdOQtWtrrC5g4mohVX5DTi9rXNFSk09eczLq9GuNTtq3EfMeMGA==} + + prosemirror-schema-basic@1.2.4: + resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} + + prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} + + prosemirror-state@1.4.3: + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} + + prosemirror-tables@1.8.1: + resolution: {integrity: sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==} + + prosemirror-trailing-node@3.0.0: + resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} + peerDependencies: + prosemirror-model: ^1.22.1 + prosemirror-state: ^1.4.2 + prosemirror-view: ^1.33.8 + + prosemirror-transform@1.10.4: + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==} + + prosemirror-view@1.41.3: + resolution: {integrity: sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==} proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + radix-ui@1.4.3: + resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==} + peerDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - react-day-picker@8.10.0: - resolution: {integrity: sha512-mz+qeyrOM7++1NCb1ARXmkjMkzWVh2GL9YiPbRjKe0zHccvekk4HE+0MPOZOrosn8r8zTHIIeOUXTmXRqmkRmg==} + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + + react-day-picker@9.12.0: + resolution: {integrity: sha512-t8OvG/Zrciso5CQJu5b1A7yzEmebvST+S3pOVQJWxwjjVngyG/CA2htN/D15dLI4uTEuLLkbZyS4YYt480FAtA==} + engines: {node: '>=18'} peerDependencies: - date-fns: ^2.28.0 || ^3.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: '>=16.8.0' - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + react-dom@19.2.3: + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: - react: ^18.2.0 + react: ^19.2.3 - react-easy-crop@5.0.6: - resolution: {integrity: sha512-LV8te8NGC72k3l8uAqPAw73D2i9AbRlZqyo1Xz8VetwiMfkSKYgyqE3IFEwf5h+1g7AS1nMxBKk6ZPdhvLw6MQ==} + react-easy-crop@5.5.1: + resolution: {integrity: sha512-8m6lCmfr6cSE9/447iHu+OniJuy7sdFbTqbsYyAXKygXJplvGCLpodujodWQeBGse11nDIgCbMUKbgucIxQWSQ==} peerDependencies: react: '>=16.4.0' react-dom: '>=16.4.0' - react-email@2.1.0: - resolution: {integrity: sha512-fTt85ca1phsBu57iy32wn4LTR37rOzDZoY2AOWVq3JQYVwk6GlBdUuQWif2cudkwWINL9COf9kRMS4/QWtKtAQ==} + react-hook-form@7.62.0: + resolution: {integrity: sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==} engines: {node: '>=18.0.0'} - hasBin: true - - react-hook-form@7.51.3: - resolution: {integrity: sha512-cvJ/wbHdhYx8aviSWh28w9ImjmVsb5Y05n1+FW786vEZQJV5STNM0pW6ujS+oiBecb0ARBxJFyAnXj9+GHXACQ==} - engines: {node: '>=12.22.0'} peerDependencies: - react: ^16.8.0 || ^17 || ^18 + react: ^16.8.0 || ^17 || ^18 || ^19 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-promise-suspense@0.3.4: + resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 19.2.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - react-remove-scroll@2.5.4: - resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 19.2.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} + react-resizable-panels@3.0.6: + resolution: {integrity: sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==} + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + react-scan@0.4.3: + resolution: {integrity: sha512-jhAQuQ1nja6HUYrSpbmNFHqZPsRCXk8Yqu0lHoRIw9eb8N96uTfXCpVyQhTTnJ/nWqnwuvxbpKVG/oWZT8+iTQ==} + hasBin: true peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@remix-run/react': '>=1.0.0' + next: '>=13.0.0' + 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 + react-router: ^5.0.0 || ^6.0.0 || ^7.0.0 + react-router-dom: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: - '@types/react': + '@remix-run/react': + optional: true + next: + optional: true + react-router: + optional: true + react-router-dom: optional: true - react-smooth@4.0.0: - resolution: {integrity: sha512-2NMXOBY1uVUQx1jBeENGA497HK20y6CPGYL1ZnJLeoQ8rrc3UfmOM82sRxtzpcoCkUMy4CS0RGylfuVhuFjBgg==} + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + 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 - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 19.2.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -4700,64 +5414,46 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + react@19.2.3: + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + recharts-scale@0.4.5: resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} - recharts@2.12.5: - resolution: {integrity: sha512-Cy+BkqrFIYTHJCyKHJEPvbHE2kVQEP6PKbOHJ8ztRGTAhvHuUnCwDaKVb13OwRFZ0QNUk1QvGTDdgWSMbuMtKw==} + recharts@2.15.4: + resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==} engines: {node: '>=14'} peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} - regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} regexparam@1.3.0: resolution: {integrity: sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==} engines: {node: '>=6'} - remeda@1.47.2: - resolution: {integrity: sha512-A+fyXmIB4kEHlQk5g1tCUufEh2dT6v2muEhZox+ysCErNiotG6nv2gwez2JFo3T+yhA5+OR5D8w40RhnCeqzkw==} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -4766,87 +5462,87 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + rollup@4.50.2: + resolution: {integrity: sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + sass@1.93.2: + resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} + engines: {node: '>=14.0.0'} + hasBin: true - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} selderee@0.11.0: resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true - server-only@0.0.1: - resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} - set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4855,17 +5551,21 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} - short-unique-id@5.2.0: - resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} - hasBin: true + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -4873,121 +5573,62 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - socket.io-adapter@2.5.4: - resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==} - - socket.io-client@4.7.3: - resolution: {integrity: sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==} - engines: {node: '>=10.0.0'} - - socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} - - socket.io@4.7.3: - resolution: {integrity: sha512-SE+UIQXBQE+GPG2oszWMlsEmWtHVqw/h1VrYJGK5/MC7CH5p58N448HwIrtREcvR4jfdOJAY4ieQfxMr55qbbw==} - engines: {node: '>=10.2.0'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sonner@1.3.1: - resolution: {integrity: sha512-+rOAO56b2eI3q5BtgljERSn2umRk63KFIvgb2ohbZ5X+Eb5u+a/7/0ZgswYqgBMg8dyl7n6OXd9KasA8QF9ToA==} + sonner@2.0.7: + resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - sonner@1.4.41: - resolution: {integrity: sha512-uG511ggnnsw6gcn/X+YKkWPo5ep9il9wYi3QJxHsYe7yTZ4+cOd1wuodOUmOpFuXL+/RE3R04LczdNCDygTDgQ==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - string-ts@2.2.0: - resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-ts@2.3.1: + resolution: {integrity: sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==} - string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} - strip-ansi@3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -4996,249 +5637,198 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - stripe@14.25.0: - resolution: {integrity: sha512-wQS3GNMofCXwH8TSje8E1SE8zr6ODiGtHQgPtO95p9Mb4FhKC9jvXR2NUTpZ9ZINlckJcFidCmaTFV4P6vsb9g==} + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + + stripe@18.5.0: + resolution: {integrity: sha512-Hp+wFiEQtCB0LlNgcFh5uVyKznpDjzyUZ+CNVEf+I3fhlYvh7rZruIg+jOwzJRCpy0ZTPMjlzm7J2/M2N6d+DA==} engines: {node: '>=12.*'} + peerDependencies: + '@types/node': '>=12.x.x' + peerDependenciesMeta: + '@types/node': + optional: true - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + 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 - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - - supports-color@2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - tailwind-merge@2.2.0: - resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwind-merge@2.2.2: - resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==} + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: - tailwindcss: '>=3.0.0 || insiders' - - tailwindcss@3.4.0: - resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} - engines: {node: '>=14.0.0'} - hasBin: true - - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + tailwindcss: '>=3.0.0 || insiders' - terser@5.28.1: - resolution: {integrity: sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==} - engines: {node: '>=10'} - hasBin: true + tailwindcss@4.1.13: + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + throttleit@2.1.0: + resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} + engines: {node: '>=18'} - tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinypool@1.0.1: - resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@3.0.0: - resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} + tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tree-cli@0.6.7: - resolution: {integrity: sha512-jfnB5YKY6Glf6bsFmQ9W97TtkPVLnHsjOR6ZdRf4zhyFRQeLheasvzE5XBJI2Hxt7ZyMyIbXUV7E2YPZbixgtA==} - engines: {node: '>=8.10.9'} - hasBin: true - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' - ts-declaration-location@1.0.4: - resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} peerDependencies: typescript: '>=4.0.0' - ts-essentials@9.4.1: - resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} + ts-essentials@10.1.1: + resolution: {integrity: sha512-4aTB7KLHKmUvkjNj8V+EdnmuVTiECzn3K+zIbRthumvHu+j44x3w63xpfs0JL3NGIzGXqoQ7AV591xHO+XrOTw==} peerDependencies: - typescript: '>=4.1.0' + typescript: '>=4.5.0' peerDependenciesMeta: typescript: optional: true - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-pattern@5.9.0: + resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} - ts-pattern@5.4.0: - resolution: {integrity: sha512-hgfOMfjlrARCnYtGD/xEAkFHDXuSyuqjzFSltyQCbN689uNvoQL20TVN2XFcLMjfNuwSsQGU+xtH6MrjIwhwUg==} + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.0.1: - resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==} + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} + engines: {node: '>=18.0.0'} + hasBin: true - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tw-animate-css@1.3.8: + resolution: {integrity: sha512-Qrk3PZ7l7wUcGYhwZloqfkWCmaXZAoqjkdbIDvzfGshwGtexa/DAs9koXxIkrpEasyevandomzCBAV1Yyop5rw==} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} - typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true + typescript-eslint@8.50.0: + resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + unplugin@2.1.0: + resolution: {integrity: sha512-us4j03/499KhbGP8BU7Hrzrgseo+KdfJYWcbcajCOqsAyb8Gk0Yn2kiUIcZISYCb1JFaZfIuG3b42HmguVOKCQ==} + engines: {node: '>=18.12.0'} + + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5246,105 +5836,132 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - use-callback-ref@1.3.0: - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 19.2.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - use-intl@3.26.3: - resolution: {integrity: sha512-yY0a2YseO17cKwHA9M6fcpiEJ2Uo81DEU0NOUxNTp6lJVNOuI6nULANPVVht6IFdrYFtlsMmMoc97+Eq9/Tnng==} + use-debounce@10.0.6: + resolution: {integrity: sha512-C5OtPyhAZgVoteO9heXMTdW7v/IbFI+8bSVKYCJrSmiWWCLsbUxiBSp4t9v0hNBTGY97bT72ydDIDyGSFWfwXg==} + engines: {node: '>= 16.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + react: '*' + + use-deep-compare@1.3.0: + resolution: {integrity: sha512-94iG+dEdEP/Sl3WWde+w9StIunlV8Dgj+vkt5wTwMoFQLaijiEZSXXy8KtcStpmEDtIptRJiNeD4ACTtVvnIKA==} + peerDependencies: + react: '>=16.8.0' - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + use-intl@4.3.9: + resolution: {integrity: sha512-bZu+h13HIgOvsoGleQtUe4E6gM49CRm+AH36KnJVB/qb1+Beo7jr7HNrR8YWH8oaOkQfGNm6vh0HTepxng8UTg==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 19.2.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - validator@13.11.0: - resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} engines: {node: '>= 0.10'} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + vaul@1.1.2: + resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - victory-vendor@36.9.0: - resolution: {integrity: sha512-n1A0J1xgwHb5nh56M0d8XlQabMCeTktvEqqr5WNAHspWEsVVGGaaaRg0TcQUtyC1akX0Cox1lMZdIv0Jl7o0ew==} + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} - vite-node@2.0.5: - resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} - engines: {node: ^18.0.0 || >=20.0.0} + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@5.0.12: - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@7.1.5: + resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.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 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true - vitest-mock-extended@1.3.1: - resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} + vitest-mock-extended@3.1.0: + resolution: {integrity: sha512-vCM0VkuocOUBwwqwV7JB7YStw07pqeKvEIrZnR8l3PtwYi6rAAJAyJACeC1UYNfbQWi85nz7EdiXWBFI5hll2g==} peerDependencies: typescript: 3.x || 4.x || 5.x - vitest: '>=0.31.1' + vitest: '>=3.0.0' - vitest@2.0.5: - resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} - engines: {node: ^18.0.0 || >=20.0.0} + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.0.5 - '@vitest/ui': 2.0.5 + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/debug': + optional: true '@types/node': optional: true '@vitest/browser': @@ -5356,42 +5973,29 @@ packages: jsdom: optional: true - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.90.3: - resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} - which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} - which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} which@2.0.2: @@ -5404,28 +6008,9 @@ packages: engines: {node: '>=8'} hasBin: true - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} xlsx@https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz: resolution: {tarball: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz} @@ -5433,1989 +6018,2149 @@ packages: engines: {node: '>=0.8'} hasBin: true - xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 -snapshots: + zod@4.1.9: + resolution: {integrity: sha512-HI32jTq0AUAC125z30E8bQNz0RQ+9Uc+4J7V97gLYjZVKRjeydPgGt6dvQzFrav7MYOUGFqqOGiHpA/fdbd0cQ==} - '@aashutoshrathi/word-wrap@1.2.6': {} + zod@4.2.1: + resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} - '@alloc/quick-lru@5.2.0': {} +snapshots: - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@alloc/quick-lru@5.2.0': {} '@auth/core@0.18.0': dependencies: - '@panva/hkdf': 1.1.1 + '@panva/hkdf': 1.2.1 cookie: 0.5.0 - jose: 4.15.5 - oauth4webapi: 2.10.3 + jose: 4.15.9 + oauth4webapi: 2.17.0 preact: 10.11.3 preact-render-to-string: 5.2.3(preact@10.11.3) - '@auth/core@0.18.4': + '@auth/core@0.40.0': dependencies: - '@panva/hkdf': 1.1.1 - cookie: 0.6.0 - jose: 5.1.3 - oauth4webapi: 2.10.3 - preact: 10.11.3 - preact-render-to-string: 5.2.3(preact@10.11.3) + '@panva/hkdf': 1.2.1 + jose: 6.1.0 + oauth4webapi: 3.8.1 + preact: 10.24.3 + preact-render-to-string: 6.5.11(preact@10.24.3) - '@auth/prisma-adapter@1.0.5(@prisma/client@5.19.1(prisma@5.19.1))': + '@auth/prisma-adapter@1.0.5(@prisma/client@6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2))': dependencies: '@auth/core': 0.18.0 - '@prisma/client': 5.19.1(prisma@5.19.1) + '@prisma/client': 6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2) transitivePeerDependencies: - nodemailer - '@aws-crypto/ie11-detection@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/sha256-browser@3.0.0': - dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-locate-window': 3.535.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-crypto/sha256-js@3.0.0': - dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 - tslib: 1.14.1 - - '@aws-crypto/supports-web-crypto@3.0.0': - dependencies: - tslib: 1.14.1 - - '@aws-crypto/util@3.0.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - - '@aws-sdk/client-ses@3.554.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/core': 3.554.0 - '@aws-sdk/credential-provider-node': 3.554.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.540.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.540.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-locate-window': 3.873.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.887.0 '@smithy/util-utf8': 2.3.0 - '@smithy/util-waiter': 2.2.0 - tslib: 2.6.2 + tslib: 2.8.1 + + '@aws-sdk/client-ses@3.890.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-node': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 + '@smithy/util-waiter': 4.1.1 + tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.554.0(@aws-sdk/credential-provider-node@3.554.0)': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/core': 3.554.0 - '@aws-sdk/credential-provider-node': 3.554.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.540.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.540.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@aws-sdk/client-sso@3.890.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.554.0': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.554.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.540.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.540.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@aws-sdk/core@3.890.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws-sdk/xml-builder': 3.887.0 + '@smithy/core': 3.11.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-utf8': 4.1.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.890.0': + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.890.0': + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.890.0': + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/credential-provider-env': 3.890.0 + '@aws-sdk/credential-provider-http': 3.890.0 + '@aws-sdk/credential-provider-process': 3.890.0 + '@aws-sdk/credential-provider-sso': 3.890.0 + '@aws-sdk/credential-provider-web-identity': 3.890.0 + '@aws-sdk/nested-clients': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.554.0(@aws-sdk/credential-provider-node@3.554.0)': - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.554.0 - '@aws-sdk/credential-provider-node': 3.554.0 - '@aws-sdk/middleware-host-header': 3.535.0 - '@aws-sdk/middleware-logger': 3.535.0 - '@aws-sdk/middleware-recursion-detection': 3.535.0 - '@aws-sdk/middleware-user-agent': 3.540.0 - '@aws-sdk/region-config-resolver': 3.535.0 - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.540.0 - '@aws-sdk/util-user-agent-browser': 3.535.0 - '@aws-sdk/util-user-agent-node': 3.535.0 - '@smithy/config-resolver': 2.2.0 - '@smithy/core': 1.4.2 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/hash-node': 2.2.0 - '@smithy/invalid-dependency': 2.2.0 - '@smithy/middleware-content-length': 2.2.0 - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/middleware-stack': 2.2.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-body-length-browser': 2.2.0 - '@smithy/util-body-length-node': 2.3.0 - '@smithy/util-defaults-mode-browser': 2.2.1 - '@smithy/util-defaults-mode-node': 2.3.1 - '@smithy/util-endpoints': 1.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@aws-sdk/credential-provider-node@3.890.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.890.0 + '@aws-sdk/credential-provider-http': 3.890.0 + '@aws-sdk/credential-provider-ini': 3.890.0 + '@aws-sdk/credential-provider-process': 3.890.0 + '@aws-sdk/credential-provider-sso': 3.890.0 + '@aws-sdk/credential-provider-web-identity': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.554.0': - dependencies: - '@smithy/core': 1.4.2 - '@smithy/protocol-http': 3.3.0 - '@smithy/signature-v4': 2.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-env@3.535.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-http@3.552.0': - dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/property-provider': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 - - '@aws-sdk/credential-provider-ini@3.554.0(@aws-sdk/credential-provider-node@3.554.0)': - dependencies: - '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/credential-provider-web-identity': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@aws-sdk/credential-provider-process@3.890.0': + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.890.0': + dependencies: + '@aws-sdk/client-sso': 3.890.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/token-providers': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.890.0': + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/nested-clients': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - aws-crt - '@aws-sdk/credential-provider-node@3.554.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.535.0 - '@aws-sdk/credential-provider-http': 3.552.0 - '@aws-sdk/credential-provider-ini': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/credential-provider-process': 3.535.0 - '@aws-sdk/credential-provider-sso': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/credential-provider-web-identity': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/types': 3.535.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@aws-sdk/middleware-host-header@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws/lambda-invoke-store': 0.0.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.890.0': + dependencies: + '@aws-sdk/core': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@smithy/core': 3.11.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.890.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/region-config-resolver': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.890.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.890.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-retry': 4.2.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.2 + '@smithy/util-defaults-mode-node': 4.1.2 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.535.0': + '@aws-sdk/region-config-resolver@3.890.0': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.554.0(@aws-sdk/credential-provider-node@3.554.0)': + '@aws-sdk/token-providers@3.890.0': dependencies: - '@aws-sdk/client-sso': 3.554.0 - '@aws-sdk/token-providers': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@aws-sdk/core': 3.890.0 + '@aws-sdk/nested-clients': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.554.0(@aws-sdk/credential-provider-node@3.554.0)': + '@aws-sdk/types@3.887.0': dependencies: - '@aws-sdk/client-sts': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.890.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-endpoints': 3.1.2 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.873.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.890.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.890.0 + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.887.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.0.1': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.2 + lru-cache: 5.1.1 + semver: 6.3.1 - '@aws-sdk/middleware-host-header@3.535.0': + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color - '@aws-sdk/middleware-logger@3.535.0': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} - '@aws-sdk/middleware-recursion-detection@3.535.0': + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 - '@aws-sdk/middleware-user-agent@3.540.0': + '@babel/parser@7.28.4': dependencies: - '@aws-sdk/types': 3.535.0 - '@aws-sdk/util-endpoints': 3.540.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@babel/types': 7.28.4 - '@aws-sdk/region-config-resolver@3.535.0': + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - '@aws-sdk/token-providers@3.554.0(@aws-sdk/credential-provider-node@3.554.0)': + '@babel/traverse@7.28.4': dependencies: - '@aws-sdk/client-sso-oidc': 3.554.0(@aws-sdk/credential-provider-node@3.554.0) - '@aws-sdk/types': 3.535.0 - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 transitivePeerDependencies: - - '@aws-sdk/credential-provider-node' - - aws-crt + - supports-color - '@aws-sdk/types@3.535.0': + '@babel/types@7.28.4': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 - '@aws-sdk/util-endpoints@3.540.0': + '@clack/core@0.3.5': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - '@smithy/util-endpoints': 1.2.0 - tslib: 2.6.2 + picocolors: 1.1.1 + sisteransi: 1.0.5 - '@aws-sdk/util-locate-window@3.535.0': + '@clack/prompts@0.8.2': dependencies: - tslib: 2.6.2 + '@clack/core': 0.3.5 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@date-fns/tz@1.4.1': {} - '@aws-sdk/util-user-agent-browser@3.535.0': + '@dnd-kit/accessibility@3.1.1(react@19.2.3)': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 + react: 19.2.3 + tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.535.0': + '@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@aws-sdk/types': 3.535.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@dnd-kit/accessibility': 3.1.1(react@19.2.3) + '@dnd-kit/utilities': 3.2.2(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tslib: 2.8.1 - '@aws-sdk/util-utf8-browser@3.259.0': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': dependencies: - tslib: 2.6.2 + '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@dnd-kit/utilities': 3.2.2(react@19.2.3) + react: 19.2.3 + tslib: 2.8.1 - '@babel/code-frame@7.23.5': + '@dnd-kit/utilities@3.2.2(react@19.2.3)': dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + react: 19.2.3 + tslib: 2.8.1 - '@babel/helper-validator-identifier@7.22.20': {} + '@effect/language-service@0.40.0': {} - '@babel/highlight@7.23.4': + '@emnapi/core@1.5.0': dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true - '@babel/runtime@7.24.0': + '@emnapi/runtime@1.5.0': dependencies: - regenerator-runtime: 0.14.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.7.0': + dependencies: + tslib: 2.8.1 + optional: true - '@emotion/is-prop-valid@0.8.8': + '@emnapi/wasi-threads@1.1.0': dependencies: - '@emotion/memoize': 0.7.4 + tslib: 2.8.1 optional: true - '@emotion/memoize@0.7.4': + '@esbuild/aix-ppc64@0.25.9': optional: true - '@esbuild/aix-ppc64@0.19.11': + '@esbuild/android-arm64@0.25.9': optional: true - '@esbuild/android-arm64@0.19.11': + '@esbuild/android-arm@0.25.9': optional: true - '@esbuild/android-arm@0.19.11': + '@esbuild/android-x64@0.25.9': optional: true - '@esbuild/android-x64@0.19.11': + '@esbuild/darwin-arm64@0.25.9': optional: true - '@esbuild/darwin-arm64@0.19.11': + '@esbuild/darwin-x64@0.25.9': optional: true - '@esbuild/darwin-x64@0.19.11': + '@esbuild/freebsd-arm64@0.25.9': optional: true - '@esbuild/freebsd-arm64@0.19.11': + '@esbuild/freebsd-x64@0.25.9': optional: true - '@esbuild/freebsd-x64@0.19.11': + '@esbuild/linux-arm64@0.25.9': optional: true - '@esbuild/linux-arm64@0.19.11': + '@esbuild/linux-arm@0.25.9': optional: true - '@esbuild/linux-arm@0.19.11': + '@esbuild/linux-ia32@0.25.9': optional: true - '@esbuild/linux-ia32@0.19.11': + '@esbuild/linux-loong64@0.25.9': optional: true - '@esbuild/linux-loong64@0.19.11': + '@esbuild/linux-mips64el@0.25.9': optional: true - '@esbuild/linux-mips64el@0.19.11': + '@esbuild/linux-ppc64@0.25.9': optional: true - '@esbuild/linux-ppc64@0.19.11': + '@esbuild/linux-riscv64@0.25.9': optional: true - '@esbuild/linux-riscv64@0.19.11': + '@esbuild/linux-s390x@0.25.9': optional: true - '@esbuild/linux-s390x@0.19.11': + '@esbuild/linux-x64@0.25.9': optional: true - '@esbuild/linux-x64@0.19.11': + '@esbuild/netbsd-arm64@0.25.9': optional: true - '@esbuild/netbsd-x64@0.19.11': + '@esbuild/netbsd-x64@0.25.9': optional: true - '@esbuild/openbsd-x64@0.19.11': + '@esbuild/openbsd-arm64@0.25.9': optional: true - '@esbuild/sunos-x64@0.19.11': + '@esbuild/openbsd-x64@0.25.9': optional: true - '@esbuild/win32-arm64@0.19.11': + '@esbuild/openharmony-arm64@0.25.9': optional: true - '@esbuild/win32-ia32@0.19.11': + '@esbuild/sunos-x64@0.25.9': optional: true - '@esbuild/win32-x64@0.19.11': + '@esbuild/win32-arm64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@esbuild/win32-ia32@0.25.9': + optional: true + + '@esbuild/win32-x64@0.25.9': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.5.1))': dependencies: - eslint: 8.57.0 + eslint: 9.39.2(jiti@2.5.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.12.1': {} - '@eslint-react/ast@1.14.3(eslint@8.57.0)(typescript@5.4.5)': + '@eslint-react/ast@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - birecord: 0.1.1 - string-ts: 2.2.0 - ts-pattern: 5.4.0 + '@eslint-react/eff': 2.3.13 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + string-ts: 2.3.1 + typescript: 5.9.2 transitivePeerDependencies: - - eslint - supports-color - - typescript - '@eslint-react/core@1.14.3(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) + '@eslint-react/core@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': + dependencies: + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) birecord: 0.1.1 - short-unique-id: 5.2.0 - ts-pattern: 5.4.0 + eslint: 9.39.2(jiti@2.5.1) + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - - eslint - supports-color - - typescript - '@eslint-react/eslint-plugin@1.14.3(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - eslint-plugin-react-debug: 1.14.3(eslint@8.57.0)(typescript@5.4.5) - eslint-plugin-react-dom: 1.14.3(eslint@8.57.0)(typescript@5.4.5) - eslint-plugin-react-hooks-extra: 1.14.3(eslint@8.57.0)(typescript@5.4.5) - eslint-plugin-react-naming-convention: 1.14.3(eslint@8.57.0)(typescript@5.4.5) - eslint-plugin-react-web-api: 1.14.3(eslint@8.57.0)(typescript@5.4.5) - eslint-plugin-react-x: 1.14.3(eslint@8.57.0)(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + '@eslint-react/eff@2.3.13': {} + + '@eslint-react/eslint-plugin@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': + dependencies: + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + eslint-plugin-react-dom: 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-hooks-extra: 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-naming-convention: 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-web-api: 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint-plugin-react-x: 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@eslint-react/jsx@1.14.3(eslint@8.57.0)(typescript@5.4.5)': + '@eslint-react/shared@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - ts-pattern: 5.4.0 + '@eslint-react/eff': 2.3.13 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + ts-pattern: 5.9.0 + typescript: 5.9.2 + zod: 4.2.1 transitivePeerDependencies: - - eslint - supports-color - - typescript - '@eslint-react/shared@1.14.3(eslint@8.57.0)(typescript@5.4.5)': + '@eslint-react/var@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-react/tools': 1.14.3 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - picomatch: 4.0.2 + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - - eslint - supports-color - - typescript - - '@eslint-react/tools@1.14.3': {} - '@eslint-react/types@1.14.3(eslint@8.57.0)(typescript@5.4.5)': + '@eslint/config-array@0.21.1': dependencies: - '@eslint-react/tools': 1.14.3 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.2 transitivePeerDependencies: - - eslint - supports-color - - typescript - '@eslint-react/var@1.14.3(eslint@8.57.0)(typescript@5.4.5)': + '@eslint/config-helpers@0.4.2': dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - ts-pattern: 5.4.0 - transitivePeerDependencies: - - eslint - - supports-color - - typescript + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.3.6 - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.1 - import-fresh: 3.3.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@8.57.0': {} + '@eslint/js@9.39.2': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@fastify/busboy@2.1.1': {} + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/dom': 1.7.4 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@floating-ui/react@0.26.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@floating-ui/utils': 0.2.10 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tabbable: 6.2.0 + + '@floating-ui/react@0.27.16(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@floating-ui/utils': 0.2.10 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.10': {} + + '@formatjs/ecma402-abstract@2.3.4': + dependencies: + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/intl-localematcher': 0.6.1 + decimal.js: 10.6.0 + tslib: 2.8.1 + + '@formatjs/fast-memoize@2.2.7': + dependencies: + tslib: 2.8.1 + + '@formatjs/icu-messageformat-parser@2.11.2': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/icu-skeleton-parser': 1.8.14 + tslib: 2.8.1 + + '@formatjs/icu-skeleton-parser@1.8.14': + dependencies: + '@formatjs/ecma402-abstract': 2.3.4 + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.5.10': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.6.1': + dependencies: + tslib: 2.8.1 + + '@headlessui/react@2.2.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/focus': 3.21.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@tanstack/react-virtual': 3.13.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + use-sync-external-store: 1.5.0(react@19.2.3) + + '@heroicons/react@2.2.0(react@19.2.3)': + dependencies: + react: 19.2.3 + + '@hookform/resolvers@5.2.2(react-hook-form@7.62.0(react@19.2.3))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.62.0(react@19.2.3) + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true - '@fastify/busboy@2.1.0': {} + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true - '@floating-ui/core@1.5.0': - dependencies: - '@floating-ui/utils': 0.1.6 + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true - '@floating-ui/dom@1.5.3': - dependencies: - '@floating-ui/core': 1.5.0 - '@floating-ui/utils': 0.1.6 + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true - '@floating-ui/react-dom@2.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@img/sharp-wasm32@0.34.5': dependencies: - '@floating-ui/dom': 1.5.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@emnapi/runtime': 1.7.0 + optional: true - '@floating-ui/utils@0.1.6': {} + '@img/sharp-win32-arm64@0.34.5': + optional: true - '@formatjs/ecma402-abstract@2.3.1': - dependencies: - '@formatjs/fast-memoize': 2.2.5 - '@formatjs/intl-localematcher': 0.5.9 - decimal.js: 10.4.3 - tslib: 2.6.2 + '@img/sharp-win32-ia32@0.34.5': + optional: true - '@formatjs/fast-memoize@2.2.5': - dependencies: - tslib: 2.6.2 + '@img/sharp-win32-x64@0.34.5': + optional: true - '@formatjs/icu-messageformat-parser@2.9.7': + '@isaacs/fs-minipass@4.0.1': dependencies: - '@formatjs/ecma402-abstract': 2.3.1 - '@formatjs/icu-skeleton-parser': 1.8.11 - tslib: 2.6.2 + minipass: 7.1.2 - '@formatjs/icu-skeleton-parser@1.8.11': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@formatjs/ecma402-abstract': 2.3.1 - tslib: 2.6.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - '@formatjs/intl-localematcher@0.5.9': + '@jridgewell/remapping@2.3.5': dependencies: - tslib: 2.6.2 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@headlessui/react@1.7.18(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@tanstack/react-virtual': 3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - client-only: 0.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@jridgewell/resolve-uri@3.1.2': {} - '@heroicons/react@2.1.3(react@18.2.0)': - dependencies: - react: 18.2.0 + '@jridgewell/sourcemap-codec@1.5.5': {} - '@hookform/resolvers@3.3.4(react-hook-form@7.51.3(react@18.2.0))': + '@jridgewell/trace-mapping@0.3.31': dependencies: - react-hook-form: 7.51.3(react@18.2.0) + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - '@humanwhocodes/config-array@0.11.14': + '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 + '@tybys/wasm-util': 0.10.1 + optional: true - '@humanwhocodes/module-importer@1.0.1': {} + '@next/env@15.1.6': {} - '@humanwhocodes/object-schema@2.0.2': {} + '@next/env@16.1.1': {} - '@isaacs/cliui@8.0.2': + '@next/eslint-plugin-next@16.0.1': dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + fast-glob: 3.3.1 - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@next/swc-darwin-arm64@16.1.1': + optional: true - '@jridgewell/resolve-uri@3.1.1': {} + '@next/swc-darwin-x64@16.1.1': + optional: true - '@jridgewell/set-array@1.2.1': {} + '@next/swc-linux-arm64-gnu@16.1.1': + optional: true - '@jridgewell/source-map@0.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@next/swc-linux-arm64-musl@16.1.1': + optional: true - '@jridgewell/sourcemap-codec@1.5.0': {} + '@next/swc-linux-x64-gnu@16.1.1': + optional: true - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.0 + '@next/swc-linux-x64-musl@16.1.1': + optional: true - '@next/env@14.1.0': {} + '@next/swc-win32-arm64-msvc@16.1.1': + optional: true - '@next/env@14.2.23': {} + '@next/swc-win32-x64-msvc@16.1.1': + optional: true - '@next/eslint-plugin-next@14.0.1': + '@nodelib/fs.scandir@2.1.5': dependencies: - glob: 7.1.7 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - '@next/swc-darwin-arm64@14.1.0': - optional: true + '@nodelib/fs.stat@2.0.5': {} - '@next/swc-darwin-arm64@14.2.23': - optional: true + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 - '@next/swc-darwin-x64@14.1.0': - optional: true + '@nolyfill/is-core-module@1.0.39': {} - '@next/swc-darwin-x64@14.2.23': - optional: true + '@panva/hkdf@1.2.1': {} - '@next/swc-linux-arm64-gnu@14.1.0': + '@parcel/watcher-android-arm64@2.5.1': optional: true - '@next/swc-linux-arm64-gnu@14.2.23': + '@parcel/watcher-darwin-arm64@2.5.1': optional: true - '@next/swc-linux-arm64-musl@14.1.0': + '@parcel/watcher-darwin-x64@2.5.1': optional: true - '@next/swc-linux-arm64-musl@14.2.23': + '@parcel/watcher-freebsd-x64@2.5.1': optional: true - '@next/swc-linux-x64-gnu@14.1.0': + '@parcel/watcher-linux-arm-glibc@2.5.1': optional: true - '@next/swc-linux-x64-gnu@14.2.23': + '@parcel/watcher-linux-arm-musl@2.5.1': optional: true - '@next/swc-linux-x64-musl@14.1.0': + '@parcel/watcher-linux-arm64-glibc@2.5.1': optional: true - '@next/swc-linux-x64-musl@14.2.23': + '@parcel/watcher-linux-arm64-musl@2.5.1': optional: true - '@next/swc-win32-arm64-msvc@14.1.0': + '@parcel/watcher-linux-x64-glibc@2.5.1': optional: true - '@next/swc-win32-arm64-msvc@14.2.23': + '@parcel/watcher-linux-x64-musl@2.5.1': optional: true - '@next/swc-win32-ia32-msvc@14.1.0': + '@parcel/watcher-win32-arm64@2.5.1': optional: true - '@next/swc-win32-ia32-msvc@14.2.23': + '@parcel/watcher-win32-ia32@2.5.1': optional: true - '@next/swc-win32-x64-msvc@14.1.0': + '@parcel/watcher-win32-x64@2.5.1': optional: true - '@next/swc-win32-x64-msvc@14.2.23': + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 optional: true - '@nodelib/fs.scandir@2.1.5': + '@pivanov/utils@0.0.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@nodelib/fs.stat@2.0.5': {} + '@preact/signals-core@1.12.1': {} - '@nodelib/fs.walk@1.2.8': + '@preact/signals@1.3.2(preact@10.27.2)': dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - '@one-ini/wasm@0.1.1': {} - - '@opentelemetry/api@1.9.0': - optional: true - - '@panva/hkdf@1.1.1': {} + '@preact/signals-core': 1.12.1 + preact: 10.27.2 - '@pkgjs/parseargs@0.11.0': - optional: true - - '@prisma/client@5.19.1(prisma@5.19.1)': + '@prisma/client@6.16.2(prisma@6.16.2(typescript@5.9.2))(typescript@5.9.2)': optionalDependencies: - prisma: 5.19.1 + prisma: 6.16.2(typescript@5.9.2) + typescript: 5.9.2 - '@prisma/debug@5.19.1': {} + '@prisma/config@6.16.2': + dependencies: + c12: 3.1.0 + deepmerge-ts: 7.1.5 + effect: 3.16.12 + empathic: 2.0.0 + transitivePeerDependencies: + - magicast - '@prisma/engines-version@5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3': {} + '@prisma/debug@6.16.2': {} - '@prisma/engines@5.19.1': - dependencies: - '@prisma/debug': 5.19.1 - '@prisma/engines-version': 5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3 - '@prisma/fetch-engine': 5.19.1 - '@prisma/get-platform': 5.19.1 + '@prisma/engines-version@6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43': {} - '@prisma/fetch-engine@5.19.1': + '@prisma/engines@6.16.2': dependencies: - '@prisma/debug': 5.19.1 - '@prisma/engines-version': 5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3 - '@prisma/get-platform': 5.19.1 + '@prisma/debug': 6.16.2 + '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43 + '@prisma/fetch-engine': 6.16.2 + '@prisma/get-platform': 6.16.2 - '@prisma/get-platform@5.19.1': + '@prisma/fetch-engine@6.16.2': dependencies: - '@prisma/debug': 5.19.1 - - '@radix-ui/colors@1.0.1': {} + '@prisma/debug': 6.16.2 + '@prisma/engines-version': 6.16.0-7.1c57fdcd7e44b29b9313256c76699e91c3ac3c43 + '@prisma/get-platform': 6.16.2 - '@radix-ui/number@1.0.1': + '@prisma/get-platform@6.16.2': dependencies: - '@babel/runtime': 7.24.0 + '@prisma/debug': 6.16.2 - '@radix-ui/primitive@1.0.0': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/number@1.1.1': {} - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-compose-refs@1.0.0(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - - '@radix-ui/react-context-menu@2.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-context@1.0.0(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-context@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 - - '@radix-ui/react-dialog@1.0.0(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-context': 1.0.0(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.0(react@18.2.0) - '@radix-ui/react-portal': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.0(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.78)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0) + '@types/react': 19.2.2 + + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-direction@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.78 - - '@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-focus-guards@1.0.0(react@18.2.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.78)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-hover-card@1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-icons@1.3.0(react@18.2.0)': - dependencies: - react: 18.2.0 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-id@1.0.0(react@18.2.0)': + '@radix-ui/react-icons@1.3.2(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) - react: 18.2.0 + react: 19.2.3 - '@radix-ui/react-id@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-label@2.0.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-menubar@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-portal@1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/rect': 1.1.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-presence@1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-primitive@1.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-slot': 1.0.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-progress@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-select@2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.78)(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + aria-hidden: 1.2.6 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-slider@1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-slot@1.0.0(react@18.2.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - react: 18.2.0 - - '@radix-ui/react-slot@1.0.2(@types/react@18.2.78)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 - - '@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-tooltip@1.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - - '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.2 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.2 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - react: 18.2.0 + react: 19.2.3 + use-sync-external-store: 1.5.0(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + react: 19.2.3 + optionalDependencies: + '@types/react': 19.2.2 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + '@radix-ui/rect': 1.1.1 + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.2)(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + react: 19.2.3 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/rect': 1.0.1 - react: 18.2.0 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) - '@radix-ui/react-use-size@1.0.1(@types/react@18.2.78)(react@18.2.0)': + '@radix-ui/rect@1.1.1': {} + + '@react-aria/focus@3.21.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.78 + '@react-aria/interactions': 3.25.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.0(react@19.2.3) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@react-aria/interactions@3.25.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/utils': 3.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/flags': 3.1.2 + '@react-types/shared': 3.32.0(react@19.2.3) + '@swc/helpers': 0.5.17 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@react-aria/ssr@3.9.10(react@19.2.3)': + dependencies: + '@swc/helpers': 0.5.17 + react: 19.2.3 - '@radix-ui/rect@1.0.1': + '@react-aria/utils@3.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@babel/runtime': 7.24.0 + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-stately/flags': 3.1.2 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.0(react@19.2.3) + '@swc/helpers': 0.5.17 + clsx: 2.1.1 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-email/body@0.0.7(react@18.2.0)': + '@react-email/body@0.1.0(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/button@0.0.14(react@18.2.0)': + '@react-email/button@0.2.0(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/code-block@0.0.3(react@18.2.0)': + '@react-email/code-block@0.1.0(react@19.2.3)': dependencies: - prismjs: 1.29.0 - react: 18.2.0 + prismjs: 1.30.0 + react: 19.2.3 - '@react-email/code-inline@0.0.1(react@18.2.0)': + '@react-email/code-inline@0.0.5(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/column@0.0.9(react@18.2.0)': + '@react-email/column@0.0.13(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/components@0.0.15(@types/react@18.2.78)(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0)': + '@react-email/components@0.5.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-email/body': 0.0.7(react@18.2.0) - '@react-email/button': 0.0.14(react@18.2.0) - '@react-email/code-block': 0.0.3(react@18.2.0) - '@react-email/code-inline': 0.0.1(react@18.2.0) - '@react-email/column': 0.0.9(react@18.2.0) - '@react-email/container': 0.0.11(react@18.2.0) - '@react-email/font': 0.0.5(react@18.2.0) - '@react-email/head': 0.0.7(react@18.2.0) - '@react-email/heading': 0.0.11(@types/react@18.2.78)(react@18.2.0) - '@react-email/hr': 0.0.7(react@18.2.0) - '@react-email/html': 0.0.7(react@18.2.0) - '@react-email/img': 0.0.7(react@18.2.0) - '@react-email/link': 0.0.7(react@18.2.0) - '@react-email/markdown': 0.0.8(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0) - '@react-email/preview': 0.0.8(react@18.2.0) - '@react-email/render': 0.0.12 - '@react-email/row': 0.0.7(react@18.2.0) - '@react-email/section': 0.0.11(react@18.2.0) - '@react-email/tailwind': 0.0.14(react@18.2.0) - '@react-email/text': 0.0.7(react@18.2.0) - react: 18.2.0 + '@react-email/body': 0.1.0(react@19.2.3) + '@react-email/button': 0.2.0(react@19.2.3) + '@react-email/code-block': 0.1.0(react@19.2.3) + '@react-email/code-inline': 0.0.5(react@19.2.3) + '@react-email/column': 0.0.13(react@19.2.3) + '@react-email/container': 0.0.15(react@19.2.3) + '@react-email/font': 0.0.9(react@19.2.3) + '@react-email/head': 0.0.12(react@19.2.3) + '@react-email/heading': 0.0.15(react@19.2.3) + '@react-email/hr': 0.0.11(react@19.2.3) + '@react-email/html': 0.0.11(react@19.2.3) + '@react-email/img': 0.0.11(react@19.2.3) + '@react-email/link': 0.0.12(react@19.2.3) + '@react-email/markdown': 0.0.15(react@19.2.3) + '@react-email/preview': 0.0.13(react@19.2.3) + '@react-email/render': 1.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-email/row': 0.0.12(react@19.2.3) + '@react-email/section': 0.0.16(react@19.2.3) + '@react-email/tailwind': 1.2.2(react@19.2.3) + '@react-email/text': 0.1.5(react@19.2.3) + react: 19.2.3 transitivePeerDependencies: - - '@types/react' - - react-email + - react-dom - '@react-email/container@0.0.11(react@18.2.0)': + '@react-email/container@0.0.15(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/font@0.0.5(react@18.2.0)': + '@react-email/font@0.0.9(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/head@0.0.7(react@18.2.0)': + '@react-email/head@0.0.12(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/heading@0.0.11(@types/react@18.2.78)(react@18.2.0)': + '@react-email/heading@0.0.15(react@19.2.3)': dependencies: - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - '@types/react' + react: 19.2.3 - '@react-email/hr@0.0.7(react@18.2.0)': + '@react-email/hr@0.0.11(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/html@0.0.7(react@18.2.0)': + '@react-email/html@0.0.11(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/img@0.0.7(react@18.2.0)': + '@react-email/img@0.0.11(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/link@0.0.7(react@18.2.0)': + '@react-email/link@0.0.12(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/markdown@0.0.8(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0)': + '@react-email/markdown@0.0.15(react@19.2.3)': dependencies: - md-to-react-email: 4.1.0(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-email + md-to-react-email: 5.0.5(react@19.2.3) + react: 19.2.3 - '@react-email/preview@0.0.8(react@18.2.0)': + '@react-email/preview@0.0.13(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 - '@react-email/render@0.0.12': + '@react-email/render@1.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: html-to-text: 9.0.5 - js-beautify: 1.14.11 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + prettier: 3.7.4 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-promise-suspense: 0.3.4 + + '@react-email/row@0.0.12(react@19.2.3)': + dependencies: + react: 19.2.3 + + '@react-email/section@0.0.16(react@19.2.3)': + dependencies: + react: 19.2.3 + + '@react-email/tailwind@1.2.2(react@19.2.3)': + dependencies: + react: 19.2.3 + + '@react-email/text@0.1.5(react@19.2.3)': + dependencies: + react: 19.2.3 - '@react-email/row@0.0.7(react@18.2.0)': + '@react-stately/flags@3.1.2': dependencies: - react: 18.2.0 + '@swc/helpers': 0.5.17 - '@react-email/section@0.0.11(react@18.2.0)': + '@react-stately/utils@3.10.8(react@19.2.3)': dependencies: - react: 18.2.0 + '@swc/helpers': 0.5.17 + react: 19.2.3 - '@react-email/tailwind@0.0.14(react@18.2.0)': + '@react-types/shared@3.32.0(react@19.2.3)': dependencies: - react: 18.2.0 + react: 19.2.3 + + '@remirror/core-constants@3.0.0': {} - '@react-email/text@0.0.7(react@18.2.0)': + '@rollup/pluginutils@5.3.0(rollup@4.50.2)': dependencies: - react: 18.2.0 + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.50.2 + + '@rollup/rollup-android-arm-eabi@4.50.2': + optional: true + + '@rollup/rollup-android-arm64@4.50.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.50.2': + optional: true + + '@rollup/rollup-darwin-x64@4.50.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.50.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.50.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.50.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.50.2': + optional: true - '@rollup/rollup-android-arm-eabi@4.9.6': + '@rollup/rollup-linux-arm64-gnu@4.50.2': optional: true - '@rollup/rollup-android-arm64@4.9.6': + '@rollup/rollup-linux-arm64-musl@4.50.2': optional: true - '@rollup/rollup-darwin-arm64@4.9.6': + '@rollup/rollup-linux-loong64-gnu@4.50.2': optional: true - '@rollup/rollup-darwin-x64@4.9.6': + '@rollup/rollup-linux-ppc64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.9.6': + '@rollup/rollup-linux-riscv64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.9.6': + '@rollup/rollup-linux-riscv64-musl@4.50.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.9.6': + '@rollup/rollup-linux-s390x-gnu@4.50.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.9.6': + '@rollup/rollup-linux-x64-gnu@4.50.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.9.6': + '@rollup/rollup-linux-x64-musl@4.50.2': optional: true - '@rollup/rollup-linux-x64-musl@4.9.6': + '@rollup/rollup-openharmony-arm64@4.50.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.9.6': + '@rollup/rollup-win32-arm64-msvc@4.50.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.9.6': + '@rollup/rollup-win32-ia32-msvc@4.50.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.9.6': + '@rollup/rollup-win32-x64-msvc@4.50.2': optional: true - '@rushstack/eslint-patch@1.5.1': {} + '@rtsao/scc@1.1.0': {} + + '@schummar/icu-type-parser@1.21.5': {} '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 selderee: 0.11.0 - '@sendgrid/client@8.1.3': + '@sendgrid/client@8.1.5': dependencies: '@sendgrid/helpers': 8.0.0 - axios: 1.6.8 + axios: 1.12.2 transitivePeerDependencies: - debug @@ -7423,381 +8168,425 @@ snapshots: dependencies: deepmerge: 4.3.1 - '@sendgrid/mail@8.1.3': + '@sendgrid/mail@8.1.5': dependencies: - '@sendgrid/client': 8.1.3 + '@sendgrid/client': 8.1.5 '@sendgrid/helpers': 8.0.0 transitivePeerDependencies: - debug - '@smithy/abort-controller@2.2.0': + '@smithy/abort-controller@4.1.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/config-resolver@2.2.0': + '@smithy/config-resolver@4.2.2': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-config-provider': 2.3.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 - '@smithy/core@1.4.2': + '@smithy/core@3.11.0': dependencies: - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-retry': 2.3.1 - '@smithy/middleware-serde': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 + '@smithy/middleware-serde': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 - '@smithy/credential-provider-imds@2.3.0': + '@smithy/credential-provider-imds@4.1.2': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - tslib: 2.6.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + tslib: 2.8.1 - '@smithy/fetch-http-handler@2.5.0': + '@smithy/fetch-http-handler@5.2.1': dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - tslib: 2.6.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + tslib: 2.8.1 - '@smithy/hash-node@2.2.0': + '@smithy/hash-node@4.1.1': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 - '@smithy/invalid-dependency@2.2.0': + '@smithy/invalid-dependency@4.1.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.1.0': + dependencies: + tslib: 2.8.1 - '@smithy/middleware-content-length@2.2.0': + '@smithy/middleware-content-length@4.1.1': dependencies: - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/middleware-endpoint@2.5.1': + '@smithy/middleware-endpoint@4.2.2': dependencies: - '@smithy/middleware-serde': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - '@smithy/url-parser': 2.2.0 - '@smithy/util-middleware': 2.2.0 - tslib: 2.6.2 + '@smithy/core': 3.11.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 - '@smithy/middleware-retry@2.3.1': + '@smithy/middleware-retry@4.2.2': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/service-error-classification': 2.1.5 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-retry': 2.2.0 - tslib: 2.6.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/service-error-classification': 4.1.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@types/uuid': 9.0.8 + tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-serde@2.3.0': + '@smithy/middleware-serde@4.1.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/middleware-stack@2.2.0': + '@smithy/middleware-stack@4.1.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/node-config-provider@2.3.0': + '@smithy/node-config-provider@4.2.2': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/shared-ini-file-loader': 2.4.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/node-http-handler@2.5.0': + '@smithy/node-http-handler@4.2.1': dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/querystring-builder': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/abort-controller': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/property-provider@2.2.0': + '@smithy/property-provider@4.1.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/protocol-http@3.3.0': + '@smithy/protocol-http@5.2.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/querystring-builder@2.2.0': + '@smithy/querystring-builder@4.1.1': dependencies: - '@smithy/types': 2.12.0 - '@smithy/util-uri-escape': 2.2.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + '@smithy/util-uri-escape': 4.1.0 + tslib: 2.8.1 - '@smithy/querystring-parser@2.2.0': + '@smithy/querystring-parser@4.1.1': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/service-error-classification@2.1.5': + '@smithy/service-error-classification@4.1.1': dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 4.5.0 - '@smithy/shared-ini-file-loader@2.4.0': + '@smithy/shared-ini-file-loader@4.2.0': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/signature-v4@2.3.0': + '@smithy/signature-v4@5.2.1': dependencies: - '@smithy/is-array-buffer': 2.2.0 - '@smithy/types': 2.12.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-middleware': 2.2.0 - '@smithy/util-uri-escape': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@smithy/is-array-buffer': 4.1.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-uri-escape': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 - '@smithy/smithy-client@2.5.1': + '@smithy/smithy-client@4.6.2': dependencies: - '@smithy/middleware-endpoint': 2.5.1 - '@smithy/middleware-stack': 2.2.0 - '@smithy/protocol-http': 3.3.0 - '@smithy/types': 2.12.0 - '@smithy/util-stream': 2.2.0 - tslib: 2.6.2 + '@smithy/core': 3.11.0 + '@smithy/middleware-endpoint': 4.2.2 + '@smithy/middleware-stack': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.1 + tslib: 2.8.1 - '@smithy/types@2.12.0': + '@smithy/types@4.5.0': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 - '@smithy/url-parser@2.2.0': + '@smithy/url-parser@4.1.1': dependencies: - '@smithy/querystring-parser': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/querystring-parser': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/util-base64@2.3.0': + '@smithy/util-base64@4.1.0': dependencies: - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 - '@smithy/util-body-length-browser@2.2.0': + '@smithy/util-body-length-browser@4.1.0': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 - '@smithy/util-body-length-node@2.3.0': + '@smithy/util-body-length-node@4.1.0': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.2 + tslib: 2.8.1 - '@smithy/util-config-provider@2.3.0': + '@smithy/util-buffer-from@4.1.0': dependencies: - tslib: 2.6.2 + '@smithy/is-array-buffer': 4.1.0 + tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@2.2.1': + '@smithy/util-config-provider@4.1.0': dependencies: - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - bowser: 2.11.0 - tslib: 2.6.2 + tslib: 2.8.1 - '@smithy/util-defaults-mode-node@2.3.1': + '@smithy/util-defaults-mode-browser@4.1.2': dependencies: - '@smithy/config-resolver': 2.2.0 - '@smithy/credential-provider-imds': 2.3.0 - '@smithy/node-config-provider': 2.3.0 - '@smithy/property-provider': 2.2.0 - '@smithy/smithy-client': 2.5.1 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 - '@smithy/util-endpoints@1.2.0': + '@smithy/util-defaults-mode-node@4.1.2': dependencies: - '@smithy/node-config-provider': 2.3.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/config-resolver': 4.2.2 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/util-hex-encoding@2.2.0': + '@smithy/util-endpoints@3.1.2': dependencies: - tslib: 2.6.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/util-middleware@2.2.0': + '@smithy/util-hex-encoding@4.1.0': dependencies: - '@smithy/types': 2.12.0 - tslib: 2.6.2 + tslib: 2.8.1 - '@smithy/util-retry@2.2.0': + '@smithy/util-middleware@4.1.1': dependencies: - '@smithy/service-error-classification': 2.1.5 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@smithy/util-stream@2.2.0': + '@smithy/util-retry@4.1.1': dependencies: - '@smithy/fetch-http-handler': 2.5.0 - '@smithy/node-http-handler': 2.5.0 - '@smithy/types': 2.12.0 - '@smithy/util-base64': 2.3.0 - '@smithy/util-buffer-from': 2.2.0 - '@smithy/util-hex-encoding': 2.2.0 - '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + '@smithy/service-error-classification': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.3.1': + dependencies: + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 - '@smithy/util-uri-escape@2.2.0': + '@smithy/util-uri-escape@4.1.0': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.2 + tslib: 2.8.1 + + '@smithy/util-utf8@4.1.0': + dependencies: + '@smithy/util-buffer-from': 4.1.0 + tslib: 2.8.1 - '@smithy/util-waiter@2.2.0': + '@smithy/util-waiter@4.1.1': dependencies: - '@smithy/abort-controller': 2.2.0 - '@smithy/types': 2.12.0 - tslib: 2.6.2 + '@smithy/abort-controller': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 - '@socket.io/component-emitter@3.1.0': {} + '@standard-schema/spec@1.0.0': {} - '@stripe/stripe-js@3.3.0': {} + '@standard-schema/utils@0.3.0': {} - '@swc/core-darwin-arm64@1.3.101': - optional: true + '@stripe/stripe-js@7.9.0': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 - '@swc/core-darwin-x64@1.3.101': + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/forms@0.5.10(tailwindcss@4.1.13)': + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 4.1.13 + + '@tailwindcss/node@4.1.13': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.5.1 + lightningcss: 1.30.1 + magic-string: 0.30.19 + source-map-js: 1.2.1 + tailwindcss: 4.1.13 + + '@tailwindcss/oxide-android-arm64@4.1.13': optional: true - '@swc/core-linux-arm-gnueabihf@1.3.101': + '@tailwindcss/oxide-darwin-arm64@4.1.13': optional: true - '@swc/core-linux-arm64-gnu@1.3.101': + '@tailwindcss/oxide-darwin-x64@4.1.13': optional: true - '@swc/core-linux-arm64-musl@1.3.101': + '@tailwindcss/oxide-freebsd-x64@4.1.13': optional: true - '@swc/core-linux-x64-gnu@1.3.101': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': optional: true - '@swc/core-linux-x64-musl@1.3.101': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': optional: true - '@swc/core-win32-arm64-msvc@1.3.101': + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': optional: true - '@swc/core-win32-ia32-msvc@1.3.101': + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': optional: true - '@swc/core-win32-x64-msvc@1.3.101': + '@tailwindcss/oxide-linux-x64-musl@4.1.13': optional: true - '@swc/core@1.3.101(@swc/helpers@0.5.5)': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.5 - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.101 - '@swc/core-darwin-x64': 1.3.101 - '@swc/core-linux-arm-gnueabihf': 1.3.101 - '@swc/core-linux-arm64-gnu': 1.3.101 - '@swc/core-linux-arm64-musl': 1.3.101 - '@swc/core-linux-x64-gnu': 1.3.101 - '@swc/core-linux-x64-musl': 1.3.101 - '@swc/core-win32-arm64-msvc': 1.3.101 - '@swc/core-win32-ia32-msvc': 1.3.101 - '@swc/core-win32-x64-msvc': 1.3.101 - '@swc/helpers': 0.5.5 + '@tailwindcss/oxide-wasm32-wasi@4.1.13': + optional: true - '@swc/counter@0.1.3': {} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': + optional: true - '@swc/helpers@0.5.2': - dependencies: - tslib: 2.6.2 + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': + optional: true - '@swc/helpers@0.5.5': + '@tailwindcss/oxide@4.1.13': dependencies: - '@swc/counter': 0.1.3 - tslib: 2.6.2 - - '@swc/types@0.1.5': {} - - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.3)': + detect-libc: 2.1.0 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-arm64': 4.1.13 + '@tailwindcss/oxide-darwin-x64': 4.1.13 + '@tailwindcss/oxide-freebsd-x64': 4.1.13 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.13 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.13 + '@tailwindcss/oxide-linux-x64-musl': 4.1.13 + '@tailwindcss/oxide-wasm32-wasi': 4.1.13 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.13 + + '@tailwindcss/postcss@4.1.13': dependencies: - mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.3 + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.13 + '@tailwindcss/oxide': 4.1.13 + postcss: 8.5.6 + tailwindcss: 4.1.13 - '@tanstack/eslint-plugin-query@5.52.0(eslint@8.57.0)(typescript@5.4.5)': + '@tanstack/eslint-plugin-query@5.89.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) transitivePeerDependencies: - supports-color - typescript - '@tanstack/query-core@5.52.0': {} + '@tanstack/query-core@5.89.0': {} - '@tanstack/query-devtools@5.51.16': {} + '@tanstack/query-devtools@5.87.3': {} - '@tanstack/react-query-devtools@5.52.1(@tanstack/react-query@5.52.1(react@18.2.0))(react@18.2.0)': + '@tanstack/react-query-devtools@5.89.0(@tanstack/react-query@5.89.0(react@19.2.3))(react@19.2.3)': dependencies: - '@tanstack/query-devtools': 5.51.16 - '@tanstack/react-query': 5.52.1(react@18.2.0) - react: 18.2.0 + '@tanstack/query-devtools': 5.87.3 + '@tanstack/react-query': 5.89.0(react@19.2.3) + react: 19.2.3 - '@tanstack/react-query@5.52.1(react@18.2.0)': + '@tanstack/react-query@5.89.0(react@19.2.3)': dependencies: - '@tanstack/query-core': 5.52.0 - react: 18.2.0 + '@tanstack/query-core': 5.89.0 + react: 19.2.3 - '@tanstack/react-table@8.16.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@tanstack/react-table@8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@tanstack/table-core': 8.16.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@tanstack/table-core': 8.21.3 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@tanstack/react-virtual@3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@tanstack/react-virtual@3.13.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@tanstack/virtual-core': 3.1.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@tanstack/virtual-core': 3.13.12 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@tanstack/table-core@8.16.0': {} + '@tanstack/table-core@8.21.3': {} - '@tanstack/virtual-core@3.1.3': {} + '@tanstack/virtual-core@3.13.12': {} '@tinyhttp/accepts@1.3.0': dependencies: es-mime-types: 0.0.16 - negotiator: 0.6.3 + negotiator: 0.6.4 '@tinyhttp/app@1.3.0': dependencies: @@ -7812,63 +8601,261 @@ snapshots: '@tinyhttp/cookie-signature@1.3.0': {} - '@tinyhttp/cookie@1.3.0': {} + '@tinyhttp/cookie@1.3.0': {} + + '@tinyhttp/encode-url@0.3.0': {} + + '@tinyhttp/etag@1.3.0': {} + + '@tinyhttp/forwarded@1.3.0': {} + + '@tinyhttp/proxy-addr@1.3.0': + dependencies: + '@tinyhttp/forwarded': 1.3.0 + ipaddr.js: 2.2.0 + + '@tinyhttp/req@1.3.0': + dependencies: + '@tinyhttp/accepts': 1.3.0 + '@tinyhttp/type-is': 1.3.0 + '@tinyhttp/url': 1.3.0 + es-fresh: 0.0.8 + range-parser: 1.2.1 + + '@tinyhttp/res@1.3.0': + dependencies: + '@tinyhttp/content-disposition': 1.3.0 + '@tinyhttp/cookie': 1.3.0 + '@tinyhttp/cookie-signature': 1.3.0 + '@tinyhttp/encode-url': 0.3.0 + '@tinyhttp/req': 1.3.0 + '@tinyhttp/send': 1.3.0 + es-mime-types: 0.0.16 + es-vary: 0.0.8 + escape-html: 1.0.3 + + '@tinyhttp/router@1.3.0': {} + + '@tinyhttp/send@1.3.0': + dependencies: + '@tinyhttp/etag': 1.3.0 + es-content-type: 0.0.10 + es-mime-types: 0.0.16 + + '@tinyhttp/type-is@1.3.0': + dependencies: + es-content-type: 0.0.10 + es-mime-types: 0.0.16 + + '@tinyhttp/url@1.3.0': {} + + '@tiptap/core@3.6.6(@tiptap/pm@3.6.6)': + dependencies: + '@tiptap/pm': 3.6.6 + + '@tiptap/extension-blockquote@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-bold@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-bubble-menu@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@floating-ui/dom': 1.7.4 + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + optional: true + + '@tiptap/extension-bullet-list@3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/extension-list': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + + '@tiptap/extension-code-block@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + + '@tiptap/extension-code@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-document@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-dropcursor@3.6.6(@tiptap/extensions@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/extensions': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + + '@tiptap/extension-floating-menu@3.6.6(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@floating-ui/dom': 1.7.4 + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + optional: true + + '@tiptap/extension-gapcursor@3.6.6(@tiptap/extensions@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/extensions': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + + '@tiptap/extension-hard-break@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-heading@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-highlight@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-horizontal-rule@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + + '@tiptap/extension-italic@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + + '@tiptap/extension-link@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + linkifyjs: 4.3.2 + + '@tiptap/extension-list-item@3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/extension-list': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + + '@tiptap/extension-list-keymap@3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/extension-list': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + + '@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 - '@tinyhttp/encode-url@0.3.0': {} + '@tiptap/extension-ordered-list@3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/extension-list': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) - '@tinyhttp/etag@1.3.0': {} + '@tiptap/extension-paragraph@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) - '@tinyhttp/forwarded@1.3.0': {} + '@tiptap/extension-strike@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) - '@tinyhttp/proxy-addr@1.3.0': + '@tiptap/extension-text-align@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': dependencies: - '@tinyhttp/forwarded': 1.3.0 - ipaddr.js: 2.1.0 + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) - '@tinyhttp/req@1.3.0': + '@tiptap/extension-text@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': dependencies: - '@tinyhttp/accepts': 1.3.0 - '@tinyhttp/type-is': 1.3.0 - '@tinyhttp/url': 1.3.0 - es-fresh: 0.0.8 - range-parser: 1.2.1 + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) - '@tinyhttp/res@1.3.0': + '@tiptap/extension-underline@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))': dependencies: - '@tinyhttp/content-disposition': 1.3.0 - '@tinyhttp/cookie': 1.3.0 - '@tinyhttp/cookie-signature': 1.3.0 - '@tinyhttp/encode-url': 0.3.0 - '@tinyhttp/req': 1.3.0 - '@tinyhttp/send': 1.3.0 - es-mime-types: 0.0.16 - es-vary: 0.0.8 - escape-html: 1.0.3 + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) - '@tinyhttp/router@1.3.0': {} + '@tiptap/extensions@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 - '@tinyhttp/send@1.3.0': + '@tiptap/pm@3.6.6': dependencies: - '@tinyhttp/etag': 1.3.0 - es-content-type: 0.0.10 - es-mime-types: 0.0.16 + prosemirror-changeset: 2.3.1 + prosemirror-collab: 1.3.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.2 + prosemirror-gapcursor: 1.3.2 + prosemirror-history: 1.4.1 + prosemirror-inputrules: 1.5.0 + prosemirror-keymap: 1.2.3 + prosemirror-markdown: 1.13.2 + prosemirror-menu: 1.2.5 + prosemirror-model: 1.25.3 + prosemirror-schema-basic: 1.2.4 + prosemirror-schema-list: 1.5.1 + prosemirror-state: 1.4.3 + prosemirror-tables: 1.8.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.3)(prosemirror-state@1.4.3)(prosemirror-view@1.41.3) + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.3 - '@tinyhttp/type-is@1.3.0': + '@tiptap/react@3.6.6(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - es-content-type: 0.0.10 - es-mime-types: 0.0.16 + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) + '@types/use-sync-external-store': 0.0.6 + fast-deep-equal: 3.1.3 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + use-sync-external-store: 1.5.0(react@19.2.3) + optionalDependencies: + '@tiptap/extension-bubble-menu': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + '@tiptap/extension-floating-menu': 3.6.6(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + transitivePeerDependencies: + - '@floating-ui/dom' + + '@tiptap/starter-kit@3.6.6': + dependencies: + '@tiptap/core': 3.6.6(@tiptap/pm@3.6.6) + '@tiptap/extension-blockquote': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-bold': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-bullet-list': 3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)) + '@tiptap/extension-code': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-code-block': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + '@tiptap/extension-document': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-dropcursor': 3.6.6(@tiptap/extensions@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)) + '@tiptap/extension-gapcursor': 3.6.6(@tiptap/extensions@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)) + '@tiptap/extension-hard-break': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-heading': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-horizontal-rule': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + '@tiptap/extension-italic': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-link': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + '@tiptap/extension-list': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + '@tiptap/extension-list-item': 3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)) + '@tiptap/extension-list-keymap': 3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)) + '@tiptap/extension-ordered-list': 3.6.6(@tiptap/extension-list@3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6)) + '@tiptap/extension-paragraph': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-strike': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-text': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extension-underline': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6)) + '@tiptap/extensions': 3.6.6(@tiptap/core@3.6.6(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) + '@tiptap/pm': 3.6.6 + + '@total-typescript/ts-reset@0.6.1': {} + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true - '@tinyhttp/url@1.3.0': {} + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 - '@total-typescript/ts-reset@0.5.1': {} + '@types/color-convert@2.0.4': + dependencies: + '@types/color-name': 1.1.5 - '@types/cookie@0.4.1': {} + '@types/color-name@1.1.5': {} - '@types/cors@2.8.17': + '@types/color@4.2.0': dependencies: - '@types/node': 20.12.7 + '@types/color-convert': 2.0.4 - '@types/d3-array@3.2.1': {} + '@types/d3-array@3.2.2': {} '@types/d3-color@3.1.3': {} @@ -7878,472 +8865,461 @@ snapshots: dependencies: '@types/d3-color': 3.1.3 - '@types/d3-path@3.0.2': {} + '@types/d3-path@3.1.1': {} - '@types/d3-scale@4.0.8': + '@types/d3-scale@4.0.9': dependencies: - '@types/d3-time': 3.0.3 + '@types/d3-time': 3.0.4 - '@types/d3-shape@3.1.6': + '@types/d3-shape@3.1.7': dependencies: - '@types/d3-path': 3.0.2 + '@types/d3-path': 3.1.1 - '@types/d3-time@3.0.3': {} + '@types/d3-time@3.0.4': {} '@types/d3-timer@3.0.2': {} - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 8.56.5 - '@types/estree': 1.0.5 - - '@types/eslint@8.56.5': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.5': {} + '@types/estree@1.0.8': {} '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} - '@types/minimist@1.2.5': {} + '@types/linkify-it@5.0.0': {} - '@types/node@20.12.7': + '@types/markdown-it@14.1.2': dependencies: - undici-types: 5.26.5 + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} - '@types/normalize-package-data@2.4.4': {} + '@types/ms@2.1.0': {} - '@types/prismjs@1.26.3': {} + '@types/node@20.19.16': + dependencies: + undici-types: 6.21.0 - '@types/prop-types@15.7.10': {} + '@types/react-dom@19.2.2(@types/react@19.2.2)': + dependencies: + '@types/react': 19.2.2 - '@types/react-dom@18.2.25': + '@types/react-reconciler@0.28.9(@types/react@19.2.2)': dependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - '@types/react@18.2.78': + '@types/react@19.2.2': dependencies: - '@types/prop-types': 15.7.10 - csstype: 3.1.2 + csstype: 3.1.3 + + '@types/use-sync-external-store@0.0.6': {} + + '@types/uuid@9.0.8': {} - '@types/validator@13.11.9': {} + '@types/validator@13.15.3': {} - '@types/webpack@5.28.5(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@types/node': 20.12.7 - tapable: 2.2.1 - webpack: 5.90.3(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - - '@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 8.6.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.6.0 - '@typescript-eslint/type-utils': 8.6.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.6.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.6.0 - eslint: 8.57.0 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/type-utils': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 + eslint: 9.39.2(jiti@2.5.1) graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 6.19.1 - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.6 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.5 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.50.0 + eslint: 9.39.2(jiti@2.5.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.6.0 - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.6.0 - debug: 4.3.6 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.5 + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.44.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.19.1': - dependencies: - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/visitor-keys': 6.19.1 - - '@typescript-eslint/scope-manager@8.0.0-alpha.30': - dependencies: - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - - '@typescript-eslint/scope-manager@8.6.0': - dependencies: - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/visitor-keys': 8.6.0 - - '@typescript-eslint/scope-manager@8.8.0': + '@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.50.0 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color - '@typescript-eslint/type-utils@8.6.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.6.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 + debug: 4.4.3 + typescript: 5.9.2 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/type-utils@8.8.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/project-service@8.50.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.6 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.2) + '@typescript-eslint/types': 8.50.0 + debug: 4.4.3 + typescript: 5.9.2 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@6.19.1': {} - - '@typescript-eslint/types@8.0.0-alpha.30': {} + '@typescript-eslint/scope-manager@8.44.0': + dependencies: + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 - '@typescript-eslint/types@8.6.0': {} + '@typescript-eslint/scope-manager@8.50.0': + dependencies: + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/visitor-keys': 8.50.0 - '@typescript-eslint/types@8.8.0': {} + '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': + dependencies: + typescript: 5.9.2 - '@typescript-eslint/typescript-estree@6.19.1(typescript@5.4.5)': + '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 6.19.1 - '@typescript-eslint/visitor-keys': 6.19.1 - debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color + typescript: 5.9.2 - '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 - debug: 4.3.6 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.6.0(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/visitor-keys': 8.6.0 - debug: 4.3.6 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + debug: 4.4.3 + eslint: 9.39.2(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.8.0(typescript@5.4.5)': + '@typescript-eslint/types@8.44.0': {} + + '@typescript-eslint/types@8.50.0': {} + + '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/visitor-keys': 8.8.0 - debug: 4.3.6 - fast-glob: 3.3.2 + '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 + debug: 4.4.3 + fast-glob: 3.3.3 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.0.0-alpha.30(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.0.0-alpha.30 - '@typescript-eslint/types': 8.0.0-alpha.30 - '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.4.5) - eslint: 8.57.0 + '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.2)': + dependencies: + '@typescript-eslint/project-service': 8.50.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.2) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/visitor-keys': 8.50.0 + debug: 4.4.3 + minimatch: 9.0.5 + semver: 7.7.3 + tinyglobby: 0.2.15 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/utils@8.6.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.6.0 - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.4.5) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/utils@8.8.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.4.5) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.5.1)) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@6.19.1': + '@typescript-eslint/visitor-keys@8.44.0': dependencies: - '@typescript-eslint/types': 6.19.1 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.44.0 + eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.0.0-alpha.30': + '@typescript-eslint/visitor-keys@8.50.0': dependencies: - '@typescript-eslint/types': 8.0.0-alpha.30 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.50.0 + eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.6.0': - dependencies: - '@typescript-eslint/types': 8.6.0 - eslint-visitor-keys: 3.4.3 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true - '@typescript-eslint/visitor-keys@8.8.0': - dependencies: - '@typescript-eslint/types': 8.8.0 - eslint-visitor-keys: 3.4.3 + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true - '@ungap/structured-clone@1.2.0': {} + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true - '@upstash/core-analytics@0.0.7': - dependencies: - '@upstash/redis': 1.31.5 + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true - '@upstash/ratelimit@1.0.3': - dependencies: - '@upstash/core-analytics': 0.0.7 + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true - '@upstash/redis@1.31.5': - dependencies: - crypto-js: 4.2.0 + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true - '@vercel/analytics@1.2.2(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': - dependencies: - server-only: 0.0.1 - optionalDependencies: - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true - '@vercel/blob@0.22.3': - dependencies: - async-retry: 1.3.3 - bytes: 3.1.2 - is-buffer: 2.0.5 - undici: 5.28.4 + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true - '@vercel/edge-config-fs@0.1.0': {} + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true - '@vercel/edge-config@1.1.0(@opentelemetry/api@1.9.0)(typescript@5.4.5)': - dependencies: - '@vercel/edge-config-fs': 0.1.0 - ts-essentials: 9.4.1(typescript@5.4.5) - optionalDependencies: - '@opentelemetry/api': 1.9.0 - transitivePeerDependencies: - - typescript + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true - '@vercel/kv@2.0.0': - dependencies: - '@upstash/redis': 1.31.5 + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true - '@vercel/speed-insights@1.0.10(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': - optionalDependencies: - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true - '@vercel/toolbar@0.1.13(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': - dependencies: - '@tinyhttp/app': 1.3.0 - chokidar: 3.5.3 - execa: 5.1.1 - find-up: 5.0.0 - get-port: 5.1.1 - strip-ansi: 6.0.1 - optionalDependencies: - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true - '@vitest/expect@2.0.5': - dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.1.1 - tinyrainbow: 1.2.0 + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true - '@vitest/pretty-format@2.0.5': - dependencies: - tinyrainbow: 1.2.0 + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true - '@vitest/runner@2.0.5': + '@unrs/resolver-binding-wasm32-wasi@1.11.1': dependencies: - '@vitest/utils': 2.0.5 - pathe: 1.1.2 + '@napi-rs/wasm-runtime': 0.2.12 + optional: true - '@vitest/snapshot@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - magic-string: 0.30.11 - pathe: 1.1.2 + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true - '@vitest/spy@2.0.5': - dependencies: - tinyspy: 3.0.0 + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true - '@vitest/utils@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 - loupe: 3.1.1 - tinyrainbow: 1.2.0 + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true - '@webassemblyjs/ast@1.11.6': + '@upstash/core-analytics@0.0.10': dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@upstash/redis': 1.35.3 - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + '@upstash/ratelimit@2.0.6(@upstash/redis@1.35.3)': + dependencies: + '@upstash/core-analytics': 0.0.10 + '@upstash/redis': 1.35.3 - '@webassemblyjs/helper-api-error@1.11.6': {} + '@upstash/redis@1.35.3': + dependencies: + uncrypto: 0.1.3 - '@webassemblyjs/helper-buffer@1.11.6': {} + '@vercel/analytics@1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3)': + optionalDependencies: + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 - '@webassemblyjs/helper-numbers@1.11.6': + '@vercel/blob@2.0.0': dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 + async-retry: 1.3.3 + is-buffer: 2.0.5 + is-node-process: 1.2.0 + throttleit: 2.1.0 + undici: 5.29.0 - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + '@vercel/edge-config-fs@0.1.0': {} - '@webassemblyjs/helper-wasm-section@1.11.6': + '@vercel/edge-config@1.4.0': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@vercel/edge-config-fs': 0.1.0 - '@webassemblyjs/ieee754@1.11.6': + '@vercel/functions@2.2.13(@aws-sdk/credential-provider-web-identity@3.890.0)': dependencies: - '@xtuc/ieee754': 1.2.0 + '@vercel/oidc': 2.0.2 + optionalDependencies: + '@aws-sdk/credential-provider-web-identity': 3.890.0 - '@webassemblyjs/leb128@1.11.6': + '@vercel/functions@3.1.0(@aws-sdk/credential-provider-web-identity@3.890.0)': dependencies: - '@xtuc/long': 4.2.2 + '@vercel/oidc': 3.0.0 + optionalDependencies: + '@aws-sdk/credential-provider-web-identity': 3.890.0 - '@webassemblyjs/utf8@1.11.6': {} + '@vercel/kv@3.0.0': + dependencies: + '@upstash/redis': 1.35.3 - '@webassemblyjs/wasm-edit@1.11.6': + '@vercel/microfrontends@1.3.0(@vercel/analytics@1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(@vercel/speed-insights@1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5))': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@next/env': 15.1.6 + ajv: 8.17.1 + commander: 12.1.0 + cookie: 0.4.0 + fast-glob: 3.3.3 + http-proxy: 1.18.1 + jsonc-parser: 3.3.1 + nanoid: 3.3.11 + path-to-regexp: 6.2.1 + optionalDependencies: + '@vercel/analytics': 1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) + '@vercel/speed-insights': 1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + vite: 7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) + transitivePeerDependencies: + - debug - '@webassemblyjs/wasm-gen@1.11.6': + '@vercel/oidc@2.0.2': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@types/ms': 2.1.0 + ms: 2.1.3 - '@webassemblyjs/wasm-opt@1.11.6': + '@vercel/oidc@3.0.0': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@types/ms': 2.1.0 + ms: 2.1.3 + + '@vercel/speed-insights@1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3)': + optionalDependencies: + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 - '@webassemblyjs/wasm-parser@1.11.6': + '@vercel/toolbar@0.1.41(@vercel/analytics@1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(@vercel/speed-insights@1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5))': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@tinyhttp/app': 1.3.0 + '@vercel/microfrontends': 1.3.0(@vercel/analytics@1.5.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(@vercel/speed-insights@1.2.0(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3))(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5)) + chokidar: 3.6.0 + execa: 5.1.1 + fast-glob: 3.3.3 + find-up: 5.0.0 + get-port: 5.1.1 + jsonc-parser: 3.3.1 + strip-ansi: 6.0.1 + optionalDependencies: + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 + vite: 7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) + transitivePeerDependencies: + - '@sveltejs/kit' + - '@vercel/analytics' + - '@vercel/speed-insights' + - debug + - react-dom - '@webassemblyjs/wast-printer@1.11.6': + '@vitest/expect@3.2.4': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@xtuc/long': 4.2.2 + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 - '@xtuc/ieee754@1.2.0': {} + '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.19 + optionalDependencies: + vite: 7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) - '@xtuc/long@4.2.2': {} + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 - abbrev@2.0.0: {} + '@vitest/runner@3.2.4': + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.0.0 - accepts@1.3.8: + '@vitest/snapshot@3.2.4': dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.19 + pathe: 2.0.3 - acorn-import-assertions@1.9.0(acorn@8.11.3): + '@vitest/spy@3.2.4': dependencies: - acorn: 8.11.3 + tinyspy: 4.0.3 - acorn-jsx@5.3.2(acorn@8.11.3): + '@vitest/utils@3.2.4': dependencies: - acorn: 8.11.3 + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 - acorn@8.11.3: {} + '@xstate/store@3.9.2(react@19.2.3)': + optionalDependencies: + react: 19.2.3 - ajv-keywords@3.5.2(ajv@6.12.6): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - ajv: 6.12.6 + acorn: 8.15.0 + + acorn@8.15.0: {} ajv@6.12.6: dependencies: @@ -8352,266 +9328,219 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-regex@2.1.1: {} + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - - ansi-styles@2.2.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@5.0.2: {} - argparse@2.0.1: {} - aria-hidden@1.2.3: + aria-hidden@1.2.6: dependencies: - tslib: 2.6.2 + tslib: 2.8.1 - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 + aria-query@5.3.2: {} - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 + call-bound: 1.0.4 + is-array-buffer: 3.0.5 - array-includes@3.1.7: + array-includes@3.1.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - - array-union@2.1.0: {} + 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 - array.prototype.findlast@1.2.4: + array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - - array.prototype.findlastindex@1.2.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.4 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 - array.prototype.flat@1.3.2: + array.prototype.findlastindex@1.2.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 - array.prototype.flatmap@1.3.2: + array.prototype.flat@1.3.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 - array.prototype.toreversed@1.1.2: + array.prototype.flatmap@1.3.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 - array.prototype.tosorted@1.1.3: + array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - - arrify@1.0.1: {} + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 assertion-error@2.0.1: {} ast-types-flow@0.0.8: {} + async-function@1.0.0: {} + async-retry@1.3.3: dependencies: retry: 0.13.1 - asynciterator.prototype@1.0.0: - dependencies: - has-symbols: 1.0.3 - asynckit@0.4.0: {} - autoprefixer@10.4.14(postcss@8.4.35): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.19(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001609 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 - axe-core@4.7.0: {} + axe-core@4.10.3: {} - axios@1.6.8: + axios@1.12.2: dependencies: - follow-redirects: 1.15.6 - form-data: 4.0.0 + follow-redirects: 1.15.11 + form-data: 4.0.4 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - axobject-query@3.2.1: + axobject-query@4.1.0: {} + + babel-plugin-react-compiler@1.0.0: dependencies: - dequal: 2.0.3 + '@babel/types': 7.28.4 balanced-match@1.0.2: {} - base64-js@1.5.1: {} + baseline-browser-mapping@2.8.7: {} - base64id@2.0.0: {} + binary-extensions@2.3.0: {} - binary-extensions@2.2.0: {} + bippy@0.3.27(@types/react@19.2.2)(react@19.2.3): + dependencies: + '@types/react-reconciler': 0.28.9(@types/react@19.2.2) + react: 19.2.3 + transitivePeerDependencies: + - '@types/react' birecord@0.1.1: {} - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - bluebird@3.7.2: {} + botid@1.5.10(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3): + optionalDependencies: + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 - bowser@2.11.0: {} + bowser@2.12.1: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - browserslist@4.23.0: + braces@3.0.3: dependencies: - caniuse-lite: 1.0.30001609 - electron-to-chromium: 1.4.692 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + fill-range: 7.1.1 - buffer-from@1.1.2: {} - - buffer@5.7.1: + browserslist@4.26.2: dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 + baseline-browser-mapping: 2.8.7 + caniuse-lite: 1.0.30001743 + electron-to-chromium: 1.5.224 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) - busboy@1.6.0: + c12@3.1.0: dependencies: - streamsearch: 1.1.0 - - bytes@3.1.2: {} + chokidar: 4.0.3 + confbox: 0.2.2 + defu: 6.1.4 + dotenv: 16.6.1 + exsolve: 1.0.7 + giget: 2.0.0 + jiti: 2.5.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 2.3.0 + rc9: 2.1.2 cac@6.7.14: {} - call-bind@1.0.7: + call-bind-apply-helpers@1.0.2: dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.1 - - callsites@3.1.0: {} - camelcase-css@2.0.1: {} + call-bind@1.0.8: + 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 - camelcase-keys@6.2.2: + call-bound@1.0.4: dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 - camelcase@5.3.1: {} + callsites@3.1.0: {} - caniuse-lite@1.0.30001609: {} + caniuse-lite@1.0.30001743: {} - chai@5.1.1: + chai@5.3.3: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.1 - pathval: 2.0.0 - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + loupe: 3.2.1 + pathval: 2.0.1 chalk@4.1.2: dependencies: @@ -8620,10 +9549,10 @@ snapshots: check-error@2.1.1: {} - chokidar@3.5.3: + chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -8632,91 +9561,86 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chrome-trace-event@1.0.3: {} - - class-variance-authority@0.7.0: + chokidar@4.0.3: dependencies: - clsx: 2.0.0 + readdirp: 4.1.2 - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 + chownr@3.0.0: {} - cli-spinner@0.2.10: {} + citty@0.1.6: + dependencies: + consola: 3.4.2 - cli-spinners@2.9.2: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 client-only@0.0.1: {} - clone@1.0.4: {} - - clsx@1.2.1: {} - - clsx@2.0.0: {} + clsx@2.1.1: {} - clsx@2.1.0: {} - - cmdk@0.2.1(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + cmdk@1.1.1(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@radix-ui/react-dialog': 1.0.0(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) transitivePeerDependencies: - '@types/react' - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 + - '@types/react-dom' color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + color-convert@3.1.2: + dependencies: + color-name: 2.0.2 color-name@1.1.4: {} + color-name@2.0.2: {} + + color-string@2.1.2: + dependencies: + color-name: 2.0.2 + + color@5.0.2: + dependencies: + color-convert: 3.1.2 + color-string: 2.1.2 + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - commander@10.0.1: {} + commander@12.1.0: {} - commander@11.1.0: {} + compare-versions@6.1.1: {} - commander@2.20.3: {} + concat-map@0.0.1: {} - commander@4.1.1: {} + confbox@0.2.2: {} - concat-map@0.0.1: {} + consola@3.4.2: {} - config-chain@1.1.13: - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 + convert-source-map@2.0.0: {} - cookie@0.4.2: {} + cookie@0.4.0: {} cookie@0.5.0: {} - cookie@0.6.0: {} + crelt@1.0.6: {} - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-js@4.2.0: {} - - cssesc@3.0.0: {} - - csstype@3.1.2: {} + csstype@3.1.3: {} d3-array@3.2.4: dependencies: @@ -8758,44 +9682,53 @@ snapshots: damerau-levenshtein@1.0.8: {} - date-fns@3.6.0: {} - - debounce@2.0.0: {} + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 - debug@3.2.7: + data-view-byte-length@1.0.2: dependencies: - ms: 2.1.3 + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 - debug@4.3.6: + data-view-byte-offset@1.0.1: dependencies: - ms: 2.1.2 + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 - decamelize-keys@1.1.1: + date-fns-jalali@4.1.0-0: {} + + date-fns@4.1.0: {} + + debug@3.2.7: dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 + ms: 2.1.3 - decamelize@1.2.0: {} + debug@4.4.3: + dependencies: + ms: 2.1.3 decimal.js-light@2.5.1: {} - decimal.js@10.4.3: {} + decimal.js@10.6.0: {} deep-eql@5.0.2: {} deep-is@0.1.4: {} - deepmerge@4.3.1: {} + deepmerge-ts@7.1.5: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 + deepmerge@4.3.1: {} define-data-property@1.1.4: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-properties@1.2.1: dependencies: @@ -8803,32 +9736,32 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + delayed-stream@1.0.0: {} dequal@2.0.3: {} - detect-node-es@1.1.0: {} + destr@2.0.5: {} - didyoumean@1.2.2: {} + detect-libc@1.0.3: + optional: true - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 + detect-libc@2.1.0: {} - dlv@1.1.3: {} + detect-libc@2.1.2: + optional: true - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 + detect-node-es@1.1.0: {} - doctrine@3.0.0: + doctrine@2.1.0: dependencies: esutils: 2.0.3 dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.24.0 - csstype: 3.1.2 + '@babel/runtime': 7.28.4 + csstype: 3.1.3 dom-serializer@2.0.0: dependencies: @@ -8842,524 +9775,487 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@3.1.0: + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv@16.0.3: {} + dotenv@16.6.1: {} - eastasianwidth@0.2.0: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 - editorconfig@1.0.4: + effect@3.16.12: dependencies: - '@one-ini/wasm': 0.1.1 - commander: 10.0.1 - minimatch: 9.0.1 - semver: 7.6.0 + '@standard-schema/spec': 1.0.0 + fast-check: 3.23.2 - electron-to-chromium@1.4.692: {} + effect@3.17.13: + dependencies: + '@standard-schema/spec': 1.0.0 + fast-check: 3.23.2 - emoji-regex@8.0.0: {} + electron-to-chromium@1.5.224: {} - emoji-regex@9.2.2: {} + embla-carousel-react@8.6.0(react@19.2.3): + dependencies: + embla-carousel: 8.6.0 + embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) + react: 19.2.3 - engine.io-client@6.5.3: + embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.6 - engine.io-parser: 5.2.2 - ws: 8.11.0 - xmlhttprequest-ssl: 2.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine.io-parser@5.2.2: {} - - engine.io@6.5.4: - dependencies: - '@types/cookie': 0.4.1 - '@types/cors': 2.8.17 - '@types/node': 20.12.7 - accepts: 1.3.8 - base64id: 2.0.0 - cookie: 0.4.2 - cors: 2.8.5 - debug: 4.3.6 - engine.io-parser: 5.2.2 - ws: 8.11.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: {} + + emoji-regex@9.2.2: {} + + empathic@2.0.0: {} - enhanced-resolve@5.15.0: + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.2.3 entities@4.5.0: {} - error-ex@1.3.2: + es-abstract@1.24.0: dependencies: - is-arrayish: 0.2.1 - - es-abstract@1.22.5: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 + 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-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 + 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.0.3 - has-symbols: 1.0.3 - hasown: 2.0.1 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + 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.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 + 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.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 + 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 es-content-type@0.0.10: {} - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} es-fresh@0.0.8: {} - es-iterator-helpers@1.0.17: + es-iterator-helpers@1.2.1: dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + 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 es-mime-types@0.0.16: dependencies: mime-db: 1.52.0 - es-module-lexer@1.4.1: {} + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: dependencies: - get-intrinsic: 1.2.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.1 + hasown: 2.0.2 - es-shim-unscopables@1.0.2: + es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.1 + hasown: 2.0.2 - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 es-vary@0.0.8: {} - esbuild@0.19.11: + esbuild@0.25.9: optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - - escalade@3.1.1: {} + '@esbuild/aix-ppc64': 0.25.9 + '@esbuild/android-arm': 0.25.9 + '@esbuild/android-arm64': 0.25.9 + '@esbuild/android-x64': 0.25.9 + '@esbuild/darwin-arm64': 0.25.9 + '@esbuild/darwin-x64': 0.25.9 + '@esbuild/freebsd-arm64': 0.25.9 + '@esbuild/freebsd-x64': 0.25.9 + '@esbuild/linux-arm': 0.25.9 + '@esbuild/linux-arm64': 0.25.9 + '@esbuild/linux-ia32': 0.25.9 + '@esbuild/linux-loong64': 0.25.9 + '@esbuild/linux-mips64el': 0.25.9 + '@esbuild/linux-ppc64': 0.25.9 + '@esbuild/linux-riscv64': 0.25.9 + '@esbuild/linux-s390x': 0.25.9 + '@esbuild/linux-x64': 0.25.9 + '@esbuild/netbsd-arm64': 0.25.9 + '@esbuild/netbsd-x64': 0.25.9 + '@esbuild/openbsd-arm64': 0.25.9 + '@esbuild/openbsd-x64': 0.25.9 + '@esbuild/openharmony-arm64': 0.25.9 + '@esbuild/sunos-x64': 0.25.9 + '@esbuild/win32-arm64': 0.25.9 + '@esbuild/win32-ia32': 0.25.9 + '@esbuild/win32-x64': 0.25.9 + + escalade@3.2.0: {} escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} - eslint-config-next@14.0.1(eslint@8.57.0)(typescript@5.4.5): + eslint-config-next@16.0.1(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@next/eslint-plugin-next': 14.0.1 - '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.19.1(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 + '@next/eslint-plugin-next': 16.0.1 + eslint: 9.39.2(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.5.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@2.5.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.5.1)) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.5.1)) + globals: 16.4.0 + typescript-eslint: 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) optionalDependencies: - typescript: 5.4.5 + typescript: 5.9.2 transitivePeerDependencies: + - '@typescript-eslint/parser' - eslint-import-resolver-webpack + - eslint-plugin-import-x - supports-color - eslint-config-prettier@9.0.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - - eslint-config-turbo@1.10.12(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - eslint-plugin-turbo: 1.10.12(eslint@8.57.0) - eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 + is-core-module: 2.16.1 + resolve: 1.22.10 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.5.1)): dependencies: - debug: 4.3.6 - enhanced-resolve: 5.15.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - fast-glob: 3.3.2 - get-tsconfig: 4.7.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.2(jiti@2.5.1) + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.5.1)) transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.5.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.19.1(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 + '@typescript-eslint/parser': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.5.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.5.1)): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + '@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: 8.57.0 + eslint: 9.39.2(jiti@2.5.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(@typescript-eslint/parser@8.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - hasown: 2.0.1 - is-core-module: 2.13.1 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.5.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 semver: 6.3.1 - tsconfig-paths: 3.14.2 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.19.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.44.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.2(jiti@2.5.1)): dependencies: - '@babel/runtime': 7.24.0 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 + axe-core: 4.10.3 + axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.17 - eslint: 8.57.0 - hasown: 2.0.1 + eslint: 9.39.2(jiti@2.5.1) + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - - eslint-plugin-react-debug@1.14.3(eslint@8.57.0)(typescript@5.4.5): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/core': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - string-ts: 2.2.0 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.4.5 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-dom@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + compare-versions: 6.1.1 + eslint: 9.39.2(jiti@2.5.1) + string-ts: 2.3.1 + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-dom@1.14.3(eslint@8.57.0)(typescript@5.4.5): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/core': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.4.5 + eslint-plugin-react-hooks-extra@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + string-ts: 2.3.1 + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks-extra@1.14.3(eslint@8.57.0)(typescript@5.4.5): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/core': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.4.5 + eslint-plugin-react-hooks@7.0.1(eslint@9.39.2(jiti@2.5.1)): + dependencies: + '@babel/core': 7.28.4 + '@babel/parser': 7.28.4 + eslint: 9.39.2(jiti@2.5.1) + hermes-parser: 0.25.1 + zod: 4.1.9 + zod-validation-error: 4.0.2(zod@4.1.9) transitivePeerDependencies: - supports-color - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - - eslint-plugin-react-naming-convention@1.14.3(eslint@8.57.0)(typescript@5.4.5): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/core': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.4.5 + eslint-plugin-react-naming-convention@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + string-ts: 2.3.1 + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-web-api@1.14.3(eslint@8.57.0)(typescript@5.4.5): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/core': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - birecord: 0.1.1 - eslint: 8.57.0 - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.4.5 + eslint-plugin-react-web-api@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + string-ts: 2.3.1 + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react-x@1.14.3(eslint@8.57.0)(typescript@5.4.5): - dependencies: - '@eslint-react/ast': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/core': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/jsx': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/shared': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/tools': 1.14.3 - '@eslint-react/types': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@eslint-react/var': 1.14.3(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.8.0 - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/types': 8.8.0 - '@typescript-eslint/utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - is-immutable-type: 5.0.0(eslint@8.57.0)(typescript@5.4.5) - ts-pattern: 5.4.0 - optionalDependencies: - typescript: 5.4.5 + eslint-plugin-react-x@2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): + dependencies: + '@eslint-react/ast': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/core': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/eff': 2.3.13 + '@eslint-react/shared': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@eslint-react/var': 2.3.13(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.50.0 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + compare-versions: 6.1.1 + eslint: 9.39.2(jiti@2.5.1) + is-immutable-type: 5.0.1(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + string-ts: 2.3.1 + ts-api-utils: 2.1.0(typescript@5.9.2) + ts-pattern: 5.9.0 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-react@7.34.1(eslint@8.57.0): + eslint-plugin-react@7.37.5(eslint@9.39.2(jiti@2.5.1)): dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 + array-includes: 3.1.9 + 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.0.17 - eslint: 8.57.0 + es-iterator-helpers: 1.2.1 + eslint: 9.39.2(jiti@2.5.1) estraverse: 5.3.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + 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.10 - - eslint-plugin-turbo@1.10.12(eslint@8.57.0): - dependencies: - dotenv: 16.0.3 - eslint: 8.57.0 - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 - eslint-scope@7.2.2: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint@8.57.0: + eslint-visitor-keys@4.2.1: {} + + eslint@9.39.2(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.5.1)) + '@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.2 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.6 - doctrine: 3.0.0 + cross-spawn: 7.0.6 + debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.5.1 transitivePeerDependencies: - supports-color - espree@9.6.1: + espree@10.4.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -9367,23 +10263,21 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.8 esutils@2.0.3: {} eventemitter3@4.0.7: {} - events@3.3.0: {} - execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -9393,151 +10287,176 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: + expect-type@1.2.2: {} + + exsolve@1.0.7: {} + + fast-check@3.23.2: dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 + pure-rand: 6.1.0 + + fast-deep-equal@2.0.1: {} fast-deep-equal@3.1.3: {} - fast-equals@5.0.1: {} + fast-equals@5.2.2: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-xml-parser@4.2.5: - dependencies: - strnum: 1.0.5 + fast-uri@3.1.0: {} - fastq@1.15.0: + fast-xml-parser@5.2.5: dependencies: - reusify: 1.0.4 + strnum: 2.1.1 - file-entry-cache@6.0.1: + fastq@1.19.1: dependencies: - flat-cache: 3.1.1 + reusify: 1.1.0 - fill-range@7.0.1: + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@8.0.0: dependencies: - to-regex-range: 5.0.1 + flat-cache: 4.0.1 - find-up@4.1.0: + fill-range@7.1.1: dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 + to-regex-range: 5.0.1 find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.1.1: + flat-cache@4.0.1: dependencies: - flatted: 3.2.9 + flatted: 3.3.3 keyv: 4.5.4 - rimraf: 3.0.2 - flatted@3.2.9: {} + flatted@3.3.3: {} - follow-redirects@1.15.6: {} + follow-redirects@1.15.11: {} - for-each@0.3.3: + for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - form-data@4.0.0: + form-data@4.0.4: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 - fraction.js@4.3.7: {} - - framer-motion@10.17.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + framer-motion@12.23.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - tslib: 2.6.2 + motion-dom: 12.23.12 + motion-utils: 12.23.6 + tslib: 2.8.1 optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - framer-motion@11.0.28(@emotion/is-prop-valid@0.8.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + framer-motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - tslib: 2.6.2 + motion-dom: 12.23.23 + motion-utils: 12.23.6 + tslib: 2.8.1 optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true fsevents@2.3.3: optional: true function-bind@1.1.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} - geist@1.3.0(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): + fuse.js@7.1.0: {} + + geist@1.5.1(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2)): dependencies: - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) - get-func-name@2.0.2: {} + gensync@1.0.0-beta.2: {} - get-intrinsic@1.2.4: + get-intrinsic@1.3.0: 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 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.1 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 get-nonce@1.0.1: {} get-port@5.1.1: {} - get-stream@6.0.1: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 - get-stream@8.0.1: {} + get-stream@6.0.1: {} - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 - get-tsconfig@4.7.2: + get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 + giget@2.0.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.7 + nypm: 0.6.2 + pathe: 2.0.3 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -9546,105 +10465,48 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} + globals@14.0.0: {} - glob@10.3.10: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.1 - - glob@10.3.4: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.1 - - glob@7.1.6: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.1.7: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + globals@16.4.0: {} - globals@13.23.0: - dependencies: - type-fest: 0.20.2 - - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.2.0 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + gopd@1.2.0: {} graceful-fs@4.2.11: {} graphemer@1.4.0: {} - hard-rejection@2.1.0: {} - - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.0.2: {} - - has-flag@3.0.0: {} + has-bigints@1.1.0: {} has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 - has-proto@1.0.3: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 - hasown@2.0.1: + hasown@2.0.2: dependencies: function-bind: 1.1.2 - hosted-git-info@2.8.9: {} + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 html-to-text@9.0.5: dependencies: @@ -9658,260 +10520,254 @@ snapshots: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 entities: 4.5.0 + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.11 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + human-signals@2.1.0: {} - human-signals@5.0.0: {} + ignore@5.3.2: {} - ieee754@1.2.1: {} + ignore@7.0.5: {} - ignore@5.3.1: {} + immutable@5.1.3: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: {} - - input-otp@1.2.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + input-otp@1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - internal-slot@1.0.7: + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.1 - side-channel: 1.0.4 + hasown: 2.0.2 + side-channel: 1.1.0 internmap@2.0.3: {} - interpret@1.4.0: {} - - intl-messageformat@10.7.10: + intl-messageformat@10.7.16: dependencies: - '@formatjs/ecma402-abstract': 2.3.1 - '@formatjs/fast-memoize': 2.2.5 - '@formatjs/icu-messageformat-parser': 2.9.7 - tslib: 2.6.2 + '@formatjs/ecma402-abstract': 2.3.4 + '@formatjs/fast-memoize': 2.2.7 + '@formatjs/icu-messageformat-parser': 2.11.2 + tslib: 2.8.1 - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 + ipaddr.js@2.2.0: {} - ipaddr.js@2.1.0: {} - - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - - is-arrayish@0.2.1: {} + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 - is-async-function@2.0.0: + is-async-function@2.1.1: dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 - is-bigint@1.0.4: + is-bigint@1.1.0: dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 - is-boolean-object@1.1.2: + is-boolean-object@1.2.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-buffer@2.0.5: {} + is-bun-module@2.0.0: + dependencies: + semver: 7.7.3 + is-callable@1.2.7: {} - is-core-module@2.13.1: + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: dependencies: - hasown: 2.0.1 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 - is-date-object@1.0.5: + is-date-object@1.1.0: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: + is-finalizationregistry@1.1.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: + is-generator-function@1.1.0: dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-immutable-type@5.0.0(eslint@8.57.0)(typescript@5.4.5): + is-immutable-type@5.0.1(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/type-utils': 8.8.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - ts-declaration-location: 1.0.4(typescript@5.4.5) - typescript: 5.4.5 + '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + ts-api-utils: 2.1.0(typescript@5.9.2) + ts-declaration-location: 1.0.7(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - is-interactive@1.0.0: {} - - is-map@2.0.2: {} + is-map@2.0.3: {} is-negative-zero@2.0.3: {} - is-number-object@1.0.7: + is-node-process@1.2.0: {} + + is-number-object@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} - is-path-inside@3.0.3: {} - - is-plain-obj@1.1.0: {} - - is-regex@1.1.4: + is-regex@1.2.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 - is-set@2.0.2: {} + is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 is-stream@2.0.1: {} - is-stream@3.0.0: {} - - is-string@1.0.7: + is-string@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-symbol@1.0.4: + is-symbol@1.1.1: dependencies: - has-symbols: 1.0.3 + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 - is-typed-array@1.1.13: + is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.14 + which-typed-array: 1.1.19 - is-unicode-supported@0.1.0: {} + is-weakmap@2.0.2: {} - is-weakmap@2.0.1: {} - - is-weakref@1.0.2: + is-weakref@1.1.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 - is-weakset@2.0.2: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 isarray@2.0.5: {} isexe@2.0.0: {} - iterator.prototype@1.1.2: - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 - - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jest-worker@27.5.1: + iterator.prototype@1.1.5: dependencies: - '@types/node': 20.12.7 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jiti@1.21.0: {} + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 - jose@4.15.5: {} + jiti@2.5.1: {} - jose@5.1.3: {} + jose@4.15.9: {} - js-beautify@1.14.11: - dependencies: - config-chain: 1.1.13 - editorconfig: 1.0.4 - glob: 10.3.10 - nopt: 7.2.0 + jose@6.1.0: {} js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + js-yaml@4.1.0: dependencies: argparse: 2.0.1 + jsesc@3.1.0: {} + json-buffer@3.0.1: {} - json-edit-react@1.17.0(react@18.2.0): + json-edit-react@1.28.2(react@19.2.3): dependencies: - object-property-assigner: 1.3.1 - object-property-extractor: 1.0.12 - react: 18.2.0 - - json-parse-even-better-errors@2.3.1: {} + object-property-assigner: 1.3.5 + object-property-extractor: 1.0.13 + react: 19.2.3 json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: dependencies: minimist: 1.2.8 + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.1.7 + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 keyv@4.5.4: dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} + kleur@4.1.5: {} - language-subtag-registry@0.3.22: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: - language-subtag-registry: 0.3.22 + language-subtag-registry: 0.3.23 leac@0.6.0: {} @@ -9920,86 +10776,110 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@2.1.0: {} + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true - lines-and-columns@1.2.4: {} + lightningcss-win32-x64-msvc@1.30.1: + optional: true - loader-runner@4.3.0: {} + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.0 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 - locate-path@5.0.0: + linkify-it@5.0.0: dependencies: - p-locate: 4.1.0 + uc.micro: 2.1.0 + + linkifyjs@4.3.2: {} locate-path@6.0.0: dependencies: p-locate: 5.0.0 - lodash.includes@4.3.0: {} - lodash.merge@4.6.2: {} lodash@4.17.21: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - loupe@3.1.1: - dependencies: - get-func-name: 2.0.2 - - lru-cache@10.1.0: {} + loupe@3.2.1: {} - lru-cache@6.0.0: + lru-cache@5.1.1: dependencies: - yallist: 4.0.0 + yallist: 3.1.1 - lucide-react@0.344.0(react@18.2.0): + lucide-react@0.544.0(react@19.2.3): dependencies: - react: 18.2.0 + react: 19.2.3 - magic-string@0.30.11: + magic-string@0.30.19: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 - map-obj@1.0.1: {} - - map-obj@4.3.0: {} + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 marked@7.0.4: {} - md-to-react-email@4.1.0(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0): + math-intrinsics@1.1.0: {} + + md-to-react-email@5.0.5(react@19.2.3): dependencies: marked: 7.0.4 - react: 18.2.0 - react-email: 2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0) - - meow@7.1.1: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 + react: 19.2.3 + + mdurl@2.0.0: {} merge-stream@2.0.0: {} merge2@1.4.1: {} - micromatch@4.0.5: + micromatch@4.0.8: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mime-db@1.52.0: {} @@ -10010,1247 +10890,1210 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - - min-indent@1.0.1: {} - mini-svg-data-uri@1.4.4: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 - minimatch@9.0.1: + minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 - minimatch@9.0.3: + minimist@1.2.8: {} + + minipass@7.1.2: {} + + minizlib@3.0.2: dependencies: - brace-expansion: 2.0.1 + minipass: 7.1.2 + + mkdirp@3.0.1: {} - minimatch@9.0.4: + motion-dom@12.23.12: dependencies: - brace-expansion: 2.0.1 + motion-utils: 12.23.6 - minimist-options@4.1.0: + motion-dom@12.23.23: dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 + motion-utils: 12.23.6 - minimist@1.2.8: {} + motion-utils@12.23.6: {} - minipass@7.0.4: {} + motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + framer-motion: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + tslib: 2.8.1 + optionalDependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - ms@2.1.2: {} + mri@1.2.0: {} ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 + nanoid@3.3.11: {} - nanoid@3.3.7: {} + nanoid@5.1.5: {} - nanoid@5.0.7: {} + napi-postinstall@0.3.3: {} natural-compare@1.4.0: {} - negotiator@0.6.3: {} + negotiator@0.6.4: {} negotiator@1.0.0: {} - neo-async@2.6.2: {} - - next-auth@5.0.0-beta.4(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + next-auth@5.0.0-beta.29(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3): dependencies: - '@auth/core': 0.18.4 - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 + '@auth/core': 0.40.0 + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 - next-axiom@1.1.1(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + next-axiom@1.9.2(@aws-sdk/credential-provider-web-identity@3.890.0)(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3): dependencies: - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - remeda: 1.47.2 + '@vercel/functions': 2.2.13(@aws-sdk/credential-provider-web-identity@3.890.0) + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 + use-deep-compare: 1.3.0(react@19.2.3) whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-web-identity' - next-intl@3.26.3(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + next-intl@4.3.9(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react@19.2.3)(typescript@5.9.2): dependencies: - '@formatjs/intl-localematcher': 0.5.9 + '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - use-intl: 3.26.3(react@18.2.0) + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + react: 19.2.3 + use-intl: 4.3.9(react@19.2.3) + optionalDependencies: + typescript: 5.9.2 - next-themes@0.2.1(next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - next: 14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - next@14.1.0(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2): dependencies: - '@next/env': 14.1.0 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001609 - graceful-fs: 4.2.11 + '@next/env': 16.1.1 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.8.7 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.0 - '@next/swc-darwin-x64': 14.1.0 - '@next/swc-linux-arm64-gnu': 14.1.0 - '@next/swc-linux-arm64-musl': 14.1.0 - '@next/swc-linux-x64-gnu': 14.1.0 - '@next/swc-linux-x64-musl': 14.1.0 - '@next/swc-win32-arm64-msvc': 14.1.0 - '@next/swc-win32-ia32-msvc': 14.1.0 - '@next/swc-win32-x64-msvc': 14.1.0 - '@opentelemetry/api': 1.9.0 + '@next/swc-darwin-arm64': 16.1.1 + '@next/swc-darwin-x64': 16.1.1 + '@next/swc-linux-arm64-gnu': 16.1.1 + '@next/swc-linux-arm64-musl': 16.1.1 + '@next/swc-linux-x64-gnu': 16.1.1 + '@next/swc-linux-x64-musl': 16.1.1 + '@next/swc-win32-arm64-msvc': 16.1.1 + '@next/swc-win32-x64-msvc': 16.1.1 + babel-plugin-react-compiler: 1.0.0 + sass: 1.93.2 + sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@14.2.23(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + nextstepjs@2.1.2(motion@12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@next/env': 14.2.23 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001609 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + motion: 12.23.26(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.23 - '@next/swc-darwin-x64': 14.2.23 - '@next/swc-linux-arm64-gnu': 14.2.23 - '@next/swc-linux-arm64-musl': 14.2.23 - '@next/swc-linux-x64-gnu': 14.2.23 - '@next/swc-linux-x64-musl': 14.2.23 - '@next/swc-win32-arm64-msvc': 14.2.23 - '@next/swc-win32-ia32-msvc': 14.2.23 - '@next/swc-win32-x64-msvc': 14.2.23 - '@opentelemetry/api': 1.9.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) - node-releases@2.0.14: {} + node-addon-api@7.1.1: + optional: true - nopt@7.2.0: - dependencies: - abbrev: 2.0.0 + node-fetch-native@1.6.7: {} - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 + node-releases@2.0.21: {} normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - normalize-wheel@1.0.1: {} npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - npm-run-path@5.2.0: + nypm@0.6.2: dependencies: - path-key: 4.0.0 + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + tinyexec: 1.0.1 - oauth4webapi@2.10.3: {} + oauth4webapi@2.17.0: {} - object-assign@4.1.1: {} + oauth4webapi@3.8.1: {} - object-hash@3.0.0: {} + object-assign@4.1.1: {} - object-inspect@1.13.1: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} - object-property-assigner@1.3.1: {} + object-property-assigner@1.3.5: {} - object-property-extractor@1.0.12: {} + object-property-extractor@1.0.13: {} - object.assign@4.1.5: + object.assign@4.1.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - has-symbols: 1.0.3 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.7: + object.entries@1.1.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.1.1 - object.fromentries@2.0.7: + object.fromentries@2.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 - object.groupby@1.0.1: + object.groupby@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 + es-abstract: 1.24.0 - object.hasown@1.1.3: + object.values@1.2.1: dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.1.1 - object.values@1.1.7: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 + ohash@2.0.11: {} onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: + optionator@0.9.4: dependencies: - mimic-fn: 4.0.0 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 + orderedmap@2.1.1: {} - p-limit@2.3.0: + own-keys@1.0.1: dependencies: - p-try: 2.2.0 + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 - p-try@2.2.0: {} + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parseley@0.12.1: + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-to-regexp@6.2.1: {} + + pathe@2.0.3: {} + + pathval@2.0.1: {} + + peberminta@0.9.0: {} + + perfect-debounce@1.0.0: {} - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 + picocolors@1.1.1: {} - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 + picomatch@2.3.1: {} - parseley@0.12.1: + picomatch@4.0.3: {} + + pkg-types@2.3.0: dependencies: - leac: 0.6.0 - peberminta: 0.9.0 + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 - path-exists@4.0.0: {} + playwright-core@1.55.1: {} - path-is-absolute@1.0.1: {} + playwright@1.55.1: + dependencies: + playwright-core: 1.55.1 + optionalDependencies: + fsevents: 2.3.2 - path-key@3.1.1: {} + possible-typed-array-names@1.1.0: {} - path-key@4.0.0: {} + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - path-parse@1.0.7: {} + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - path-scurry@1.10.1: + preact-render-to-string@5.2.3(preact@10.11.3): dependencies: - lru-cache: 10.1.0 - minipass: 7.0.4 + preact: 10.11.3 + pretty-format: 3.8.0 - path-type@4.0.0: {} + preact-render-to-string@6.5.11(preact@10.24.3): + dependencies: + preact: 10.24.3 - pathe@1.1.2: {} + preact@10.11.3: {} - pathval@2.0.0: {} + preact@10.24.3: {} - peberminta@0.9.0: {} + preact@10.27.2: {} - picocolors@1.0.0: {} + prelude-ls@1.2.1: {} - picomatch@2.3.1: {} + prettier-plugin-tailwindcss@0.6.14(prettier@3.7.4): + dependencies: + prettier: 3.7.4 - picomatch@4.0.2: {} + prettier@3.7.4: {} - pify@2.3.0: {} + pretty-format@3.8.0: {} - pirates@4.0.6: {} + prisma@6.16.2(typescript@5.9.2): + dependencies: + '@prisma/config': 6.16.2 + '@prisma/engines': 6.16.2 + optionalDependencies: + typescript: 5.9.2 + transitivePeerDependencies: + - magicast - possible-typed-array-names@1.0.0: {} + prismjs@1.30.0: {} - postcss-import@15.1.0(postcss@8.4.38): + prop-types@15.8.1: dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 - postcss-js@4.0.1(postcss@8.4.38): + prosemirror-changeset@2.3.1: dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 + prosemirror-transform: 1.10.4 - postcss-load-config@4.0.1(postcss@8.4.38): + prosemirror-collab@1.3.1: dependencies: - lilconfig: 2.1.0 - yaml: 2.3.4 - optionalDependencies: - postcss: 8.4.38 + prosemirror-state: 1.4.3 - postcss-nested@6.0.1(postcss@8.4.38): + prosemirror-commands@1.7.1: dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.13 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 - postcss-selector-parser@6.0.13: + prosemirror-dropcursor@1.8.2: dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.3 - postcss@8.4.31: + prosemirror-gapcursor@1.3.2: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-view: 1.41.3 - postcss@8.4.35: + prosemirror-history@1.4.1: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.3 + rope-sequence: 1.3.4 - postcss@8.4.38: + prosemirror-inputrules@1.5.0: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 - preact-render-to-string@5.2.3(preact@10.11.3): + prosemirror-keymap@1.2.3: dependencies: - preact: 10.11.3 - pretty-format: 3.8.0 + prosemirror-state: 1.4.3 + w3c-keyname: 2.2.8 - preact@10.11.3: {} + prosemirror-markdown@1.13.2: + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 14.1.0 + prosemirror-model: 1.25.3 - prelude-ls@1.2.1: {} + prosemirror-menu@1.2.5: + dependencies: + crelt: 1.0.6 + prosemirror-commands: 1.7.1 + prosemirror-history: 1.4.1 + prosemirror-state: 1.4.3 - prettier-plugin-tailwindcss@0.6.1(prettier@3.3.3): + prosemirror-model@1.25.3: dependencies: - prettier: 3.3.3 + orderedmap: 2.1.1 - prettier@3.3.3: {} + prosemirror-schema-basic@1.2.4: + dependencies: + prosemirror-model: 1.25.3 - pretty-format@3.8.0: {} + prosemirror-schema-list@1.5.1: + dependencies: + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 - prism-react-renderer@2.1.0(react@18.2.0): + prosemirror-state@1.4.3: dependencies: - '@types/prismjs': 1.26.3 - clsx: 1.2.1 - react: 18.2.0 + prosemirror-model: 1.25.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.3 - prisma@5.19.1: + prosemirror-tables@1.8.1: dependencies: - '@prisma/engines': 5.19.1 - optionalDependencies: - fsevents: 2.3.3 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.41.3 - prismjs@1.29.0: {} + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.3)(prosemirror-state@1.4.3)(prosemirror-view@1.41.3): + dependencies: + '@remirror/core-constants': 3.0.0 + escape-string-regexp: 4.0.0 + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-view: 1.41.3 - prop-types@15.8.1: + prosemirror-transform@1.10.4: dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 + prosemirror-model: 1.25.3 - proto-list@1.2.4: {} + prosemirror-view@1.41.3: + dependencies: + prosemirror-model: 1.25.3 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 proxy-from-env@1.1.0: {} + punycode.js@2.3.1: {} + punycode@2.3.1: {} - qs@6.11.2: + pure-rand@6.1.0: {} + + qs@6.14.0: dependencies: - side-channel: 1.0.4 + side-channel: 1.1.0 queue-microtask@1.2.3: {} - quick-lru@4.0.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 + radix-ui@1.4.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.2)(react@19.2.3) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) range-parser@1.2.1: {} - react-day-picker@8.10.0(date-fns@3.6.0)(react@18.2.0): + rc9@2.1.2: dependencies: - date-fns: 3.6.0 - react: 18.2.0 + defu: 6.1.4 + destr: 2.0.5 - react-dom@18.2.0(react@18.2.0): + react-day-picker@9.12.0(react@19.2.3): dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 + '@date-fns/tz': 1.4.1 + date-fns: 4.1.0 + date-fns-jalali: 4.1.0-0 + react: 19.2.3 + + react-dom@19.2.3(react@19.2.3): + dependencies: + react: 19.2.3 + scheduler: 0.27.0 - react-easy-crop@5.0.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-easy-crop@5.5.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: normalize-wheel: 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.0.1 - - react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0): - dependencies: - '@radix-ui/colors': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-popover': 1.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.78)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-tooltip': 1.0.6(@types/react-dom@18.2.25)(@types/react@18.2.78)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@react-email/components': 0.0.15(@types/react@18.2.78)(react-email@2.1.0(@opentelemetry/api@1.9.0)(@swc/helpers@0.5.5)(eslint@8.57.0))(react@18.2.0) - '@react-email/render': 0.0.12 - '@swc/core': 1.3.101(@swc/helpers@0.5.5) - '@types/react': 18.2.78 - '@types/react-dom': 18.2.25 - '@types/webpack': 5.28.5(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11) - autoprefixer: 10.4.14(postcss@8.4.35) - chalk: 4.1.2 - chokidar: 3.5.3 - clsx: 2.1.0 - commander: 11.1.0 - debounce: 2.0.0 - esbuild: 0.19.11 - eslint-config-prettier: 9.0.0(eslint@8.57.0) - eslint-config-turbo: 1.10.12(eslint@8.57.0) - framer-motion: 10.17.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - glob: 10.3.4 - log-symbols: 4.1.0 - mime-types: 2.1.35 - next: 14.1.0(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - normalize-path: 3.0.0 - ora: 5.4.1 - postcss: 8.4.35 - prism-react-renderer: 2.1.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - shelljs: 0.8.5 - socket.io: 4.7.3 - socket.io-client: 4.7.3 - sonner: 1.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - source-map-js: 1.0.2 - stacktrace-parser: 0.1.10 - tailwind-merge: 2.2.0 - tailwindcss: 3.4.0 - tree-cli: 0.6.7 - typescript: 5.1.6 - transitivePeerDependencies: - - '@babel/core' - - '@opentelemetry/api' - - '@swc/helpers' - - babel-plugin-macros - - bufferutil - - eslint - - sass - - supports-color - - ts-node - - uglify-js - - utf-8-validate - - webpack-cli + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tslib: 2.8.1 - react-hook-form@7.51.3(react@18.2.0): + react-hook-form@7.62.0(react@19.2.3): dependencies: - react: 18.2.0 + react: 19.2.3 react-is@16.13.1: {} - react-remove-scroll-bar@2.3.4(@types/react@18.2.78)(react@18.2.0): + react-is@18.3.1: {} + + react-promise-suspense@0.3.4: dependencies: - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0) - tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.78 + fast-deep-equal: 2.0.1 - react-remove-scroll@2.5.4(@types/react@18.2.78)(react@18.2.0): + react-remove-scroll-bar@2.3.8(@types/react@19.2.2)(react@19.2.3): dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.78)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.78)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.78)(react@18.2.0) + react: 19.2.3 + react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.3) + tslib: 2.8.1 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - react-remove-scroll@2.5.5(@types/react@18.2.78)(react@18.2.0): + react-remove-scroll@2.7.1(@types/react@19.2.2)(react@19.2.3): dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.78)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.78)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.78)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.78)(react@18.2.0) + react: 19.2.3 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.3) + react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.3) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.3) + use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.3) + optionalDependencies: + '@types/react': 19.2.2 + + react-resizable-panels@3.0.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + react-scan@0.4.3(@types/react@19.2.2)(next@16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.50.2): + dependencies: + '@babel/core': 7.28.4 + '@babel/generator': 7.28.3 + '@babel/types': 7.28.4 + '@clack/core': 0.3.5 + '@clack/prompts': 0.8.2 + '@pivanov/utils': 0.0.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@preact/signals': 1.3.2(preact@10.27.2) + '@rollup/pluginutils': 5.3.0(rollup@4.50.2) + '@types/node': 20.19.16 + bippy: 0.3.27(@types/react@19.2.2)(react@19.2.3) + esbuild: 0.25.9 + estree-walker: 3.0.3 + kleur: 4.1.5 + mri: 1.2.0 + playwright: 1.55.1 + preact: 10.27.2 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + tsx: 4.20.5 optionalDependencies: - '@types/react': 18.2.78 + next: 16.1.1(@babel/core@7.28.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.93.2) + unplugin: 2.1.0 + transitivePeerDependencies: + - '@types/react' + - rollup + - supports-color - react-smooth@4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-smooth@4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - fast-equals: 5.0.1 + fast-equals: 5.2.2 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react-style-singleton@2.2.1(@types/react@18.2.78)(react@18.2.0): + react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.3): dependencies: get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.2.0 - tslib: 2.6.2 + react: 19.2.3 + tslib: 2.8.1 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.28.4 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 + react@19.2.3: {} readdirp@3.6.0: dependencies: picomatch: 2.3.1 + readdirp@4.1.2: {} + recharts-scale@0.4.5: dependencies: decimal.js-light: 2.5.1 - recharts@2.12.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + recharts@2.15.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - clsx: 2.1.0 + clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 16.13.1 - react-smooth: 4.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) recharts-scale: 0.4.5 - tiny-invariant: 1.3.1 - victory-vendor: 36.9.0 - - rechoir@0.6.2: - dependencies: - resolve: 1.22.8 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 - reflect.getprototypeof@1.0.4: + reflect.getprototypeof@1.0.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - - regenerator-runtime@0.14.0: {} + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 - regexp.prototype.flags@1.5.2: + regexp.prototype.flags@1.5.4: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 - set-function-name: 2.0.1 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 regexparam@1.3.0: {} - remeda@1.47.2: {} + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - retry@0.13.1: {} - reusify@1.0.4: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 + reusify@1.1.0: {} - rollup@4.9.6: + rollup@4.50.2: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 + '@rollup/rollup-android-arm-eabi': 4.50.2 + '@rollup/rollup-android-arm64': 4.50.2 + '@rollup/rollup-darwin-arm64': 4.50.2 + '@rollup/rollup-darwin-x64': 4.50.2 + '@rollup/rollup-freebsd-arm64': 4.50.2 + '@rollup/rollup-freebsd-x64': 4.50.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.2 + '@rollup/rollup-linux-arm-musleabihf': 4.50.2 + '@rollup/rollup-linux-arm64-gnu': 4.50.2 + '@rollup/rollup-linux-arm64-musl': 4.50.2 + '@rollup/rollup-linux-loong64-gnu': 4.50.2 + '@rollup/rollup-linux-ppc64-gnu': 4.50.2 + '@rollup/rollup-linux-riscv64-gnu': 4.50.2 + '@rollup/rollup-linux-riscv64-musl': 4.50.2 + '@rollup/rollup-linux-s390x-gnu': 4.50.2 + '@rollup/rollup-linux-x64-gnu': 4.50.2 + '@rollup/rollup-linux-x64-musl': 4.50.2 + '@rollup/rollup-openharmony-arm64': 4.50.2 + '@rollup/rollup-win32-arm64-msvc': 4.50.2 + '@rollup/rollup-win32-ia32-msvc': 4.50.2 + '@rollup/rollup-win32-x64-msvc': 4.50.2 fsevents: 2.3.3 + rope-sequence@1.3.4: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.0: + safe-array-concat@1.1.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 isarray: 2.0.5 - safe-buffer@5.2.1: {} - - safe-regex-test@1.0.3: + safe-push-apply@1.0.0: dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - is-regex: 1.1.4 + isarray: 2.0.5 - scheduler@0.23.0: + safe-regex-test@1.1.0: dependencies: - loose-envify: 1.4.0 + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 - schema-utils@3.3.0: + sass@1.93.2: dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + chokidar: 4.0.3 + immutable: 5.1.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + + scheduler@0.27.0: {} selderee@0.11.0: dependencies: parseley: 0.12.1 - semver@5.7.2: {} - semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 + semver@7.7.2: {} - server-only@0.0.1: {} + semver@7.7.3: {} - set-function-length@1.2.1: + set-function-length@1.2.2: 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 + get-intrinsic: 1.3.0 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - set-function-name@2.0.1: + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shelljs@0.8.5: + set-proto@1.0.0: dependencies: - glob: 7.2.3 - interpret: 1.4.0 - rechoir: 0.6.2 - - short-unique-id@5.2.0: {} + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 - side-channel@1.0.4: + sharp@0.34.5: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - slash@3.0.0: {} + '@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 + optional: true - socket.io-adapter@2.5.4: + shebang-command@2.0.0: dependencies: - debug: 4.3.6 - ws: 8.11.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + shebang-regex: 3.0.0 - socket.io-client@4.7.3: - dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.6 - engine.io-client: 6.5.3 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + shebang-regex@3.0.0: {} - socket.io-parser@4.2.4: + side-channel-list@1.0.0: dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.6 - transitivePeerDependencies: - - supports-color + es-errors: 1.3.0 + object-inspect: 1.13.4 - socket.io@4.7.3: + side-channel-map@1.0.1: dependencies: - accepts: 1.3.8 - base64id: 2.0.0 - cors: 2.8.5 - debug: 4.3.6 - engine.io: 6.5.4 - socket.io-adapter: 2.5.4 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 - sonner@1.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + side-channel-weakmap@1.0.2: dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 - sonner@1.4.41(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + side-channel@1.1.0: dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - source-map-js@1.0.2: {} + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 - source-map-js@1.2.0: {} + siginfo@2.0.0: {} - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 + signal-exit@3.0.7: {} - source-map@0.6.1: {} + sisteransi@1.0.5: {} - spdx-correct@3.2.0: + sonner@2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + source-map-js@1.2.1: {} - spdx-license-ids@3.0.17: {} + stable-hash@0.0.5: {} stackback@0.0.2: {} - stacktrace-parser@0.1.10: - dependencies: - type-fest: 0.7.1 - - std-env@3.7.0: {} - - streamsearch@1.1.0: {} - - string-ts@2.2.0: {} + std-env@3.9.0: {} - string-width@4.2.3: + stop-iteration-iterator@1.1.0: dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 + es-errors: 1.3.0 + internal-slot: 1.1.0 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + string-ts@2.3.1: {} - string.prototype.matchall@4.0.10: + string.prototype.includes@2.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.22.5 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.1 - side-channel: 1.0.4 + es-abstract: 1.24.0 - string.prototype.trim@1.2.8: + string.prototype.matchall@4.0.12: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 - string.prototype.trimend@1.0.7: + string.prototype.repeat@1.0.0: dependencies: - call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 - string.prototype.trimstart@1.0.7: + string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 - string_decoder@1.3.0: + string.prototype.trimend@1.0.9: dependencies: - safe-buffer: 5.2.1 + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 - strip-ansi@3.0.1: + string.prototype.trimstart@1.0.8: dependencies: - ansi-regex: 2.1.1 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.0.1 - strip-bom@3.0.0: {} strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@3.1.1: {} - stripe@14.25.0: - dependencies: - '@types/node': 20.12.7 - qs: 6.11.2 - - strnum@1.0.5: {} - - styled-jsx@5.1.1(react@18.2.0): + strip-literal@3.0.0: dependencies: - client-only: 0.0.1 - react: 18.2.0 + js-tokens: 9.0.1 - sucrase@3.34.0: + stripe@18.5.0(@types/node@20.19.16): dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 + qs: 6.14.0 + optionalDependencies: + '@types/node': 20.19.16 - supports-color@2.0.0: {} + strnum@2.1.1: {} - supports-color@5.5.0: + styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.3): dependencies: - has-flag: 3.0.0 + client-only: 0.0.1 + react: 19.2.3 + optionalDependencies: + '@babel/core': 7.28.4 supports-color@7.2.0: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} - tailwind-merge@2.2.0: - dependencies: - '@babel/runtime': 7.24.0 - - tailwind-merge@2.2.2: - dependencies: - '@babel/runtime': 7.24.0 + tabbable@6.2.0: {} - tailwindcss-animate@1.0.7(tailwindcss@3.4.3): - dependencies: - tailwindcss: 3.4.3 + tailwind-merge@3.3.1: {} - tailwindcss@3.4.0: + tailwindcss-animate@1.0.7(tailwindcss@4.1.13): dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.5.3 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.13 - resolve: 1.22.8 - sucrase: 3.34.0 - transitivePeerDependencies: - - ts-node + tailwindcss: 4.1.13 - tailwindcss@3.4.3: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.5.3 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.13 - resolve: 1.22.8 - sucrase: 3.34.0 - transitivePeerDependencies: - - ts-node + tailwindcss@4.1.13: {} - tapable@2.2.1: {} + tapable@2.2.3: {} - terser-webpack-plugin@5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11)(webpack@5.90.3): + tar@7.4.3: dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.28.1 - webpack: 5.90.3(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11) - optionalDependencies: - '@swc/core': 1.3.101(@swc/helpers@0.5.5) - esbuild: 0.19.11 + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 - terser@5.28.1: - dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 + throttleit@2.1.0: {} - text-table@0.2.0: {} + tiny-invariant@1.3.3: {} - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 + tinybench@2.9.0: {} - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 + tinyexec@0.3.2: {} - tiny-invariant@1.3.1: {} + tinyexec@1.0.1: {} - tinybench@2.9.0: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 - tinypool@1.0.1: {} + tinypool@1.1.1: {} - tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} - tinyspy@3.0.0: {} + tinyspy@4.0.3: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - tree-cli@0.6.7: - dependencies: - bluebird: 3.7.2 - chalk: 1.1.3 - cli-spinner: 0.2.10 - lodash.includes: 4.3.0 - meow: 7.1.1 - object-assign: 4.1.1 - - trim-newlines@3.0.1: {} - - ts-api-utils@1.3.0(typescript@5.4.5): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.4.5 + typescript: 5.9.2 - ts-declaration-location@1.0.4(typescript@5.4.5): + ts-declaration-location@1.0.7(typescript@5.9.2): dependencies: - minimatch: 10.0.1 - typescript: 5.4.5 + picomatch: 4.0.3 + typescript: 5.9.2 - ts-essentials@9.4.1(typescript@5.4.5): + ts-essentials@10.1.1(typescript@5.9.2): optionalDependencies: - typescript: 5.4.5 + typescript: 5.9.2 - ts-interface-checker@0.1.13: {} + ts-pattern@5.9.0: {} - ts-pattern@5.4.0: {} - - tsconfig-paths@3.14.2: + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - tslib@1.14.1: {} + tslib@2.8.1: {} - tslib@2.0.1: {} + tsx@4.20.5: + dependencies: + esbuild: 0.25.9 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 - tslib@2.6.2: {} + tw-animate-css@1.3.8: {} type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-fest@0.13.1: {} - - type-fest@0.20.2: {} - - type-fest@0.6.0: {} - - type-fest@0.7.1: {} - - type-fest@0.8.1: {} - - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2): + dependencies: + '@typescript-eslint/eslint-plugin': 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2))(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.39.2(jiti@2.5.1) + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + typescript@5.9.2: {} - typed-array-length@1.0.5: + uc.micro@2.1.0: {} + + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 - typescript@5.1.6: {} + uncrypto@0.1.3: {} - typescript@5.4.5: {} + undici-types@6.21.0: {} - unbox-primitive@1.0.2: + undici@5.29.0: dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - undici-types@5.26.5: {} + '@fastify/busboy': 2.1.1 - undici@5.28.4: + unplugin@2.1.0: dependencies: - '@fastify/busboy': 2.1.0 + acorn: 8.15.0 + webpack-virtual-modules: 0.6.2 + optional: true - update-browserslist-db@1.0.13(browserslist@4.23.0): + unrs-resolver@1.11.1: dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.0 + napi-postinstall: 0.3.3 + 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 + + update-browserslist-db@1.1.3(browserslist@4.26.2): + dependencies: + browserslist: 4.26.2 + escalade: 3.2.0 + picocolors: 1.1.1 uri-js@4.4.1: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.0(@types/react@18.2.78)(react@18.2.0): + use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.3): dependencies: - react: 18.2.0 - tslib: 2.6.2 + react: 19.2.3 + tslib: 2.8.1 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 + + use-debounce@10.0.6(react@19.2.3): + dependencies: + react: 19.2.3 - use-intl@3.26.3(react@18.2.0): + use-deep-compare@1.3.0(react@19.2.3): dependencies: - '@formatjs/fast-memoize': 2.2.5 - intl-messageformat: 10.7.10 - react: 18.2.0 + dequal: 2.0.3 + react: 19.2.3 + + use-intl@4.3.9(react@19.2.3): + dependencies: + '@formatjs/fast-memoize': 2.2.7 + '@schummar/icu-type-parser': 1.21.5 + intl-messageformat: 10.7.16 + react: 19.2.3 - use-sidecar@1.1.2(@types/react@18.2.78)(react@18.2.0): + use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.3): dependencies: detect-node-es: 1.1.0 - react: 18.2.0 - tslib: 2.6.2 + react: 19.2.3 + tslib: 2.8.1 optionalDependencies: - '@types/react': 18.2.78 + '@types/react': 19.2.2 - util-deprecate@1.0.2: {} + use-sync-external-store@1.5.0(react@19.2.3): + dependencies: + react: 19.2.3 uuid@9.0.1: {} - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - validator@13.11.0: {} + validator@13.15.15: {} - vary@1.1.2: {} + vaul@1.1.2(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' - victory-vendor@36.9.0: + victory-vendor@36.9.2: dependencies: - '@types/d3-array': 3.2.1 + '@types/d3-array': 3.2.2 '@types/d3-ease': 3.0.2 '@types/d3-interpolate': 3.0.4 - '@types/d3-scale': 4.0.8 - '@types/d3-shape': 3.1.6 - '@types/d3-time': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 '@types/d3-timer': 3.0.2 d3-array: 3.2.4 d3-ease: 3.0.1 @@ -11260,151 +12103,136 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vite-node@2.0.5(@types/node@20.12.7)(terser@5.28.1): + vite-node@3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5): dependencies: cac: 6.7.14 - debug: 4.3.6 - pathe: 1.1.2 - tinyrainbow: 1.2.0 - vite: 5.0.12(@types/node@20.12.7)(terser@5.28.1) + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - yaml - vite@5.0.12(@types/node@20.12.7)(terser@5.28.1): + vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5): dependencies: - esbuild: 0.19.11 - postcss: 8.4.38 - rollup: 4.9.6 + esbuild: 0.25.9 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.50.2 + tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.19.16 fsevents: 2.3.3 - terser: 5.28.1 - - vitest-mock-extended@1.3.1(typescript@5.4.5)(vitest@2.0.5(@types/node@20.12.7)(terser@5.28.1)): - dependencies: - ts-essentials: 9.4.1(typescript@5.4.5) - typescript: 5.4.5 - vitest: 2.0.5(@types/node@20.12.7)(terser@5.28.1) - - vitest@2.0.5(@types/node@20.12.7)(terser@5.28.1): - dependencies: - '@ampproject/remapping': 2.3.0 - '@vitest/expect': 2.0.5 - '@vitest/pretty-format': 2.0.5 - '@vitest/runner': 2.0.5 - '@vitest/snapshot': 2.0.5 - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.1.1 - debug: 4.3.6 - execa: 8.0.1 - magic-string: 0.30.11 - pathe: 1.1.2 - std-env: 3.7.0 + jiti: 2.5.1 + lightningcss: 1.30.1 + sass: 1.93.2 + tsx: 4.20.5 + + vitest-mock-extended@3.1.0(typescript@5.9.2)(vitest@3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5)): + dependencies: + ts-essentials: 10.1.1(typescript@5.9.2) + typescript: 5.9.2 + vitest: 3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) + + vitest@3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.2.2 + magic-string: 0.30.19 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.9.0 tinybench: 2.9.0 - tinypool: 1.0.1 - tinyrainbow: 1.2.0 - vite: 5.0.12(@types/node@20.12.7)(terser@5.28.1) - vite-node: 2.0.5(@types/node@20.12.7)(terser@5.28.1) + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.1.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) + vite-node: 3.2.4(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.2)(tsx@4.20.5) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.19.16 transitivePeerDependencies: + - jiti - less - lightningcss + - msw - sass + - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - yaml - watchpack@2.4.0: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - webpack-sources@3.2.3: {} + w3c-keyname@2.2.8: {} - webpack@5.90.3(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.5))(esbuild@0.19.11)(webpack@5.90.3) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js + webpack-virtual-modules@0.6.2: + optional: true whatwg-fetch@3.6.20: {} - which-boxed-primitive@1.0.2: + which-boxed-primitive@1.1.1: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 - which-builtin-type@1.1.3: + which-builtin-type@1.2.1: dependencies: - function.prototype.name: 1.1.6 + call-bound: 1.0.4 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.14 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 - which-collection@1.0.1: + which-collection@1.0.2: dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 - which-typed-array@1.1.14: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 + 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 which@2.0.2: @@ -11416,35 +12244,20 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - ws@8.11.0: {} + word-wrap@1.2.5: {} xlsx@https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz: {} - xmlhttprequest-ssl@2.0.0: {} + yallist@3.1.1: {} - yallist@4.0.0: {} + yallist@5.0.0: {} - yaml@2.3.4: {} + yocto-queue@0.1.0: {} - yargs-parser@18.1.3: + zod-validation-error@4.0.2(zod@4.1.9): dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 + zod: 4.1.9 - yocto-queue@0.1.0: {} + zod@4.1.9: {} - zod@3.22.4: {} + zod@4.2.1: {} diff --git a/postcss.config.js b/postcss.config.js index 12a703d90..483f37854 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,6 +1,5 @@ module.exports = { plugins: { - tailwindcss: {}, - autoprefixer: {}, + "@tailwindcss/postcss": {}, }, }; diff --git a/prisma/migrations/0_init/migration.sql b/prisma/migrations/0_init/migration.sql new file mode 100644 index 000000000..b117915cb --- /dev/null +++ b/prisma/migrations/0_init/migration.sql @@ -0,0 +1,842 @@ +-- CreateSchema +CREATE SCHEMA IF NOT EXISTS "public"; + +-- CreateEnum +CREATE TYPE "public"."BillingPlan" AS ENUM ('FREE', 'BASIC', 'PREMIUM'); + +-- CreateEnum +CREATE TYPE "public"."UserRole" AS ENUM ('ADMIN', 'MANAGER', 'USER'); + +-- CreateEnum +CREATE TYPE "public"."EventType" AS ENUM ('defensive_assist', 'dva_remech', 'echo_duplicate_end', 'echo_duplicate_start', 'hero_spawn', 'hero_swap', 'kill', 'match_end', 'match_start', 'mercy_rez', 'objective_captured', 'objective_updated', 'offensive_assist', 'payload_progress', 'point_progress', 'player_stat', 'remech_charged', 'round_end', 'round_start', 'setup_complete', 'ultimate_charged', 'ultimate_end', 'ultimate_start'); + +-- CreateEnum +CREATE TYPE "public"."MapType" AS ENUM ('Clash', 'Control', 'Escort', 'Flashpoint', 'Hybrid', 'Push'); + +-- CreateTable +CREATE TABLE "public"."Account" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "type" TEXT NOT NULL, + "provider" TEXT NOT NULL, + "providerAccountId" TEXT NOT NULL, + "refresh_token" TEXT, + "access_token" TEXT, + "expires_at" INTEGER, + "token_type" TEXT, + "scope" TEXT, + "id_token" TEXT, + "session_state" TEXT, + + CONSTRAINT "Account_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."Session" ( + "id" TEXT NOT NULL, + "sessionToken" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Session_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."User" ( + "id" TEXT NOT NULL, + "name" TEXT, + "email" TEXT NOT NULL, + "emailVerified" TIMESTAMP(3), + "image" TEXT, + "role" "public"."UserRole" NOT NULL DEFAULT 'USER', + "teamId" INTEGER, + "stripeId" TEXT, + "billingPlan" "public"."BillingPlan" NOT NULL DEFAULT 'FREE', + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."VerificationToken" ( + "identifier" TEXT NOT NULL, + "token" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL +); + +-- CreateTable +CREATE TABLE "public"."Notification" ( + "id" SERIAL NOT NULL, + "userId" TEXT NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + "read" BOOLEAN NOT NULL DEFAULT false, + "href" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Notification_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."Team" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "image" TEXT, + "ownerId" TEXT NOT NULL, + "readonly" BOOLEAN NOT NULL DEFAULT false, + + CONSTRAINT "Team_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."TeamManager" ( + "id" SERIAL NOT NULL, + "teamId" INTEGER NOT NULL, + "userId" TEXT NOT NULL, + + CONSTRAINT "TeamManager_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."TeamInviteToken" ( + "id" SERIAL NOT NULL, + "teamId" INTEGER NOT NULL, + "email" TEXT NOT NULL, + "token" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "TeamInviteToken_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."Scrim" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "date" TIMESTAMP(3) NOT NULL, + "teamId" INTEGER, + "creatorId" TEXT NOT NULL, + "guestMode" BOOLEAN NOT NULL DEFAULT false, + + CONSTRAINT "Scrim_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."Map" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "scrimId" INTEGER, + "replayCode" TEXT, + + CONSTRAINT "Map_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."MapData" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "userId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "mapId" INTEGER, + + CONSTRAINT "MapData_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."DefensiveAssist" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'defensive_assist', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "DefensiveAssist_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."DvaRemech" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'dva_remech', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "DvaRemech_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."EchoDuplicateEnd" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'echo_duplicate_end', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "EchoDuplicateEnd_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."EchoDuplicateStart" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'echo_duplicate_start', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "EchoDuplicateStart_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."HeroSpawn" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'hero_spawn', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "previous_hero" INTEGER, + "hero_time_played" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "HeroSpawn_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."HeroSwap" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'hero_swap', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "previous_hero" TEXT NOT NULL, + "hero_time_played" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "HeroSwap_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."Kill" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'kill', + "match_time" DOUBLE PRECISION NOT NULL, + "attacker_team" TEXT NOT NULL, + "attacker_name" TEXT NOT NULL, + "attacker_hero" TEXT NOT NULL, + "victim_team" TEXT NOT NULL, + "victim_name" TEXT NOT NULL, + "victim_hero" TEXT NOT NULL, + "event_ability" TEXT NOT NULL, + "event_damage" INTEGER NOT NULL, + "is_critical_hit" TEXT NOT NULL, + "is_environmental" TEXT NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "Kill_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."MatchEnd" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'match_end', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "team_1_score" INTEGER NOT NULL, + "team_2_score" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "MatchEnd_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."MatchStart" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'match_start', + "match_time" DOUBLE PRECISION NOT NULL, + "map_name" TEXT NOT NULL, + "map_type" "public"."MapType" NOT NULL, + "team_1_name" TEXT NOT NULL, + "team_2_name" TEXT NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "MatchStart_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."MercyRez" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'mercy_rez', + "match_time" DOUBLE PRECISION NOT NULL, + "resurrecter_team" TEXT NOT NULL, + "resurrecter_player" TEXT NOT NULL, + "resurrecter_hero" TEXT NOT NULL, + "resurrectee_team" TEXT NOT NULL, + "resurrectee_player" TEXT NOT NULL, + "resurrectee_hero" TEXT NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "MercyRez_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."ObjectiveCaptured" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'objective_captured', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "capturing_team" TEXT NOT NULL, + "objective_index" INTEGER NOT NULL, + "control_team_1_progress" DOUBLE PRECISION NOT NULL, + "control_team_2_progress" DOUBLE PRECISION NOT NULL, + "match_time_remaining" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "ObjectiveCaptured_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."ObjectiveUpdated" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'objective_updated', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "previous_objective_index" INTEGER NOT NULL, + "current_objective_index" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "ObjectiveUpdated_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."OffensiveAssist" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'offensive_assist', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "OffensiveAssist_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."PayloadProgress" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'payload_progress', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "capturing_team" TEXT NOT NULL, + "objective_index" INTEGER NOT NULL, + "payload_capture_progress" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "PayloadProgress_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."PlayerStat" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'player_stat', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "eliminations" INTEGER NOT NULL, + "final_blows" INTEGER NOT NULL, + "deaths" INTEGER NOT NULL, + "all_damage_dealt" DOUBLE PRECISION NOT NULL, + "barrier_damage_dealt" DOUBLE PRECISION NOT NULL, + "hero_damage_dealt" DOUBLE PRECISION NOT NULL, + "healing_dealt" DOUBLE PRECISION NOT NULL, + "healing_received" DOUBLE PRECISION NOT NULL, + "self_healing" DOUBLE PRECISION NOT NULL, + "damage_taken" DOUBLE PRECISION NOT NULL, + "damage_blocked" DOUBLE PRECISION NOT NULL, + "defensive_assists" INTEGER NOT NULL, + "offensive_assists" INTEGER NOT NULL, + "ultimates_earned" INTEGER NOT NULL, + "ultimates_used" INTEGER NOT NULL, + "multikill_best" INTEGER NOT NULL, + "multikills" INTEGER NOT NULL, + "solo_kills" INTEGER NOT NULL, + "objective_kills" INTEGER NOT NULL, + "environmental_kills" INTEGER NOT NULL, + "environmental_deaths" INTEGER NOT NULL, + "critical_hits" INTEGER NOT NULL, + "critical_hit_accuracy" DOUBLE PRECISION NOT NULL, + "scoped_accuracy" DOUBLE PRECISION NOT NULL, + "scoped_critical_hit_accuracy" DOUBLE PRECISION NOT NULL, + "scoped_critical_hit_kills" INTEGER NOT NULL, + "shots_fired" INTEGER NOT NULL, + "shots_hit" INTEGER NOT NULL, + "shots_missed" INTEGER NOT NULL, + "scoped_shots" INTEGER NOT NULL, + "scoped_shots_hit" INTEGER NOT NULL, + "weapon_accuracy" DOUBLE PRECISION NOT NULL, + "hero_time_played" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "PlayerStat_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."PointProgress" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'point_progress', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "capturing_team" TEXT NOT NULL, + "objective_index" INTEGER NOT NULL, + "point_capture_progress" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "PointProgress_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."RemechCharged" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'remech_charged', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "RemechCharged_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."RoundEnd" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'round_end', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "capturing_team" TEXT NOT NULL, + "team_1_score" INTEGER NOT NULL, + "team_2_score" INTEGER NOT NULL, + "objective_index" INTEGER NOT NULL, + "control_team_1_progress" DOUBLE PRECISION NOT NULL, + "control_team_2_progress" DOUBLE PRECISION NOT NULL, + "match_time_remaining" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "RoundEnd_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."RoundStart" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'round_start', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "capturing_team" TEXT NOT NULL, + "team_1_score" INTEGER NOT NULL, + "team_2_score" INTEGER NOT NULL, + "objective_index" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "RoundStart_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."SetupComplete" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'setup_complete', + "match_time" DOUBLE PRECISION NOT NULL, + "round_number" INTEGER NOT NULL, + "match_time_remaining" DOUBLE PRECISION NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "SetupComplete_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."UltimateCharged" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'ultimate_charged', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "UltimateCharged_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."UltimateEnd" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'ultimate_end', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "UltimateEnd_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."UltimateStart" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "event_type" "public"."EventType" NOT NULL DEFAULT 'ultimate_start', + "match_time" DOUBLE PRECISION NOT NULL, + "player_team" TEXT NOT NULL, + "player_name" TEXT NOT NULL, + "player_hero" TEXT NOT NULL, + "hero_duplicated" TEXT NOT NULL, + "ultimate_id" INTEGER NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "UltimateStart_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."_TeamToUser" ( + "A" INTEGER NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_TeamToUser_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateIndex +CREATE INDEX "Account_userId_idx" ON "public"."Account"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "public"."Account"("provider", "providerAccountId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Session_sessionToken_key" ON "public"."Session"("sessionToken"); + +-- CreateIndex +CREATE INDEX "Session_userId_idx" ON "public"."Session"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "public"."User"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_stripeId_key" ON "public"."User"("stripeId"); + +-- CreateIndex +CREATE INDEX "User_id_email_idx" ON "public"."User"("id", "email"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerificationToken_token_key" ON "public"."VerificationToken"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "public"."VerificationToken"("identifier", "token"); + +-- CreateIndex +CREATE INDEX "Notification_userId_idx" ON "public"."Notification"("userId"); + +-- CreateIndex +CREATE INDEX "TeamManager_userId_idx" ON "public"."TeamManager"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "TeamManager_teamId_userId_key" ON "public"."TeamManager"("teamId", "userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "TeamInviteToken_token_key" ON "public"."TeamInviteToken"("token"); + +-- CreateIndex +CREATE INDEX "Scrim_teamId_idx" ON "public"."Scrim"("teamId"); + +-- CreateIndex +CREATE INDEX "Map_scrimId_idx" ON "public"."Map"("scrimId"); + +-- CreateIndex +CREATE INDEX "MapData_scrimId_idx" ON "public"."MapData"("scrimId"); + +-- CreateIndex +CREATE INDEX "MapData_mapId_idx" ON "public"."MapData"("mapId"); + +-- CreateIndex +CREATE INDEX "DefensiveAssist_scrimId_idx" ON "public"."DefensiveAssist"("scrimId"); + +-- CreateIndex +CREATE INDEX "DefensiveAssist_MapDataId_idx" ON "public"."DefensiveAssist"("MapDataId"); + +-- CreateIndex +CREATE INDEX "DvaRemech_scrimId_idx" ON "public"."DvaRemech"("scrimId"); + +-- CreateIndex +CREATE INDEX "DvaRemech_MapDataId_idx" ON "public"."DvaRemech"("MapDataId"); + +-- CreateIndex +CREATE INDEX "EchoDuplicateEnd_scrimId_idx" ON "public"."EchoDuplicateEnd"("scrimId"); + +-- CreateIndex +CREATE INDEX "EchoDuplicateEnd_MapDataId_idx" ON "public"."EchoDuplicateEnd"("MapDataId"); + +-- CreateIndex +CREATE INDEX "EchoDuplicateStart_scrimId_idx" ON "public"."EchoDuplicateStart"("scrimId"); + +-- CreateIndex +CREATE INDEX "EchoDuplicateStart_MapDataId_idx" ON "public"."EchoDuplicateStart"("MapDataId"); + +-- CreateIndex +CREATE INDEX "HeroSpawn_MapDataId_idx" ON "public"."HeroSpawn"("MapDataId"); + +-- CreateIndex +CREATE INDEX "HeroSwap_scrimId_idx" ON "public"."HeroSwap"("scrimId"); + +-- CreateIndex +CREATE INDEX "HeroSwap_MapDataId_idx" ON "public"."HeroSwap"("MapDataId"); + +-- CreateIndex +CREATE INDEX "Kill_scrimId_idx" ON "public"."Kill"("scrimId"); + +-- CreateIndex +CREATE INDEX "Kill_MapDataId_idx" ON "public"."Kill"("MapDataId"); + +-- CreateIndex +CREATE INDEX "MatchEnd_scrimId_idx" ON "public"."MatchEnd"("scrimId"); + +-- CreateIndex +CREATE INDEX "MatchEnd_MapDataId_idx" ON "public"."MatchEnd"("MapDataId"); + +-- CreateIndex +CREATE INDEX "MatchStart_scrimId_idx" ON "public"."MatchStart"("scrimId"); + +-- CreateIndex +CREATE INDEX "MatchStart_MapDataId_idx" ON "public"."MatchStart"("MapDataId"); + +-- CreateIndex +CREATE INDEX "MercyRez_scrimId_idx" ON "public"."MercyRez"("scrimId"); + +-- CreateIndex +CREATE INDEX "MercyRez_MapDataId_idx" ON "public"."MercyRez"("MapDataId"); + +-- CreateIndex +CREATE INDEX "ObjectiveCaptured_scrimId_idx" ON "public"."ObjectiveCaptured"("scrimId"); + +-- CreateIndex +CREATE INDEX "ObjectiveCaptured_MapDataId_idx" ON "public"."ObjectiveCaptured"("MapDataId"); + +-- CreateIndex +CREATE INDEX "ObjectiveUpdated_scrimId_idx" ON "public"."ObjectiveUpdated"("scrimId"); + +-- CreateIndex +CREATE INDEX "ObjectiveUpdated_MapDataId_idx" ON "public"."ObjectiveUpdated"("MapDataId"); + +-- CreateIndex +CREATE INDEX "OffensiveAssist_scrimId_idx" ON "public"."OffensiveAssist"("scrimId"); + +-- CreateIndex +CREATE INDEX "OffensiveAssist_MapDataId_idx" ON "public"."OffensiveAssist"("MapDataId"); + +-- CreateIndex +CREATE INDEX "PayloadProgress_scrimId_idx" ON "public"."PayloadProgress"("scrimId"); + +-- CreateIndex +CREATE INDEX "PayloadProgress_MapDataId_idx" ON "public"."PayloadProgress"("MapDataId"); + +-- CreateIndex +CREATE INDEX "PlayerStat_scrimId_idx" ON "public"."PlayerStat"("scrimId"); + +-- CreateIndex +CREATE INDEX "PlayerStat_MapDataId_idx" ON "public"."PlayerStat"("MapDataId"); + +-- CreateIndex +CREATE INDEX "PointProgress_scrimId_idx" ON "public"."PointProgress"("scrimId"); + +-- CreateIndex +CREATE INDEX "PointProgress_MapDataId_idx" ON "public"."PointProgress"("MapDataId"); + +-- CreateIndex +CREATE INDEX "RemechCharged_scrimId_idx" ON "public"."RemechCharged"("scrimId"); + +-- CreateIndex +CREATE INDEX "RemechCharged_MapDataId_idx" ON "public"."RemechCharged"("MapDataId"); + +-- CreateIndex +CREATE INDEX "RoundEnd_scrimId_idx" ON "public"."RoundEnd"("scrimId"); + +-- CreateIndex +CREATE INDEX "RoundEnd_MapDataId_idx" ON "public"."RoundEnd"("MapDataId"); + +-- CreateIndex +CREATE INDEX "RoundStart_scrimId_idx" ON "public"."RoundStart"("scrimId"); + +-- CreateIndex +CREATE INDEX "RoundStart_MapDataId_idx" ON "public"."RoundStart"("MapDataId"); + +-- CreateIndex +CREATE INDEX "SetupComplete_scrimId_idx" ON "public"."SetupComplete"("scrimId"); + +-- CreateIndex +CREATE INDEX "SetupComplete_MapDataId_idx" ON "public"."SetupComplete"("MapDataId"); + +-- CreateIndex +CREATE INDEX "UltimateCharged_scrimId_idx" ON "public"."UltimateCharged"("scrimId"); + +-- CreateIndex +CREATE INDEX "UltimateCharged_MapDataId_idx" ON "public"."UltimateCharged"("MapDataId"); + +-- CreateIndex +CREATE INDEX "UltimateEnd_scrimId_idx" ON "public"."UltimateEnd"("scrimId"); + +-- CreateIndex +CREATE INDEX "UltimateEnd_MapDataId_idx" ON "public"."UltimateEnd"("MapDataId"); + +-- CreateIndex +CREATE INDEX "UltimateStart_scrimId_idx" ON "public"."UltimateStart"("scrimId"); + +-- CreateIndex +CREATE INDEX "UltimateStart_MapDataId_idx" ON "public"."UltimateStart"("MapDataId"); + +-- CreateIndex +CREATE INDEX "_TeamToUser_B_index" ON "public"."_TeamToUser"("B"); + +-- AddForeignKey +ALTER TABLE "public"."Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."TeamManager" ADD CONSTRAINT "TeamManager_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "public"."Team"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."TeamManager" ADD CONSTRAINT "TeamManager_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Scrim" ADD CONSTRAINT "Scrim_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "public"."Team"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Map" ADD CONSTRAINT "Map_scrimId_fkey" FOREIGN KEY ("scrimId") REFERENCES "public"."Scrim"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MapData" ADD CONSTRAINT "MapData_mapId_fkey" FOREIGN KEY ("mapId") REFERENCES "public"."Map"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."DefensiveAssist" ADD CONSTRAINT "DefensiveAssist_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."DvaRemech" ADD CONSTRAINT "DvaRemech_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."EchoDuplicateEnd" ADD CONSTRAINT "EchoDuplicateEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."EchoDuplicateStart" ADD CONSTRAINT "EchoDuplicateStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."HeroSpawn" ADD CONSTRAINT "HeroSpawn_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."HeroSwap" ADD CONSTRAINT "HeroSwap_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Kill" ADD CONSTRAINT "Kill_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MatchEnd" ADD CONSTRAINT "MatchEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MatchStart" ADD CONSTRAINT "MatchStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MercyRez" ADD CONSTRAINT "MercyRez_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ObjectiveCaptured" ADD CONSTRAINT "ObjectiveCaptured_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ObjectiveUpdated" ADD CONSTRAINT "ObjectiveUpdated_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."OffensiveAssist" ADD CONSTRAINT "OffensiveAssist_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PayloadProgress" ADD CONSTRAINT "PayloadProgress_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerStat" ADD CONSTRAINT "PlayerStat_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PointProgress" ADD CONSTRAINT "PointProgress_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."RemechCharged" ADD CONSTRAINT "RemechCharged_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."RoundEnd" ADD CONSTRAINT "RoundEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."RoundStart" ADD CONSTRAINT "RoundStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."SetupComplete" ADD CONSTRAINT "SetupComplete_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."UltimateCharged" ADD CONSTRAINT "UltimateCharged_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."UltimateEnd" ADD CONSTRAINT "UltimateEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."UltimateStart" ADD CONSTRAINT "UltimateStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."_TeamToUser" ADD CONSTRAINT "_TeamToUser_A_fkey" FOREIGN KEY ("A") REFERENCES "public"."Team"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."_TeamToUser" ADD CONSTRAINT "_TeamToUser_B_fkey" FOREIGN KEY ("B") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + diff --git a/prisma/migrations/20240812220313_add_replay_code_to_map/migration.sql b/prisma/migrations/20240812220313_add_replay_code_to_map/migration.sql deleted file mode 100644 index 153f991a8..000000000 --- a/prisma/migrations/20240812220313_add_replay_code_to_map/migration.sql +++ /dev/null @@ -1,818 +0,0 @@ --- CreateEnum -CREATE TYPE "BillingPlan" AS ENUM ('FREE', 'BASIC', 'PREMIUM'); - --- CreateEnum -CREATE TYPE "UserRole" AS ENUM ('ADMIN', 'MANAGER', 'USER'); - --- CreateEnum -CREATE TYPE "EventType" AS ENUM ('defensive_assist', 'dva_remech', 'echo_duplicate_end', 'echo_duplicate_start', 'hero_spawn', 'hero_swap', 'kill', 'match_end', 'match_start', 'mercy_rez', 'objective_captured', 'objective_updated', 'offensive_assist', 'payload_progress', 'point_progress', 'player_stat', 'remech_charged', 'round_end', 'round_start', 'setup_complete', 'ultimate_charged', 'ultimate_end', 'ultimate_start'); - --- CreateEnum -CREATE TYPE "MapType" AS ENUM ('Clash', 'Control', 'Escort', 'Flashpoint', 'Hybrid', 'Push'); - --- CreateTable -CREATE TABLE "Account" ( - "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "type" TEXT NOT NULL, - "provider" TEXT NOT NULL, - "providerAccountId" TEXT NOT NULL, - "refresh_token" TEXT, - "access_token" TEXT, - "expires_at" INTEGER, - "token_type" TEXT, - "scope" TEXT, - "id_token" TEXT, - "session_state" TEXT, - - CONSTRAINT "Account_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Session" ( - "id" TEXT NOT NULL, - "sessionToken" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Session_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "User" ( - "id" TEXT NOT NULL, - "name" TEXT, - "email" TEXT NOT NULL, - "emailVerified" TIMESTAMP(3), - "image" TEXT, - "role" "UserRole" NOT NULL DEFAULT 'USER', - "teamId" INTEGER, - "stripeId" TEXT, - "billingPlan" "BillingPlan" NOT NULL DEFAULT 'FREE', - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "VerificationToken" ( - "identifier" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL -); - --- CreateTable -CREATE TABLE "Team" ( - "id" SERIAL NOT NULL, - "name" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "image" TEXT, - "ownerId" TEXT NOT NULL, - - CONSTRAINT "Team_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "TeamManager" ( - "id" SERIAL NOT NULL, - "teamId" INTEGER NOT NULL, - "userId" TEXT NOT NULL, - - CONSTRAINT "TeamManager_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "TeamInviteToken" ( - "id" SERIAL NOT NULL, - "teamId" INTEGER NOT NULL, - "email" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "TeamInviteToken_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Scrim" ( - "id" SERIAL NOT NULL, - "name" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "date" TIMESTAMP(3) NOT NULL, - "teamId" INTEGER, - "creatorId" TEXT NOT NULL, - "guestMode" BOOLEAN NOT NULL DEFAULT false, - - CONSTRAINT "Scrim_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Map" ( - "id" SERIAL NOT NULL, - "name" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "scrimId" INTEGER, - "replayCode" TEXT, - - CONSTRAINT "Map_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "MapData" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "userId" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "mapId" INTEGER, - - CONSTRAINT "MapData_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DefensiveAssist" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'defensive_assist', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "DefensiveAssist_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "DvaRemech" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'dva_remech', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "DvaRemech_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "EchoDuplicateEnd" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'echo_duplicate_end', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "EchoDuplicateEnd_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "EchoDuplicateStart" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'echo_duplicate_start', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "EchoDuplicateStart_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "HeroSpawn" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'hero_spawn', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "previous_hero" INTEGER, - "hero_time_played" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "HeroSpawn_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "HeroSwap" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'hero_swap', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "previous_hero" TEXT NOT NULL, - "hero_time_played" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "HeroSwap_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Kill" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'kill', - "match_time" DOUBLE PRECISION NOT NULL, - "attacker_team" TEXT NOT NULL, - "attacker_name" TEXT NOT NULL, - "attacker_hero" TEXT NOT NULL, - "victim_team" TEXT NOT NULL, - "victim_name" TEXT NOT NULL, - "victim_hero" TEXT NOT NULL, - "event_ability" TEXT NOT NULL, - "event_damage" INTEGER NOT NULL, - "is_critical_hit" TEXT NOT NULL, - "is_environmental" TEXT NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "Kill_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "MatchEnd" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'match_end', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "team_1_score" INTEGER NOT NULL, - "team_2_score" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "MatchEnd_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "MatchStart" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'match_start', - "match_time" DOUBLE PRECISION NOT NULL, - "map_name" TEXT NOT NULL, - "map_type" "MapType" NOT NULL, - "team_1_name" TEXT NOT NULL, - "team_2_name" TEXT NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "MatchStart_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "MercyRez" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'mercy_rez', - "match_time" DOUBLE PRECISION NOT NULL, - "resurrecter_team" TEXT NOT NULL, - "resurrecter_player" TEXT NOT NULL, - "resurrecter_hero" TEXT NOT NULL, - "resurrectee_team" TEXT NOT NULL, - "resurrectee_player" TEXT NOT NULL, - "resurrectee_hero" TEXT NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "MercyRez_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ObjectiveCaptured" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'objective_captured', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "capturing_team" TEXT NOT NULL, - "objective_index" INTEGER NOT NULL, - "control_team_1_progress" DOUBLE PRECISION NOT NULL, - "control_team_2_progress" DOUBLE PRECISION NOT NULL, - "match_time_remaining" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "ObjectiveCaptured_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ObjectiveUpdated" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'objective_updated', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "previous_objective_index" INTEGER NOT NULL, - "current_objective_index" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "ObjectiveUpdated_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "OffensiveAssist" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'offensive_assist', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "OffensiveAssist_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "PayloadProgress" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'payload_progress', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "capturing_team" TEXT NOT NULL, - "objective_index" INTEGER NOT NULL, - "payload_capture_progress" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "PayloadProgress_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "PlayerStat" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'player_stat', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "eliminations" INTEGER NOT NULL, - "final_blows" INTEGER NOT NULL, - "deaths" INTEGER NOT NULL, - "all_damage_dealt" DOUBLE PRECISION NOT NULL, - "barrier_damage_dealt" DOUBLE PRECISION NOT NULL, - "hero_damage_dealt" DOUBLE PRECISION NOT NULL, - "healing_dealt" DOUBLE PRECISION NOT NULL, - "healing_received" DOUBLE PRECISION NOT NULL, - "self_healing" DOUBLE PRECISION NOT NULL, - "damage_taken" DOUBLE PRECISION NOT NULL, - "damage_blocked" DOUBLE PRECISION NOT NULL, - "defensive_assists" INTEGER NOT NULL, - "offensive_assists" INTEGER NOT NULL, - "ultimates_earned" INTEGER NOT NULL, - "ultimates_used" INTEGER NOT NULL, - "multikill_best" INTEGER NOT NULL, - "multikills" INTEGER NOT NULL, - "solo_kills" INTEGER NOT NULL, - "objective_kills" INTEGER NOT NULL, - "environmental_kills" INTEGER NOT NULL, - "environmental_deaths" INTEGER NOT NULL, - "critical_hits" INTEGER NOT NULL, - "critical_hit_accuracy" DOUBLE PRECISION NOT NULL, - "scoped_accuracy" DOUBLE PRECISION NOT NULL, - "scoped_critical_hit_accuracy" DOUBLE PRECISION NOT NULL, - "scoped_critical_hit_kills" INTEGER NOT NULL, - "shots_fired" INTEGER NOT NULL, - "shots_hit" INTEGER NOT NULL, - "shots_missed" INTEGER NOT NULL, - "scoped_shots" INTEGER NOT NULL, - "scoped_shots_hit" INTEGER NOT NULL, - "weapon_accuracy" DOUBLE PRECISION NOT NULL, - "hero_time_played" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "PlayerStat_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "PointProgress" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'point_progress', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "capturing_team" TEXT NOT NULL, - "objective_index" INTEGER NOT NULL, - "point_capture_progress" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "PointProgress_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "RemechCharged" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'remech_charged', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "RemechCharged_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "RoundEnd" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'round_end', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "capturing_team" TEXT NOT NULL, - "team_1_score" INTEGER NOT NULL, - "team_2_score" INTEGER NOT NULL, - "objective_index" INTEGER NOT NULL, - "control_team_1_progress" DOUBLE PRECISION NOT NULL, - "control_team_2_progress" DOUBLE PRECISION NOT NULL, - "match_time_remaining" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "RoundEnd_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "RoundStart" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'round_start', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "capturing_team" TEXT NOT NULL, - "team_1_score" INTEGER NOT NULL, - "team_2_score" INTEGER NOT NULL, - "objective_index" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "RoundStart_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "SetupComplete" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'setup_complete', - "match_time" DOUBLE PRECISION NOT NULL, - "round_number" INTEGER NOT NULL, - "match_time_remaining" DOUBLE PRECISION NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "SetupComplete_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "UltimateCharged" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'ultimate_charged', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "UltimateCharged_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "UltimateEnd" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'ultimate_end', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "UltimateEnd_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "UltimateStart" ( - "id" SERIAL NOT NULL, - "scrimId" INTEGER NOT NULL, - "event_type" "EventType" NOT NULL DEFAULT 'ultimate_start', - "match_time" DOUBLE PRECISION NOT NULL, - "player_team" TEXT NOT NULL, - "player_name" TEXT NOT NULL, - "player_hero" TEXT NOT NULL, - "hero_duplicated" TEXT NOT NULL, - "ultimate_id" INTEGER NOT NULL, - "MapDataId" INTEGER, - - CONSTRAINT "UltimateStart_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "_TeamToUser" ( - "A" INTEGER NOT NULL, - "B" TEXT NOT NULL -); - --- CreateIndex -CREATE INDEX "Account_userId_idx" ON "Account"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId"); - --- CreateIndex -CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken"); - --- CreateIndex -CREATE INDEX "Session_userId_idx" ON "Session"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "User_stripeId_key" ON "User"("stripeId"); - --- CreateIndex -CREATE INDEX "User_id_email_idx" ON "User"("id", "email"); - --- CreateIndex -CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token"); - --- CreateIndex -CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token"); - --- CreateIndex -CREATE INDEX "TeamManager_userId_idx" ON "TeamManager"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "TeamManager_teamId_userId_key" ON "TeamManager"("teamId", "userId"); - --- CreateIndex -CREATE UNIQUE INDEX "TeamInviteToken_token_key" ON "TeamInviteToken"("token"); - --- CreateIndex -CREATE INDEX "Scrim_teamId_idx" ON "Scrim"("teamId"); - --- CreateIndex -CREATE INDEX "Map_scrimId_idx" ON "Map"("scrimId"); - --- CreateIndex -CREATE INDEX "MapData_scrimId_idx" ON "MapData"("scrimId"); - --- CreateIndex -CREATE INDEX "MapData_mapId_idx" ON "MapData"("mapId"); - --- CreateIndex -CREATE INDEX "DefensiveAssist_scrimId_idx" ON "DefensiveAssist"("scrimId"); - --- CreateIndex -CREATE INDEX "DefensiveAssist_MapDataId_idx" ON "DefensiveAssist"("MapDataId"); - --- CreateIndex -CREATE INDEX "DvaRemech_scrimId_idx" ON "DvaRemech"("scrimId"); - --- CreateIndex -CREATE INDEX "DvaRemech_MapDataId_idx" ON "DvaRemech"("MapDataId"); - --- CreateIndex -CREATE INDEX "EchoDuplicateEnd_scrimId_idx" ON "EchoDuplicateEnd"("scrimId"); - --- CreateIndex -CREATE INDEX "EchoDuplicateEnd_MapDataId_idx" ON "EchoDuplicateEnd"("MapDataId"); - --- CreateIndex -CREATE INDEX "EchoDuplicateStart_scrimId_idx" ON "EchoDuplicateStart"("scrimId"); - --- CreateIndex -CREATE INDEX "EchoDuplicateStart_MapDataId_idx" ON "EchoDuplicateStart"("MapDataId"); - --- CreateIndex -CREATE INDEX "HeroSpawn_MapDataId_idx" ON "HeroSpawn"("MapDataId"); - --- CreateIndex -CREATE INDEX "HeroSwap_scrimId_idx" ON "HeroSwap"("scrimId"); - --- CreateIndex -CREATE INDEX "HeroSwap_MapDataId_idx" ON "HeroSwap"("MapDataId"); - --- CreateIndex -CREATE INDEX "Kill_scrimId_idx" ON "Kill"("scrimId"); - --- CreateIndex -CREATE INDEX "Kill_MapDataId_idx" ON "Kill"("MapDataId"); - --- CreateIndex -CREATE INDEX "MatchEnd_scrimId_idx" ON "MatchEnd"("scrimId"); - --- CreateIndex -CREATE INDEX "MatchEnd_MapDataId_idx" ON "MatchEnd"("MapDataId"); - --- CreateIndex -CREATE INDEX "MatchStart_scrimId_idx" ON "MatchStart"("scrimId"); - --- CreateIndex -CREATE INDEX "MatchStart_MapDataId_idx" ON "MatchStart"("MapDataId"); - --- CreateIndex -CREATE INDEX "MercyRez_scrimId_idx" ON "MercyRez"("scrimId"); - --- CreateIndex -CREATE INDEX "MercyRez_MapDataId_idx" ON "MercyRez"("MapDataId"); - --- CreateIndex -CREATE INDEX "ObjectiveCaptured_scrimId_idx" ON "ObjectiveCaptured"("scrimId"); - --- CreateIndex -CREATE INDEX "ObjectiveCaptured_MapDataId_idx" ON "ObjectiveCaptured"("MapDataId"); - --- CreateIndex -CREATE INDEX "ObjectiveUpdated_scrimId_idx" ON "ObjectiveUpdated"("scrimId"); - --- CreateIndex -CREATE INDEX "ObjectiveUpdated_MapDataId_idx" ON "ObjectiveUpdated"("MapDataId"); - --- CreateIndex -CREATE INDEX "OffensiveAssist_scrimId_idx" ON "OffensiveAssist"("scrimId"); - --- CreateIndex -CREATE INDEX "OffensiveAssist_MapDataId_idx" ON "OffensiveAssist"("MapDataId"); - --- CreateIndex -CREATE INDEX "PayloadProgress_scrimId_idx" ON "PayloadProgress"("scrimId"); - --- CreateIndex -CREATE INDEX "PayloadProgress_MapDataId_idx" ON "PayloadProgress"("MapDataId"); - --- CreateIndex -CREATE INDEX "PlayerStat_scrimId_idx" ON "PlayerStat"("scrimId"); - --- CreateIndex -CREATE INDEX "PlayerStat_MapDataId_idx" ON "PlayerStat"("MapDataId"); - --- CreateIndex -CREATE INDEX "PointProgress_scrimId_idx" ON "PointProgress"("scrimId"); - --- CreateIndex -CREATE INDEX "PointProgress_MapDataId_idx" ON "PointProgress"("MapDataId"); - --- CreateIndex -CREATE INDEX "RemechCharged_scrimId_idx" ON "RemechCharged"("scrimId"); - --- CreateIndex -CREATE INDEX "RemechCharged_MapDataId_idx" ON "RemechCharged"("MapDataId"); - --- CreateIndex -CREATE INDEX "RoundEnd_scrimId_idx" ON "RoundEnd"("scrimId"); - --- CreateIndex -CREATE INDEX "RoundEnd_MapDataId_idx" ON "RoundEnd"("MapDataId"); - --- CreateIndex -CREATE INDEX "RoundStart_scrimId_idx" ON "RoundStart"("scrimId"); - --- CreateIndex -CREATE INDEX "RoundStart_MapDataId_idx" ON "RoundStart"("MapDataId"); - --- CreateIndex -CREATE INDEX "SetupComplete_scrimId_idx" ON "SetupComplete"("scrimId"); - --- CreateIndex -CREATE INDEX "SetupComplete_MapDataId_idx" ON "SetupComplete"("MapDataId"); - --- CreateIndex -CREATE INDEX "UltimateCharged_scrimId_idx" ON "UltimateCharged"("scrimId"); - --- CreateIndex -CREATE INDEX "UltimateCharged_MapDataId_idx" ON "UltimateCharged"("MapDataId"); - --- CreateIndex -CREATE INDEX "UltimateEnd_scrimId_idx" ON "UltimateEnd"("scrimId"); - --- CreateIndex -CREATE INDEX "UltimateEnd_MapDataId_idx" ON "UltimateEnd"("MapDataId"); - --- CreateIndex -CREATE INDEX "UltimateStart_scrimId_idx" ON "UltimateStart"("scrimId"); - --- CreateIndex -CREATE INDEX "UltimateStart_MapDataId_idx" ON "UltimateStart"("MapDataId"); - --- CreateIndex -CREATE UNIQUE INDEX "_TeamToUser_AB_unique" ON "_TeamToUser"("A", "B"); - --- CreateIndex -CREATE INDEX "_TeamToUser_B_index" ON "_TeamToUser"("B"); - --- AddForeignKey -ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TeamManager" ADD CONSTRAINT "TeamManager_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "Team"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TeamManager" ADD CONSTRAINT "TeamManager_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Scrim" ADD CONSTRAINT "Scrim_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "Team"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Map" ADD CONSTRAINT "Map_scrimId_fkey" FOREIGN KEY ("scrimId") REFERENCES "Scrim"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MapData" ADD CONSTRAINT "MapData_mapId_fkey" FOREIGN KEY ("mapId") REFERENCES "Map"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "DefensiveAssist" ADD CONSTRAINT "DefensiveAssist_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "DvaRemech" ADD CONSTRAINT "DvaRemech_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "EchoDuplicateEnd" ADD CONSTRAINT "EchoDuplicateEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "EchoDuplicateStart" ADD CONSTRAINT "EchoDuplicateStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "HeroSpawn" ADD CONSTRAINT "HeroSpawn_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "HeroSwap" ADD CONSTRAINT "HeroSwap_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Kill" ADD CONSTRAINT "Kill_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MatchEnd" ADD CONSTRAINT "MatchEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MatchStart" ADD CONSTRAINT "MatchStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MercyRez" ADD CONSTRAINT "MercyRez_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ObjectiveCaptured" ADD CONSTRAINT "ObjectiveCaptured_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ObjectiveUpdated" ADD CONSTRAINT "ObjectiveUpdated_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "OffensiveAssist" ADD CONSTRAINT "OffensiveAssist_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PayloadProgress" ADD CONSTRAINT "PayloadProgress_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PlayerStat" ADD CONSTRAINT "PlayerStat_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PointProgress" ADD CONSTRAINT "PointProgress_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "RemechCharged" ADD CONSTRAINT "RemechCharged_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "RoundEnd" ADD CONSTRAINT "RoundEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "RoundStart" ADD CONSTRAINT "RoundStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SetupComplete" ADD CONSTRAINT "SetupComplete_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "UltimateCharged" ADD CONSTRAINT "UltimateCharged_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "UltimateEnd" ADD CONSTRAINT "UltimateEnd_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "UltimateStart" ADD CONSTRAINT "UltimateStart_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_TeamToUser" ADD CONSTRAINT "_TeamToUser_A_fkey" FOREIGN KEY ("A") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_TeamToUser" ADD CONSTRAINT "_TeamToUser_B_fkey" FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250925134556_add_audit_log_model/migration.sql b/prisma/migrations/20250925134556_add_audit_log_model/migration.sql new file mode 100644 index 000000000..a555b7cb1 --- /dev/null +++ b/prisma/migrations/20250925134556_add_audit_log_model/migration.sql @@ -0,0 +1,18 @@ +-- CreateEnum +CREATE TYPE "public"."AuditLogAction" AS ENUM ('USER_BAN', 'USER_UNBAN', 'TRUST_SCORE_ADJUST', 'IMPERSONATE_USER', 'SUSPICIOUS_ACTIVITY_DETECTED', 'TEAM_INVITE_SENT', 'TEAM_AVATAR_UPDATED', 'TEAM_JOINED', 'TEAM_LEFT', 'TEAM_CREATED', 'TEAM_DELETED', 'TEAM_UPDATED', 'TEAM_MEMBER_PROMOTED', 'TEAM_MEMBER_DEMOTED', 'TEAM_MEMBER_REMOVED', 'TEAM_OWNERSHIP_TRANSFERRED', 'SCRIM_CREATED', 'SCRIM_UPDATED', 'SCRIM_DELETED', 'MAP_CREATED', 'MAP_UPDATED', 'MAP_DELETED', 'USER_AVATAR_UPDATED', 'USER_ACCOUNT_DELETED', 'USER_NAME_UPDATED', 'BUG_REPORT_SUBMITTED'); + +-- CreateTable +CREATE TABLE "public"."audit_log" ( + "id" SERIAL NOT NULL, + "adminName" TEXT NOT NULL, + "action" "public"."AuditLogAction" NOT NULL, + "target" TEXT NOT NULL, + "details" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "audit_log_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "audit_log_adminName_target_idx" ON "public"."audit_log"("adminName", "target"); diff --git a/prisma/migrations/20250925134707_remove_audit_log_map/migration.sql b/prisma/migrations/20250925134707_remove_audit_log_map/migration.sql new file mode 100644 index 000000000..2ee4c87dd --- /dev/null +++ b/prisma/migrations/20250925134707_remove_audit_log_map/migration.sql @@ -0,0 +1,24 @@ +/* + Warnings: + + - You are about to drop the `audit_log` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "public"."audit_log"; + +-- CreateTable +CREATE TABLE "public"."AuditLog" ( + "id" SERIAL NOT NULL, + "adminName" TEXT NOT NULL, + "action" "public"."AuditLogAction" NOT NULL, + "target" TEXT NOT NULL, + "details" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "AuditLog_adminName_target_idx" ON "public"."AuditLog"("adminName", "target"); diff --git a/prisma/migrations/20250925142648_rename_audit_log_fields/migration.sql b/prisma/migrations/20250925142648_rename_audit_log_fields/migration.sql new file mode 100644 index 000000000..ac1d7b5e7 --- /dev/null +++ b/prisma/migrations/20250925142648_rename_audit_log_fields/migration.sql @@ -0,0 +1,16 @@ +/* + Warnings: + + - You are about to drop the column `adminName` on the `AuditLog` table. All the data in the column will be lost. + - Added the required column `userEmail` to the `AuditLog` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropIndex +DROP INDEX "public"."AuditLog_adminName_target_idx"; + +-- AlterTable +ALTER TABLE "public"."AuditLog" DROP COLUMN "adminName", +ADD COLUMN "userEmail" TEXT NOT NULL; + +-- CreateIndex +CREATE INDEX "AuditLog_userEmail_target_idx" ON "public"."AuditLog"("userEmail", "target"); diff --git a/prisma/migrations/20250926192138_add_date_fields_to_user_model/migration.sql b/prisma/migrations/20250926192138_add_date_fields_to_user_model/migration.sql new file mode 100644 index 000000000..cad8b4c3b --- /dev/null +++ b/prisma/migrations/20250926192138_add_date_fields_to_user_model/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "public"."User" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, +ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; diff --git a/prisma/migrations/20250926192258_remove_user_team_id/migration.sql b/prisma/migrations/20250926192258_remove_user_team_id/migration.sql new file mode 100644 index 000000000..de0b3d871 --- /dev/null +++ b/prisma/migrations/20250926192258_remove_user_team_id/migration.sql @@ -0,0 +1,8 @@ +/* + Warnings: + + - You are about to drop the column `teamId` on the `User` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "public"."User" DROP COLUMN "teamId"; diff --git a/prisma/migrations/20250926205317_revert_team_id_removal/migration.sql b/prisma/migrations/20250926205317_revert_team_id_removal/migration.sql new file mode 100644 index 000000000..34895b6fb --- /dev/null +++ b/prisma/migrations/20250926205317_revert_team_id_removal/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "public"."User" ADD COLUMN "teamId" INTEGER; diff --git a/prisma/migrations/20250928015211_create_app_settings_model/migration.sql b/prisma/migrations/20250928015211_create_app_settings_model/migration.sql new file mode 100644 index 000000000..b9016af8a --- /dev/null +++ b/prisma/migrations/20250928015211_create_app_settings_model/migration.sql @@ -0,0 +1,19 @@ +-- CreateEnum +CREATE TYPE "public"."ColorblindMode" AS ENUM ('OFF', 'DEUTERANOPIA', 'PROTANOPIA', 'TRITANOPIA'); + +-- CreateTable +CREATE TABLE "public"."AppSettings" ( + "id" SERIAL NOT NULL, + "userId" TEXT NOT NULL, + "colorblindMode" "public"."ColorblindMode" NOT NULL DEFAULT 'OFF', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "AppSettings_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "AppSettings_userId_idx" ON "public"."AppSettings"("userId"); + +-- AddForeignKey +ALTER TABLE "public"."AppSettings" ADD CONSTRAINT "AppSettings_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20250928032605_add_custom_colorblind_mode/migration.sql b/prisma/migrations/20250928032605_add_custom_colorblind_mode/migration.sql new file mode 100644 index 000000000..216534075 --- /dev/null +++ b/prisma/migrations/20250928032605_add_custom_colorblind_mode/migration.sql @@ -0,0 +1,6 @@ +-- AlterEnum +ALTER TYPE "public"."ColorblindMode" ADD VALUE 'CUSTOM'; + +-- AlterTable +ALTER TABLE "public"."AppSettings" ADD COLUMN "customTeam1Color" TEXT, +ADD COLUMN "customTeam2Color" TEXT; diff --git a/prisma/migrations/20251002042233_add_stat_query_indexes/migration.sql b/prisma/migrations/20251002042233_add_stat_query_indexes/migration.sql new file mode 100644 index 000000000..dbc03483b --- /dev/null +++ b/prisma/migrations/20251002042233_add_stat_query_indexes/migration.sql @@ -0,0 +1,15 @@ +-- Migration: Add indexes for stat percentile queries + +-- Index 1: Critical index for DISTINCT ON queries with hero filtering +CREATE INDEX IF NOT EXISTS "idx_playerstat_hero_distinct" + ON "PlayerStat"("player_hero", "MapDataId", "player_name", "round_number" DESC, "id" DESC) + WHERE "hero_time_played" >= 60; + +-- Index 2: Covering index for composite SR queries (OPTIONAL - only if you have PostgreSQL 11+) +-- Comment out if not on PostgreSQL 11+ or if you want to minimize index size +CREATE INDEX IF NOT EXISTS "idx_playerstat_hero_stats_covering" + ON "PlayerStat"("player_hero", "MapDataId", "player_name") + INCLUDE ("eliminations", "final_blows", "deaths", "hero_damage_dealt", "healing_dealt", + "damage_blocked", "damage_taken", "solo_kills", "ultimates_earned", + "objective_kills", "hero_time_played", "round_number", "id") + WHERE "hero_time_played" >= 60; diff --git a/prisma/migrations/20251003013854_add_hero_ban_model/migration.sql b/prisma/migrations/20251003013854_add_hero_ban_model/migration.sql new file mode 100644 index 000000000..176c1c5c1 --- /dev/null +++ b/prisma/migrations/20251003013854_add_hero_ban_model/migration.sql @@ -0,0 +1,22 @@ +-- CreateTable +CREATE TABLE "HeroBan" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "hero" TEXT NOT NULL, + "team" TEXT NOT NULL, + "banPosition" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "MapDataId" INTEGER, + + CONSTRAINT "HeroBan_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "HeroBan_scrimId_idx" ON "HeroBan"("scrimId"); + +-- CreateIndex +CREATE INDEX "HeroBan_MapDataId_idx" ON "HeroBan"("MapDataId"); + +-- AddForeignKey +ALTER TABLE "HeroBan" ADD CONSTRAINT "HeroBan_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20251013000757_add_notedata_model/migration.sql b/prisma/migrations/20251013000757_add_notedata_model/migration.sql new file mode 100644 index 000000000..df6acb940 --- /dev/null +++ b/prisma/migrations/20251013000757_add_notedata_model/migration.sql @@ -0,0 +1,20 @@ +-- CreateTable +CREATE TABLE "NoteData" ( + "id" SERIAL NOT NULL, + "content" TEXT NOT NULL DEFAULT '', + "scrimId" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "MapDataId" INTEGER NOT NULL, + + CONSTRAINT "NoteData_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "NoteData_scrimId_idx" ON "NoteData"("scrimId"); + +-- CreateIndex +CREATE INDEX "NoteData_MapDataId_idx" ON "NoteData"("MapDataId"); + +-- AddForeignKey +ALTER TABLE "NoteData" ADD CONSTRAINT "NoteData_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "MapData"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20251013003917_rename_notedata_to_note/migration.sql b/prisma/migrations/20251013003917_rename_notedata_to_note/migration.sql new file mode 100644 index 000000000..e0602b2b2 --- /dev/null +++ b/prisma/migrations/20251013003917_rename_notedata_to_note/migration.sql @@ -0,0 +1,45 @@ +/* + Warnings: + + - You are about to drop the `NoteData` table. If the table is not empty, all the data it contains will be lost. + - Made the column `MapDataId` on table `HeroBan` required. This step will fail if there are existing NULL values in that column. + +*/ +-- DropForeignKey +ALTER TABLE "public"."HeroBan" DROP CONSTRAINT "HeroBan_MapDataId_fkey"; + +-- DropForeignKey +ALTER TABLE "public"."NoteData" DROP CONSTRAINT "NoteData_MapDataId_fkey"; + +-- AlterTable +ALTER TABLE "public"."HeroBan" ALTER COLUMN "MapDataId" SET NOT NULL; + +-- DropTable +DROP TABLE "public"."NoteData"; + +-- CreateTable +CREATE TABLE "public"."Note" ( + "id" SERIAL NOT NULL, + "content" TEXT NOT NULL DEFAULT '', + "scrimId" INTEGER NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "MapDataId" INTEGER NOT NULL, + + CONSTRAINT "Note_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "Note_scrimId_idx" ON "public"."Note"("scrimId"); + +-- CreateIndex +CREATE INDEX "Note_MapDataId_idx" ON "public"."Note"("MapDataId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Note_scrimId_MapDataId_key" ON "public"."Note"("scrimId", "MapDataId"); + +-- AddForeignKey +ALTER TABLE "public"."HeroBan" ADD CONSTRAINT "HeroBan_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Note" ADD CONSTRAINT "Note_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20251013200110_update_note_indexes/migration.sql b/prisma/migrations/20251013200110_update_note_indexes/migration.sql new file mode 100644 index 000000000..ec510b0df --- /dev/null +++ b/prisma/migrations/20251013200110_update_note_indexes/migration.sql @@ -0,0 +1,8 @@ +-- DropIndex +DROP INDEX "public"."Note_MapDataId_idx"; + +-- DropIndex +DROP INDEX "public"."Note_scrimId_idx"; + +-- CreateIndex +CREATE INDEX "Note_scrimId_MapDataId_idx" ON "Note"("scrimId", "MapDataId"); diff --git a/prisma/migrations/20251217044432_add_battletag_to_user_model/migration.sql b/prisma/migrations/20251217044432_add_battletag_to_user_model/migration.sql new file mode 100644 index 000000000..586b199b1 --- /dev/null +++ b/prisma/migrations/20251217044432_add_battletag_to_user_model/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "public"."User" ADD COLUMN "battletag" TEXT; diff --git a/prisma/migrations/20251217044947_add_battletag_to_auditlogactions/migration.sql b/prisma/migrations/20251217044947_add_battletag_to_auditlogactions/migration.sql new file mode 100644 index 000000000..da90f4029 --- /dev/null +++ b/prisma/migrations/20251217044947_add_battletag_to_auditlogactions/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "public"."AuditLogAction" ADD VALUE 'USER_BATTLETAG_UPDATED'; diff --git a/prisma/migrations/20251217050347_add_calculated_stats_model/migration.sql b/prisma/migrations/20251217050347_add_calculated_stats_model/migration.sql new file mode 100644 index 000000000..da1e3f275 --- /dev/null +++ b/prisma/migrations/20251217050347_add_calculated_stats_model/migration.sql @@ -0,0 +1,26 @@ +-- CreateEnum +CREATE TYPE "public"."CalculatedStatType" AS ENUM ('FLETA_DEADLIFT_PERCENTAGE', 'FIRST_PICK_PERCENTAGE', 'FIRST_PICK_COUNT', 'FIRST_DEATH_PERCENTAGE', 'FIRST_DEATH_COUNT', 'MVP_SCORE', 'MAP_MVP_COUNT', 'AJAX_COUNT', 'AVERAGE_ULT_CHARGE_TIME', 'AVERAGE_TIME_TO_USE_ULT', 'AVERAGE_DROUGHT_TIME'); + +-- CreateTable +CREATE TABLE "public"."CalculatedStat" ( + "id" SERIAL NOT NULL, + "scrimId" INTEGER NOT NULL, + "playerName" TEXT NOT NULL, + "hero" TEXT NOT NULL, + "stat" "public"."CalculatedStatType" NOT NULL, + "value" DOUBLE PRECISION NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "MapDataId" INTEGER NOT NULL, + + CONSTRAINT "CalculatedStat_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "CalculatedStat_scrimId_MapDataId_idx" ON "public"."CalculatedStat"("scrimId", "MapDataId"); + +-- CreateIndex +CREATE INDEX "CalculatedStat_playerName_hero_stat_idx" ON "public"."CalculatedStat"("playerName", "hero", "stat"); + +-- AddForeignKey +ALTER TABLE "public"."CalculatedStat" ADD CONSTRAINT "CalculatedStat_MapDataId_fkey" FOREIGN KEY ("MapDataId") REFERENCES "public"."MapData"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20251217052357_add_new_calculated_stats/migration.sql b/prisma/migrations/20251217052357_add_new_calculated_stats/migration.sql new file mode 100644 index 000000000..a4698da16 --- /dev/null +++ b/prisma/migrations/20251217052357_add_new_calculated_stats/migration.sql @@ -0,0 +1,23 @@ +/* + Warnings: + + - Added the required column `role` to the `CalculatedStat` table without a default value. This is not possible if the table is not empty. + +*/ +-- CreateEnum +CREATE TYPE "public"."Role" AS ENUM ('TANK', 'DAMAGE', 'SUPPORT'); + +-- AlterEnum +-- This migration adds more than one value to an enum. +-- With PostgreSQL versions 11 and earlier, this is not possible +-- in a single migration. This can be worked around by creating +-- multiple migrations, each migration adding only one value to +-- the enum. + + +ALTER TYPE "public"."CalculatedStatType" ADD VALUE 'KILLS_PER_ULTIMATE'; +ALTER TYPE "public"."CalculatedStatType" ADD VALUE 'DUEL_WINRATE_PERCENTAGE'; +ALTER TYPE "public"."CalculatedStatType" ADD VALUE 'FIGHT_REVERSAL_PERCENTAGE'; + +-- AlterTable +ALTER TABLE "public"."CalculatedStat" ADD COLUMN "role" "public"."Role" NOT NULL; diff --git a/prisma/migrations/20251217165731_add_new_profile_features/migration.sql b/prisma/migrations/20251217165731_add_new_profile_features/migration.sql new file mode 100644 index 000000000..660e9f12f --- /dev/null +++ b/prisma/migrations/20251217165731_add_new_profile_features/migration.sql @@ -0,0 +1,6 @@ +-- CreateEnum +CREATE TYPE "public"."Title" AS ENUM ('DEVELOPER', 'EMPLOYEE', 'BETA_TESTER', 'DAY_ONE_USER', 'BASIC_PLAN_SUBSCRIBER', 'PREMIUM_PLAN_SUBSCRIBER', 'VIP', 'HIGHEST_RANK_ON_A_HERO', 'HIGHEST_AJAX_COUNT', 'HIGHEST_FLETA_DEADLIFT_PERCENTAGE', 'TOP_3_KILLS', 'TOP_3_DAMAGE_DEALT', 'TOP_3_HEALING', 'TOP_3_DAMAGE_BLOCKED', 'TOP_3_DEATHS', 'TOP_3_TIME_PLAYED'); + +-- AlterTable +ALTER TABLE "public"."User" ADD COLUMN "bannerImage" TEXT, +ADD COLUMN "titles" "public"."Title"[] DEFAULT ARRAY[]::"public"."Title"[]; diff --git a/prisma/migrations/20251217172825_add_applied_title_model/migration.sql b/prisma/migrations/20251217172825_add_applied_title_model/migration.sql new file mode 100644 index 000000000..e8d3abca0 --- /dev/null +++ b/prisma/migrations/20251217172825_add_applied_title_model/migration.sql @@ -0,0 +1,19 @@ +-- CreateTable +CREATE TABLE "public"."AppliedTitle" ( + "id" SERIAL NOT NULL, + "userId" TEXT NOT NULL, + "title" "public"."Title" NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "AppliedTitle_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "AppliedTitle_userId_idx" ON "public"."AppliedTitle"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "AppliedTitle_userId_title_key" ON "public"."AppliedTitle"("userId", "title"); + +-- AddForeignKey +ALTER TABLE "public"."AppliedTitle" ADD CONSTRAINT "AppliedTitle_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20251217190350_add_user_banner_updated_action/migration.sql b/prisma/migrations/20251217190350_add_user_banner_updated_action/migration.sql new file mode 100644 index 000000000..404b6212b --- /dev/null +++ b/prisma/migrations/20251217190350_add_user_banner_updated_action/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "public"."AuditLogAction" ADD VALUE 'USER_BANNER_UPDATED'; diff --git a/prisma/migrations/20251225045431_add_onboarding_flag_to_user_model/migration.sql b/prisma/migrations/20251225045431_add_onboarding_flag_to_user_model/migration.sql new file mode 100644 index 000000000..0349afed6 --- /dev/null +++ b/prisma/migrations/20251225045431_add_onboarding_flag_to_user_model/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "public"."AppSettings" ADD COLUMN "seeOnboarding" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/20251229220925_move_onboarding_flag_to_user_model/migration.sql b/prisma/migrations/20251229220925_move_onboarding_flag_to_user_model/migration.sql new file mode 100644 index 000000000..b03b13da2 --- /dev/null +++ b/prisma/migrations/20251229220925_move_onboarding_flag_to_user_model/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - You are about to drop the column `seeOnboarding` on the `AppSettings` table. All the data in the column will be lost. + +*/ +-- AlterTable +ALTER TABLE "public"."AppSettings" DROP COLUMN "seeOnboarding"; + +-- AlterTable +ALTER TABLE "public"."User" ADD COLUMN "seenOnboarding" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml index fbffa92c2..044d57cdb 100644 --- a/prisma/migrations/migration_lock.toml +++ b/prisma/migrations/migration_lock.toml @@ -1,3 +1,3 @@ # Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql" \ No newline at end of file +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 44cadd537..d228f43d8 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -2,8 +2,9 @@ // learn more about it in the docs: https://pris.ly/d/prisma-schema datasource db { - provider = "postgresql" - url = env("DATABASE_URL") + provider = "postgresql" + url = env("DATABASE_URL") + directUrl = env("DIRECT_URL") } generator client { @@ -41,23 +42,75 @@ model Session { } model User { - id String @id @default(cuid()) - name String? - email String @unique - emailVerified DateTime? - image String? - accounts Account[] - sessions Session[] - role UserRole @default(USER) - teamId Int? - teams Team[] - managedTeams TeamManager[] - stripeId String? @unique - billingPlan BillingPlan @default(FREE) + id String @id @default(cuid()) + name String? + email String @unique + emailVerified DateTime? + image String? + accounts Account[] + sessions Session[] + role UserRole @default(USER) + teamId Int? + teams Team[] + managedTeams TeamManager[] + stripeId String? @unique + billingPlan BillingPlan @default(FREE) + Notification Notification[] + AppSettings AppSettings[] + titles Title[] @default([]) + bannerImage String? + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + battletag String? + appliedTitles AppliedTitle[] + seenOnboarding Boolean @default(false) @@index([id, email]) } +enum Title { + // Special user titles + DEVELOPER + EMPLOYEE + BETA_TESTER + DAY_ONE_USER + BASIC_PLAN_SUBSCRIBER + PREMIUM_PLAN_SUBSCRIBER + VIP + + // Achievement titles + HIGHEST_RANK_ON_A_HERO + HIGHEST_AJAX_COUNT + HIGHEST_FLETA_DEADLIFT_PERCENTAGE + TOP_3_KILLS + TOP_3_DAMAGE_DEALT + TOP_3_HEALING + TOP_3_DAMAGE_BLOCKED + TOP_3_DEATHS + TOP_3_TIME_PLAYED +} + +enum ColorblindMode { + OFF + DEUTERANOPIA + PROTANOPIA + TRITANOPIA + CUSTOM +} + +model AppSettings { + id Int @id @default(autoincrement()) + userId String + colorblindMode ColorblindMode @default(OFF) + customTeam1Color String? + customTeam2Color String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@index([userId]) +} + enum BillingPlan { FREE BASIC @@ -72,6 +125,63 @@ model VerificationToken { @@unique([identifier, token]) } +model Notification { + id Int @id @default(autoincrement()) + userId String + title String + description String + read Boolean @default(false) + href String? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@index([userId]) +} + +enum AuditLogAction { + USER_BAN + USER_UNBAN + TRUST_SCORE_ADJUST + IMPERSONATE_USER + SUSPICIOUS_ACTIVITY_DETECTED + TEAM_INVITE_SENT + TEAM_AVATAR_UPDATED + TEAM_JOINED + TEAM_LEFT + TEAM_CREATED + TEAM_DELETED + TEAM_UPDATED + TEAM_MEMBER_PROMOTED + TEAM_MEMBER_DEMOTED + TEAM_MEMBER_REMOVED + TEAM_OWNERSHIP_TRANSFERRED + SCRIM_CREATED + SCRIM_UPDATED + SCRIM_DELETED + MAP_CREATED + MAP_UPDATED + MAP_DELETED + USER_AVATAR_UPDATED + USER_BANNER_UPDATED + USER_ACCOUNT_DELETED + USER_NAME_UPDATED + USER_BATTLETAG_UPDATED + BUG_REPORT_SUBMITTED +} + +model AuditLog { + id Int @id @default(autoincrement()) + userEmail String + action AuditLogAction + target String + details String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@index([userEmail, target]) +} + model Team { id Int @id @default(autoincrement()) name String @@ -138,6 +248,86 @@ model Map { @@index([scrimId]) } +model HeroBan { + id Int @id @default(autoincrement()) + scrimId Int + hero String + team String + banPosition Int + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + MapData MapData? @relation(fields: [MapDataId], references: [id]) + MapDataId Int + + @@index([scrimId]) + @@index([MapDataId]) +} + +model Note { + id Int @id @default(autoincrement()) + content String @default("") + scrimId Int + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + MapData MapData @relation(fields: [MapDataId], references: [id]) + MapDataId Int + + @@unique([scrimId, MapDataId]) + @@index([scrimId, MapDataId]) +} + +model AppliedTitle { + id Int @id @default(autoincrement()) + userId String + title Title + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + user User @relation(fields: [userId], references: [id]) + + @@unique([userId, title]) + @@index([userId]) +} + +enum CalculatedStatType { + FLETA_DEADLIFT_PERCENTAGE + FIRST_PICK_PERCENTAGE + FIRST_PICK_COUNT + FIRST_DEATH_PERCENTAGE + FIRST_DEATH_COUNT + MVP_SCORE + MAP_MVP_COUNT + AJAX_COUNT + AVERAGE_ULT_CHARGE_TIME + AVERAGE_TIME_TO_USE_ULT + AVERAGE_DROUGHT_TIME + KILLS_PER_ULTIMATE + DUEL_WINRATE_PERCENTAGE + FIGHT_REVERSAL_PERCENTAGE +} + +enum Role { + TANK + DAMAGE + SUPPORT +} + +model CalculatedStat { + id Int @id @default(autoincrement()) + scrimId Int + playerName String + hero String + role Role + stat CalculatedStatType + value Float + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + MapData MapData @relation(fields: [MapDataId], references: [id]) + MapDataId Int + + @@index([scrimId, MapDataId]) + @@index([playerName, hero, stat]) +} + enum EventType { defensive_assist dva_remech @@ -202,8 +392,12 @@ model MapData { ultimate_charged UltimateCharged[] ultimate_end UltimateEnd[] ultimate_start UltimateStart[] - Map Map? @relation(fields: [mapId], references: [id]) - mapId Int? + HeroBan HeroBan[] + Note Note[] + calculatedStats CalculatedStat[] + + Map Map? @relation(fields: [mapId], references: [id]) + mapId Int? @@index([scrimId]) @@index([mapId]) diff --git a/public/heroes/vendetta.png b/public/heroes/vendetta.png new file mode 100644 index 000000000..ab440c79b Binary files /dev/null and b/public/heroes/vendetta.png differ diff --git a/public/ranks/bronze.png b/public/ranks/bronze.png new file mode 100644 index 000000000..fe5d32ddf Binary files /dev/null and b/public/ranks/bronze.png differ diff --git a/public/ranks/champion.png b/public/ranks/champion.png new file mode 100644 index 000000000..7936d4101 Binary files /dev/null and b/public/ranks/champion.png differ diff --git a/public/ranks/diamond.png b/public/ranks/diamond.png new file mode 100644 index 000000000..12f25e106 Binary files /dev/null and b/public/ranks/diamond.png differ diff --git a/public/ranks/gold.png b/public/ranks/gold.png new file mode 100644 index 000000000..0628e3ee1 Binary files /dev/null and b/public/ranks/gold.png differ diff --git a/public/ranks/grandmaster.png b/public/ranks/grandmaster.png new file mode 100644 index 000000000..53a5b243f Binary files /dev/null and b/public/ranks/grandmaster.png differ diff --git a/public/ranks/masters.png b/public/ranks/masters.png new file mode 100644 index 000000000..b217bfa6f Binary files /dev/null and b/public/ranks/masters.png differ diff --git a/public/ranks/platinum.png b/public/ranks/platinum.png new file mode 100644 index 000000000..e576345f0 Binary files /dev/null and b/public/ranks/platinum.png differ diff --git a/public/ranks/silver.png b/public/ranks/silver.png new file mode 100644 index 000000000..390149c1a Binary files /dev/null and b/public/ranks/silver.png differ diff --git a/public/ranks/top-500.png b/public/ranks/top-500.png new file mode 100644 index 000000000..f1640ad56 Binary files /dev/null and b/public/ranks/top-500.png differ diff --git a/scripts/calculate-all-stats.ts b/scripts/calculate-all-stats.ts new file mode 100755 index 000000000..d0520ebe2 --- /dev/null +++ b/scripts/calculate-all-stats.ts @@ -0,0 +1,324 @@ +#!/usr/bin/env bun + +import { calculateStats } from "@/lib/calculate-stats"; +import prisma from "@/lib/prisma"; +import { type CalculatedStatType, type Role } from "@prisma/client"; + +async function getUniquePlayersForMap(mapDataId: number): Promise { + const players = await prisma.playerStat.findMany({ + where: { MapDataId: mapDataId }, + select: { player_name: true }, + distinct: ["player_name"], + }); + + return players.map((p) => p.player_name); +} + +async function processMap(mapDataId: number, scrimId: number) { + console.log(`\nProcessing MapData ID: ${mapDataId}, Scrim ID: ${scrimId}`); + + try { + const players = await getUniquePlayersForMap(mapDataId); + console.log(` Found ${players.length} unique players`); + + let successCount = 0; + let errorCount = 0; + + for (const playerName of players) { + try { + const stats = await calculateStats(mapDataId, playerName); + + const calculatedStatRecords: Array<{ + scrimId: number; + playerName: string; + hero: string; + role: Role; + stat: CalculatedStatType; + value: number; + MapDataId: number; + }> = []; + + if ( + stats.fletaDeadliftPercentage !== null && + !isNaN(stats.fletaDeadliftPercentage) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "FLETA_DEADLIFT_PERCENTAGE", + value: stats.fletaDeadliftPercentage, + MapDataId: mapDataId, + }); + } + + if ( + stats.firstPickPercentage !== null && + !isNaN(stats.firstPickPercentage) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "FIRST_PICK_PERCENTAGE", + value: stats.firstPickPercentage, + MapDataId: mapDataId, + }); + } + + if (stats.firstPickCount !== null && !isNaN(stats.firstPickCount)) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "FIRST_PICK_COUNT", + value: stats.firstPickCount, + MapDataId: mapDataId, + }); + } + + if ( + stats.firstDeathPercentage !== null && + !isNaN(stats.firstDeathPercentage) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "FIRST_DEATH_PERCENTAGE", + value: stats.firstDeathPercentage, + MapDataId: mapDataId, + }); + } + + if (stats.firstDeathCount !== null && !isNaN(stats.firstDeathCount)) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "FIRST_DEATH_COUNT", + value: stats.firstDeathCount, + MapDataId: mapDataId, + }); + } + + if ( + stats.mvpScore !== null && + stats.mvpScore !== undefined && + !isNaN(stats.mvpScore) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "MVP_SCORE", + value: stats.mvpScore, + MapDataId: mapDataId, + }); + } + + if (stats.isMapMVP) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "MAP_MVP_COUNT", + value: 1, + MapDataId: mapDataId, + }); + } + + if (stats.ajaxCount !== null && !isNaN(stats.ajaxCount)) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "AJAX_COUNT", + value: stats.ajaxCount, + MapDataId: mapDataId, + }); + } + + if ( + stats.averageUltChargeTime !== null && + !isNaN(stats.averageUltChargeTime) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "AVERAGE_ULT_CHARGE_TIME", + value: stats.averageUltChargeTime, + MapDataId: mapDataId, + }); + } + + if ( + stats.averageTimeToUseUlt !== null && + !isNaN(stats.averageTimeToUseUlt) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "AVERAGE_TIME_TO_USE_ULT", + value: stats.averageTimeToUseUlt, + MapDataId: mapDataId, + }); + } + + if (stats.droughtTime !== null && !isNaN(stats.droughtTime)) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "AVERAGE_DROUGHT_TIME", + value: stats.droughtTime, + MapDataId: mapDataId, + }); + } + + if (stats.killsPerUltimate !== null && !isNaN(stats.killsPerUltimate)) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "KILLS_PER_ULTIMATE", + value: stats.killsPerUltimate, + MapDataId: mapDataId, + }); + } + + if ( + stats.duels && + typeof stats.duels === "object" && + "winrate" in stats.duels + ) { + const duelWinrate = (stats.duels as { winrate: number }).winrate; + if (duelWinrate !== null && !isNaN(duelWinrate)) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "DUEL_WINRATE_PERCENTAGE", + value: duelWinrate, + MapDataId: mapDataId, + }); + } + } + + if ( + stats.fightReversalPercentage !== null && + !isNaN(stats.fightReversalPercentage) + ) { + calculatedStatRecords.push({ + scrimId, + playerName: stats.playerName, + hero: stats.hero, + role: stats.role as Role, + stat: "FIGHT_REVERSAL_PERCENTAGE", + value: stats.fightReversalPercentage, + MapDataId: mapDataId, + }); + } + + if (calculatedStatRecords.length > 0) { + await prisma.calculatedStat.createMany({ + data: calculatedStatRecords, + skipDuplicates: true, + }); + console.log( + ` ✓ Processed ${playerName}: ${calculatedStatRecords.length} stats saved` + ); + successCount++; + } else { + console.log(` ⚠ Processed ${playerName}: No valid stats to save`); + } + } catch (error) { + errorCount++; + console.error( + ` ✗ Error processing player ${playerName}:`, + error instanceof Error ? error.message : String(error) + ); + } + } + + console.log(` Summary: ${successCount} succeeded, ${errorCount} failed`); + return { successCount, errorCount }; + } catch (error) { + console.error( + ` ✗ Error processing map ${mapDataId}:`, + error instanceof Error ? error.message : String(error) + ); + return { successCount: 0, errorCount: 1 }; + } +} + +async function main() { + console.log("Starting calculation of stats for all maps...\n"); + + try { + const mapDataRecords = await prisma.mapData.findMany({ + select: { + id: true, + scrimId: true, + }, + where: { + mapId: { + not: null, + }, + }, + orderBy: { + id: "asc", + }, + skip: 10, + }); + + console.log(`Found ${mapDataRecords.length} MapData records to process\n`); + + let totalSuccess = 0; + let totalErrors = 0; + let mapsProcessed = 0; + + for (const mapData of mapDataRecords) { + const result = await processMap(mapData.id, mapData.scrimId); + totalSuccess += result.successCount; + totalErrors += result.errorCount; + mapsProcessed++; + + if (mapsProcessed % 10 === 0) { + console.log( + `\n--- Progress: ${mapsProcessed}/${mapDataRecords.length} maps processed ---\n` + ); + } + } + + console.log("\n" + "=".repeat(50)); + console.log("FINAL SUMMARY"); + console.log("=".repeat(50)); + console.log(`Total maps processed: ${mapsProcessed}`); + console.log(`Total players succeeded: ${totalSuccess}`); + console.log(`Total errors: ${totalErrors}`); + console.log("=".repeat(50)); + } catch (error) { + console.error("Fatal error:", error); + process.exit(1); + } finally { + await prisma.$disconnect(); + } +} + +main(); diff --git a/scripts/check-foreign-key-violations.sql b/scripts/check-foreign-key-violations.sql new file mode 100644 index 000000000..2da5b4658 --- /dev/null +++ b/scripts/check-foreign-key-violations.sql @@ -0,0 +1,333 @@ +-- SQL Script to Find Foreign Key Violations +-- Based on Prisma Schema +-- Run this against your PostgreSQL database + +-- ============================================ +-- ACCOUNT TABLE VIOLATIONS +-- ============================================ +SELECT 'Account -> User' AS violation_type, COUNT(*) AS violation_count +FROM "Account" a +LEFT JOIN "User" u ON a."userId" = u.id +WHERE u.id IS NULL; + +SELECT 'Account -> User (Details)' AS violation_type, a.id, a."userId" +FROM "Account" a +LEFT JOIN "User" u ON a."userId" = u.id +WHERE u.id IS NULL; + +-- ============================================ +-- SESSION TABLE VIOLATIONS +-- ============================================ +SELECT 'Session -> User' AS violation_type, COUNT(*) AS violation_count +FROM "Session" s +LEFT JOIN "User" u ON s."userId" = u.id +WHERE u.id IS NULL; + +SELECT 'Session -> User (Details)' AS violation_type, s.id, s."userId" +FROM "Session" s +LEFT JOIN "User" u ON s."userId" = u.id +WHERE u.id IS NULL; + +-- ============================================ +-- USER TABLE VIOLATIONS +-- ============================================ +SELECT 'User -> Team' AS violation_type, COUNT(*) AS violation_count +FROM "User" u +LEFT JOIN "Team" t ON u."teamId" = t.id +WHERE u."teamId" IS NOT NULL AND t.id IS NULL; + +SELECT 'User -> Team (Details)' AS violation_type, u.id, u."teamId" +FROM "User" u +LEFT JOIN "Team" t ON u."teamId" = t.id +WHERE u."teamId" IS NOT NULL AND t.id IS NULL; + +-- ============================================ +-- APPSETTINGS TABLE VIOLATIONS +-- ============================================ +SELECT 'AppSettings -> User' AS violation_type, COUNT(*) AS violation_count +FROM "AppSettings" a +LEFT JOIN "User" u ON a."userId" = u.id +WHERE u.id IS NULL; + +SELECT 'AppSettings -> User (Details)' AS violation_type, a.id, a."userId" +FROM "AppSettings" a +LEFT JOIN "User" u ON a."userId" = u.id +WHERE u.id IS NULL; + +-- ============================================ +-- NOTIFICATION TABLE VIOLATIONS +-- ============================================ +SELECT 'Notification -> User' AS violation_type, COUNT(*) AS violation_count +FROM "Notification" n +LEFT JOIN "User" u ON n."userId" = u.id +WHERE u.id IS NULL; + +SELECT 'Notification -> User (Details)' AS violation_type, n.id, n."userId" +FROM "Notification" n +LEFT JOIN "User" u ON n."userId" = u.id +WHERE u.id IS NULL; + +-- ============================================ +-- TEAM TABLE VIOLATIONS +-- ============================================ +SELECT 'Team -> User (ownerId)' AS violation_type, COUNT(*) AS violation_count +FROM "Team" t +LEFT JOIN "User" u ON t."ownerId" = u.id +WHERE u.id IS NULL; + +SELECT 'Team -> User (ownerId Details)' AS violation_type, t.id, t."ownerId" +FROM "Team" t +LEFT JOIN "User" u ON t."ownerId" = u.id +WHERE u.id IS NULL; + +-- ============================================ +-- TEAMMANAGER TABLE VIOLATIONS +-- ============================================ +SELECT 'TeamManager -> Team' AS violation_type, COUNT(*) AS violation_count +FROM "TeamManager" tm +LEFT JOIN "Team" t ON tm."teamId" = t.id +WHERE t.id IS NULL; + +SELECT 'TeamManager -> Team (Details)' AS violation_type, tm.id, tm."teamId" +FROM "TeamManager" tm +LEFT JOIN "Team" t ON tm."teamId" = t.id +WHERE t.id IS NULL; + +SELECT 'TeamManager -> User' AS violation_type, COUNT(*) AS violation_count +FROM "TeamManager" tm +LEFT JOIN "User" u ON tm."userId" = u.id +WHERE u.id IS NULL; + +SELECT 'TeamManager -> User (Details)' AS violation_type, tm.id, tm."userId" +FROM "TeamManager" tm +LEFT JOIN "User" u ON tm."userId" = u.id +WHERE u.id IS NULL; + +-- ============================================ +-- SCRIM TABLE VIOLATIONS +-- ============================================ +SELECT 'Scrim -> Team' AS violation_type, COUNT(*) AS violation_count +FROM "Scrim" s +LEFT JOIN "Team" t ON s."teamId" = t.id +WHERE s."teamId" IS NOT NULL AND t.id IS NULL; + +SELECT 'Scrim -> Team (Details)' AS violation_type, s.id, s."teamId" +FROM "Scrim" s +LEFT JOIN "Team" t ON s."teamId" = t.id +WHERE s."teamId" IS NOT NULL AND t.id IS NULL; + +-- ============================================ +-- MAP TABLE VIOLATIONS +-- ============================================ +SELECT 'Map -> Scrim' AS violation_type, COUNT(*) AS violation_count +FROM "Map" m +LEFT JOIN "Scrim" s ON m."scrimId" = s.id +WHERE m."scrimId" IS NOT NULL AND s.id IS NULL; + +SELECT 'Map -> Scrim (Details)' AS violation_type, m.id, m."scrimId" +FROM "Map" m +LEFT JOIN "Scrim" s ON m."scrimId" = s.id +WHERE m."scrimId" IS NOT NULL AND s.id IS NULL; + +-- ============================================ +-- MAPDATA TABLE VIOLATIONS +-- ============================================ +SELECT 'MapData -> Map' AS violation_type, COUNT(*) AS violation_count +FROM "MapData" md +LEFT JOIN "Map" m ON md."mapId" = m.id +WHERE md."mapId" IS NOT NULL AND m.id IS NULL; + +SELECT 'MapData -> Map (Details)' AS violation_type, md.id, md."mapId" +FROM "MapData" md +LEFT JOIN "Map" m ON md."mapId" = m.id +WHERE md."mapId" IS NOT NULL AND m.id IS NULL; + +-- ============================================ +-- HEROBAN TABLE VIOLATIONS +-- ============================================ +SELECT 'HeroBan -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "HeroBan" hb +LEFT JOIN "MapData" md ON hb."MapDataId" = md.id +WHERE md.id IS NULL; + +SELECT 'HeroBan -> MapData (Details)' AS violation_type, hb.id, hb."MapDataId" +FROM "HeroBan" hb +LEFT JOIN "MapData" md ON hb."MapDataId" = md.id +WHERE md.id IS NULL; + +-- ============================================ +-- NOTE TABLE VIOLATIONS +-- ============================================ +SELECT 'Note -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "Note" n +LEFT JOIN "MapData" md ON n."MapDataId" = md.id +WHERE md.id IS NULL; + +SELECT 'Note -> MapData (Details)' AS violation_type, n.id, n."MapDataId" +FROM "Note" n +LEFT JOIN "MapData" md ON n."MapDataId" = md.id +WHERE md.id IS NULL; + +-- ============================================ +-- EVENT TABLES VIOLATIONS (MapData references) +-- ============================================ + +-- DefensiveAssist +SELECT 'DefensiveAssist -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "DefensiveAssist" da +LEFT JOIN "MapData" md ON da."MapDataId" = md.id +WHERE da."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- DvaRemech +SELECT 'DvaRemech -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "DvaRemech" dr +LEFT JOIN "MapData" md ON dr."MapDataId" = md.id +WHERE dr."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- EchoDuplicateEnd +SELECT 'EchoDuplicateEnd -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "EchoDuplicateEnd" ede +LEFT JOIN "MapData" md ON ede."MapDataId" = md.id +WHERE ede."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- EchoDuplicateStart +SELECT 'EchoDuplicateStart -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "EchoDuplicateStart" eds +LEFT JOIN "MapData" md ON eds."MapDataId" = md.id +WHERE eds."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- HeroSpawn +SELECT 'HeroSpawn -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "HeroSpawn" hs +LEFT JOIN "MapData" md ON hs."MapDataId" = md.id +WHERE hs."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- HeroSwap +SELECT 'HeroSwap -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "HeroSwap" hs +LEFT JOIN "MapData" md ON hs."MapDataId" = md.id +WHERE hs."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- Kill +SELECT 'Kill -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "Kill" k +LEFT JOIN "MapData" md ON k."MapDataId" = md.id +WHERE k."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- MatchEnd +SELECT 'MatchEnd -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "MatchEnd" me +LEFT JOIN "MapData" md ON me."MapDataId" = md.id +WHERE me."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- MatchStart +SELECT 'MatchStart -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "MatchStart" ms +LEFT JOIN "MapData" md ON ms."MapDataId" = md.id +WHERE ms."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- MercyRez +SELECT 'MercyRez -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "MercyRez" mr +LEFT JOIN "MapData" md ON mr."MapDataId" = md.id +WHERE mr."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- ObjectiveCaptured +SELECT 'ObjectiveCaptured -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "ObjectiveCaptured" oc +LEFT JOIN "MapData" md ON oc."MapDataId" = md.id +WHERE oc."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- ObjectiveUpdated +SELECT 'ObjectiveUpdated -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "ObjectiveUpdated" ou +LEFT JOIN "MapData" md ON ou."MapDataId" = md.id +WHERE ou."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- OffensiveAssist +SELECT 'OffensiveAssist -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "OffensiveAssist" oa +LEFT JOIN "MapData" md ON oa."MapDataId" = md.id +WHERE oa."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- PayloadProgress +SELECT 'PayloadProgress -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "PayloadProgress" pp +LEFT JOIN "MapData" md ON pp."MapDataId" = md.id +WHERE pp."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- PlayerStat +SELECT 'PlayerStat -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "PlayerStat" ps +LEFT JOIN "MapData" md ON ps."MapDataId" = md.id +WHERE ps."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- PointProgress +SELECT 'PointProgress -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "PointProgress" pp +LEFT JOIN "MapData" md ON pp."MapDataId" = md.id +WHERE pp."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- RemechCharged +SELECT 'RemechCharged -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "RemechCharged" rc +LEFT JOIN "MapData" md ON rc."MapDataId" = md.id +WHERE rc."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- RoundEnd +SELECT 'RoundEnd -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "RoundEnd" re +LEFT JOIN "MapData" md ON re."MapDataId" = md.id +WHERE re."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- RoundStart +SELECT 'RoundStart -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "RoundStart" rs +LEFT JOIN "MapData" md ON rs."MapDataId" = md.id +WHERE rs."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- SetupComplete +SELECT 'SetupComplete -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "SetupComplete" sc +LEFT JOIN "MapData" md ON sc."MapDataId" = md.id +WHERE sc."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- UltimateCharged +SELECT 'UltimateCharged -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "UltimateCharged" uc +LEFT JOIN "MapData" md ON uc."MapDataId" = md.id +WHERE uc."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- UltimateEnd +SELECT 'UltimateEnd -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "UltimateEnd" ue +LEFT JOIN "MapData" md ON ue."MapDataId" = md.id +WHERE ue."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- UltimateStart +SELECT 'UltimateStart -> MapData' AS violation_type, COUNT(*) AS violation_count +FROM "UltimateStart" us +LEFT JOIN "MapData" md ON us."MapDataId" = md.id +WHERE us."MapDataId" IS NOT NULL AND md.id IS NULL; + +-- ============================================ +-- SUMMARY OF ALL VIOLATIONS +-- ============================================ +SELECT 'SUMMARY' AS section, 'Total Violation Types' AS metric, COUNT(*) AS count +FROM ( + SELECT 'Account -> User' AS violation_type FROM "Account" a LEFT JOIN "User" u ON a."userId" = u.id WHERE u.id IS NULL + UNION ALL SELECT 'Session -> User' FROM "Session" s LEFT JOIN "User" u ON s."userId" = u.id WHERE u.id IS NULL + UNION ALL SELECT 'User -> Team' FROM "User" u LEFT JOIN "Team" t ON u."teamId" = t.id WHERE u."teamId" IS NOT NULL AND t.id IS NULL + UNION ALL SELECT 'AppSettings -> User' FROM "AppSettings" a LEFT JOIN "User" u ON a."userId" = u.id WHERE u.id IS NULL + UNION ALL SELECT 'Notification -> User' FROM "Notification" n LEFT JOIN "User" u ON n."userId" = u.id WHERE u.id IS NULL + UNION ALL SELECT 'Team -> User (ownerId)' FROM "Team" t LEFT JOIN "User" u ON t."ownerId" = u.id WHERE u.id IS NULL + UNION ALL SELECT 'TeamManager -> Team' FROM "TeamManager" tm LEFT JOIN "Team" t ON tm."teamId" = t.id WHERE t.id IS NULL + UNION ALL SELECT 'TeamManager -> User' FROM "TeamManager" tm LEFT JOIN "User" u ON tm."userId" = u.id WHERE u.id IS NULL + UNION ALL SELECT 'Scrim -> Team' FROM "Scrim" s LEFT JOIN "Team" t ON s."teamId" = t.id WHERE s."teamId" IS NOT NULL AND t.id IS NULL + UNION ALL SELECT 'Map -> Scrim' FROM "Map" m LEFT JOIN "Scrim" s ON m."scrimId" = s.id WHERE m."scrimId" IS NOT NULL AND s.id IS NULL + UNION ALL SELECT 'MapData -> Map' FROM "MapData" md LEFT JOIN "Map" m ON md."mapId" = m.id WHERE md."mapId" IS NOT NULL AND m.id IS NULL + UNION ALL SELECT 'HeroBan -> MapData' FROM "HeroBan" hb LEFT JOIN "MapData" md ON hb."MapDataId" = md.id WHERE md.id IS NULL + UNION ALL SELECT 'Note -> MapData' FROM "Note" n LEFT JOIN "MapData" md ON n."MapDataId" = md.id WHERE md.id IS NULL +) violations; + + diff --git a/scripts/fix-calculated-stats-timestamps.sql b/scripts/fix-calculated-stats-timestamps.sql new file mode 100644 index 000000000..514c24ec5 --- /dev/null +++ b/scripts/fix-calculated-stats-timestamps.sql @@ -0,0 +1,22 @@ +-- Update CalculatedStat scrimId and createdAt to match the actual scrim and map creation date +-- This script fixes historic stats where scrimId and createdAt were set incorrectly +-- Note: MapDataId field actually contains a Map ID (field is misnamed in the schema) +-- Maps with null scrimId will be set to 0 as a fallback + +UPDATE "CalculatedStat" cs +SET "scrimId" = COALESCE(m."scrimId", 0), + "createdAt" = m."createdAt", + "updatedAt" = CURRENT_TIMESTAMP +FROM "Map" m +WHERE cs."MapDataId" = m.id + AND (cs."scrimId" != COALESCE(m."scrimId", 0) OR cs."createdAt" != m."createdAt"); + +-- Display summary of changes (run after the update) +SELECT + COUNT(*) as total_updated_stats, + COUNT(DISTINCT cs."scrimId") as affected_scrims, + COUNT(DISTINCT cs."playerName") as affected_players +FROM "CalculatedStat" cs +JOIN "Map" m ON cs."MapDataId" = m.id +WHERE cs."scrimId" = COALESCE(m."scrimId", 0) AND cs."createdAt" = m."createdAt"; + diff --git a/scripts/preview-calculated-stats-timestamp-changes.sql b/scripts/preview-calculated-stats-timestamp-changes.sql new file mode 100644 index 000000000..4e38d03bd --- /dev/null +++ b/scripts/preview-calculated-stats-timestamp-changes.sql @@ -0,0 +1,53 @@ +-- Preview what will be changed when fixing CalculatedStat timestamps +-- Run this BEFORE running the fix script to see what will be updated + +-- Summary of stats that need updating +SELECT + COUNT(*) as total_stats_to_update, + COUNT(DISTINCT cs."scrimId") as scrims_affected, + COUNT(DISTINCT cs."playerName") as players_affected, + MIN(cs."createdAt") as oldest_incorrect_timestamp, + MAX(cs."createdAt") as newest_incorrect_timestamp, + MIN(m."createdAt") as oldest_actual_map_date, + MAX(m."createdAt") as newest_actual_map_date +FROM "CalculatedStat" cs +JOIN "MapData" md ON cs."MapDataId" = md.id +JOIN "Map" m ON md."mapId" = m.id +WHERE cs."createdAt" != m."createdAt"; + +-- Sample of records that will be updated (first 20) +SELECT + cs.id, + cs."scrimId", + cs."MapDataId", + m.id as map_id, + m.name as map_name, + cs."playerName", + cs.hero, + cs.stat, + cs."createdAt" as current_timestamp, + m."createdAt" as correct_timestamp, + (cs."createdAt" - m."createdAt") as time_difference +FROM "CalculatedStat" cs +JOIN "MapData" md ON cs."MapDataId" = md.id +JOIN "Map" m ON md."mapId" = m.id +WHERE cs."createdAt" != m."createdAt" +ORDER BY cs.id +LIMIT 20; + +-- Breakdown by map +SELECT + m.id as map_id, + m.name as map_name, + m."createdAt" as map_date, + cs."scrimId", + COUNT(*) as stats_to_update, + MIN(cs."createdAt") as oldest_stat_timestamp, + MAX(cs."createdAt") as newest_stat_timestamp +FROM "CalculatedStat" cs +JOIN "MapData" md ON cs."MapDataId" = md.id +JOIN "Map" m ON md."mapId" = m.id +WHERE cs."createdAt" != m."createdAt" +GROUP BY m.id, m.name, m."createdAt", cs."scrimId" +ORDER BY m."createdAt" DESC; + diff --git a/src/app/(auth)/auth-error/layout.tsx b/src/app/(auth)/auth-error/layout.tsx index d35f300a6..2d81e1b98 100644 --- a/src/app/(auth)/auth-error/layout.tsx +++ b/src/app/(auth)/auth-error/layout.tsx @@ -1,10 +1,8 @@ -import Footer from "@/components/footer"; +import { Footer } from "@/components/footer"; export default function AuthErrorLayout({ children, -}: { - children: React.ReactNode; -}) { +}: LayoutProps<"/auth-error">) { return ( <> {children} diff --git a/src/app/(auth)/auth-error/page.tsx b/src/app/(auth)/auth-error/page.tsx index 1df3fc269..71df69a4d 100644 --- a/src/app/(auth)/auth-error/page.tsx +++ b/src/app/(auth)/auth-error/page.tsx @@ -1,8 +1,7 @@ import { Button } from "@/components/ui/button"; -import { SearchParams } from "@/types/next"; import { getTranslations } from "next-intl/server"; import Link from "next/link"; -type Props = { searchParams: SearchParams }; + type Error = | "Configuration" | "AccessDenied" @@ -10,7 +9,8 @@ type Error = | "AuthorizedCallbackError" | "Default"; -export default async function AuthErrorPage({ searchParams }: Props) { +export default async function AuthErrorPage(props: PageProps<"/auth-error">) { + const searchParams = await props.searchParams; const t = await getTranslations("authError"); const error = searchParams.error as Error; diff --git a/src/app/(auth)/sign-in/page.tsx b/src/app/(auth)/sign-in/page.tsx index fd6fcc1ff..0aba85424 100644 --- a/src/app/(auth)/sign-in/page.tsx +++ b/src/app/(auth)/sign-in/page.tsx @@ -1,19 +1,19 @@ -import { Metadata } from "next"; -import Link from "next/link"; - import { UserAuthForm } from "@/components/auth/user-auth-form"; -import { buttonVariants } from "@/components/ui/button"; +import { Link } from "@/components/ui/link"; import { auth } from "@/lib/auth"; -import { cn } from "@/lib/utils"; +import type { PagePropsWithLocale } from "@/types/next"; +import type { Metadata } from "next"; import { getTranslations } from "next-intl/server"; import Image from "next/image"; import { redirect } from "next/navigation"; -export async function generateMetadata({ - params: { locale }, -}: { - params: { locale: string }; -}): Promise { +export async function generateMetadata( + props: PagePropsWithLocale<"/sign-in"> +): Promise { + const params = await props.params; + + const { locale } = params; + const t = await getTranslations({ locale, namespace: "signInPage.metadataSignIn", @@ -50,58 +50,24 @@ export default async function AuthenticationPage() { const t = await getTranslations("signInPage"); return ( -
- -
- - Parsertime -
- - - {t("signUp")} - -
-
- -
+
+
+ +
- Parsertime
+ {t("parsertime")} -
-

{t("madeBy")}

-
-
-
-
-
-

- {t("signIn")} -

-

- {t("enterEmailSignIn")} -

-
- -
+
); diff --git a/src/app/(auth)/sign-up/page.tsx b/src/app/(auth)/sign-up/page.tsx index fe2f8b97f..fc8794c25 100644 --- a/src/app/(auth)/sign-up/page.tsx +++ b/src/app/(auth)/sign-up/page.tsx @@ -1,17 +1,17 @@ -import { Metadata } from "next"; -import Link from "next/link"; - import { UserAuthForm } from "@/components/auth/user-auth-form"; -import { buttonVariants } from "@/components/ui/button"; -import { cn } from "@/lib/utils"; +import { Link } from "@/components/ui/link"; +import type { PagePropsWithLocale } from "@/types/next"; +import type { Metadata } from "next"; import { getTranslations } from "next-intl/server"; import Image from "next/image"; -export async function generateMetadata({ - params: { locale }, -}: { - params: { locale: string }; -}): Promise { +export async function generateMetadata( + props: PagePropsWithLocale<"/sign-up"> +): Promise { + const params = await props.params; + + const { locale } = params; + const t = await getTranslations({ locale, namespace: "signInPage.metadataSignUp", @@ -42,58 +42,24 @@ export default async function AuthenticationPage() { const t = await getTranslations("signInPage"); return ( -
- -
- - Parsertime -
- - - {t("login")} - -
-
- -
+
+
+ +
- Parsertime
+ {t("parsertime")} -
-

{t("madeBy")}

-
-
-
-
-
-

- {t("createAccount")} -

-

- {t("enterEmailCreateAccount")} -

-
- -
+
); diff --git a/src/app/(auth)/verify-request/layout.tsx b/src/app/(auth)/verify-request/layout.tsx index f4f11df93..e2a7d0998 100644 --- a/src/app/(auth)/verify-request/layout.tsx +++ b/src/app/(auth)/verify-request/layout.tsx @@ -1,10 +1,8 @@ -import Footer from "@/components/footer"; +import { Footer } from "@/components/footer"; export default function RequestLayout({ children, -}: { - children: React.ReactNode; -}) { +}: LayoutProps<"/verify-request">) { return ( <> {children} diff --git a/src/app/(auth)/verify-request/page.tsx b/src/app/(auth)/verify-request/page.tsx index 26b10b0da..96e654d0d 100644 --- a/src/app/(auth)/verify-request/page.tsx +++ b/src/app/(auth)/verify-request/page.tsx @@ -1,6 +1,6 @@ import { Button } from "@/components/ui/button"; +import { Link } from "@/components/ui/link"; import { getTranslations } from "next-intl/server"; -import Link from "next/link"; export default async function VerifyRequestPage() { const t = await getTranslations("verifyRequest"); diff --git a/src/app/[team]/scrim/[scrimId]/edit/page.tsx b/src/app/[team]/scrim/[scrimId]/edit/page.tsx index 56cee3d52..1e41eb9ac 100644 --- a/src/app/[team]/scrim/[scrimId]/edit/page.tsx +++ b/src/app/[team]/scrim/[scrimId]/edit/page.tsx @@ -1,26 +1,24 @@ -import DashboardLayout from "@/components/dashboard-layout"; +import { DashboardLayout } from "@/components/dashboard-layout"; import { DangerZone } from "@/components/scrim/danger-zone"; import { EditScrimForm } from "@/components/scrim/edit-scrim-form"; +import { Link } from "@/components/ui/link"; import { getScrim } from "@/data/scrim-dto"; import { getTeamsWithPerms } from "@/data/user-dto"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; -import { SearchParams } from "@/types/next"; +import type { Route } from "next"; import { getTranslations } from "next-intl/server"; -import Link from "next/link"; -type Props = { - params: { team: string; scrimId: string }; - searchParams: SearchParams; -}; - -export default async function EditScrimPage({ params }: Props) { +export default async function EditScrimPage( + props: PageProps<"/[team]/scrim/[scrimId]/edit"> +) { + const params = await props.params; const scrim = await getScrim(parseInt(params.scrimId)); const session = await auth(); const t = await getTranslations("scrimPage.editScrim"); if (!scrim) { - return
Scrim not found
; + return
{t("scrimNotFound")}
; } const teamsWithPerms = await getTeamsWithPerms(session?.user?.email); @@ -33,24 +31,53 @@ export default async function EditScrimPage({ params }: Props) { }) ).sort((a, b) => a.id - b.id); + const [heroBansByMap, teamNamesByMap] = await Promise.all([ + Promise.all( + maps.map((map) => + prisma.heroBan.findMany({ + where: { MapDataId: map.id }, + orderBy: { banPosition: "asc" }, + }) + ) + ), + Promise.all( + maps.map((map) => + prisma.matchStart.findFirst({ + where: { MapDataId: map.id }, + select: { team_1_name: true, team_2_name: true }, + }) + ) + ), + ]); + + const mapsWithHeroBans = maps.map((map, index) => ({ + ...map, + heroBans: heroBansByMap[index], + team1Name: teamNamesByMap[index]?.team_1_name ?? "Team 1", + team2Name: teamNamesByMap[index]?.team_2_name ?? "Team 2", + })); + return (

- + ← {t("back")}

+
+

+ {t("title")} +

-

- {t("title")} -

- - - -
- - + +
+ +
); diff --git a/src/app/[team]/scrim/[scrimId]/layout.tsx b/src/app/[team]/scrim/[scrimId]/layout.tsx index 304475962..b89711136 100644 --- a/src/app/[team]/scrim/[scrimId]/layout.tsx +++ b/src/app/[team]/scrim/[scrimId]/layout.tsx @@ -1,14 +1,14 @@ -import NoAuthCard from "@/components/auth/no-auth"; +import { NoAuthCard } from "@/components/auth/no-auth"; import { SelectedPlayerProvider } from "@/components/map/player-switcher"; import { isAuthedToViewScrim } from "@/lib/auth"; -export default async function ScrimDashboardLayout({ - children, - params, -}: { - children: React.ReactNode; - params: { team: string; scrimId: string }; -}) { +export default async function ScrimDashboardLayout( + props: LayoutProps<"/[team]/scrim/[scrimId]"> +) { + const params = await props.params; + + const { children } = props; + const id = parseInt(params.scrimId); const isAuthed = await isAuthedToViewScrim(id); diff --git a/src/app/[team]/scrim/[scrimId]/loading.tsx b/src/app/[team]/scrim/[scrimId]/loading.tsx index 45d270820..cfd49909e 100644 --- a/src/app/[team]/scrim/[scrimId]/loading.tsx +++ b/src/app/[team]/scrim/[scrimId]/loading.tsx @@ -1,4 +1,4 @@ -import DashboardLayout from "@/components/dashboard-layout"; +import { DashboardLayout } from "@/components/dashboard-layout"; import { Card } from "@/components/ui/card"; import { Skeleton } from "@/components/ui/skeleton"; import { getTranslations } from "next-intl/server"; diff --git a/src/app/[team]/scrim/[scrimId]/map/[mapId]/layout.tsx b/src/app/[team]/scrim/[scrimId]/map/[mapId]/layout.tsx index 0feb58dee..93599c5f2 100644 --- a/src/app/[team]/scrim/[scrimId]/map/[mapId]/layout.tsx +++ b/src/app/[team]/scrim/[scrimId]/map/[mapId]/layout.tsx @@ -1,16 +1,16 @@ -import NoAuthCard from "@/components/auth/no-auth"; -import Footer from "@/components/footer"; -import MobileBanner from "@/components/map/mobile-banner"; +import { NoAuthCard } from "@/components/auth/no-auth"; +import { Footer } from "@/components/footer"; +import { MobileBanner } from "@/components/map/mobile-banner"; import { SelectedPlayerProvider } from "@/components/map/player-switcher"; import { isAuthedToViewMap } from "@/lib/auth"; -export default async function MapDashboardLayout({ - children, - params, -}: { - children: React.ReactNode; - params: { team: string; scrimId: string; mapId: string }; -}) { +export default async function MapDashboardLayout( + props: LayoutProps<"/[team]/scrim/[scrimId]/map/[mapId]"> +) { + const params = await props.params; + + const { children } = props; + const scrimId = parseInt(params.scrimId); const mapId = parseInt(params.mapId); diff --git a/src/app/[team]/scrim/[scrimId]/map/[mapId]/loading.tsx b/src/app/[team]/scrim/[scrimId]/map/[mapId]/loading.tsx index d776dec23..cb85fd430 100644 --- a/src/app/[team]/scrim/[scrimId]/map/[mapId]/loading.tsx +++ b/src/app/[team]/scrim/[scrimId]/map/[mapId]/loading.tsx @@ -5,7 +5,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import CardIcon from "@/components/ui/card-icon"; +import { CardIcon } from "@/components/ui/card-icon"; import { Skeleton } from "@/components/ui/skeleton"; import { getTranslations } from "next-intl/server"; diff --git a/src/app/[team]/scrim/[scrimId]/map/[mapId]/page.tsx b/src/app/[team]/scrim/[scrimId]/map/[mapId]/page.tsx index a8d815fb4..40f5692d1 100644 --- a/src/app/[team]/scrim/[scrimId]/map/[mapId]/page.tsx +++ b/src/app/[team]/scrim/[scrimId]/map/[mapId]/page.tsx @@ -5,28 +5,31 @@ import { GuestNav } from "@/components/guest-nav"; import { LocaleSwitcher } from "@/components/locale-switcher"; import { ComparePlayers } from "@/components/map/compare-players"; import { DefaultOverview } from "@/components/map/default-overview"; +import { HeroBans } from "@/components/map/hero-bans"; import { Killfeed } from "@/components/map/killfeed"; import { MapEvents } from "@/components/map/map-events"; -import PlayerSwitcher from "@/components/map/player-switcher"; +import { PlayerSwitcher } from "@/components/map/player-switcher"; +import { MobileNav } from "@/components/mobile-nav"; +import { Notifications } from "@/components/notifications"; +import { ReplayCode } from "@/components/scrim/replay-code"; import { ModeToggle } from "@/components/theme-switcher"; +import { TipTap } from "@/components/tiptap/tiptap"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { UserNav } from "@/components/user-nav"; import { getMostPlayedHeroes } from "@/data/player-dto"; import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; -import { translateMapName } from "@/lib/utils"; -import { SearchParams } from "@/types/next"; -import { Metadata } from "next"; +import { getColorblindMode, translateMapName } from "@/lib/utils"; +import type { PagePropsWithLocale } from "@/types/next"; +import type { Metadata, Route } from "next"; import { getTranslations } from "next-intl/server"; import Link from "next/link"; -type Props = { - params: { team: string; scrimId: string; mapId: string; locale: string }; - searchParams: SearchParams; -}; - -export async function generateMetadata({ params }: Props): Promise { +export async function generateMetadata( + props: PagePropsWithLocale<"/[team]/scrim/[scrimId]/map/[mapId]"> +): Promise { + const params = await props.params; const mapId = decodeURIComponent(params.mapId); const t = await getTranslations({ locale: params.locale, @@ -42,7 +45,7 @@ export async function generateMetadata({ params }: Props): Promise { }, }); - const translatedMapName = await translateMapName(mapName?.map_name || "Map"); + const translatedMapName = await translateMapName(mapName?.map_name ?? "Map"); return { title: t("title", { mapName: translatedMapName }), @@ -65,48 +68,66 @@ export async function generateMetadata({ params }: Props): Promise { }; } -export default async function MapDashboardPage({ params }: Props) { +export default async function MapDashboardPage( + props: PagePropsWithLocale<"/[team]/scrim/[scrimId]/map/[mapId]"> +) { + const params = await props.params; const id = parseInt(params.mapId); const session = await auth(); const user = await getUser(session?.user?.email); const t = await getTranslations("mapPage"); - const mostPlayedHeroes = await getMostPlayedHeroes(id); - - const mapName = await prisma.matchStart.findFirst({ - where: { - MapDataId: id, - }, - select: { - map_name: true, - }, - }); + const { team1, team2 } = await getColorblindMode(user?.id ?? ""); - const visibility = (await prisma.scrim.findFirst({ - where: { - id: parseInt(params.scrimId), - }, - select: { - guestMode: true, - }, - })) ?? { guestMode: false }; + const [mostPlayedHeroes, mapDetails, map, visibility, heroBans, noteContent] = + await Promise.all([ + getMostPlayedHeroes(id), + prisma.matchStart.findFirst({ + where: { MapDataId: id }, + select: { map_name: true, team_1_name: true }, + }), + prisma.map.findFirst({ + where: { id }, + select: { replayCode: true }, + }), + prisma.scrim.findFirst({ + where: { id: parseInt(params.scrimId) }, + select: { guestMode: true }, + }), + prisma.heroBan.findMany({ + where: { MapDataId: id }, + }), + prisma.note.findFirst({ + where: { + scrimId: parseInt(params.scrimId), + MapDataId: id, + }, + select: { content: true }, + }), + ]); - const translatedMapName = await translateMapName(mapName?.map_name || "Map"); + const translatedMapName = await translateMapName( + mapDetails?.map_name ?? "Map" + ); return (
- + +
{session ? ( - + <> + + + ) : ( - + )}
@@ -116,9 +137,12 @@ export default async function MapDashboardPage({ params }: Props) { {session ? ( - + <> + + + ) : ( - + )}
@@ -126,7 +150,7 @@ export default async function MapDashboardPage({ params }: Props) {

- + ← {t("back")}

@@ -135,6 +159,15 @@ export default async function MapDashboardPage({ params }: Props) {

{translatedMapName}

+ +
+
+ {map?.replayCode && ( + + )}
@@ -150,22 +183,28 @@ export default async function MapDashboardPage({ params }: Props) { {t("tabs.events")} {t("tabs.compare")} + {t("tabs.notes")} - + - + - + + +
+ +
+
diff --git a/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/loading.tsx b/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/loading.tsx index ac3402ed3..fc531aa2c 100644 --- a/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/loading.tsx +++ b/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/loading.tsx @@ -5,7 +5,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import CardIcon from "@/components/ui/card-icon"; +import { CardIcon } from "@/components/ui/card-icon"; import { Skeleton } from "@/components/ui/skeleton"; import { getTranslations } from "next-intl/server"; @@ -18,7 +18,7 @@ export default async function PlayerDashboardLoading() {
- +
@@ -45,7 +45,7 @@ export default async function PlayerDashboardLoading() {
-
+
@@ -138,9 +138,9 @@ export default async function PlayerDashboardLoading() {

-
-
-
+
+
+
@@ -167,7 +167,7 @@ export default async function PlayerDashboardLoading() {
-
+
diff --git a/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/page.tsx b/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/page.tsx index a3939cf1e..53c82776f 100644 --- a/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/page.tsx +++ b/src/app/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]/page.tsx @@ -3,7 +3,9 @@ import { MainNav } from "@/components/dashboard/main-nav"; import { Search } from "@/components/dashboard/search"; import { GuestNav } from "@/components/guest-nav"; import { LocaleSwitcher } from "@/components/locale-switcher"; -import PlayerSwitcher from "@/components/map/player-switcher"; +import { PlayerSwitcher } from "@/components/map/player-switcher"; +import { MobileNav } from "@/components/mobile-nav"; +import { Notifications } from "@/components/notifications"; import { PlayerAnalytics } from "@/components/player/analytics"; import { DefaultOverview } from "@/components/player/default-overview"; import { ModeToggle } from "@/components/theme-switcher"; @@ -14,23 +16,15 @@ import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; import { toTitleCase } from "@/lib/utils"; -import { SearchParams } from "@/types/next"; -import { Metadata } from "next"; +import type { PagePropsWithLocale } from "@/types/next"; +import type { Metadata, Route } from "next"; import { getTranslations } from "next-intl/server"; import Link from "next/link"; -type Props = { - params: { - team: string; - scrimId: string; - mapId: string; - playerId: string; - locale: string; - }; - searchParams: SearchParams; -}; - -export async function generateMetadata({ params }: Props): Promise { +export async function generateMetadata( + props: PagePropsWithLocale<"/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]"> +): Promise { + const params = await props.params; const t = await getTranslations({ locale: params.locale, namespace: "mapPage.playerMetadata", @@ -60,7 +54,10 @@ export async function generateMetadata({ params }: Props): Promise { }; } -export default async function PlayerDashboardPage({ params }: Props) { +export default async function PlayerDashboardPage( + props: PagePropsWithLocale<"/[team]/scrim/[scrimId]/map/[mapId]/player/[playerId]"> +) { + const params = await props.params; const t = await getTranslations("mapPage.player.dashboard"); const id = parseInt(params.mapId); const playerName = decodeURIComponent(params.playerId); @@ -93,13 +90,17 @@ export default async function PlayerDashboardPage({ params }: Props) {
- + +
{session ? ( - + <> + + + ) : ( )} @@ -111,7 +112,10 @@ export default async function PlayerDashboardPage({ params }: Props) { {session ? ( - + <> + + + ) : ( )} @@ -122,7 +126,9 @@ export default async function PlayerDashboardPage({ params }: Props) {

← {t("back")} diff --git a/src/app/[team]/scrim/[scrimId]/page.tsx b/src/app/[team]/scrim/[scrimId]/page.tsx index 1a306187a..1624f903c 100644 --- a/src/app/[team]/scrim/[scrimId]/page.tsx +++ b/src/app/[team]/scrim/[scrimId]/page.tsx @@ -1,11 +1,7 @@ -import DashboardLayout from "@/components/dashboard-layout"; -import { GuestNav } from "@/components/guest-nav"; -import { LocaleSwitcher } from "@/components/locale-switcher"; +import { DashboardLayout } from "@/components/dashboard-layout"; import { AddMapCard } from "@/components/map/add-map"; -import { MobileNav } from "@/components/mobile-nav"; import { ClientDate } from "@/components/scrim/client-date"; import { ReplayCode } from "@/components/scrim/replay-code"; -import { ModeToggle } from "@/components/theme-switcher"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Card, @@ -17,29 +13,25 @@ import { Link } from "@/components/ui/link"; import { Tooltip, TooltipContent, - TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { UserNav } from "@/components/user-nav"; import { getScrim } from "@/data/scrim-dto"; import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; import { getMapNames, toKebabCase } from "@/lib/utils"; -import { SearchParams } from "@/types/next"; +import type { PagePropsWithLocale } from "@/types/next"; import { $Enums } from "@prisma/client"; import { ExclamationTriangleIcon, Pencil2Icon } from "@radix-ui/react-icons"; -import { Metadata } from "next"; +import type { Metadata, Route } from "next"; import { getTranslations } from "next-intl/server"; import Image from "next/image"; import { notFound } from "next/navigation"; -type Props = { - params: { team: string; scrimId: string; locale: string }; - searchParams: SearchParams; -}; - -export async function generateMetadata({ params }: Props): Promise { +export async function generateMetadata( + props: PagePropsWithLocale<"/[team]/scrim/[scrimId]"> +): Promise { + const params = await props.params; const t = await getTranslations({ locale: params.locale, namespace: "scrimPage.metadata", @@ -78,7 +70,10 @@ export async function generateMetadata({ params }: Props): Promise { }; } -export default async function ScrimDashboardPage({ params }: Props) { +export default async function ScrimDashboardPage( + props: PagePropsWithLocale<"/[team]/scrim/[scrimId]"> +) { + const params = await props.params; const id = parseInt(params.scrimId); const session = await auth(); const t = await getTranslations("scrimPage"); @@ -122,109 +117,101 @@ export default async function ScrimDashboardPage({ params }: Props) { const mapNames = await getMapNames(); return ( - -
-
- -
- - - {session ? ( - - ) : ( - - )} -
+ +
+

+ ← {t("back")} + {" | "} + + {t("viewStats")} → + +

+
+

+ + {scrim?.name ?? t("newScrim")}{" "} + {hasPerms && ( + + + + + + {t("edit")} + + + )} + +

-
-

- ← {t("back")} -

-
-

- - {scrim?.name ?? t("newScrim")}{" "} - {hasPerms && ( +

+ +

+

+ {t("maps.title")} +

+ {maps.length > 0 ? ( +
+ {maps.map((map) => ( +
+ - - - - - - {t("edit")} - - + +

+ {mapNames.get(toKebabCase(map.name)) ?? map.name} +

+
+ + {t("maps.altText", + - )} - -

-
-

- -

-

- {t("maps.title")} -

- {maps.length > 0 ? ( -
- {maps.map((map) => ( -
- - - -

- {mapNames.get(toKebabCase(map.name)) ?? map.name} -

-
- - {t("maps.altText", - - - -
+ +
+ {map.replayCode && ( -
-
- -
- ))} - {hasPerms && } -
- ) : ( - <> - - - {t("noMaps.title")} - - {t("noMaps.description")} - - {t("noMaps.link")} - - . - - -
{hasPerms && }
- - )} -
+ )} +
+ + +
+ ))} + {hasPerms && } +
+ ) : ( + <> + + + {t("noMaps.title")} + + {t("noMaps.description")} + + {t("noMaps.link")} + + . + + +
{hasPerms && }
+ + )}
); diff --git a/src/app/about/layout.tsx b/src/app/about/layout.tsx index 2aed431a4..638ba7677 100644 --- a/src/app/about/layout.tsx +++ b/src/app/about/layout.tsx @@ -1,10 +1,6 @@ -import Header from "@/components/header"; +import { Header } from "@/components/header"; -export default function AboutPageLayout({ - children, -}: { - children: React.ReactNode; -}) { +export default function AboutPageLayout({ children }: LayoutProps<"/about">) { return (
diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 7b9327659..92d84560f 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -1,3 +1,4 @@ +import { Link } from "@/components/ui/link"; import { AcademicCapIcon, HandRaisedIcon, @@ -6,10 +7,10 @@ import { ServerStackIcon, UserGroupIcon, } from "@heroicons/react/20/solid"; +import type { Route } from "next"; import { getTranslations } from "next-intl/server"; import Image from "next/image"; -import Link from "next/link"; -import { SVGProps } from "react"; +import type { SVGProps } from "react"; export default async function AboutPage() { const t = await getTranslations("aboutPage"); @@ -189,7 +190,7 @@ export default async function AboutPage() { {/* Header section */}
-

+

{t("headerSection.title")}

@@ -200,7 +201,7 @@ export default async function AboutPage() { {/* Content section */}

-
+

{t("contentSection.description1")}

{t("contentSection.description2")}

@@ -250,19 +251,19 @@ export default async function AboutPage() { {/* Values section */}
-

+

{t("featureSection.title")}

{t("featureSection.description")}

-
+
{values.map((value) => (
{/* Team section */} -
+
-

+

{t("teamSection.title")}

@@ -294,7 +295,7 @@ export default async function AboutPage() { width={324} height={300} /> -

+

{person.name}

@@ -324,7 +325,7 @@ export default async function AboutPage() {

@@ -367,14 +368,14 @@ export default async function AboutPage() {
{t("ctaSection.altText")} {t("ctaSection.altText")} (
-

+

{t("footerNav.solutions.title")}

    {footerNavigation.solutions.map((item) => (
-

+

{t("footerNav.support.title")}

    {footerNavigation.support.map((item) => (
  • -

    +

    {t("footerNav.company.title")}

      {footerNavigation.company.map((item) => (
    -

    +

    {t("footerNav.legal.title")}

      {footerNavigation.legal.map((item) => (
    -
    +

    © 2024–{new Date().getFullYear()}{" "} {t("footerNav.copyright")} diff --git a/src/app/api/(cron)/delete-empty-scrims/route.ts b/src/app/api/(cron)/delete-empty-scrims/route.ts index 066ab5f77..f50ceb585 100644 --- a/src/app/api/(cron)/delete-empty-scrims/route.ts +++ b/src/app/api/(cron)/delete-empty-scrims/route.ts @@ -1,4 +1,4 @@ -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; export async function DELETE() { diff --git a/src/app/api/(cron)/delete-unused-blobs/route.ts b/src/app/api/(cron)/delete-unused-blobs/route.ts index 445b511f0..b4c97b27e 100644 --- a/src/app/api/(cron)/delete-unused-blobs/route.ts +++ b/src/app/api/(cron)/delete-unused-blobs/route.ts @@ -1,4 +1,4 @@ -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { del, list } from "@vercel/blob"; @@ -8,11 +8,13 @@ const VALID_IMAGE_URL_HOSTS = { export async function DELETE() { const usersWithImages = await prisma.user.findMany({ - where: { image: { not: null } }, - select: { image: true }, + where: { OR: [{ image: { not: null } }, { bannerImage: { not: null } }] }, + select: { image: true, bannerImage: true }, }); - const userImages = usersWithImages.map((user) => user.image).filter(Boolean); + const userImages = usersWithImages.flatMap((user) => + [user.image, user.bannerImage].filter(Boolean) + ); const userBlobs = userImages.filter((url) => url.includes(VALID_IMAGE_URL_HOSTS.vercel_blob) ); diff --git a/src/app/api/(email)/send-contact-form-email/route.ts b/src/app/api/(email)/send-contact-form-email/route.ts index 33a2ea7f5..6a03adefb 100644 --- a/src/app/api/(email)/send-contact-form-email/route.ts +++ b/src/app/api/(email)/send-contact-form-email/route.ts @@ -1,19 +1,26 @@ import ContactFormEmail from "@/components/email/contact-form"; -import { sendEmail } from "@/lib/email"; -import Logger from "@/lib/logger"; +import { email } from "@/lib/email"; +import { Logger } from "@/lib/logger"; import { render } from "@react-email/render"; import { Ratelimit } from "@upstash/ratelimit"; +import { ipAddress } from "@vercel/functions"; import { kv } from "@vercel/kv"; -import { NextRequest } from "next/server"; +import { checkBotId } from "botid/server"; +import type { NextRequest } from "next/server"; import { z } from "zod"; const ContactFormEmailSchema = z.object({ name: z.string().min(1), - email: z.string().email(), + email: z.email(), message: z.string().min(1), }); export async function POST(req: NextRequest) { + const verification = await checkBotId(); + if (verification.isBot) { + return new Response("Access denied", { status: 403 }); + } + // Create a new ratelimiter, that allows 3 requests per 1 minute const ratelimit = new Ratelimit({ redis: kv, @@ -22,7 +29,7 @@ export async function POST(req: NextRequest) { }); // Limit the requests to 5 per minute per user - const identifier = req.ip ?? "127.0.0.1"; + const identifier = ipAddress(req) ?? "127.0.0.1"; const { success } = await ratelimit.limit(identifier); if (!success) { @@ -35,7 +42,7 @@ export async function POST(req: NextRequest) { return new Response("Invalid request", { status: 400 }); } - const emailHtml = render( + const emailHtml = await render( ContactFormEmail({ name: body.data.name, email: body.data.email, @@ -44,7 +51,7 @@ export async function POST(req: NextRequest) { ); try { - await sendEmail({ + await email.sendEmail({ to: "help@parsertime.app", from: "noreply@lux.dev", subject: `New message from ${body.data.name} | Parsertime`, diff --git a/src/app/api/(email)/send-team-invite/route.ts b/src/app/api/(email)/send-team-invite/route.ts index 9604a9fbe..b49bac0af 100644 --- a/src/app/api/(email)/send-team-invite/route.ts +++ b/src/app/api/(email)/send-team-invite/route.ts @@ -1,13 +1,23 @@ import TeamInviteUserEmail from "@/components/email/team-invite"; import { getUser } from "@/data/user-dto"; -import { sendEmail } from "@/lib/email"; +import { auditLog } from "@/lib/audit-logs"; +import { email } from "@/lib/email"; import { createShortLink } from "@/lib/link-service"; +import { Logger } from "@/lib/logger"; +import { notifications } from "@/lib/notifications"; import prisma from "@/lib/prisma"; +import { isTaggedError } from "@/lib/utils"; import { render } from "@react-email/render"; import { track } from "@vercel/analytics/server"; -import { NextRequest } from "next/server"; +import { checkBotId } from "botid/server"; +import { after, type NextRequest } from "next/server"; export async function POST(req: NextRequest) { + const verification = await checkBotId(); + if (verification.isBot) { + return new Response("Access denied", { status: 403 }); + } + const inviteeEmail = req.nextUrl.searchParams.get("email"); const inviteToken = req.nextUrl.searchParams.get("token"); @@ -40,7 +50,7 @@ export async function POST(req: NextRequest) { `${baseUrl}/team/join/${inviteToken}` ); - const emailHtml = render( + const emailHtml = await render( TeamInviteUserEmail({ username: inviteeEmail, userImage: user.image ?? `https://avatar.vercel.sh/${user.name}.png`, @@ -53,22 +63,75 @@ export async function POST(req: NextRequest) { ); try { - await sendEmail({ + await notifications.createInAppNotification({ + userId: user.id, + title: `You've been invited to join ${team.name} on Parsertime`, + description: `You've been invited to join ${team.name} by ${inviter.name}. Click this notification to accept the invitation.`, + href: `/team/join/${inviteToken}`, + }); + } catch (error) { + if (error && typeof error === "object" && "_tag" in error) { + Logger.error("Error creating in-app notification", error._tag); + } + // fail silently, just log the error as notifications are not critical + } + + try { + await email.sendEmail({ to: inviteeEmail, from: "noreply@lux.dev", subject: `Join ${team.name} on Parsertime`, html: emailHtml, }); } catch (error) { - return new Response("Error sending email", { status: 500 }); - } + if (isTaggedError(error)) { + switch (error._tag) { + case "ValidationError": + return new Response("Invalid email arguments", { status: 400 }); + case "ConfigurationError": + return new Response( + "Configuration error with email service. Please contact support.", + { status: 500 } + ); + case "RateLimitError": + return new Response( + "Rate limit exceeded for sending email. Try again later.", + { status: 429 } + ); + case "EmailSendError": + return new Response( + "Error sending email with email service. Please contact support.", + { status: 500 } + ); + default: + return new Response( + "Unknown error sending email. Please contact support.", + { status: 500 } + ); + } + } - await track("Email Sent", { type: "Team Invite" }); + return new Response( + "Unknown error sending email. Please contact support.", + { status: 500 } + ); + } - await track("Team Invite Sent", { - user: inviter.email, - team: team.name, - invitee: inviteeEmail, + after(async () => { + await Promise.all([ + auditLog.createAuditLog({ + userEmail: inviter.email, + action: "TEAM_INVITE_SENT", + target: inviteeEmail, + details: `Invited ${inviteeEmail} to join ${team.name}`, + }), + track("Team Invite Sent", { + user: inviter.email, + team: team.name, + invitee: inviteeEmail, + }), + track("Email Sent", { type: "Team Invite" }), + ]); }); return new Response("OK", { status: 200 }); diff --git a/src/app/api/admin/audit-logs/route.ts b/src/app/api/admin/audit-logs/route.ts new file mode 100644 index 000000000..5b00c0036 --- /dev/null +++ b/src/app/api/admin/audit-logs/route.ts @@ -0,0 +1,91 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import prisma from "@/lib/prisma"; +import { $Enums, type AuditLogAction, type Prisma } from "@prisma/client"; +import { forbidden, unauthorized } from "next/navigation"; +import { type NextRequest, NextResponse } from "next/server"; + +export async function GET(req: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const user = await getUser(session.user.email); + if (!user) unauthorized(); + if (user.role !== $Enums.UserRole.ADMIN) forbidden(); + + const searchParams = req.nextUrl.searchParams; + const cursor = searchParams.get("cursor"); + const limit = searchParams.get("limit") ?? "10"; + const parsedLimit = parseInt(limit); + const userEmailSearch = searchParams.get("userEmail"); + const targetSearch = searchParams.get("target"); + + const actionParams = searchParams.getAll("action") as AuditLogAction[]; + const startDateParam = searchParams.get("startDate"); + const endDateParam = searchParams.get("endDate"); + + const whereClause: Prisma.AuditLogWhereInput = {}; + + if (actionParams.length > 0) { + if (actionParams.length === 1) { + whereClause.action = actionParams[0]; + } else { + whereClause.action = { in: actionParams }; + } + } + + if (userEmailSearch) { + whereClause.userEmail = { + contains: userEmailSearch, + mode: "insensitive", + }; + } + + if (targetSearch) { + whereClause.target = { + contains: targetSearch, + mode: "insensitive", + }; + } + + const createdAtFilter: Prisma.DateTimeFilter<"AuditLog"> = {}; + if (startDateParam) { + const startDate = new Date(startDateParam); + if (!isNaN(startDate.getTime())) { + createdAtFilter.gte = startDate; + } + } + if (endDateParam) { + const endDate = new Date(endDateParam); + if (!isNaN(endDate.getTime())) { + createdAtFilter.lte = endDate; + } + } + if (Object.keys(createdAtFilter).length > 0) { + whereClause.createdAt = createdAtFilter; + } + + const auditLogs = await prisma.auditLog.findMany({ + where: whereClause, + take: parsedLimit, + ...(cursor + ? { + skip: 1, // Skip the cursor + cursor: { + id: parseInt(cursor), + }, + } + : {}), + orderBy: { + createdAt: "desc", + }, + }); + + const nextCursor = auditLogs[auditLogs.length - 1]?.id; + + return NextResponse.json({ + items: auditLogs, + nextCursor: nextCursor?.toString() ?? undefined, + hasMore: auditLogs.length === parsedLimit, + }); +} diff --git a/src/app/api/admin/impersonate-user/route.ts b/src/app/api/admin/impersonate-user/route.ts index 3ba50453a..6457ca5f2 100644 --- a/src/app/api/admin/impersonate-user/route.ts +++ b/src/app/api/admin/impersonate-user/route.ts @@ -1,34 +1,39 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth, getImpersonateUrl } from "@/lib/auth"; import { $Enums } from "@prisma/client"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const ImpersonateUserSchema = z.object({ - email: z.string().email(), + email: z.email(), isProd: z.boolean(), }); export async function POST(req: NextRequest) { const session = await auth(); - - if (!session || !session.user) { - return new Response("Unauthorized", { status: 401 }); - } + if (!session?.user) unauthorized(); const user = await getUser(session.user.email); - if (!user) return new Response("Unauthorized", { status: 401 }); - - if (user.role !== $Enums.UserRole.ADMIN) { - return new Response("Unauthorized", { status: 401 }); - } + if (!user) unauthorized(); + if (user.role !== $Enums.UserRole.ADMIN) unauthorized(); const body = ImpersonateUserSchema.safeParse(await req.json()); if (!body.success) return new Response("Invalid request", { status: 400 }); const url = await getImpersonateUrl(body.data.email, body.data.isProd); + after(async () => { + await auditLog.createAuditLog({ + userEmail: session.user.email, + action: "IMPERSONATE_USER", + target: body.data.email, + details: `Impersonated ${body.data.email}`, + }); + }); + return new Response(JSON.stringify({ url }), { headers: { "content-type": "application/json" }, }); diff --git a/src/app/api/admin/user-search/route.ts b/src/app/api/admin/user-search/route.ts new file mode 100644 index 000000000..84b9bc90f --- /dev/null +++ b/src/app/api/admin/user-search/route.ts @@ -0,0 +1,94 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import prisma from "@/lib/prisma"; +import type { Prisma } from "@prisma/client"; +import { $Enums } from "@prisma/client"; +import { forbidden, unauthorized } from "next/navigation"; +import { type NextRequest, NextResponse } from "next/server"; + +export async function GET(req: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const user = await getUser(session.user.email); + if (!user) unauthorized(); + if (user.role !== $Enums.UserRole.ADMIN) forbidden(); + + const searchParams = req.nextUrl.searchParams; + const cursor = searchParams.get("cursor"); + const limit = searchParams.get("limit") ?? "10"; + const parsedLimit = parseInt(limit); + const searchQuery = searchParams.get("search"); + const billingPlan = searchParams.get("billingPlan"); + const joinedAfter = searchParams.get("joinedAfter"); + const joinedBefore = searchParams.get("joinedBefore"); + + const whereClause: Prisma.UserWhereInput = { + AND: [ + // Search by username or email + searchQuery + ? { + OR: [ + { + name: { + contains: searchQuery, + mode: "insensitive", + }, + }, + { + email: { + contains: searchQuery, + mode: "insensitive", + }, + }, + ], + } + : {}, + // Filter by billing plan + billingPlan + ? { + billingPlan: billingPlan as $Enums.BillingPlan, + } + : {}, + // Filter by join date range + joinedAfter || joinedBefore + ? { + createdAt: { + ...(joinedAfter && { gte: new Date(joinedAfter) }), + ...(joinedBefore && { lte: new Date(joinedBefore) }), + }, + } + : {}, + ], + }; + + const users = await prisma.user.findMany({ + where: whereClause, + select: { + id: true, + name: true, + email: true, + billingPlan: true, + role: true, + emailVerified: true, + createdAt: true, + }, + take: parsedLimit, + ...(cursor + ? { + skip: 1, // Skip the cursor + cursor: { + id: cursor, + }, + } + : {}), + }); + + const nextCursor = users[users.length - 1]?.id; + + return NextResponse.json({ + items: users, + nextCursor: nextCursor ?? null, + hasMore: users.length === parsedLimit, + }); +} diff --git a/src/app/api/notifications/mark-read/route.ts b/src/app/api/notifications/mark-read/route.ts new file mode 100644 index 000000000..9ab405d92 --- /dev/null +++ b/src/app/api/notifications/mark-read/route.ts @@ -0,0 +1,62 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import { notifications } from "@/lib/notifications"; +import { notFound, unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; +import { z } from "zod"; + +const bodySchema = z.object({ + id: z.number().optional(), + all: z.boolean().optional(), +}); + +export async function POST(request: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const user = await getUser(session.user.email); + if (!user) unauthorized(); + + const body = bodySchema.safeParse(await request.json()); + if (!body.success) { + return new Response("Invalid request body", { status: 400 }); + } + const { id, all } = body.data; + + try { + if (all) { + await notifications.markAllAsRead(user.id); + return new Response("OK", { status: 200 }); + } + + if (id) { + await notifications.markAsRead(user.id, id); + return new Response("OK", { status: 200 }); + } + + return new Response( + "An unknown error occurred. Please ensure the request body is valid.", + { + status: 400, + } + ); + } catch (error) { + Logger.error("Error marking notification as read:", error); + + // Handle specific error types if needed + if (error && typeof error === "object" && "_tag" in error) { + if (error._tag === "UnauthorizedError") { + unauthorized(); + } + if (error._tag === "NotFoundError") { + notFound(); + } + if (error._tag === "DatabaseError") { + return new Response("Database error", { status: 500 }); + } + } + + return new Response("Internal server error", { status: 500 }); + } +} diff --git a/src/app/api/notifications/route.ts b/src/app/api/notifications/route.ts new file mode 100644 index 000000000..876bc0b08 --- /dev/null +++ b/src/app/api/notifications/route.ts @@ -0,0 +1,160 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import { notifications } from "@/lib/notifications"; +import { getSession } from "next-auth/react"; +import { notFound, unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; +import { z } from "zod"; + +const createNotificationSchema = z.object({ + title: z.string().min(1), + description: z.string().min(1), + href: z.string().optional(), + userId: z.string().optional(), +}); + +export async function GET(request: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const user = await getUser(session.user.email); + if (!user) unauthorized(); + + const searchParams = request.nextUrl.searchParams; + const page = parseInt(searchParams.get("page") ?? "1"); + const limit = parseInt(searchParams.get("limit") ?? "10"); + + try { + const result = await notifications.getUserNotificationsPaginated( + user.id, + page, + limit + ); + + return new Response( + JSON.stringify({ + notifications: result.notifications, + pagination: result.pagination, + }) + ); + } catch (error) { + Logger.error("Error fetching notifications:", error); + + // Handle specific error types if needed + if (error && typeof error === "object" && "_tag" in error) { + if (error._tag === "UnauthorizedError") { + unauthorized(); + } + if (error._tag === "NotFoundError") { + notFound(); + } + if (error._tag === "DatabaseError") { + return new Response("Database error", { status: 500 }); + } + } + + return new Response("Internal server error", { status: 500 }); + } +} + +export async function POST(request: NextRequest) { + const session = await getSession(); + if (!session) unauthorized(); + + try { + const body = createNotificationSchema.safeParse(await request.json()); + if (!body.success) { + return new Response("Invalid request body", { status: 400 }); + } + + // Determine the target user ID + let targetUserId: string; + + if (body.data.userId) { + // Explicit user ID provided - verify session user has permission + const sessionUser = await getUser(session.user.email); + if (!sessionUser) unauthorized(); + + // For now, allow any authenticated user to create notifications for any user + // TODO: Add role-based checks here + targetUserId = body.data.userId; + } else { + // Fallback to session user (backward compatibility) + const sessionUser = await getUser(session.user.email); + if (!sessionUser) unauthorized(); + targetUserId = sessionUser.id; + } + + const notification = await notifications.createInAppNotification({ + title: body.data.title, + description: body.data.description, + href: body.data.href, + userId: targetUserId, + }); + + return new Response(JSON.stringify(notification), { + status: 201, + headers: { + "Content-Type": "application/json", + }, + }); + } catch (error) { + Logger.error("Error creating notification:", error); + + // Handle specific error types if needed + if (error && typeof error === "object" && "_tag" in error) { + if (error._tag === "ValidationError") { + return new Response("Validation error", { status: 400 }); + } + if (error._tag === "UserNotFoundError") { + return new Response("User not found", { status: 404 }); + } + if (error._tag === "UnauthorizedError") { + unauthorized(); + } + if (error._tag === "NotFoundError") { + notFound(); + } + if (error._tag === "DatabaseError") { + return new Response("Database error", { status: 500 }); + } + } + + return new Response("Internal server error", { status: 500 }); + } +} + +export async function DELETE(request: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const user = await getUser(session.user.email); + if (!user) unauthorized(); + + const searchParams = request.nextUrl.searchParams; + const id = searchParams.get("id"); + if (!id) return new Response("No ID provided", { status: 400 }); + + try { + await notifications.deleteNotification(user.id, parseInt(id)); + return new Response("OK", { status: 200 }); + } catch (error) { + Logger.error("Error deleting notification:", error); + + // Handle specific error types if needed + if (error && typeof error === "object" && "_tag" in error) { + if (error._tag === "UnauthorizedError") { + unauthorized(); + } + if (error._tag === "NotFoundError") { + notFound(); + } + if (error._tag === "DatabaseError") { + return new Response("Database error", { status: 500 }); + } + } + + return new Response("Internal server error", { status: 500 }); + } +} diff --git a/src/app/api/og/route.tsx b/src/app/api/og/route.tsx index d3f3c920b..4243d9027 100644 --- a/src/app/api/og/route.tsx +++ b/src/app/api/og/route.tsx @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/require-await */ /* eslint-disable @next/next/no-img-element */ -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import { ImageResponse } from "next/og"; export const runtime = "edge"; @@ -16,53 +16,51 @@ export async function GET(request: Request) { : "My default title"; return new ImageResponse( - ( +

    -
    - Parsertime -
    -
    - {title} -
    + Parsertime
    - ), +
    + {title} +
    +
    , { width: 1200, height: 630, diff --git a/src/app/api/player/stats/route.ts b/src/app/api/player/stats/route.ts new file mode 100644 index 000000000..5a053db5f --- /dev/null +++ b/src/app/api/player/stats/route.ts @@ -0,0 +1,138 @@ +import { + getAllDeathsForPlayer, + getAllKillsForPlayer, + getAllMapWinratesForPlayer, + getAllStatsForPlayer, +} from "@/data/scrim-dto"; +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import { Permission } from "@/lib/permissions"; +import prisma from "@/lib/prisma"; +import { NextResponse, type NextRequest } from "next/server"; +import { z } from "zod"; + +const PlayerNameSchema = z.string().min(1); + +export async function GET(request: NextRequest) { + const session = await auth(); + if (!session) { + return new Response("Unauthorized", { status: 401 }); + } + + const user = await getUser(session.user.email); + if (!user) { + return new Response("User not found", { status: 404 }); + } + + const playerName = request.nextUrl.searchParams.get("playerName"); + if (!playerName) { + return new Response("Player name is required", { status: 400 }); + } + + const validPlayerName = PlayerNameSchema.safeParse(playerName); + if (!validPlayerName.success) { + return new Response("Invalid player name", { status: 400 }); + } + + const name = decodeURIComponent(validPlayerName.data); + + const [timeframe1, timeframe2, timeframe3] = await Promise.all([ + new Permission("stats-timeframe-1").check(), + new Permission("stats-timeframe-2").check(), + new Permission("stats-timeframe-3").check(), + ]); + + const playerScrims = await prisma.playerStat.findMany({ + where: { player_name: { equals: name, mode: "insensitive" } }, + select: { scrimId: true }, + distinct: ["scrimId"], + }); + + const scrimIds = playerScrims.map((scrim) => scrim.scrimId); + + const allScrims = await prisma.scrim.findMany({ + where: { id: { in: scrimIds } }, + }); + + const week = new Date(); + week.setDate(week.getDate() - 7); + const oneWeekScrims = allScrims.filter((scrim) => scrim.date >= week); + + const twoWeeks = new Date(); + twoWeeks.setDate(twoWeeks.getDate() - 14); + const twoWeeksScrims = allScrims.filter((scrim) => scrim.date >= twoWeeks); + + const month = new Date(); + month.setMonth(month.getMonth() - 1); + const monthScrims = allScrims.filter((scrim) => scrim.date >= month); + + const threeMonths = new Date(); + threeMonths.setMonth(threeMonths.getMonth() - 3); + const threeMonthsScrims = allScrims.filter( + (scrim) => scrim.date >= threeMonths + ); + + const sixMonths = new Date(); + sixMonths.setMonth(sixMonths.getMonth() - 6); + const sixMonthsScrims = allScrims.filter((scrim) => scrim.date >= sixMonths); + + const year = new Date(); + year.setFullYear(year.getFullYear() - 1); + const yearScrims = allScrims.filter((scrim) => scrim.date >= year); + + const data = { + "one-week": oneWeekScrims, + "two-weeks": twoWeeksScrims, + "one-month": monthScrims, + "three-months": threeMonthsScrims, + "six-months": sixMonthsScrims, + "one-year": yearScrims, + "all-time": allScrims, + custom: [], + }; + + const permitted = timeframe3 + ? "all-time" + : timeframe2 + ? "six-months" + : "one-month"; + + const permittedScrimIds = data[permitted].map((scrim) => scrim.id); + + try { + const [allPlayerStats, allPlayerKills, mapWinrates, allPlayerDeaths] = + await Promise.all([ + getAllStatsForPlayer(permittedScrimIds, name), + getAllKillsForPlayer(permittedScrimIds, name), + getAllMapWinratesForPlayer(permittedScrimIds, name), + getAllDeathsForPlayer(permittedScrimIds, name), + ]); + + return NextResponse.json({ + success: true, + data: { + playerName: name, + scrims: data, + stats: allPlayerStats, + kills: allPlayerKills, + mapWinrates, + deaths: allPlayerDeaths, + permissions: { + "stats-timeframe-1": timeframe1, + "stats-timeframe-2": timeframe2, + "stats-timeframe-3": timeframe3, + }, + }, + }); + } catch (error) { + Logger.error("Error fetching player stats", error); + return NextResponse.json( + { + success: false, + error: "Failed to fetch player statistics", + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/player/top-3-heroes/route.ts b/src/app/api/player/top-3-heroes/route.ts new file mode 100644 index 000000000..82f351ce7 --- /dev/null +++ b/src/app/api/player/top-3-heroes/route.ts @@ -0,0 +1,143 @@ +import { auth } from "@/lib/auth"; +import { getCompositeSRLeaderboard } from "@/lib/hero-rating"; +import prisma from "@/lib/prisma"; +import type { HeroName } from "@/types/heroes"; +import { $Enums } from "@prisma/client"; +import { unauthorized } from "next/navigation"; +import { NextResponse, type NextRequest } from "next/server"; +import z from "zod"; + +type Top3Heroes = { + player_hero: string; + total_time_played: number; +}[]; + +const PlayerSchema = z.string().min(1).normalize("NFD"); + +export async function GET(request: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const player = request.nextUrl.searchParams.get("player"); + if (!player) return new Response("Bad request", { status: 400 }); + + const validPlayer = PlayerSchema.safeParse(player); + if (!validPlayer.success) return new Response("Bad request", { status: 400 }); + + const top3Heroes = await prisma.$queryRaw` + WITH final_rows AS ( + SELECT DISTINCT ON ("MapDataId", player_name, player_hero) + player_hero, + hero_time_played + FROM + "PlayerStat" + WHERE + player_name ILIKE ${validPlayer.data} + AND hero_time_played > 0 + ORDER BY + "MapDataId", + player_name, + player_hero, + round_number DESC, + id DESC + ) + SELECT + player_hero, + SUM(hero_time_played) AS total_time_played + FROM + final_rows + GROUP BY + player_hero + ORDER BY + total_time_played DESC + LIMIT + 3; + `; + + const heroRatings = await Promise.all( + top3Heroes.map(async (hero) => { + const compositeLeaderboard = await getCompositeSRLeaderboard({ + hero: hero.player_hero as HeroName, + player: validPlayer.data, + limit: 300, + }); + + if (!compositeLeaderboard) { + const mapsPlayed = await prisma.playerStat.groupBy({ + by: ["MapDataId"], + where: { + player_name: validPlayer.data, + player_hero: hero.player_hero as HeroName, + hero_time_played: { + gt: 60, + }, + }, + }); + + const mapCount = mapsPlayed.length; + + return { + ...hero, + hero_rating: 0, + mapsPlayed: mapCount, + percentile: "0", + rank: 0, + }; + } + + return { + ...hero, + hero_rating: compositeLeaderboard?.composite_sr ?? 0, + mapsPlayed: compositeLeaderboard?.maps ?? 0, + percentile: compositeLeaderboard?.percentile ?? "0", + rank: compositeLeaderboard?.rank ?? 0, + }; + }) + ); + + const result = top3Heroes.map((hero, index) => { + return { + ...hero, + hero_rating: heroRatings[index].hero_rating ?? 0, + mapsPlayed: heroRatings[index].mapsPlayed ?? 0, + percentile: heroRatings[index].percentile ?? "0", + rank: heroRatings[index].rank ?? 0, + }; + }); + + const user = await prisma.user.findFirst({ + where: { + OR: [ + { name: { equals: validPlayer.data, mode: "insensitive" } }, + { battletag: { equals: validPlayer.data, mode: "insensitive" } }, + ], + }, + select: { + id: true, + name: true, + image: true, + role: true, + bannerImage: true, + billingPlan: true, + }, + }); + + let appliedTitle = null; + if (user) { + appliedTitle = await prisma.appliedTitle.findFirst({ + where: { userId: user.id }, + select: { title: true }, + }); + } + + return NextResponse.json({ + player: { + name: user?.name ?? validPlayer.data, + image: user?.image ?? null, + bannerImage: user?.bannerImage ?? null, + title: appliedTitle?.title ?? null, + billingPlan: user?.billingPlan ?? $Enums.BillingPlan.FREE, + }, + heroes: result, + }); +} diff --git a/src/app/api/reporting/submit-bug-report/route.ts b/src/app/api/reporting/submit-bug-report/route.ts index ca9c9e727..62eea3f92 100644 --- a/src/app/api/reporting/submit-bug-report/route.ts +++ b/src/app/api/reporting/submit-bug-report/route.ts @@ -1,15 +1,16 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { newBugReportWebhookConstructor, sendDiscordWebhook, } from "@/lib/webhooks"; -import { NextRequest, userAgent } from "next/server"; +import { after, type NextRequest, userAgent } from "next/server"; import { z } from "zod"; const BugReportSchema = z.object({ title: z.string().min(1), description: z.string().min(1), - email: z.string().email(), + email: z.email(), url: z.string().min(1), }); @@ -35,5 +36,14 @@ export async function POST(req: NextRequest) { await sendDiscordWebhook(process.env.BUG_REPORT_WEBHOOK_URL, wh); + after(async () => { + await auditLog.createAuditLog({ + userEmail: user?.email ?? "Unknown", + action: "BUG_REPORT_SUBMITTED", + target: body.data.title, + details: `Bug report submitted: ${body.data.title}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/scrim/add-map/route.ts b/src/app/api/scrim/add-map/route.ts index 88d83cb5e..b445e05f9 100644 --- a/src/app/api/scrim/add-map/route.ts +++ b/src/app/api/scrim/add-map/route.ts @@ -1,26 +1,54 @@ +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import { createNewMap } from "@/lib/parser"; -import { ParserData } from "@/types/parser"; +import type { ParserData } from "@/types/parser"; import { track } from "@vercel/analytics/server"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; + +export type AddMapRequestData = { + map: ParserData; + heroBans?: { + hero: string; + team: string; + banPosition: number; + }[]; +}; export async function POST(req: NextRequest) { const session = await auth(); const id = req.nextUrl.searchParams.get("id") ?? ""; - const data = (await req.json()) as ParserData; + const data = (await req.json()) as AddMapRequestData; if (!session || !session.user || !session.user.email) { Logger.warn("Unauthorized request to add map"); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } try { - await createNewMap({ map: data, scrimId: parseInt(id) }, session); - - await track("Create Map", { user: session.user.email }); + await createNewMap( + { + map: data.map, + scrimId: parseInt(id), + heroBans: data.heroBans, + }, + session + ); + + after(async () => { + await Promise.all([ + track("Create Map", { user: session.user.email }), + auditLog.createAuditLog({ + userEmail: session.user.email, + action: "MAP_CREATED", + target: id, + details: `Map created: ${id}`, + }), + ]); + }); return new Response("OK", { status: 200 }); } catch (e: unknown) { diff --git a/src/app/api/scrim/create-scrim/route.ts b/src/app/api/scrim/create-scrim/route.ts index 5d226471f..0819628a6 100644 --- a/src/app/api/scrim/create-scrim/route.ts +++ b/src/app/api/scrim/create-scrim/route.ts @@ -1,16 +1,19 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import { createNewScrimFromParsedData } from "@/lib/parser"; import { newSuspiciousActivityWebhookConstructor, sendDiscordWebhook, } from "@/lib/webhooks"; -import { ParserData } from "@/types/parser"; -import { User } from "@prisma/client"; +import type { ParserData } from "@/types/parser"; +import type { User } from "@prisma/client"; import { Ratelimit } from "@upstash/ratelimit"; +import { ipAddress } from "@vercel/functions"; import { kv } from "@vercel/kv"; -import { NextRequest, userAgent } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest, userAgent } from "next/server"; export type CreateScrimRequestData = { name: string; @@ -18,6 +21,11 @@ export type CreateScrimRequestData = { date: string; map: ParserData; replayCode: string; + heroBans: { + hero: string; + team: string; + banPosition: number; + }[]; }; export async function POST(request: NextRequest) { @@ -25,7 +33,7 @@ export async function POST(request: NextRequest) { if (!session) { Logger.warn("Unauthorized request to create scrim"); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } // Create a new ratelimiter, that allows 5 requests per 1 minute @@ -36,7 +44,7 @@ export async function POST(request: NextRequest) { }); // Limit the requests to 5 per minute per user - const identifier = request.ip ?? "127.0.0.1"; + const identifier = ipAddress(request) ?? "127.0.0.1"; const { success } = await ratelimit.limit(identifier); if (!success) { @@ -46,6 +54,7 @@ export async function POST(request: NextRequest) { const user = await getUser(session.user.email); + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions const fallbackUser = { name: "Unknown", email: "unknown", @@ -62,6 +71,15 @@ export async function POST(request: NextRequest) { ); await sendDiscordWebhook(process.env.DISCORD_WEBHOOK_URL, wh); + after(async () => { + await auditLog.createAuditLog({ + userEmail: "System", + action: "SUSPICIOUS_ACTIVITY_DETECTED", + target: `${user?.email ?? "Unknown"}`, + details: `Scrim creation (rate limit exceeded) by ${user?.name} (${user?.email})`, + }); + }); + return new Response("Rate limit exceeded", { status: 429 }); } @@ -76,5 +94,14 @@ export async function POST(request: NextRequest) { await createNewScrimFromParsedData(data, session); + after(async () => { + await auditLog.createAuditLog({ + userEmail: session.user.email, + action: "SCRIM_CREATED", + target: `${data.name} (Team: ${data.team})`, + details: `Scrim created: ${data.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/scrim/edit-note/route.ts b/src/app/api/scrim/edit-note/route.ts new file mode 100644 index 000000000..56c0b1669 --- /dev/null +++ b/src/app/api/scrim/edit-note/route.ts @@ -0,0 +1,29 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { upsertNote } from "@/lib/notes"; +import { noteDataSchema } from "@/lib/utils"; +import { notFound, unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; + +export async function POST(request: NextRequest) { + const session = await auth(); + if (!session) unauthorized(); + + const user = await getUser(session.user.email); + if (!user) notFound(); + + const body = await request.json(); + + const noteData = noteDataSchema.safeParse(body); + if (!noteData.success) { + return new Response("Invalid note data", { status: 400 }); + } + + await upsertNote({ + scrimId: noteData.data.scrimId, + mapDataId: noteData.data.mapDataId, + content: noteData.data.content, + }); + + return new Response(JSON.stringify(noteData.data), { status: 201 }); +} diff --git a/src/app/api/scrim/get-scrims/route.ts b/src/app/api/scrim/get-scrims/route.ts new file mode 100644 index 000000000..78b57e1ae --- /dev/null +++ b/src/app/api/scrim/get-scrims/route.ts @@ -0,0 +1,229 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import prisma from "@/lib/prisma"; +import { $Enums, type Prisma } from "@prisma/client"; +import { unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; + +export async function GET(req: NextRequest) { + const session = await auth(); + if (!session?.user?.email) unauthorized(); + + const userData = await getUser(session.user.email); + if (!userData) unauthorized(); + + const searchParams = req.nextUrl.searchParams; + const cursor = searchParams.get("cursor"); + const page = searchParams.get("page"); + const limit = Math.min(parseInt(searchParams.get("limit") ?? "15"), 50); // Cap at 50 + const search = searchParams.get("search") ?? ""; + const filter = searchParams.get("filter") ?? ""; + const teamId = searchParams.get("teamId"); + const adminMode = searchParams.get("adminMode") === "true"; + const lastPage = searchParams.get("lastPage") === "true"; + + try { + // Check if user is admin/manager for admin mode + const isAdmin = + userData.role === $Enums.UserRole.ADMIN || + userData.role === $Enums.UserRole.MANAGER; + + // Build where clause for database filtering + const whereClause: Prisma.ScrimWhereInput = {}; + + // Filter by team if teamId is provided + if (teamId) { + whereClause.teamId = parseInt(teamId); + } + + // Apply search filter at database level + if (search) { + if (search.startsWith("team:")) { + const teamName = search.slice(5); + whereClause.Team = { + name: { + contains: teamName, + mode: "insensitive", + }, + }; + } else if (search.startsWith("creator:")) { + const creatorName = search.slice(8); + // Find creator IDs that match the name + const creators = await prisma.user.findMany({ + where: { + name: { + contains: creatorName, + mode: "insensitive", + }, + }, + select: { id: true }, + }); + const creatorIds = creators.map((c) => c.id); + whereClause.creatorId = { in: creatorIds }; + } else { + // General search by scrim name + whereClause.name = { + contains: search, + mode: "insensitive", + }; + } + } + + // Determine order by based on filter + let orderBy: Prisma.ScrimOrderByWithRelationInput = { date: "desc" }; // Default: newest to oldest + if (filter === "date-asc") { + orderBy = { date: "asc" }; + } else if (filter === "date-desc") { + orderBy = { date: "desc" }; + } + + // Get total count for pagination (needed for lastPage calculation) + let totalCount; + if (adminMode && isAdmin) { + totalCount = await prisma.scrim.count({ + where: whereClause, + }); + } else { + totalCount = await prisma.scrim.count({ + where: { + AND: [ + { + OR: [ + { creatorId: userData.id }, + { Team: { users: { some: { id: userData.id } } } }, + ], + }, + whereClause, + ], + }, + }); + } + + // Calculate skip for last page or specific page if needed + let skipValue: number | undefined; + if (lastPage) { + skipValue = Math.max(0, totalCount - limit); + } else if (page) { + const pageNum = parseInt(page); + skipValue = Math.max(0, (pageNum - 1) * limit); + } + + // Get scrims with pagination + let scrims; + if (adminMode && isAdmin) { + // Admin mode: get all scrims with pagination + scrims = await prisma.scrim.findMany({ + where: whereClause, + take: limit, + ...(lastPage || page + ? { skip: skipValue } + : cursor + ? { + skip: 1, // Skip the cursor + cursor: { + id: parseInt(cursor), + }, + } + : {}), + orderBy, + include: { + Team: true, + }, + }); + } else { + // Regular mode: get user viewable scrims with pagination + scrims = await prisma.scrim.findMany({ + where: { + AND: [ + { + OR: [ + { creatorId: userData.id }, + { Team: { users: { some: { id: userData.id } } } }, + ], + }, + whereClause, + ], + }, + take: limit, + ...(lastPage || page + ? { skip: skipValue } + : cursor + ? { + skip: 1, // Skip the cursor + cursor: { + id: parseInt(cursor), + }, + } + : {}), + orderBy, + include: { + Team: true, + }, + }); + } + + // Get creator names for all scrims + const creatorIds = [...new Set(scrims.map((scrim) => scrim.creatorId))]; + const creators = await prisma.user.findMany({ + where: { id: { in: creatorIds } }, + select: { id: true, name: true }, + }); + const creatorMap = new Map(creators.map((c) => [c.id, c.name])); + + // Transform the data to match the expected format + const scrimDetails = scrims.map((scrim) => { + const hasPerms = + adminMode && isAdmin + ? true // Admins have permissions on all scrims in admin mode + : userData.role === $Enums.UserRole.ADMIN || + userData.role === $Enums.UserRole.MANAGER || + userData.id === scrim.creatorId; + + return { + id: scrim.id, + name: scrim.name, + createdAt: scrim.createdAt, + updatedAt: scrim.updatedAt, + date: scrim.date, + teamId: scrim.teamId ?? 0, + creatorId: scrim.creatorId, + guestMode: scrim.guestMode, + team: scrim.Team?.name ?? "Individual", + teamImage: + scrim.Team?.image ?? + `https://avatar.vercel.sh/${scrim.Team?.name}.png`, + creator: creatorMap.get(scrim.creatorId) ?? "Unknown", + hasPerms, + }; + }); + + const nextCursor = scrims[scrims.length - 1]?.id; + + // Calculate hasMore based on pagination method + let hasMore: boolean; + if (lastPage) { + hasMore = false; + } else if (page) { + const pageNum = parseInt(page); + const totalPages = Math.ceil(totalCount / limit); + hasMore = pageNum < totalPages; + } else { + hasMore = scrims.length === limit; + } + + return NextResponse.json({ + scrims: scrimDetails, + nextCursor: nextCursor?.toString() ?? undefined, + hasMore, + totalCount, + }); + } catch (error) { + Logger.error("Error fetching scrims:", error); + return NextResponse.json( + { error: "Failed to fetch scrims" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/scrim/remove-map/route.ts b/src/app/api/scrim/remove-map/route.ts index c19646f1e..eb7a66438 100644 --- a/src/app/api/scrim/remove-map/route.ts +++ b/src/app/api/scrim/remove-map/route.ts @@ -1,10 +1,12 @@ import { getScrim } from "@/data/scrim-dto"; import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { $Enums } from "@prisma/client"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; export async function POST(req: NextRequest) { const params = req.nextUrl.searchParams; @@ -16,7 +18,7 @@ export async function POST(req: NextRequest) { if (!session) { if (token !== process.env.DEV_TOKEN) { Logger.warn("Unauthorized request to remove map: ", id); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Authorized removal of map with dev token"); } @@ -36,7 +38,7 @@ export async function POST(req: NextRequest) { let isManager = false; - if (scrim.teamId !== 0) { + if (scrim.teamId !== 0 && scrim.teamId !== null) { // scrim is associated with a team const managers = await prisma.team.findFirst({ where: { id: scrim.teamId ?? 0 }, @@ -55,7 +57,7 @@ export async function POST(req: NextRequest) { isManager; // Managers of the scrim's team can delete the map if (!hasPerms) { - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Removing map: ", id); @@ -88,7 +90,17 @@ export async function POST(req: NextRequest) { prisma.ultimateCharged.deleteMany({ where: { MapDataId: mapId } }), prisma.ultimateEnd.deleteMany({ where: { MapDataId: mapId } }), prisma.ultimateStart.deleteMany({ where: { MapDataId: mapId } }), + prisma.heroBan.deleteMany({ where: { MapDataId: mapId } }), ]); + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "MAP_DELETED", + target: `${scrim.name} (ID: ${scrim.id})`, + details: `Map deleted: ${id}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/scrim/remove-scrim/route.ts b/src/app/api/scrim/remove-scrim/route.ts index d6e13e06e..7e4dc0431 100644 --- a/src/app/api/scrim/remove-scrim/route.ts +++ b/src/app/api/scrim/remove-scrim/route.ts @@ -1,10 +1,13 @@ import { getScrim } from "@/data/scrim-dto"; import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; +import { notifications } from "@/lib/notifications"; import prisma from "@/lib/prisma"; import { $Enums } from "@prisma/client"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; export async function POST(req: NextRequest) { const params = req.nextUrl.searchParams; @@ -16,7 +19,7 @@ export async function POST(req: NextRequest) { if (!session) { if (token !== process.env.DEV_TOKEN) { Logger.warn("Unauthorized request to remove scrim: ", id); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Authorized removal of scrim with dev token"); } @@ -50,10 +53,30 @@ export async function POST(req: NextRequest) { user.id === scrim.creatorId || // Creators can delete their own scrims isManager; // Managers of the scrim's team can delete the scrim - if (!hasPerms) return new Response("Unauthorized", { status: 401 }); + if (!hasPerms) unauthorized(); const scrimId = parseInt(id); + // If not an individual scrim, create a notification for the team + if (scrim.teamId !== 0 && scrim.teamId !== null) { + const team = await prisma.team.findFirst({ + where: { id: scrim.teamId ?? 0 }, + }); + if (!team) return new Response("Team not found", { status: 404 }); + + const teamMembers = await prisma.user.findMany({ + where: { teams: { some: { id: scrim.teamId ?? 0 } } }, + }); + + for (const member of teamMembers) { + await notifications.createInAppNotification({ + userId: member.id, + title: `${team.name}: Scrim ${scrim.name} has been deleted`, + description: `Scrim "${scrim.name}" has been deleted by ${user.name}.`, + }); + } + } + await Promise.all([ prisma.scrim.delete({ where: { id: scrimId } }), prisma.map.deleteMany({ where: { scrimId } }), @@ -81,7 +104,17 @@ export async function POST(req: NextRequest) { prisma.ultimateCharged.deleteMany({ where: { scrimId } }), prisma.ultimateEnd.deleteMany({ where: { scrimId } }), prisma.ultimateStart.deleteMany({ where: { scrimId } }), + prisma.heroBan.deleteMany({ where: { scrimId } }), ]); + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "SCRIM_DELETED", + target: `${scrim.name} (Team: ${scrim.teamId ?? "Individual"})`, + details: `Scrim deleted: ${id}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/scrim/update-scrim-options/route.ts b/src/app/api/scrim/update-scrim-options/route.ts index c07ebebd0..2a2a33870 100644 --- a/src/app/api/scrim/update-scrim-options/route.ts +++ b/src/app/api/scrim/update-scrim-options/route.ts @@ -1,21 +1,33 @@ import { getScrim } from "@/data/scrim-dto"; import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; import { $Enums } from "@prisma/client"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const UpdateScrimSchema = z.object({ name: z.string().min(1).max(30), teamId: z.string().min(1), scrimId: z.number(), - date: z.string().datetime(), + date: z.iso.datetime(), guestMode: z.boolean(), maps: z.array( z.object({ id: z.number(), replayCode: z.string().max(6).optional(), + heroBans: z + .array( + z.object({ + id: z.number().optional(), + hero: z.string(), + team: z.string(), + banPosition: z.number(), + }) + ) + .optional(), }) ), }); @@ -23,14 +35,14 @@ const UpdateScrimSchema = z.object({ export async function POST(req: NextRequest) { const session = await auth(); if (!session || !session.user || !session.user.email) { - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } const body = UpdateScrimSchema.safeParse(await req.json()); if (!body.success) return new Response("Invalid request", { status: 400 }); const user = await getUser(session.user.email); - if (!user) return new Response("Unauthorized", { status: 401 }); + if (!user) unauthorized(); const userIsManager = await prisma.teamManager.findFirst({ where: { userId: user.id }, @@ -45,7 +57,7 @@ export async function POST(req: NextRequest) { user.role === $Enums.UserRole.ADMIN || // user is an admin user.role === $Enums.UserRole.MANAGER; // user is a manager - if (!hasPerms) return new Response("Unauthorized", { status: 401 }); + if (!hasPerms) unauthorized(); await prisma.scrim.update({ where: { id: body.data.scrimId }, @@ -63,8 +75,35 @@ export async function POST(req: NextRequest) { where: { id: mapUpdate.id }, data: { replayCode: mapUpdate.replayCode }, }); + + if (mapUpdate.heroBans) { + await prisma.heroBan.deleteMany({ + where: { MapDataId: mapUpdate.id }, + }); + + if (mapUpdate.heroBans.length > 0) { + await prisma.heroBan.createMany({ + data: mapUpdate.heroBans.map((ban) => ({ + scrimId: body.data.scrimId, + hero: ban.hero, + team: ban.team, + banPosition: ban.banPosition, + MapDataId: mapUpdate.id, + })), + }); + } + } } } + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "SCRIM_UPDATED", + target: `${scrim.name} (ID: ${scrim.id})`, + details: `Scrim updated: ${scrim.name} (ID: ${scrim.id})`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/stripe/webhooks/route.ts b/src/app/api/stripe/webhooks/route.ts index 45a47452f..3d46ad8a4 100644 --- a/src/app/api/stripe/webhooks/route.ts +++ b/src/app/api/stripe/webhooks/route.ts @@ -1,9 +1,8 @@ -/* eslint-disable no-case-declarations */ import { handleSubscriptionEvent } from "@/lib/billing-plans"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import { stripe } from "@/lib/stripe"; import { track } from "@vercel/analytics/server"; -import Stripe from "stripe"; +import type Stripe from "stripe"; const relevantEvents = new Set([ "customer.created", @@ -16,7 +15,7 @@ const relevantEvents = new Set([ export async function POST(req: Request) { const body = await req.text(); - const sig = req.headers.get("stripe-signature") as string; + const sig = req.headers.get("stripe-signature")!; const webhookSecret = process.env.NODE_ENV === "production" ? process.env.STRIPE_WEBHOOK_SECRET @@ -39,11 +38,12 @@ export async function POST(req: Request) { if (relevantEvents.has(event.type)) { try { switch (event.type) { - case "customer.created": + case "customer.created": { const customer = event.data.object; Logger.log("New customer", customer); await track("New Customer", { customerId: customer.id }); break; + } case "customer.deleted": Logger.log("Deleted customer", event.data.object); await track("Deleted Customer", { customerId: event.data.object.id }); @@ -53,7 +53,7 @@ export async function POST(req: Request) { case "customer.subscription.deleted": await handleSubscriptionEvent(event, event.type); break; - case "checkout.session.completed": + case "checkout.session.completed": { const checkoutSession = event.data.object; if (checkoutSession.mode === "subscription") { const subscriptionId = checkoutSession.subscription; @@ -64,6 +64,7 @@ export async function POST(req: Request) { ); } break; + } default: throw new Error("Unhandled relevant event!"); } diff --git a/src/app/api/team/avatar-upload/route.ts b/src/app/api/team/avatar-upload/route.ts index d62ff787d..4ceb26a96 100644 --- a/src/app/api/team/avatar-upload/route.ts +++ b/src/app/api/team/avatar-upload/route.ts @@ -1,18 +1,17 @@ import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { Ratelimit } from "@upstash/ratelimit"; import { track } from "@vercel/analytics/server"; import { handleUpload, type HandleUploadBody } from "@vercel/blob/client"; import { kv } from "@vercel/kv"; -import { NextRequest, NextResponse } from "next/server"; +import { unauthorized } from "next/navigation"; +import { type NextRequest, NextResponse } from "next/server"; export async function POST(request: NextRequest): Promise { const session = await auth(); - if (!session || !session.user) { - return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); - } + if (!session?.user) unauthorized(); const userId = await getUser(session.user.email); if (!userId) { @@ -48,20 +47,19 @@ export async function POST(request: NextRequest): Promise { const jsonResponse = await handleUpload({ body, request, - onBeforeGenerateToken: async ( - pathname: string + onBeforeGenerateToken: async () => /* clientPayload?: string, */ - ) => { - // Generate a client token for the browser to upload the file - // ⚠️ Authenticate and authorize users before generating the token. - // Otherwise, you're allowing anonymous uploads. - const team = await prisma.team.findUnique({ - where: { id: parseInt(teamId) }, - }); - if (!team) throw new Error("Team not found"); + { + // Generate a client token for the browser to upload the file + // ⚠️ Authenticate and authorize users before generating the token. + // Otherwise, you're allowing anonymous uploads. + const team = await prisma.team.findUnique({ + where: { id: parseInt(teamId) }, + }); + if (!team) throw new Error("Team not found"); - return { tokenPayload: JSON.stringify({ teamId: team.id }) }; - }, + return { tokenPayload: JSON.stringify({ teamId: team.id }) }; + }, onUploadCompleted: async ({ blob, tokenPayload }) => { // Get notified of client upload completion // ⚠️ This will not work on `localhost` websites, @@ -83,7 +81,7 @@ export async function POST(request: NextRequest): Promise { where: { id: team.id }, data: { image: blob.url }, }); - } catch (error) { + } catch { throw new Error("Could not update team"); } }, diff --git a/src/app/api/team/create-team-invite/route.ts b/src/app/api/team/create-team-invite/route.ts index 0739d6a98..2612f35aa 100644 --- a/src/app/api/team/create-team-invite/route.ts +++ b/src/app/api/team/create-team-invite/route.ts @@ -1,12 +1,10 @@ import { auth } from "@/lib/auth"; import { generateRandomToken } from "@/lib/invite-token"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; - -const FREE_MEMBER_CAP = 5; -const BASIC_MEMBER_CAP = 10; -const PREMIUM_MEMBER_CAP = 20; +import { TEAM_MEMBER_LIMIT } from "@/lib/usage"; +import { unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; export async function POST(req: NextRequest) { const session = await auth(); @@ -17,13 +15,13 @@ export async function POST(req: NextRequest) { if (!session) { if (token !== process.env.DEV_TOKEN) { Logger.warn("Unauthorized request to create team invite"); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Authorized request to create team invite using dev token"); } const teamId = req.nextUrl.searchParams.get("id") - ? parseInt(req.nextUrl.searchParams.get("id") as string) + ? parseInt(req.nextUrl.searchParams.get("id")!) : null; if (!teamId) { @@ -48,7 +46,7 @@ export async function POST(req: NextRequest) { switch (teamCreator.billingPlan) { case "FREE": - if (numberOfMembers >= FREE_MEMBER_CAP) { + if (numberOfMembers >= TEAM_MEMBER_LIMIT[teamCreator.billingPlan]) { return new Response( "You have hit the limit of members that can be invited to this team. Please upgrade your plan or contact support.", { @@ -58,7 +56,7 @@ export async function POST(req: NextRequest) { } break; case "BASIC": - if (numberOfMembers >= BASIC_MEMBER_CAP) { + if (numberOfMembers >= TEAM_MEMBER_LIMIT[teamCreator.billingPlan]) { return new Response( "You have hit the limit of members that can be invited to this team. Please upgrade your plan or contact support.", { @@ -68,7 +66,7 @@ export async function POST(req: NextRequest) { } break; case "PREMIUM": - if (numberOfMembers >= PREMIUM_MEMBER_CAP) { + if (numberOfMembers >= TEAM_MEMBER_LIMIT[teamCreator.billingPlan]) { return new Response( "You have hit the limit of members that can be invited to this team. Please upgrade your plan or contact support.", { @@ -78,8 +76,7 @@ export async function POST(req: NextRequest) { } break; default: - if (teamCreator.role !== "ADMIN") - return new Response("Unauthorized", { status: 401 }); + if (teamCreator.role !== "ADMIN") unauthorized(); break; } diff --git a/src/app/api/team/create-team/route.ts b/src/app/api/team/create-team/route.ts index 8d0efafe1..800b97558 100644 --- a/src/app/api/team/create-team/route.ts +++ b/src/app/api/team/create-team/route.ts @@ -1,11 +1,14 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import { Permission } from "@/lib/permissions"; import prisma from "@/lib/prisma"; +import { TEAM_CREATION_LIMIT } from "@/lib/usage"; import { Ratelimit } from "@upstash/ratelimit"; +import { ipAddress } from "@vercel/functions"; import { kv } from "@vercel/kv"; -import { NextRequest } from "next/server"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const TeamCreationRequestSchema = z.object({ @@ -21,7 +24,7 @@ export async function POST(request: NextRequest) { }); // Limit the requests to 5 per minute per user - const identifier = request.ip ?? "127.0.0.1"; + const identifier = ipAddress(request) ?? "127.0.0.1"; const { success } = await ratelimit.limit(identifier); if (!success) { @@ -43,7 +46,10 @@ export async function POST(request: NextRequest) { switch (userId.billingPlan) { case "FREE": - if (numberOfTeams >= 2) { + if ( + numberOfTeams >= TEAM_CREATION_LIMIT[userId.billingPlan] && + userId.role !== "ADMIN" + ) { return new Response( "You have hit the limit of teams that your account can create. Please upgrade your plan or contact support.", { status: 403 } @@ -51,7 +57,10 @@ export async function POST(request: NextRequest) { } break; case "BASIC": - if (numberOfTeams >= 5) { + if ( + numberOfTeams >= TEAM_CREATION_LIMIT[userId.billingPlan] && + userId.role !== "ADMIN" + ) { return new Response( "You have hit the limit of teams that your account can create. Please upgrade your plan or contact support.", { status: 403 } @@ -59,7 +68,10 @@ export async function POST(request: NextRequest) { } break; case "PREMIUM": - if (numberOfTeams >= 10) { + if ( + numberOfTeams >= TEAM_CREATION_LIMIT[userId.billingPlan] && + userId.role !== "ADMIN" + ) { return new Response( "You have hit the limit of teams that your account can create. Please upgrade your plan or contact support.", { status: 403 } @@ -107,5 +119,14 @@ export async function POST(request: NextRequest) { data: { teams: { connect: [{ id: team.id }] } }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: session.user.email, + action: "TEAM_CREATED", + target: team.name, + details: `Team created: ${team.name}`, + }); + }); + return new Response("Success", { status: 200 }); } diff --git a/src/app/api/team/delete-expired-tokens/route.ts b/src/app/api/team/delete-expired-tokens/route.ts index 1f485a117..c48389890 100644 --- a/src/app/api/team/delete-expired-tokens/route.ts +++ b/src/app/api/team/delete-expired-tokens/route.ts @@ -1,4 +1,4 @@ -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; export async function DELETE() { diff --git a/src/app/api/team/demote-user/route.ts b/src/app/api/team/demote-user/route.ts index 1086a71f4..853bb2c2e 100644 --- a/src/app/api/team/demote-user/route.ts +++ b/src/app/api/team/demote-user/route.ts @@ -1,8 +1,10 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const DemoteUserSchema = z.object({ @@ -16,7 +18,7 @@ export async function POST(req: NextRequest) { const devTokenAuthed = authToken === process.env.DEV_TOKEN; if (!session || !session.user || !session.user.email) { - if (!devTokenAuthed) return new Response("Unauthorized", { status: 401 }); + if (!devTokenAuthed) unauthorized(); Logger.log("Authorized with dev token"); } @@ -33,9 +35,7 @@ export async function POST(req: NextRequest) { const authedUser = await getUser(session?.user?.email); - if (!authedUser && !devTokenAuthed) { - return new Response("Unauthorized", { status: 401 }); - } + if (!authedUser && !devTokenAuthed) unauthorized(); if (!devTokenAuthed) { const managers = await prisma.team.findFirst({ @@ -47,9 +47,7 @@ export async function POST(req: NextRequest) { (manager) => manager.userId === authedUser?.id ); - if (team.ownerId !== authedUser?.id && !isManager) { - return new Response("Unauthorized", { status: 401 }); - } + if (team.ownerId !== authedUser?.id && !isManager) unauthorized(); } // demote user to member @@ -57,5 +55,14 @@ export async function POST(req: NextRequest) { where: { userId: user.id, teamId: team.id }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: authedUser!.email, + action: "TEAM_MEMBER_DEMOTED", + target: team.name, + details: `Demoted ${user.name} to member`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/get-teams-with-perms/route.ts b/src/app/api/team/get-teams-with-perms/route.ts index dcc3d6b0c..b004cb40a 100644 --- a/src/app/api/team/get-teams-with-perms/route.ts +++ b/src/app/api/team/get-teams-with-perms/route.ts @@ -1,15 +1,16 @@ import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { $Enums } from "@prisma/client"; +import { unauthorized } from "next/navigation"; export async function GET() { const session = await auth(); if (!session) { Logger.warn("Unauthorized request to get teams API"); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } const userId = await getUser(session?.user?.email); @@ -29,6 +30,7 @@ export async function GET() { }, { managers: { some: { userId: userId?.id } } }, ], + id: { not: 0 }, }, }); diff --git a/src/app/api/team/get-teams/route.ts b/src/app/api/team/get-teams/route.ts index 931faeb9b..5a48d3ff2 100644 --- a/src/app/api/team/get-teams/route.ts +++ b/src/app/api/team/get-teams/route.ts @@ -1,8 +1,9 @@ import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { Team } from "@prisma/client"; +import type { Team } from "@prisma/client"; +import { unauthorized } from "next/navigation"; export type GetTeamsResponse = { teams: Team[]; @@ -13,7 +14,7 @@ export async function GET() { if (!session) { Logger.warn("Unauthorized request to get teams API"); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } const userId = await getUser(session?.user?.email); @@ -21,6 +22,7 @@ export async function GET() { const teams = await prisma.team.findMany({ where: { OR: [{ ownerId: userId?.id }, { users: { some: { id: userId?.id } } }], + id: { not: 0 }, }, }); diff --git a/src/app/api/team/join-team/route.ts b/src/app/api/team/join-team/route.ts index a9d79acd7..7beb433b6 100644 --- a/src/app/api/team/join-team/route.ts +++ b/src/app/api/team/join-team/route.ts @@ -1,7 +1,9 @@ +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; export async function POST(req: NextRequest) { const session = await auth(); @@ -12,7 +14,7 @@ export async function POST(req: NextRequest) { if (!session) { if (authToken !== process.env.DEV_TOKEN) { Logger.warn("Unauthorized request to create team invite"); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Authorized request to create team invite using dev token"); } @@ -54,5 +56,14 @@ export async function POST(req: NextRequest) { Logger.log(`User now belongs to team: ${JSON.stringify(teams)}`); + after(async () => { + await auditLog.createAuditLog({ + userEmail: session?.user?.email ?? testingEmail, + action: "TEAM_JOINED", + target: `${teams[0].name}`, + details: `Joined team ${teams[0].name} (Team ID: ${teamInviteToken.teamId})`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/promote-user/route.ts b/src/app/api/team/promote-user/route.ts index 5f30051f4..4b307cb0f 100644 --- a/src/app/api/team/promote-user/route.ts +++ b/src/app/api/team/promote-user/route.ts @@ -1,8 +1,10 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const PromoteUserSchema = z.object({ @@ -16,9 +18,8 @@ export async function POST(req: NextRequest) { const devTokenAuthed = authToken === process.env.DEV_TOKEN; if (!session || !session.user || !session.user.email) { - if (!devTokenAuthed) { - return new Response("Unauthorized", { status: 401 }); - } + if (!devTokenAuthed) unauthorized(); + Logger.log("Authorized with dev token"); } @@ -53,9 +54,7 @@ export async function POST(req: NextRequest) { (manager) => manager.userId === authedUser?.id ); - if (team.ownerId !== authedUser?.id && !isManager) { - return new Response("Unauthorized", { status: 401 }); - } + if (team.ownerId !== authedUser?.id && !isManager) unauthorized(); } // add user as a manager @@ -63,5 +62,14 @@ export async function POST(req: NextRequest) { data: { userId, teamId: parseInt(teamId) }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: authedUser!.email, + action: "TEAM_MEMBER_PROMOTED", + target: user.email, + details: `Promoted ${user.name ?? user.email} to manager of team ${team.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/remove-team/route.ts b/src/app/api/team/remove-team/route.ts index 9fbc43c44..82a26b2c5 100644 --- a/src/app/api/team/remove-team/route.ts +++ b/src/app/api/team/remove-team/route.ts @@ -1,9 +1,11 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { $Enums } from "@prisma/client"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; export async function POST(req: NextRequest) { const params = req.nextUrl.searchParams; @@ -18,7 +20,7 @@ export async function POST(req: NextRequest) { if (!session) { if (token !== process.env.DEV_TOKEN) { Logger.warn("Unauthorized request to remove team: ", id); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Authorized removal of team with dev token"); } @@ -34,12 +36,20 @@ export async function POST(req: NextRequest) { user.role === $Enums.UserRole.MANAGER || // Managers can delete anything user.id === team.ownerId; // Creators can delete their own teams - if (!hasPerms) { - return new Response("Unauthorized", { status: 401 }); - } + if (!hasPerms) unauthorized(); await prisma.team.delete({ where: { id } }); await prisma.teamManager.deleteMany({ where: { teamId: id } }); + await prisma.scrim.updateMany({ where: { teamId: id }, data: { teamId: 0 } }); + + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "TEAM_DELETED", + target: team.name, + details: `Team deleted: ${team.name}`, + }); + }); return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/remove-user-from-team/route.ts b/src/app/api/team/remove-user-from-team/route.ts index 0b4bf8319..62fec79cd 100644 --- a/src/app/api/team/remove-user-from-team/route.ts +++ b/src/app/api/team/remove-user-from-team/route.ts @@ -1,8 +1,10 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; -import { User } from "@prisma/client"; -import { NextRequest } from "next/server"; +import type { User } from "@prisma/client"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const RemoveUserFromTeamSchema = z.object({ @@ -12,9 +14,7 @@ const RemoveUserFromTeamSchema = z.object({ export async function POST(req: NextRequest) { const session = await auth(); - if (!session || !session.user || !session.user.email) { - return new Response("Unauthorized", { status: 401 }); - } + if (!session || !session.user || !session.user.email) unauthorized(); const body = RemoveUserFromTeamSchema.safeParse(await req.json()); if (!body.success) return new Response("Invalid request", { status: 400 }); @@ -28,7 +28,7 @@ export async function POST(req: NextRequest) { if (!user) return new Response("User not found", { status: 404 }); const authedUser = await getUser(session.user.email); - if (!authedUser) return new Response("Unauthorized", { status: 401 }); + if (!authedUser) unauthorized(); const managers = await prisma.team.findFirst({ where: { id: parseInt(body.data.teamId) }, @@ -44,7 +44,7 @@ export async function POST(req: NextRequest) { } if (team.ownerId !== authedUser.id && !authedUserIsManager) { - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } if (team.ownerId === user.id) { @@ -75,5 +75,14 @@ export async function POST(req: NextRequest) { data: { users: { disconnect: { id: body.data.userId } } }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: authedUser.email, + action: "TEAM_MEMBER_REMOVED", + target: user.email, + details: `Removed ${user.name ?? user.email} from team ${team.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/transfer-ownership/route.ts b/src/app/api/team/transfer-ownership/route.ts index d60b3dccd..9650f7e71 100644 --- a/src/app/api/team/transfer-ownership/route.ts +++ b/src/app/api/team/transfer-ownership/route.ts @@ -1,9 +1,11 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { $Enums } from "@prisma/client"; -import { NextRequest } from "next/server"; +import { forbidden, unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; export async function POST(req: NextRequest) { const params = req.nextUrl.searchParams; @@ -20,7 +22,7 @@ export async function POST(req: NextRequest) { if (!session) { if (token !== process.env.DEV_TOKEN) { Logger.warn("Unauthorized request to remove team: ", id); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } Logger.log("Authorized removal of team with dev token"); } @@ -36,7 +38,7 @@ export async function POST(req: NextRequest) { user.role === $Enums.UserRole.MANAGER || // Managers can transfer anything user.id === team.ownerId; // Creators can transfer their own teams - if (!hasPerms) return new Response("Unauthorized", { status: 401 }); + if (!hasPerms) forbidden(); const newOwner = await getUser(owner); if (!newOwner) return new Response("New owner not found", { status: 404 }); @@ -52,5 +54,14 @@ export async function POST(req: NextRequest) { data: { users: { connect: { id: newOwner.id } } }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "TEAM_OWNERSHIP_TRANSFERRED", + target: newOwner.email, + details: `Transferred ownership of team ${team.name} to ${newOwner.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/update-avatar/route.ts b/src/app/api/team/update-avatar/route.ts index 2c909ed23..ce1271118 100644 --- a/src/app/api/team/update-avatar/route.ts +++ b/src/app/api/team/update-avatar/route.ts @@ -1,8 +1,10 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const TeamAvatarUpdateSchema = z.object({ @@ -12,9 +14,9 @@ const TeamAvatarUpdateSchema = z.object({ export async function POST(req: NextRequest) { const session = await auth(); - if (!session || !session.user) { + if (!session?.user) { Logger.log("No session found", session); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } const body = TeamAvatarUpdateSchema.safeParse(await req.json()); @@ -35,7 +37,7 @@ export async function POST(req: NextRequest) { const authedUser = await getUser(session.user.email); if (!authedUser) { Logger.log("User not found", session.user.email); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } if ( @@ -43,7 +45,7 @@ export async function POST(req: NextRequest) { teamManagers.some((m) => m.userId === authedUser.id) === false ) { Logger.log("Not a team owner or manager", team.name, authedUser.email); - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } await prisma.team.update({ @@ -53,5 +55,14 @@ export async function POST(req: NextRequest) { Logger.log("new avatar uploaded for team: ", team.name, body.data.image); + after(async () => { + await auditLog.createAuditLog({ + userEmail: authedUser.email, + action: "TEAM_AVATAR_UPDATED", + target: team.name, + details: `Updated avatar for team ${team.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/team/update-name/route.ts b/src/app/api/team/update-name/route.ts index 8afde6c84..175aaad98 100644 --- a/src/app/api/team/update-name/route.ts +++ b/src/app/api/team/update-name/route.ts @@ -1,6 +1,8 @@ +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const TeamNameUpdateSchema = z.object({ @@ -21,7 +23,7 @@ const TeamNameUpdateSchema = z.object({ export async function POST(req: NextRequest) { const session = await auth(); if (!session || !session.user || !session.user.email) { - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } const body = TeamNameUpdateSchema.safeParse(await req.json()); @@ -35,5 +37,14 @@ export async function POST(req: NextRequest) { }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: session.user.email, + action: "TEAM_UPDATED", + target: body.data.name, + details: `Updated name for team ${body.data.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/user/app-settings/route.ts b/src/app/api/user/app-settings/route.ts new file mode 100644 index 000000000..6e7eed4e8 --- /dev/null +++ b/src/app/api/user/app-settings/route.ts @@ -0,0 +1,142 @@ +import { getAppSettings, getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import prisma from "@/lib/prisma"; +import { $Enums } from "@prisma/client"; +import { unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; +import { z } from "zod"; + +export type GetAppSettingsResponse = { + id: number; + userId: string; + colorblindMode: $Enums.ColorblindMode; + customTeam1Color?: string; + customTeam2Color?: string; + createdAt: Date; + updatedAt: Date; +}; + +export async function GET() { + const session = await auth(); + if (!session?.user?.email) { + Logger.warn("Unauthorized request to get app settings API"); + unauthorized(); + } + + try { + let appSettings = await getAppSettings(session.user.email); + + // If no app settings exist, create default ones + if (!appSettings) { + const user = await getUser(session.user.email); + if (!user) { + Logger.error("User not found when creating app settings"); + return new Response("User not found", { status: 404 }); + } + + appSettings = await prisma.appSettings.create({ + data: { + userId: user.id, + colorblindMode: $Enums.ColorblindMode.OFF, + }, + }); + } + + const response: GetAppSettingsResponse = { + id: appSettings.id, + userId: appSettings.userId, + colorblindMode: appSettings.colorblindMode, + customTeam1Color: appSettings.customTeam1Color ?? undefined, + customTeam2Color: appSettings.customTeam2Color ?? undefined, + createdAt: appSettings.createdAt, + updatedAt: appSettings.updatedAt, + }; + + return new Response(JSON.stringify(response), { + status: 200, + headers: { "Content-Type": "application/json" }, + }); + } catch (error) { + Logger.error("Error fetching app settings:", error); + return new Response("Internal server error", { status: 500 }); + } +} + +const updateAppSettingsSchema = z.object({ + colorblindMode: z.enum(Object.values($Enums.ColorblindMode)), + customTeam1Color: z.string().optional(), + customTeam2Color: z.string().optional(), +}); + +export type UpdateAppSettingsRequest = z.infer; + +export async function PUT(request: NextRequest) { + const session = await auth(); + if (!session?.user?.email) { + Logger.warn("Unauthorized request to update app settings API"); + unauthorized(); + } + + try { + const body = await request.json(); + const validatedData = updateAppSettingsSchema.parse(body); + + const user = await getUser(session.user.email); + if (!user) { + Logger.error("User not found when updating app settings"); + return new Response("User not found", { status: 404 }); + } + + // Try to find existing settings first + const existingSettings = await prisma.appSettings.findFirst({ + where: { userId: user.id }, + }); + + let appSettings; + if (existingSettings) { + // Update existing settings + appSettings = await prisma.appSettings.update({ + where: { id: existingSettings.id }, + data: { + colorblindMode: validatedData.colorblindMode, + customTeam1Color: validatedData.customTeam1Color, + customTeam2Color: validatedData.customTeam2Color, + }, + }); + } else { + // Create new settings + appSettings = await prisma.appSettings.create({ + data: { + userId: user.id, + colorblindMode: validatedData.colorblindMode, + customTeam1Color: validatedData.customTeam1Color, + customTeam2Color: validatedData.customTeam2Color, + }, + }); + } + + const response: GetAppSettingsResponse = { + id: appSettings.id, + userId: appSettings.userId, + colorblindMode: appSettings.colorblindMode, + customTeam1Color: appSettings.customTeam1Color ?? undefined, + customTeam2Color: appSettings.customTeam2Color ?? undefined, + createdAt: appSettings.createdAt, + updatedAt: appSettings.updatedAt, + }; + + return new Response(JSON.stringify(response), { + status: 200, + headers: { "Content-Type": "application/json" }, + }); + } catch (error) { + if (error instanceof z.ZodError) { + Logger.warn("Invalid app settings data:", error.issues); + return new Response("Invalid request data", { status: 400 }); + } + + Logger.error("Error updating app settings:", error); + return new Response("Internal server error", { status: 500 }); + } +} diff --git a/src/app/api/user/avatar-upload/route.ts b/src/app/api/user/avatar-upload/route.ts index 9495625be..21bc6d699 100644 --- a/src/app/api/user/avatar-upload/route.ts +++ b/src/app/api/user/avatar-upload/route.ts @@ -1,18 +1,19 @@ import { getUser } from "@/data/user-dto"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { Ratelimit } from "@upstash/ratelimit"; import { track } from "@vercel/analytics/server"; import { handleUpload, type HandleUploadBody } from "@vercel/blob/client"; import { kv } from "@vercel/kv"; -import { NextRequest, NextResponse } from "next/server"; +import { unauthorized } from "next/navigation"; +import { type NextRequest, NextResponse } from "next/server"; export async function POST(request: NextRequest): Promise { const session = await auth(); - if (!session || !session.user) { - return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); + if (!session?.user) { + unauthorized(); } const authedUser = await getUser(session.user.email); @@ -50,18 +51,18 @@ export async function POST(request: NextRequest): Promise { const jsonResponse = await handleUpload({ body, request, - onBeforeGenerateToken: async ( - pathname: string + onBeforeGenerateToken: async () => + // pathname: string /* clientPayload?: string, */ - ) => { - // Generate a client token for the browser to upload the file - // ⚠️ Authenticate and authorize users before generating the token. - // Otherwise, you're allowing anonymous uploads. - const user = await prisma.user.findUnique({ where: { id: userId } }); - if (!user) throw new Error("User not found"); - - return { tokenPayload: JSON.stringify({ userId: user.id }) }; - }, + { + // Generate a client token for the browser to upload the file + // ⚠️ Authenticate and authorize users before generating the token. + // Otherwise, you're allowing anonymous uploads. + const user = await prisma.user.findUnique({ where: { id: userId } }); + if (!user) throw new Error("User not found"); + + return { tokenPayload: JSON.stringify({ userId: user.id }) }; + }, onUploadCompleted: async ({ blob, tokenPayload }) => { // Get notified of client upload completion // ⚠️ This will not work on `localhost` websites, @@ -81,7 +82,7 @@ export async function POST(request: NextRequest): Promise { where: { id: user?.id }, data: { image: blob.url }, }); - } catch (error) { + } catch { throw new Error("Could not update user"); } }, diff --git a/src/app/api/user/award-titles/route.ts b/src/app/api/user/award-titles/route.ts new file mode 100644 index 000000000..e969a63b4 --- /dev/null +++ b/src/app/api/user/award-titles/route.ts @@ -0,0 +1,432 @@ +import { getCompositeSRLeaderboard } from "@/lib/hero-rating"; +import { Logger } from "@/lib/logger"; +import { notifications } from "@/lib/notifications"; +import prisma from "@/lib/prisma"; +import { type HeroName, heroRoleMapping } from "@/types/heroes"; +import { $Enums } from "@prisma/client"; +import { get } from "@vercel/edge-config"; + +// Title display names for notifications +const TITLE_DISPLAY_NAMES: Record<$Enums.Title, string> = { + DEVELOPER: "Parsertime Developer", + EMPLOYEE: "lux.dev Employee", + BETA_TESTER: "Beta Tester", + DAY_ONE_USER: "Here Since the Beginning", + BASIC_PLAN_SUBSCRIBER: "Supporter", + PREMIUM_PLAN_SUBSCRIBER: "Premium Supporter", + VIP: "VIP", + HIGHEST_RANK_ON_A_HERO: "Achieved Greatness", + HIGHEST_AJAX_COUNT: "Ajax King", + HIGHEST_FLETA_DEADLIFT_PERCENTAGE: "Fleta's Disciple", + TOP_3_KILLS: "Serial Killer", + TOP_3_DAMAGE_DEALT: "Damage Dealer", + TOP_3_HEALING: "Ultimate Medic", + TOP_3_DAMAGE_BLOCKED: "Tank Extraordinaire", + TOP_3_DEATHS: "Professional Feeder", + TOP_3_TIME_PLAYED: "Time Lord", +}; + +/** + * Awards a title to users and sends notifications + */ +async function awardTitleWithNotification( + title: $Enums.Title, + userIds: string[] +) { + if (userIds.length === 0) return; + + // Award the title + await prisma.user.updateMany({ + where: { + id: { in: userIds }, + NOT: { + titles: { has: title }, + }, + }, + data: { titles: { push: title } }, + }); + + // Send notifications to each user + await Promise.all( + userIds.map((userId) => + notifications + .createInAppNotification({ + userId, + title: "New Title Unlocked!", + description: `You've unlocked the "${TITLE_DISPLAY_NAMES[title]}" title!`, + href: "/profile", + }) + .catch((error) => { + Logger.error(`Failed to send notification to user ${userId}:`, error); + }) + ) + ); +} + +export async function GET() { + // No auth since this will run via cron + + // Fetch all user data in parallel + const [ + admins, + allowedUsers, + dayOneUsers, + basicPlanUsers, + premiumPlanUsers, + vipUsers, + ] = await Promise.all([ + prisma.user.findMany({ + where: { + role: $Enums.UserRole.ADMIN, + }, + select: { + id: true, + titles: true, + }, + }), + get("allowedUsers"), + prisma.user.findMany({ + where: { + createdAt: { lt: new Date("2024-04-14") }, + }, + select: { + id: true, + titles: true, + }, + }), + prisma.user.findMany({ + where: { + billingPlan: $Enums.BillingPlan.BASIC, + }, + select: { + id: true, + titles: true, + }, + }), + prisma.user.findMany({ + where: { + billingPlan: $Enums.BillingPlan.PREMIUM, + }, + select: { + id: true, + titles: true, + }, + }), + get("vipUsers"), + ]); + + // Award all user-based titles in parallel + await Promise.all([ + // Award developer title + (async () => { + const devUser = await prisma.user.findFirst({ + where: { + email: "lucas@lux.dev", + NOT: { titles: { has: $Enums.Title.DEVELOPER } }, + }, + select: { id: true }, + }); + if (devUser) { + await awardTitleWithNotification($Enums.Title.DEVELOPER, [devUser.id]); + } + })(), + + // Award employee title to all admin users + awardTitleWithNotification( + $Enums.Title.EMPLOYEE, + admins + .filter((admin) => !admin.titles.includes($Enums.Title.EMPLOYEE)) + .map((admin) => admin.id) + ), + + // Add beta tester title to all users on the whitelist + (async () => { + const betaTesters = await prisma.user.findMany({ + where: { + email: { in: allowedUsers ?? [] }, + NOT: { titles: { has: $Enums.Title.BETA_TESTER } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.BETA_TESTER, + betaTesters.map((u) => u.id) + ); + })(), + + // Add day one user title + awardTitleWithNotification( + $Enums.Title.DAY_ONE_USER, + dayOneUsers + .filter((user) => !user.titles.includes($Enums.Title.DAY_ONE_USER)) + .map((user) => user.id) + ), + + // Add basic plan subscriber title + awardTitleWithNotification( + $Enums.Title.BASIC_PLAN_SUBSCRIBER, + basicPlanUsers + .filter( + (user) => !user.titles.includes($Enums.Title.BASIC_PLAN_SUBSCRIBER) + ) + .map((user) => user.id) + ), + + // Add premium plan subscriber title + awardTitleWithNotification( + $Enums.Title.PREMIUM_PLAN_SUBSCRIBER, + premiumPlanUsers + .filter( + (user) => !user.titles.includes($Enums.Title.PREMIUM_PLAN_SUBSCRIBER) + ) + .map((user) => user.id) + ), + + // Award VIP title + (async () => { + const vipUserRecords = await prisma.user.findMany({ + where: { + email: { in: vipUsers ?? [] }, + NOT: { titles: { has: $Enums.Title.VIP } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.VIP, + vipUserRecords.map((u) => u.id) + ); + })(), + ]); + + // Award highest rank on a hero title to all users who have a rank 1 on a hero + const topRankedUsers = await Promise.all( + (Object.keys(heroRoleMapping) as HeroName[]).map(async (hero) => { + const compositeLeaderboard = await getCompositeSRLeaderboard({ + hero, + limit: 1, + }); + + if (compositeLeaderboard?.[0]) { + const users = await prisma.user.findMany({ + where: { + battletag: compositeLeaderboard?.[0]?.player_name, + NOT: { + titles: { has: $Enums.Title.HIGHEST_RANK_ON_A_HERO }, + }, + }, + select: { id: true }, + }); + return users.map((u) => u.id); + } + return []; + }) + ); + + const uniqueTopRankedUserIds = [...new Set(topRankedUsers.flat())]; + await awardTitleWithNotification( + $Enums.Title.HIGHEST_RANK_ON_A_HERO, + uniqueTopRankedUserIds + ); + + // Fetch all stat-based data in parallel + const [ + ajaxes, + fletaDeadlifts, + top3Kills, + top3DamageDealt, + top3HealingDealt, + top3DamageBlocked, + top3Deaths, + top3TimePlayed, + ] = await Promise.all([ + prisma.$queryRaw<{ playerName: string; total_ajaxes: number }[]>`SELECT + "playerName", + SUM("value") AS total_ajaxes + FROM "CalculatedStat" + WHERE "stat" = 'AJAX_COUNT' + GROUP BY "playerName" + ORDER BY total_ajaxes DESC + LIMIT 100;`, + prisma.calculatedStat.findFirst({ + where: { + stat: $Enums.CalculatedStatType.FLETA_DEADLIFT_PERCENTAGE, + }, + orderBy: { value: "desc" }, + }), + prisma.kill.groupBy({ + by: ["attacker_name"], + _count: { attacker_name: true }, + orderBy: { _count: { attacker_name: "desc" } }, + take: 3, + }), + prisma.playerStat.groupBy({ + by: ["player_name"], + _sum: { hero_damage_dealt: true }, + orderBy: { _sum: { hero_damage_dealt: "desc" } }, + take: 3, + }), + prisma.playerStat.groupBy({ + by: ["player_name"], + _sum: { healing_dealt: true }, + orderBy: { _sum: { healing_dealt: "desc" } }, + take: 3, + }), + prisma.playerStat.groupBy({ + by: ["player_name"], + _sum: { damage_blocked: true }, + orderBy: { _sum: { damage_blocked: "desc" } }, + take: 3, + }), + prisma.kill.groupBy({ + by: ["victim_name"], + _count: { victim_name: true }, + orderBy: { _count: { victim_name: "desc" } }, + take: 3, + }), + prisma.playerStat.groupBy({ + by: ["player_name"], + _sum: { hero_time_played: true }, + orderBy: { _sum: { hero_time_played: "desc" } }, + take: 3, + }), + ]); + + // Award all stat-based titles in parallel + await Promise.all([ + // Award highest AJAX count title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { in: ajaxes.map((ajax) => ajax.playerName) }, + NOT: { titles: { has: $Enums.Title.HIGHEST_AJAX_COUNT } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.HIGHEST_AJAX_COUNT, + users.map((u) => u.id) + ); + })(), + + // Award highest Fleta deadlift percentage title + ...(fletaDeadlifts + ? [ + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: fletaDeadlifts.playerName, + NOT: { + titles: { + has: $Enums.Title.HIGHEST_FLETA_DEADLIFT_PERCENTAGE, + }, + }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.HIGHEST_FLETA_DEADLIFT_PERCENTAGE, + users.map((u) => u.id) + ); + })(), + ] + : []), + + // Award top 3 kills title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { in: top3Kills.map((kill) => kill.attacker_name) }, + NOT: { titles: { has: $Enums.Title.TOP_3_KILLS } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.TOP_3_KILLS, + users.map((u) => u.id) + ); + })(), + + // Award top 3 damage dealt title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { + in: top3DamageDealt.map((damage) => damage.player_name), + }, + NOT: { titles: { has: $Enums.Title.TOP_3_DAMAGE_DEALT } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.TOP_3_DAMAGE_DEALT, + users.map((u) => u.id) + ); + })(), + + // Award top 3 healing dealt title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { + in: top3HealingDealt.map((healing) => healing.player_name), + }, + NOT: { titles: { has: $Enums.Title.TOP_3_HEALING } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.TOP_3_HEALING, + users.map((u) => u.id) + ); + })(), + + // Award top 3 damage blocked title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { + in: top3DamageBlocked.map((blocked) => blocked.player_name), + }, + NOT: { titles: { has: $Enums.Title.TOP_3_DAMAGE_BLOCKED } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.TOP_3_DAMAGE_BLOCKED, + users.map((u) => u.id) + ); + })(), + + // Award top 3 deaths title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { in: top3Deaths.map((death) => death.victim_name) }, + NOT: { titles: { has: $Enums.Title.TOP_3_DEATHS } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.TOP_3_DEATHS, + users.map((u) => u.id) + ); + })(), + + // Award top 3 time played title + (async () => { + const users = await prisma.user.findMany({ + where: { + battletag: { in: top3TimePlayed.map((time) => time.player_name) }, + NOT: { titles: { has: $Enums.Title.TOP_3_TIME_PLAYED } }, + }, + select: { id: true }, + }); + await awardTitleWithNotification( + $Enums.Title.TOP_3_TIME_PLAYED, + users.map((u) => u.id) + ); + })(), + ]); + + return new Response("Titles awarded", { status: 200 }); +} diff --git a/src/app/api/user/banner-upload/route.ts b/src/app/api/user/banner-upload/route.ts new file mode 100644 index 000000000..56ec4e66b --- /dev/null +++ b/src/app/api/user/banner-upload/route.ts @@ -0,0 +1,88 @@ +import { getUser } from "@/data/user-dto"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import prisma from "@/lib/prisma"; +import { Ratelimit } from "@upstash/ratelimit"; +import { track } from "@vercel/analytics/server"; +import { handleUpload, type HandleUploadBody } from "@vercel/blob/client"; +import { kv } from "@vercel/kv"; +import { unauthorized } from "next/navigation"; +import { type NextRequest, NextResponse } from "next/server"; + +export async function POST(request: NextRequest): Promise { + const session = await auth(); + + if (!session?.user) { + unauthorized(); + } + + const authedUser = await getUser(session.user.email); + + if (!authedUser) { + return NextResponse.json({ error: "User not found" }, { status: 404 }); + } + + const body = (await request.json()) as HandleUploadBody; + const userId = request.nextUrl.searchParams.get("userId"); + + if (!userId) { + return NextResponse.json({ error: "userId is required" }, { status: 400 }); + } + + const ratelimit = new Ratelimit({ + redis: kv, + limiter: Ratelimit.slidingWindow(5, "1 m"), + analytics: true, + }); + + const identifier = `api/image-upload/${authedUser.id}`; + const { success } = await ratelimit.limit(identifier); + + if (!success) { + Logger.log("Rate limit exceeded for user", authedUser.id); + return NextResponse.json({ error: "Rate limit exceeded" }, { status: 429 }); + } + + Logger.log("Uploading banner for user", userId); + + try { + const jsonResponse = await handleUpload({ + body, + request, + onBeforeGenerateToken: async () => { + const user = await prisma.user.findUnique({ where: { id: userId } }); + if (!user) throw new Error("User not found"); + + return { tokenPayload: JSON.stringify({ userId: user.id }) }; + }, + onUploadCompleted: async ({ blob, tokenPayload }) => { + Logger.log("blob upload completed", blob, tokenPayload); + await track("Image Upload", { label: "User Banner" }); + + try { + const { userId } = JSON.parse(tokenPayload!) as { userId: string }; + + const user = await prisma.user.findUnique({ where: { id: userId } }); + if (!user) throw new Error("User not found"); + + await prisma.user.update({ + where: { id: user?.id }, + data: { bannerImage: blob.url }, + }); + } catch { + throw new Error("Could not update user"); + } + }, + }); + + return NextResponse.json(jsonResponse); + } catch (error) { + if (error instanceof Error) { + return NextResponse.json({ error: error.message }, { status: 400 }); + } + return NextResponse.json( + { error: "An unknown error occurred" }, + { status: 400 } + ); + } +} diff --git a/src/app/api/user/delete-account/route.ts b/src/app/api/user/delete-account/route.ts index 33f0f4e62..1e6670d81 100644 --- a/src/app/api/user/delete-account/route.ts +++ b/src/app/api/user/delete-account/route.ts @@ -1,20 +1,22 @@ import { getUser } from "@/data/user-dto"; +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; import { deleteUserWebhookConstructor, sendDiscordWebhook, } from "@/lib/webhooks"; import { track } from "@vercel/analytics/server"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after } from "next/server"; -export async function DELETE(req: NextRequest) { +export async function DELETE() { const session = await auth(); - if (!session) return new Response("Unauthorized", { status: 401 }); + if (!session) unauthorized(); const user = await getUser(session.user.email); - if (!user) return new Response("Unauthorized", { status: 401 }); + if (!user) unauthorized(); await track("User Deleted Account", { email: user.email }); @@ -25,5 +27,14 @@ export async function DELETE(req: NextRequest) { await prisma.user.delete({ where: { id: user.id } }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "USER_ACCOUNT_DELETED", + target: user.email, + details: `User deleted their account`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/user/update-avatar/route.ts b/src/app/api/user/update-avatar/route.ts index a8ae56746..4018819c7 100644 --- a/src/app/api/user/update-avatar/route.ts +++ b/src/app/api/user/update-avatar/route.ts @@ -1,19 +1,19 @@ +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const AvatarUpdateSchema = z.object({ userId: z.string().min(1), - image: z.string().url(), + image: z.url(), }); export async function POST(req: NextRequest) { const session = await auth(); - if (!session || !session.user) { - return new Response("Unauthorized", { status: 401 }); - } + if (!session?.user) unauthorized(); const body = AvatarUpdateSchema.safeParse(await req.json()); if (!body.success) { @@ -26,7 +26,7 @@ export async function POST(req: NextRequest) { if (!user) return new Response("Not found", { status: 404 }); if (user.email !== session.user.email) { - return new Response("Unauthorized", { status: 401 }); + unauthorized(); } await prisma.user.update({ @@ -36,5 +36,14 @@ export async function POST(req: NextRequest) { Logger.log("new avatar uploaded for user: ", user.email, body.data.image); + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "USER_AVATAR_UPDATED", + target: user.email, + details: `Updated avatar for user ${user.email}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/user/update-banner/route.ts b/src/app/api/user/update-banner/route.ts new file mode 100644 index 000000000..d2af69256 --- /dev/null +++ b/src/app/api/user/update-banner/route.ts @@ -0,0 +1,53 @@ +import { auditLog } from "@/lib/audit-logs"; +import { auth } from "@/lib/auth"; +import { Logger } from "@/lib/logger"; +import prisma from "@/lib/prisma"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; +import { z } from "zod"; + +const BannerUpdateSchema = z.object({ + userId: z.string().min(1), + bannerImage: z.url(), +}); + +export async function POST(req: NextRequest) { + const session = await auth(); + if (!session?.user) unauthorized(); + + const body = BannerUpdateSchema.safeParse(await req.json()); + if (!body.success) { + return new Response("Invalid request", { status: 400 }); + } + + const user = await prisma.user.findUnique({ + where: { id: body.data.userId }, + }); + if (!user) return new Response("Not found", { status: 404 }); + + if (user.email !== session.user.email) { + unauthorized(); + } + + await prisma.user.update({ + where: { id: user.id }, + data: { bannerImage: body.data.bannerImage }, + }); + + Logger.log( + "new banner uploaded for user: ", + user.email, + body.data.bannerImage + ); + + after(async () => { + await auditLog.createAuditLog({ + userEmail: user.email, + action: "USER_BANNER_UPDATED", + target: user.email, + details: `Updated banner for user ${user.email}`, + }); + }); + + return new Response("OK", { status: 200 }); +} diff --git a/src/app/api/user/update-battletag/route.ts b/src/app/api/user/update-battletag/route.ts new file mode 100644 index 000000000..324f338f5 --- /dev/null +++ b/src/app/api/user/update-battletag/route.ts @@ -0,0 +1,45 @@ +import { auditLog } from "@/lib/audit-logs"; +import { auth } from "@/lib/auth"; +import prisma from "@/lib/prisma"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; +import { z } from "zod"; + +const UpdateBattletagSchema = z.object({ + battletag: z + .string() + .min(2, { + message: "Battletag must be at least 2 characters.", + }) + .max(12, { + message: "Battletag must not be longer than 12 characters.", + }) + .trim() + .regex(/^(?!.*?:).*$/), +}); + +export async function POST(req: NextRequest) { + const session = await auth(); + if (!session || !session.user || !session.user.email) unauthorized(); + + const body = UpdateBattletagSchema.safeParse(await req.json()); + if (!body.success) { + return new Response("Invalid battletag supplied", { status: 400 }); + } + + await prisma.user.update({ + where: { email: session.user.email }, + data: { battletag: body.data.battletag }, + }); + + after(async () => { + await auditLog.createAuditLog({ + userEmail: session.user.email, + action: "USER_BATTLETAG_UPDATED", + target: session.user.email, + details: `Updated battletag for user ${session.user.email} to ${body.data.battletag}`, + }); + }); + + return new Response("OK", { status: 200 }); +} diff --git a/src/app/api/user/update-name/route.ts b/src/app/api/user/update-name/route.ts index 174753c8b..48316c0f5 100644 --- a/src/app/api/user/update-name/route.ts +++ b/src/app/api/user/update-name/route.ts @@ -1,6 +1,8 @@ +import { auditLog } from "@/lib/audit-logs"; import { auth } from "@/lib/auth"; import prisma from "@/lib/prisma"; -import { NextRequest } from "next/server"; +import { unauthorized } from "next/navigation"; +import { after, type NextRequest } from "next/server"; import { z } from "zod"; const UpdateNameSchema = z.object({ @@ -18,9 +20,7 @@ const UpdateNameSchema = z.object({ export async function POST(req: NextRequest) { const session = await auth(); - if (!session || !session.user || !session.user.email) { - return new Response("Unauthorized", { status: 401 }); - } + if (!session || !session.user || !session.user.email) unauthorized(); const body = UpdateNameSchema.safeParse(await req.json()); if (!body.success) { @@ -32,5 +32,14 @@ export async function POST(req: NextRequest) { data: { name: body.data.name }, }); + after(async () => { + await auditLog.createAuditLog({ + userEmail: session.user.email, + action: "USER_NAME_UPDATED", + target: session.user.email, + details: `Updated name for user ${session.user.email} to ${body.data.name}`, + }); + }); + return new Response("OK", { status: 200 }); } diff --git a/src/app/api/user/update-onboarding/route.ts b/src/app/api/user/update-onboarding/route.ts new file mode 100644 index 000000000..c418cab98 --- /dev/null +++ b/src/app/api/user/update-onboarding/route.ts @@ -0,0 +1,26 @@ +import { auth } from "@/lib/auth"; +import prisma from "@/lib/prisma"; +import { unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; +import { z } from "zod"; + +const UpdateOnboardingSchema = z.object({ + seenOnboarding: z.boolean(), +}); + +export async function POST(req: NextRequest) { + const session = await auth(); + if (!session || !session.user || !session.user.email) unauthorized(); + + const body = UpdateOnboardingSchema.safeParse(await req.json()); + if (!body.success) { + return new Response("Invalid onboarding flag supplied", { status: 400 }); + } + + await prisma.user.update({ + where: { email: session.user.email }, + data: { seenOnboarding: body.data.seenOnboarding }, + }); + + return new Response("OK", { status: 200 }); +} diff --git a/src/app/api/user/update-title/route.ts b/src/app/api/user/update-title/route.ts new file mode 100644 index 000000000..796427226 --- /dev/null +++ b/src/app/api/user/update-title/route.ts @@ -0,0 +1,53 @@ +import { auth } from "@/lib/auth"; +import prisma from "@/lib/prisma"; +import { $Enums } from "@prisma/client"; +import { unauthorized } from "next/navigation"; +import type { NextRequest } from "next/server"; +import { z } from "zod"; + +const UpdateTitleSchema = z.object({ + userId: z.string(), + appliedTitleId: z.number().optional(), + newTitle: z.enum($Enums.Title), +}); + +export async function POST(req: NextRequest) { + const session = await auth(); + if (!session || !session.user || !session.user.email) unauthorized(); + + const body = UpdateTitleSchema.safeParse(await req.json()); + if (!body.success) { + return new Response("Invalid request body", { status: 400 }); + } + + // list of all titles this user has unlocked + const userTitles = await prisma.user.findUnique({ + where: { id: body.data.userId }, + select: { titles: true }, + }); + + if (userTitles?.titles.includes(body.data.newTitle)) { + // set the applied title to the new title + const existingTitle = await prisma.appliedTitle.findFirst({ + where: { userId: body.data.userId }, + }); + + if (existingTitle) { + await prisma.appliedTitle.update({ + where: { id: existingTitle.id }, + data: { title: body.data.newTitle }, + }); + } else { + await prisma.appliedTitle.create({ + data: { userId: body.data.userId, title: body.data.newTitle }, + }); + } + } else { + // deny the request + return new Response("Title not allowed to be applied to this user", { + status: 403, + }); + } + + return new Response("OK", { status: 200 }); +} diff --git a/src/app/contact/layout.tsx b/src/app/contact/layout.tsx index 49fa3aca0..e316a281c 100644 --- a/src/app/contact/layout.tsx +++ b/src/app/contact/layout.tsx @@ -1,11 +1,7 @@ -import Footer from "@/components/footer"; -import Header from "@/components/header"; +import { Footer } from "@/components/footer"; +import { Header } from "@/components/header"; -export default function ContactLayout({ - children, -}: { - children: React.ReactNode; -}) { +export default function ContactLayout({ children }: LayoutProps<"/contact">) { return ( <>
    diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx index ac325cf7d..badf9e44c 100644 --- a/src/app/contact/page.tsx +++ b/src/app/contact/page.tsx @@ -12,9 +12,8 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; -import { toast } from "@/components/ui/use-toast"; import { ClientOnly } from "@/lib/client-only"; -import Logger from "@/lib/logger"; +import { Logger } from "@/lib/logger"; import { EnvelopeIcon, UserGroupIcon } from "@heroicons/react/24/outline"; import { zodResolver } from "@hookform/resolvers/zod"; import { EnvelopeOpenIcon, ExternalLinkIcon } from "@radix-ui/react-icons"; @@ -22,6 +21,7 @@ import { useTranslations } from "next-intl"; import Link from "next/link"; import { useState } from "react"; import { useForm } from "react-hook-form"; +import { toast } from "sonner"; import { z } from "zod"; export default function ContactPage() { @@ -32,19 +32,15 @@ export default function ContactPage() { const formSchema = z.object({ name: z .string({ - required_error: t("contactForm.nameRequiredError"), + error: t("contactForm.nameRequiredError"), }) .min(1), - email: z - .string({ - required_error: t("contactForm.emailRequiredError"), - }) - .email({ - message: t("contactForm.emailMessage"), - }), + email: z.email({ + message: t("contactForm.emailMessage"), + }), message: z .string({ - required_error: t("contactForm.messageRequiredError"), + error: t("contactForm.messageRequiredError"), }) .min(1, { message: t("contactForm.messageMessage"), @@ -65,27 +61,23 @@ export default function ContactPage() { }); if (res.ok) { - toast({ - title: t("contactForm.handleSubmit.title"), + toast.success(t("contactForm.handleSubmit.title"), { description: t("contactForm.handleSubmit.description"), duration: 5000, }); form.reset(); } else { Logger.error("Error sending email", res.statusText); - toast({ - title: t("contactForm.handleSubmit.errorTitle1"), + toast.error(t("contactForm.handleSubmit.errorTitle1"), { description: t("contactForm.handleSubmit.errorDescription1", { res: `${await res.text()} (${res.status})`, }), duration: 5000, - variant: "destructive", }); } } catch (error) { Logger.error("Error sending email", error); - toast({ - title: t("contactForm.handleSubmit.errorTitle2"), + toast.error(t("contactForm.handleSubmit.errorTitle2"), { description: t("contactForm.handleSubmit.errorDescription2"), duration: 5000, }); @@ -94,13 +86,13 @@ export default function ContactPage() { setLoading(false); } return ( -
    +
    -
    +
    -
    +