diff --git a/docs/Development.md b/docs/Development.md index b384bf13..5651c0fd 100644 --- a/docs/Development.md +++ b/docs/Development.md @@ -164,10 +164,6 @@ Electron forge webpack don't support pure ESM yet - electron-unhandled - date-fns -### Use electron forge's recommended version - -- @vercel/webpack-asset-relocator-loader - ## Code Tour [FileProtocol](./features/FileProtocol.md) diff --git a/docs/features/OAuthFlow.md b/docs/features/OAuthFlow.md new file mode 100644 index 00000000..699ab59c --- /dev/null +++ b/docs/features/OAuthFlow.md @@ -0,0 +1,78 @@ +# Git Service OAuth Flow + +We use [`oidc-client-ts`](https://authts.github.io/oidc-client-ts/) which automatically handles PKCE generation, state management, and token exchange. + +## Codeberg Setup + +To enable one-click login to Codeberg: + +1. Go to +2. Create new OAuth2 Application: + - **Application Name**: TidGi Desktop + - **Redirect URI**: `http://127.0.0.1:3012/tidgi-auth/codeberg` + - **⚠️ Do NOT check "Confidential client"** (this allows PKCE) +3. Copy the `Client ID` and `Client Secret` +4. Update `src/constants/oauthConfig.ts`: + +Note: `Client Secret` is still necessary even PKCE is used. Otherwise we will get error. Use description to inform user only trust TidGi login oauth app when inside TidGi app's window. + +## Configuration + +src/constants/oauthConfig.ts + +```typescript +export const OAUTH_CONFIGS: Record = { + github: { + authorizePath: 'https://github.com/login/oauth/authorize', + tokenPath: 'https://github.com/login/oauth/access_token', + userInfoPath: 'https://api.github.com/user', + clientId: '...', + clientSecret: '...', + redirectPath: 'http://127.0.0.1:3012/tidgi-auth/github', + scopes: 'user:email,read:user,repo,workflow', + }, + // Gitea/Codeberg use same API structure + gitea: { + authorizePath: '', // User configures: https://gitea.example.com/login/oauth/authorize + // ... + }, +}; +``` + +## Implementation + +### Window setup + +`src/services/windows/handleCreateBasicWindow.ts` + +```typescript +window.webContents.on('will-redirect', (event, url) => { + const match = isOAuthRedirect(url); // Check all services + if (match) { + event.preventDefault(); + const code = new URL(url).searchParams.get('code'); + // Exchange code for token using match.config.tokenPath + // Store token -> triggers userInfo$ update + } +}); +``` + +### Login + +`src/components/TokenForm/gitTokenHooks.ts` + +```typescript +const oauthUrl = buildOAuthUrl(storageService); +if (oauthUrl) { + location.href = oauthUrl; +} +``` + +## Flow + +1. User clicks login → OAuth page (GitHub/Gitea/Codeberg) +2. OAuth redirects → `http://127.0.0.1:3012/tidgi-auth/{service}?code=xxx` +3. `will-redirect` event → extract code +4. Exchange code for token via `config.tokenPath` +5. Store token → `userInfo$` emits +6. Form updates ✓ diff --git a/features/oauthLogin.feature b/features/oauthLogin.feature new file mode 100644 index 00000000..147d1369 --- /dev/null +++ b/features/oauthLogin.feature @@ -0,0 +1,218 @@ +Feature: OAuth Login Flow + As a user + I want to login via OAuth with PKCE using GitHub OAuth + So that I can securely authenticate and sync my wiki + + Background: + Given I launch the TidGi application + And I wait for the page to load completely + And I should see a "page body" element with selector "body" + + @oauth @pkce + Scenario: Login with Custom OAuth Server using PKCE + # Step 1: Start Mock OAuth Server + When I start Mock OAuth Server on port 8888 + + # Step 2: Open preferences window + When I click on a "settings button" element with selector "#open-preferences-button" + When I switch to "preferences" window + + # Step 2: Navigate to Sync section + When I click on a "sync section" element with selector "[data-testid='preference-section-sync']" + + # Step 3: Click Custom Server tab + When I click on a "custom server tab" element with selector "[data-testid='custom-server-tab']" + + # Step 4: Verify Custom Server form is visible + Then I should see "server url input and client id input" elements with selectors: + | [data-testid='custom-server-url-input'] | + | [data-testid='custom-client-id-input'] | + + # Step 5: Trigger OAuth login + # Note: oauth2-mock-server automatically redirects without showing login UI + # This tests the token exchange logic which is the most critical part + When I click on a "login button" element with selector "[data-testid='custom-oauth-login-button']" + And I wait for 3 seconds + + # Step 6: After OAuth completes, page reloads and defaults to GitHub tab + # Need to click Custom Server tab again to see the filled token + When I click on a "custom server tab" element with selector "[data-testid='custom-server-tab']" + + # Step 7: The token should be filled in the form after OAuth completes + Then I should see a "token input with non-empty value" element with selector "[data-testid='custom-token-input'] input:not([value=''])" + + # Step 8: Verify logout button appears + Then I should see a "logout button" element with selector "[data-testid='custom-oauth-logout-button']" + + # Step 9: Close preferences window + When I close "preferences" window + + # Cleanup + And I stop Mock OAuth Server + + # For Github login debugging. Need human to fill in the real password of an one-time test account. + # @oauth @github @real @manual + # Scenario: Login with Real GitHub OAuth + # # NOTE: This test requires GITHUB_CLIENT_SECRET environment variable to be set + # # GitHub OAuth Apps don't support PKCE and require client_secret + # # Step 1: Open preferences window + # When I click on a "settings button" element with selector "#open-preferences-button" + # And I wait for 1 seconds + # When I switch to "preferences" window + # And I wait for 1 seconds + + # # Step 2: Navigate to Sync section + # When I click on a "sync section" element with selector "[data-testid='preference-section-sync']" + # And I wait for 1 seconds + + # # Step 3: Click GitHub login button (this will open a new OAuth window) + # When I click on a "GitHub login button" element with selector "[data-testid='github-login-button']" + # And I wait for 1 seconds + + # # Step 4: Switch to the OAuth popup window + # When I switch to the newest window + # And I wait for 1 seconds + + # # Step 5: Fill in GitHub credentials in the OAuth popup + # # GitHub's login page uses 'login' and 'password' as field names + # When I type "tiddlygit@gmail.com" in "GitHub email input" element with selector "input[name='login']" + # And I wait for 0.5 seconds + # When I type "PASSWORD HERE" in "GitHub password input" element with selector "input[name='password']" + # And I wait for 0.5 seconds + # When I click on a "GitHub sign in button" element with selector "input[type='submit'][name='commit']" + # And I wait for 1 seconds + + # # Step 6: Click Authorize button on the OAuth authorization page + # # GitHub App requires user to authorize access to their account + # # The button is usually green and says "Authorize [AppName]" + # # When I click on a "GitHub authorize button" element with selector "button[type='submit'].btn-primary, button[id*='authorize'], button.js-oauth-authorize-btn" + # # And I wait for 3 seconds + + # # Step 7: Switch back to preferences window + # # The OAuth window should close automatically after authorization + # When I switch to "preferences" window + # And I wait for 1 seconds + + # # Step 7: Verify token is filled in the form with actual value + # Then I should see a "GitHub token field with value" element with selector "[data-testid='github-token-input'] input:not([value=''])" + + # # Step 8: Verify user info is populated with actual value + # Then I should see a "GitHub username field with value" element with selector "[data-testid='github-userName-input'] input:not([value=''])" + + # # Step 9: Close preferences window + # When I close "preferences" window + + + # @oauth @codeberg @real @manual + # Scenario: Login with Real Codeberg OAuth + # # Step 1: Open preferences window + # When I click on a "settings button" element with selector "#open-preferences-button" + # And I wait for 1 seconds + # When I switch to "preferences" window + # And I wait for 1 seconds + + # # Step 2: Navigate to Sync section + # When I click on a "sync section" element with selector "[data-testid='preference-section-sync']" + # And I wait for 1 seconds + + # # Step 3: Click Codeberg tab + # When I click on a "Codeberg tab" element with selector "[data-testid='codeberg-tab']" + # And I wait for 1 seconds + + # # Step 4: Click Codeberg login button (this will open a new OAuth window) + # When I click on a "Codeberg login button" element with selector "[data-testid='codeberg-login-button']" + # And I wait for 2 seconds + + # # Step 4: Switch to the OAuth popup window + # When I switch to the newest window + # And I wait for 1 seconds + + # # Step 5: Fill in Codeberg credentials in the OAuth popup + # # Codeberg uses id-based selectors + # When I type "USERNAME HERE" in "Codeberg email input" element with selector "#user_name" + # When I type "TEMPORARY pswd" in "Codeberg password input" element with selector "#password" + # When I click on a "Codeberg sign in button" element with selector "button.ui.primary.button.tw-w-full" + # And I wait for 2 seconds + + # # Step 6: Authorize the application (Codeberg requires authorization every time) + # # The authorization page has two buttons: + # # - Red "Authorize Application" button (id="authorize-app", name="granted" value="true") + # # - Gray "Cancel" button (name="granted" value="false") + # # We need to click the red one + # When I click on a "authorize button" element with selector "#authorize-app" + # And I wait for 2 seconds + + # # Step 7: After OAuth completes, switch back to preferences window + # When I switch to "preferences" window + # And I wait for 1 seconds + + # # Step 8: Switch to Codeberg tab to verify the filled token + # When I click on a "codeberg tab" element with selector "[data-testid='codeberg-tab']" + # And I wait for 1 seconds + + # # Step 9: Verify token is filled in the form with actual value + # Then I should see a "Codeberg token field with value" element with selector "[data-testid='codeberg-token-input'] input:not([value=''])" + + # # Step 10: Verify user info is populated with actual value + # Then I should see a "Codeberg username field with value" element with selector "[data-testid='codeberg-userName-input'] input:not([value=''])" + + # # Step 11: Close preferences window + # When I close "preferences" window + + # @oauth @gitea @real @manual + # Scenario: Login with Real Gitea OAuth + # # NOTE: This test uses real Gitea.com OAuth with test credentials + # # Gitea supports OAuth Apps with PKCE + + # # Step 1: Open preferences window + # When I click on a "settings button" element with selector "#open-preferences-button" + # And I wait for 1 seconds + # When I switch to "preferences" window + # And I wait for 1 seconds + + # # Step 2: Navigate to Sync section + # When I click on a "sync section" element with selector "[data-testid='preference-section-sync']" + # And I wait for 1 seconds + + # # Step 3: Click Gitea tab + # When I click on a "Gitea tab" element with selector "[data-testid='gitea-tab']" + # And I wait for 1 seconds + + # # Step 4: Click Gitea login button (this will open a new OAuth window) + # When I click on a "Gitea login button" element with selector "[data-testid='gitea-login-button']" + # And I wait for 2 seconds + + # # Step 5: Switch to the OAuth popup window + # When I switch to the newest window + # And I wait for 1 seconds + + # # Step 6: Fill in Gitea credentials in the OAuth popup + # # Gitea uses similar id-based selectors as Codeberg + # When I type "USERNAME HERE" in "Gitea username input" element with selector "#user_name" + # When I type "TEMPORARY pswd" in "Gitea password input" element with selector "#password" + # When I click on a "Gitea sign in button" element with selector "button.ui.primary.button.tw-w-full" + # And I wait for 2 seconds + + # # Step 7: Authorize the application (Gitea requires authorization every time like Codeberg) + # # The authorization page has two buttons similar to Codeberg: + # # - Red "Authorize Application" button (id="authorize-app") + # # - Gray "Cancel" button + # # When I click on a "authorize button" element with selector "#authorize-app" + # # And I wait for 2 seconds + + # # Step 8: After OAuth completes, switch back to preferences window + # When I switch to "preferences" window + # And I wait for 1 seconds + + # # Step 9: Switch to Gitea tab to verify the filled token + # When I click on a "gitea tab" element with selector "[data-testid='gitea-tab']" + # And I wait for 1 seconds + + # # Step 10: Verify token is filled in the form with actual value + # Then I should see a "Gitea token field with value" element with selector "[data-testid='gitea-token-input'] input:not([value=''])" + + # # Step 11: Verify user info is populated with actual value + # Then I should see a "Gitea username field with value" element with selector "[data-testid='gitea-userName-input'] input:not([value=''])" + + # # Step 12: Close preferences window + # When I close "preferences" window diff --git a/features/stepDefinitions/application.ts b/features/stepDefinitions/application.ts index dbba9f51..413fb14c 100644 --- a/features/stepDefinitions/application.ts +++ b/features/stepDefinitions/application.ts @@ -4,6 +4,7 @@ import path from 'path'; import { _electron as electron } from 'playwright'; import type { ElectronApplication, Page } from 'playwright'; import { windowDimension, WindowNames } from '../../src/services/windows/WindowProperties'; +import { MockOAuthServer } from '../supports/mockOAuthServer'; import { MockOpenAIServer } from '../supports/mockOpenAI'; import { logsDirectory, makeSlugPath, screenshotsDirectory } from '../supports/paths'; import { getPackedAppPath } from '../supports/paths'; @@ -33,6 +34,7 @@ export class ApplicationWorld { mainWindow: Page | undefined; // Keep for compatibility during transition currentWindow: Page | undefined; // New state-managed current window mockOpenAIServer: MockOpenAIServer | undefined; + mockOAuthServer: MockOAuthServer | undefined; // Helper method to check if window is visible async isWindowVisible(page: Page): Promise { diff --git a/features/stepDefinitions/logging.ts b/features/stepDefinitions/logging.ts index b67f69a2..9bf9a4ba 100644 --- a/features/stepDefinitions/logging.ts +++ b/features/stepDefinitions/logging.ts @@ -1,6 +1,7 @@ -import { DataTable, Then } from '@cucumber/cucumber'; +import { After, DataTable, Then, When } from '@cucumber/cucumber'; import fs from 'fs'; import path from 'path'; +import { MockOAuthServer } from '../supports/mockOAuthServer'; import { logsDirectory } from '../supports/paths'; import { ApplicationWorld } from './application'; @@ -17,3 +18,35 @@ Then('I should find log entries containing', async function(this: ApplicationWor throw new Error(`Missing expected log messages "${missing.map(item => item.slice(0, 10)).join('...", "')}..." on latest log file: ${latestLogFilePath}`); } }); + +// OAuth Server Steps +When('I start Mock OAuth Server on port {int}', async function(this: ApplicationWorld, port: number) { + this.mockOAuthServer = new MockOAuthServer( + { clientId: 'test-client-id' }, + port, + ); + await this.mockOAuthServer.start(); +}); + +When('I stop Mock OAuth Server', async function(this: ApplicationWorld) { + if (this.mockOAuthServer) { + await this.mockOAuthServer.stop(); + this.mockOAuthServer = undefined; + } +}); + +// Clean up Mock OAuth Server after @oauth tests +After({ tags: '@oauth' }, async function(this: ApplicationWorld) { + if (this.mockOAuthServer) { + try { + await Promise.race([ + this.mockOAuthServer.stop(), + new Promise((resolve) => setTimeout(resolve, 2000)), + ]); + } catch { + // Ignore errors during cleanup + } finally { + this.mockOAuthServer = undefined; + } + } +}); diff --git a/features/stepDefinitions/ui.ts b/features/stepDefinitions/ui.ts index 94e74b55..5baa463d 100644 --- a/features/stepDefinitions/ui.ts +++ b/features/stepDefinitions/ui.ts @@ -300,6 +300,20 @@ When('I switch to {string} window', async function(this: ApplicationWorld, windo } }); +// Switch to the newest/latest window (useful for OAuth popups) +When('I switch to the newest window', async function(this: ApplicationWorld) { + if (!this.app) { + throw new Error('Application is not available'); + } + const allWindows = this.app.windows().filter(p => !p.isClosed()); + if (allWindows.length === 0) { + throw new Error('No windows available'); + } + // The newest window is the last one in the array + const newestWindow = allWindows[allWindows.length - 1]; + this.currentWindow = newestWindow; +}); + // Generic window closing When('I close {string} window', async function(this: ApplicationWorld, windowType: string) { if (!this.app) { diff --git a/features/supports/mockOAuthServer.ts b/features/supports/mockOAuthServer.ts new file mode 100644 index 00000000..deaedeab --- /dev/null +++ b/features/supports/mockOAuthServer.ts @@ -0,0 +1,87 @@ +/** + * Mock OAuth Server using oauth2-mock-server + * + * Replaced custom implementation with professional OAuth 2 mock server. + * Key benefits: + * - Standards-compliant OAuth 2.0 + PKCE + * - Automatic JWT token generation + * - Proper error handling + * - Less code to maintain (from 400+ lines to ~100 lines) + * + * Note: oauth2-mock-server automatically handles authorization. + * It doesn't provide a login UI - it immediately redirects with a code. + * This is perfect for testing token exchange logic without UI complexity. + * + * Standard OAuth 2 endpoints: + * - /authorize (authorization endpoint) + * - /token (token exchange endpoint) + * - /userinfo (user info endpoint) + */ +import { OAuth2Server } from 'oauth2-mock-server'; +import type { MutableResponse, MutableToken } from 'oauth2-mock-server'; + +export class MockOAuthServer { + private server: OAuth2Server | null = null; + public port = 0; + public baseUrl = ''; + + constructor( + private config: { clientId: string }, + private fixedPort?: number, + ) {} + + async start(): Promise { + this.server = new OAuth2Server(); + + // Generate RSA key for signing JWT tokens + await this.server.issuer.keys.generate('RS256'); + + // Start server on specified or random port + await this.server.start(this.fixedPort || 0, '127.0.0.1'); + + const address = this.server.address(); + if (!address || typeof address === 'string') { + throw new Error('Failed to get server address'); + } + + this.port = address.port; + this.baseUrl = `http://127.0.0.1:${this.port}`; + + // Configure issuer URL + this.server.issuer.url = this.baseUrl; + + // Setup custom behavior to match real OAuth servers + this.setupCustomBehavior(); + } + + async stop(): Promise { + if (this.server) { + await this.server.stop(); + this.server = null; + } + } + + /** + * Customize server behavior to match GitHub/GitLab/Gitea OAuth servers + */ + private setupCustomBehavior(): void { + if (!this.server) return; + + // Customize access token to include GitHub-like claims + this.server.service.on('beforeTokenSigning', (token: MutableToken, _request) => { + token.payload.scope = 'user:email,read:user,repo,workflow'; + token.payload.token_type = 'bearer'; + }); + + // Simulate user info endpoint (matches GitHub API response) + this.server.service.on('beforeUserinfo', (userInfoResponse: MutableResponse, _request) => { + userInfoResponse.body = { + login: 'testuser', + id: 12345, + email: 'testuser@example.com', + name: 'Test User', + avatar_url: 'https://example.com/avatar.jpg', + }; + }); + } +} diff --git a/features/supports/mockOpenAI.test.ts b/features/supports/mockOpenAI.test.ts index 90646ca9..31b178b0 100644 --- a/features/supports/mockOpenAI.test.ts +++ b/features/supports/mockOpenAI.test.ts @@ -1,4 +1,4 @@ -import type { CoreMessage } from 'ai'; +import type { ModelMessage } from 'ai'; import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest'; import type { AiAPIConfig } from '../../src/services/agentInstance/promptConcat/promptConcatSchema'; import { streamFromProvider } from '../../src/services/externalAPI/callProviderAPI'; @@ -265,7 +265,7 @@ describe('Mock OpenAI Server', () => { enabled: true, }; - const messages: CoreMessage[] = [ + const messages: ModelMessage[] = [ { role: 'user', content: 'Start streaming' }, ]; diff --git a/localization/locales/en/agent.json b/localization/locales/en/agent.json index 630ad01d..e22d1c84 100644 --- a/localization/locales/en/agent.json +++ b/localization/locales/en/agent.json @@ -166,6 +166,7 @@ "FailedToSaveSettings": "Failed to save settings", "FailedToUpdateModel": "Failed to update model", "FailedToUpdateProviderStatus": "Failed to update provider status", + "Logout": "Logout", "MaxTokens": "Maximum generation length", "MaxTokensDescription": "The maximum number of characters (measured in tokens) that the model can generate in a single request.", "ModelAddedSuccessfully": "Model added successfully", @@ -313,6 +314,18 @@ "TopP": "Top P sampling parameter", "TopPTitle": "Top P" }, + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Position": { "Bottom": "Offset a few messages from the bottom", "BottomTitle": "bottom offset", @@ -442,6 +455,7 @@ "SourceTypeTitle": "source type", "Title": "Wiki Search", "Tool": { + "Description": "", "Parameters": { "filter": { "Description": "TiddlyWiki Filter Expressions", @@ -467,6 +481,27 @@ "Description": "Workspace name or ID to search for", "Title": "Workspace Name" } + }, + "UpdateEmbeddings": { + "Description": "", + "Parameters": { + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } + }, + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } } }, "ToolListPosition": { @@ -503,6 +538,18 @@ } }, "Tool": { + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Schema": { "Description": "Description", "Examples": "Usage Examples", @@ -524,6 +571,10 @@ "WikiSearch": { "Error": { "ExecutionFailed": "Tool execution failed: {{error}}", + "FilterSearchRequiresFilter": "", + "VectorSearchFailed": "", + "VectorSearchRequiresConfig": "", + "VectorSearchRequiresQuery": "", "WorkspaceNotExist": "Workspace {{workspaceID}} does not exist", "WorkspaceNotFound": "Workspace with name or ID \"{{workspaceName}}\" does not exist. Available workspaces: {{availableWorkspaces}}" }, diff --git a/localization/locales/en/translation.json b/localization/locales/en/translation.json index ca3ef7d1..38da564b 100644 --- a/localization/locales/en/translation.json +++ b/localization/locales/en/translation.json @@ -19,10 +19,19 @@ "ExistedWikiLocation": "Existed Wiki Location", "ExtractedWikiFolderName": "Converted WIKI folder name", "GitDefaultBranchDescription": "The default branch of your Git, Github changed it from master to main after that event", - "GitEmailDescription": "Email used for Git commit, and is used to count daily activities on Github and other online git services", - "GitRepoUrl": "Git repo online url", + "GitEmailDescription": "Email used for Git commit records, used for counting daily commits on services such as Github", + "GitRepoUrl": "Git repository online address", "GitTokenDescription": "The credentials used to log in to Git. Will expire after a certain period of time", - "GitUserNameDescription": "The account name used to log in to Git. Not the nickname", + "GitUserNameDescription": "The account name used to log in to Git, note that it is the name part of your repository URL", + "CustomServerUrl": "Custom Server URL", + "CustomServerUrlDescription": "Base URL of the OAuth server (e.g., http://127.0.0.1:8888)", + "CustomClientId": "Client ID", + "CustomClientIdDescription": "OAuth application client ID", + "GitToken": "Git Token", + "GitUserName": "Git Username", + "GitEmail": "Git Email", + "GitBranch": "Git Branch", + "GitBranchDescription": "Git branch to use (default: main)", "ImportWiki": "Import Wiki: ", "LocalWikiHtml": "path to html file", "LocalWorkspace": "Local Workspace", @@ -234,6 +243,14 @@ "Tags": { } }, + "KeyboardShortcut": { + "Clear": "", + "HelpText": "", + "None": "", + "PressKeys": "", + "PressKeysPrompt": "", + "RegisterShortcut": "" + }, "LOG": { "CommitBackupMessage": "Backup with TidGi-Desktop\t", "CommitMessage": "Sync with TidGi-Desktop" @@ -309,6 +326,7 @@ "SelectNextWorkspace": "Select Next Workspace", "SelectPreviousWorkspace": "Select Previous Workspace", "TidGi": "TidGi", + "TidGiMenuBar": "", "TidGiMiniWindow": "TidGi Mini Window", "View": "View", "Wiki": "Wiki", @@ -324,10 +342,10 @@ "AlwaysOnTopDetail": "Keep TidGi’s main window always on top of other windows, and will not be covered by other windows", "AntiAntiLeech": "Some website has Anti-Leech, will prevent some images from being displayed on your wiki, we simulate a request header that looks like visiting that website to bypass this protection.", "AskDownloadLocation": "Ask where to save each file before downloading", - "TidgiMiniWindow": "Attach to TidGi mini window", - "TidgiMiniWindowShowSidebar": "Attach To TidGi Mini Window Show Sidebar", - "TidgiMiniWindowShowSidebarTip": "Generally, TidGi mini window is only used to quickly view the current workspace, so the default synchronization with the main window workspace, do not need a sidebar, the default hidden sidebar.", - "TidgiMiniWindowTip": "Make a small TidGi popup window that pop when you click system tray mini icon. Tip: Right-click on mini app icon to access context menu.", + "AttachToMenuBar": "", + "AttachToMenuBarShowSidebar": "", + "AttachToMenuBarShowSidebarTip": "", + "AttachToMenuBarTip": "", "AttachToTaskbar": "Attach to taskbar", "AttachToTaskbarShowSidebar": "Attach To Taskbar Show Sidebar", "ChooseLanguage": "Choose Language 选择语言", @@ -355,6 +373,8 @@ "HideMenuBarDetail": "Hide the menu bar unless the Alt+M is pressed.", "HideSideBar": "Hide SideBar", "HideSideBarIconDetail": "Hide the icon and only display the name of the workspace to make the workspace list more compact", + "HideTidgiMiniWindow": "", + "HideTidgiMiniWindowDetail": "", "HideTitleBar": "Hide Title Bar", "HowToEnableNotifications": "<0>TidGi supports notifications out of the box. But for some cases, to receive notifications, you will need to manually configure additional web app settings.<1>Learn more<2>.", "IgnoreCertificateErrors": "Ignore network certificate errors", @@ -362,16 +382,7 @@ "ItIsWorking": "It is working!", "Languages": "Lang/语言", "LightTheme": "Light Theme", - "TidgiMiniWindowAlwaysOnTop": "TidGi Mini Window Always on top", - "TidgiMiniWindowAlwaysOnTopDetail": "Keep TidGi's Mini Window always on top of other windows, and will not be covered by other windows", - "TidgiMiniWindowFixedWorkspace": "Select workspace for fixed TidGi Mini Window", - "TidgiMiniWindowShortcutKey": "Set shortcut key to toggle TidGi Mini Window", - "TidgiMiniWindowShortcutKeyHelperText": "Set a shortcut key to quickly open or close TidGi Mini Window", - "TidgiMiniWindowShortcutKeyPlaceholder": "e.g.: Ctrl+Shift+D", - "TidgiMiniWindowSyncWorkspaceWithMainWindow": "TidGi Mini Window syncs with main window workspace", - "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "When checked, TidGi Mini Window will display the same workspace content as main window", - "TidgiMiniWindowShowTitleBar": "Show title bar on TidGi Mini Window", - "TidgiMiniWindowShowTitleBarDetail": "Show draggable title bar on TidGi Mini Window", + "Logout": "Logout", "Miscellaneous": "Miscellaneous", "MoreWorkspaceSyncSettings": "More Workspace Sync Settings", "MoreWorkspaceSyncSettingsDescription": "Please right-click the workspace icon, open its workspace setting by click on \"Edit Workspace\" context menu item, and configure its independent synchronization settings in it.", @@ -413,6 +424,7 @@ "SearchEmbeddingStatusIdle": "No embeddings generated", "SearchEmbeddingUpdate": "Update Embeddings", "SearchNoWorkspaces": "No workspaces found", + "SelectWorkspace": "", "ShareBrowsingData": "Share browsing data (cookies, cache) between workspaces, if this is off, you can login into different 3rd party service in each workspace.", "ShowSideBar": "Show SideBar", "ShowSideBarDetail": "Sidebar lets you switch easily between workspaces.", @@ -438,6 +450,21 @@ "TestNotificationDescription": "<0>If notifications dont show up, make sure you enable notifications in<1>macOS Preferences → Notifications → TidGi.", "Theme": "Theme", "TiddlyWiki": "TiddlyWiki", + "TidgiMiniWindow": "Attach to TidGi mini window", + "TidgiMiniWindowAlwaysOnTop": "TidGi Mini Window Always on top", + "TidgiMiniWindowAlwaysOnTopDetail": "Keep TidGi's Mini Window always on top of other windows, and will not be covered by other windows", + "TidgiMiniWindowFixedWorkspace": "Select workspace for fixed TidGi Mini Window", + "TidgiMiniWindowShortcutKey": "Set shortcut key to toggle TidGi Mini Window", + "TidgiMiniWindowShortcutKeyHelperText": "Set a shortcut key to quickly open or close TidGi Mini Window", + "TidgiMiniWindowShortcutKeyPlaceholder": "e.g.: Ctrl+Shift+D", + "TidgiMiniWindowShowSidebar": "Attach To TidGi Mini Window Show Sidebar", + "TidgiMiniWindowShowSidebarTip": "Generally, TidGi mini window is only used to quickly view the current workspace, so the default synchronization with the main window workspace, do not need a sidebar, the default hidden sidebar.", + "TidgiMiniWindowShowTitleBar": "Show title bar on TidGi Mini Window", + "TidgiMiniWindowShowTitleBarDetail": "Show draggable title bar on TidGi Mini Window", + "TidgiMiniWindowSyncWorkspaceWithMainWindow": "TidGi Mini Window syncs with main window workspace", + "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "When checked, TidGi Mini Window will display the same workspace content as main window", + "TidgiMiniWindowTip": "Make a small TidGi popup window that pop when you click system tray mini icon. Tip: Right-click on mini app icon to access context menu.", + "ToggleMenuBar": "", "ToggleTidgiMiniWindow": "Toggle TidGi Mini Window", "Token": "Git credentials", "TokenDescription": "The credentials used to authenticate to the Git server so you can securely synchronize content. Can be obtained by logging in to storage services (e.g., Github), or manually obtain \"personal access token\" and filled in here.", diff --git a/localization/locales/fr/agent.json b/localization/locales/fr/agent.json index 6e58c30e..038d5d79 100644 --- a/localization/locales/fr/agent.json +++ b/localization/locales/fr/agent.json @@ -325,6 +325,18 @@ "TopP": "Paramètre d'échantillonnage Top P", "TopPTitle": "Top P" }, + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Position": { "Bottom": "Décaler quelques messages depuis le bas", "BottomTitle": "décalage du bas", @@ -454,6 +466,7 @@ "SourceTypeTitle": "type source", "Title": "Recherche Wiki", "Tool": { + "Description": "", "Parameters": { "filter": { "Description": "Expression de filtre TiddlyWiki", @@ -479,6 +492,27 @@ "Description": "Nom ou ID de l'espace de travail à rechercher", "Title": "Nom de l'espace de travail" } + }, + "UpdateEmbeddings": { + "Description": "", + "Parameters": { + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } + }, + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } } }, "ToolListPosition": { @@ -515,6 +549,18 @@ } }, "Tool": { + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Schema": { "Description": "décrire", "Examples": "Exemple d'utilisation", @@ -536,6 +582,10 @@ "WikiSearch": { "Error": { "ExecutionFailed": "Exécution de l'outil échouée : {{error}}", + "FilterSearchRequiresFilter": "", + "VectorSearchFailed": "", + "VectorSearchRequiresConfig": "", + "VectorSearchRequiresQuery": "", "WorkspaceNotExist": "L'espace de travail {{workspaceID}} n'existe pas", "WorkspaceNotFound": "Le nom ou l'ID de l'espace de travail \"{{workspaceName}}\" n'existe pas. Espaces de travail disponibles : {{availableWorkspaces}}" }, diff --git a/localization/locales/fr/translation.json b/localization/locales/fr/translation.json index eb751d72..91c5afe0 100644 --- a/localization/locales/fr/translation.json +++ b/localization/locales/fr/translation.json @@ -234,6 +234,14 @@ "Tags": { } }, + "KeyboardShortcut": { + "Clear": "", + "HelpText": "", + "None": "", + "PressKeys": "", + "PressKeysPrompt": "", + "RegisterShortcut": "" + }, "LOG": { "CommitBackupMessage": "Sauvegarde avec TidGi-Desktop\t", "CommitMessage": "Synchroniser avec TidGi-Desktop" @@ -309,6 +317,7 @@ "SelectNextWorkspace": "Sélectionner l'espace de travail suivant", "SelectPreviousWorkspace": "Sélectionner l'espace de travail précédent", "TidGi": "TidGi", + "TidGiMenuBar": "", "TidGiMiniWindow": "Mini-fenêtre TidGi", "View": "Vue", "Wiki": "Wiki", @@ -324,10 +333,10 @@ "AlwaysOnTopDetail": "Garder la fenêtre principale de TidGi toujours au-dessus des autres fenêtres, et ne sera pas couverte par d'autres fenêtres", "AntiAntiLeech": "Certains sites web ont une protection anti-leech, empêchant certaines images d'être affichées sur votre wiki, nous simulons un en-tête de requête qui ressemble à la visite de ce site web pour contourner cette protection.", "AskDownloadLocation": "Demander où enregistrer chaque fichier avant de télécharger", - "TidgiMiniWindow": "Attacher à la mini-fenêtre TidGi", - "TidgiMiniWindowShowSidebar": "Attacher à la mini-fenêtre TidGi Afficher la barre latérale", - "TidgiMiniWindowShowSidebarTip": "En général, la petite fenêtre TidGi est uniquement utilisée pour visualiser rapidement l'espace de travail actuel, donc la synchronisation avec l'espace de travail de la fenêtre principale n'est pas nécessaire, la barre latérale est masquée par défaut.", - "TidgiMiniWindowTip": "Créer une petite fenêtre contextuelle TidGi qui apparaît lorsque vous cliquez sur l'icône mini de la barre d'application. Astuce : Cliquez avec le bouton droit sur l'icône mini de l'application pour accéder au menu contextuel.", + "AttachToMenuBar": "", + "AttachToMenuBarShowSidebar": "", + "AttachToMenuBarShowSidebarTip": "", + "AttachToMenuBarTip": "", "AttachToTaskbar": "Attacher à la barre des tâches", "AttachToTaskbarShowSidebar": "Attacher à la barre des tâches Afficher la barre latérale", "ChooseLanguage": "Choisir la langue 选择语言", @@ -349,10 +358,12 @@ "General": "UI & Interact", "HibernateAllUnusedWorkspaces": "Mettre en veille les espaces de travail inutilisés au lancement de l'application", "HibernateAllUnusedWorkspacesDescription": "Mettre en veille tous les espaces de travail au lancement, sauf le dernier espace de travail actif.", - "HideTidgiMiniWindow": "Masquer la mini-fenêtre TidGi", - "HideTidgiMiniWindowDetail": "Masquer la mini-fenêtre TidGi sauf si Alt+M est pressé.", + "HideMenuBar": "", + "HideMenuBarDetail": "", "HideSideBar": "Masquer la barre latérale", "HideSideBarIconDetail": "Masquer l'icône et n'afficher que le nom de l'espace de travail pour rendre la liste des espaces de travail plus compacte", + "HideTidgiMiniWindow": "Masquer la mini-fenêtre TidGi", + "HideTidgiMiniWindowDetail": "Masquer la mini-fenêtre TidGi sauf si Alt+M est pressé.", "HideTitleBar": "Masquer la barre de titre", "HowToEnableNotifications": "<0>TidGi prend en charge les notifications dès la sortie de la boîte. Mais dans certains cas, pour recevoir des notifications, vous devrez configurer manuellement des paramètres supplémentaires de l'application web.<1>En savoir plus<2>.", "IgnoreCertificateErrors": "Ignorer les erreurs de certificat réseau", @@ -360,8 +371,7 @@ "ItIsWorking": "Ça fonctionne !", "Languages": "Lang/语言", "LightTheme": "Thème clair", - "TidgiMiniWindowAlwaysOnTop": "TidGi Mini Window toujours au-dessus", - "TidgiMiniWindowAlwaysOnTopDetail": "Garder la Mini Window de TidGi toujours au-dessus des autres fenêtres, et ne sera pas couverte par d'autres fenêtres", + "Logout": "Déconnexion", "Miscellaneous": "Divers", "MoreWorkspaceSyncSettings": "Plus de paramètres de synchronisation de l'espace de travail", "MoreWorkspaceSyncSettingsDescription": "Veuillez cliquer avec le bouton droit sur l'icône de l'espace de travail, ouvrir ses paramètres d'espace de travail en cliquant sur l'élément de menu contextuel \"Modifier l'espace de travail\", et configurer ses paramètres de synchronisation indépendants.", @@ -389,6 +399,7 @@ "RunOnBackground": "Exécuter en arrière-plan", "RunOnBackgroundDetail": "Lorsque la fenêtre est fermée, continuer à s'exécuter en arrière-plan sans quitter. Restaurer rapidement la fenêtre lors de la réouverture de l'application.", "RunOnBackgroundDetailNotMac": "Recommandé d'activer Attacher à la barre des tâches. Vous pouvez ainsi restaurer la fenêtre en l'utilisant.", + "SelectWorkspace": "", "ShareBrowsingData": "Partager les données de navigation (cookies, cache) entre les espaces de travail, si cette option est désactivée, vous pouvez vous connecter à différents services tiers dans chaque espace de travail.", "ShowSideBar": "Afficher la barre latérale", "ShowSideBarDetail": "La barre latérale vous permet de basculer facilement entre les espaces de travail.", @@ -414,6 +425,21 @@ "TestNotificationDescription": "<0>Si les notifications ne s'affichent pas, assurez-vous d'activer les notifications dans<1>Préférences macOS → Notifications → TidGi.", "Theme": "Thème", "TiddlyWiki": "TiddlyWiki", + "TidgiMiniWindow": "Attacher à la mini-fenêtre TidGi", + "TidgiMiniWindowAlwaysOnTop": "TidGi Mini Window toujours au-dessus", + "TidgiMiniWindowAlwaysOnTopDetail": "Garder la Mini Window de TidGi toujours au-dessus des autres fenêtres, et ne sera pas couverte par d'autres fenêtres", + "TidgiMiniWindowFixedWorkspace": "", + "TidgiMiniWindowShortcutKey": "", + "TidgiMiniWindowShortcutKeyHelperText": "", + "TidgiMiniWindowShortcutKeyPlaceholder": "", + "TidgiMiniWindowShowSidebar": "Attacher à la mini-fenêtre TidGi Afficher la barre latérale", + "TidgiMiniWindowShowSidebarTip": "En général, la petite fenêtre TidGi est uniquement utilisée pour visualiser rapidement l'espace de travail actuel, donc la synchronisation avec l'espace de travail de la fenêtre principale n'est pas nécessaire, la barre latérale est masquée par défaut.", + "TidgiMiniWindowShowTitleBar": "", + "TidgiMiniWindowShowTitleBarDetail": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindow": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "", + "TidgiMiniWindowTip": "Créer une petite fenêtre contextuelle TidGi qui apparaît lorsque vous cliquez sur l'icône mini de la barre d'application. Astuce : Cliquez avec le bouton droit sur l'icône mini de l'application pour accéder au menu contextuel.", + "ToggleMenuBar": "", "ToggleTidgiMiniWindow": "Basculer la mini-fenêtre TidGi", "Token": "Informations d'identification Git", "TokenDescription": "Les informations d'identification utilisées pour s'authentifier auprès du serveur Git afin de pouvoir synchroniser le contenu en toute sécurité. Peut être obtenu en se connectant à des services de stockage (par exemple, Github), ou en obtenant manuellement un \"jeton d'accès personnel\" et en le remplissant ici.", diff --git a/localization/locales/ja/agent.json b/localization/locales/ja/agent.json index a4a88dcd..155a08c5 100644 --- a/localization/locales/ja/agent.json +++ b/localization/locales/ja/agent.json @@ -326,6 +326,18 @@ "TopP": "Top P サンプリングパラメータ", "TopPTitle": "トップP" }, + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Position": { "Bottom": "下部から数件のメッセージをオフセット", "BottomTitle": "底部オフセット", @@ -455,6 +467,7 @@ "SourceTypeTitle": "ソースタイプ", "Title": "Wiki 検索", "Tool": { + "Description": "", "Parameters": { "filter": { "Description": "TiddlyWiki フィルター式", @@ -480,6 +493,27 @@ "Description": "検索するワークスペース名またはID", "Title": "ワークスペース名" } + }, + "UpdateEmbeddings": { + "Description": "", + "Parameters": { + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } + }, + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } } }, "ToolListPosition": { @@ -516,6 +550,18 @@ } }, "Tool": { + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Schema": { "Description": "説明", "Examples": "使用例", @@ -537,6 +583,10 @@ "WikiSearch": { "Error": { "ExecutionFailed": "ツールの実行に失敗しました:{{error}}", + "FilterSearchRequiresFilter": "", + "VectorSearchFailed": "", + "VectorSearchRequiresConfig": "", + "VectorSearchRequiresQuery": "", "WorkspaceNotExist": "ワークスペース{{workspaceID}}は存在しません", "WorkspaceNotFound": "ワークスペース名またはID「{{workspaceName}}」は存在しません。利用可能なワークスペース:{{availableWorkspaces}}" }, diff --git a/localization/locales/ja/translation.json b/localization/locales/ja/translation.json index 429e5a55..3b6ca321 100644 --- a/localization/locales/ja/translation.json +++ b/localization/locales/ja/translation.json @@ -234,6 +234,14 @@ "Tags": { } }, + "KeyboardShortcut": { + "Clear": "", + "HelpText": "", + "None": "", + "PressKeys": "", + "PressKeysPrompt": "", + "RegisterShortcut": "" + }, "LOG": { "CommitBackupMessage": "太記デスクトップ版を使用してバックアップ", "CommitMessage": "太記デスクトップ版を使用して同期する" @@ -310,6 +318,7 @@ "SelectPreviousWorkspace": "前のワークスペースを選択", "TidGi": "TidGi", "TidGiMenuBar": "TidGiメニューバー", + "TidGiMiniWindow": "", "View": "表示", "Wiki": "Wiki", "Window": "ウィンドウ", @@ -352,6 +361,8 @@ "HideMenuBarDetail": "Alt + M を押すと、非表示になっているメニューバーが表示されます。", "HideSideBar": "サイドバーを隠す", "HideSideBarIconDetail": "アイコンを非表示にしてワークスペース名のみを表示し、ワークスペースリストをよりコンパクトにします", + "HideTidgiMiniWindow": "", + "HideTidgiMiniWindowDetail": "", "HideTitleBar": "タイトルバーを隠す", "HowToEnableNotifications": "<0>TidGiはネイティブ通知機能をサポートしています。ただし、場合によっては通知を受け取るために、Webアプリの設定を手動で構成する必要があります。<1>詳細を見る<2>。", "IgnoreCertificateErrors": "ネットワーク証明書エラーを無視する", @@ -359,8 +370,7 @@ "ItIsWorking": "使いやすい!", "Languages": "言語/ランゲージ", "LightTheme": "明るい色のテーマ", - "TidgiMiniWindowAlwaysOnTop": "太記小ウィンドウを他のウィンドウの上に保持する", - "TidgiMiniWindowAlwaysOnTopDetail": "太記の小ウィンドウを常に他のウィンドウの上に表示させ、他のウィンドウで覆われないようにします。", + "Logout": "ログアウト", "Miscellaneous": "その他の設定", "MoreWorkspaceSyncSettings": "さらに多くのワークスペース同期設定", "MoreWorkspaceSyncSettingsDescription": "ワークスペースアイコンを右クリックし、右クリックメニューから「ワークスペースの編集」を選択して、ワークスペース設定を開いてください。そこで各ワークスペースの同期設定を行います。", @@ -388,6 +398,7 @@ "RunOnBackground": "バックグラウンドで実行を維持する", "RunOnBackgroundDetail": "ウィンドウを閉じても終了せず、バックグラウンドで動作を継続します。再度アプリを開くと、すばやくウィンドウが復元されます。", "RunOnBackgroundDetailNotMac": "太記の小窓を開くことをお勧めします。これにより、メニューバー/タスクバーのアイコンからウィンドウを再び開くことができます。", + "SelectWorkspace": "", "ShareBrowsingData": "ワークスペース間でブラウザデータ(クッキー、キャッシュなど)を共有し、閉じた後は各ワークスペースで異なるサードパーティサービスのアカウントにログインできます。", "ShowSideBar": "サイドバーを表示", "ShowSideBarDetail": "サイドバーを使用すると、ワークスペース間を素早く切り替えることができます。", @@ -413,7 +424,22 @@ "TestNotificationDescription": "<0>通知が表示されない場合は、<1>macOSの環境設定 → 通知 → TidGiで通知が有効になっていることを確認してください", "Theme": "テーマカラー", "TiddlyWiki": "太微(TiddlyWiki)", + "TidgiMiniWindow": "", + "TidgiMiniWindowAlwaysOnTop": "太記小ウィンドウを他のウィンドウの上に保持する", + "TidgiMiniWindowAlwaysOnTopDetail": "太記の小ウィンドウを常に他のウィンドウの上に表示させ、他のウィンドウで覆われないようにします。", + "TidgiMiniWindowFixedWorkspace": "", + "TidgiMiniWindowShortcutKey": "", + "TidgiMiniWindowShortcutKeyHelperText": "", + "TidgiMiniWindowShortcutKeyPlaceholder": "", + "TidgiMiniWindowShowSidebar": "", + "TidgiMiniWindowShowSidebarTip": "", + "TidgiMiniWindowShowTitleBar": "", + "TidgiMiniWindowShowTitleBarDetail": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindow": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "", + "TidgiMiniWindowTip": "", "ToggleMenuBar": "メニューバーの表示/非表示を切り替える", + "ToggleTidgiMiniWindow": "", "Token": "Git認証情報", "TokenDescription": "Gitサーバーへの認証とコンテンツ同期に使用する認証情報は、Githubなどのオンラインストレージサービスにログインして取得するか、「Personal Access Token」を手動で取得し、ここに入力することができます。", "Translatium": "翻訳素APP", diff --git a/localization/locales/ru/agent.json b/localization/locales/ru/agent.json index 5ced91ae..1abd2d9e 100644 --- a/localization/locales/ru/agent.json +++ b/localization/locales/ru/agent.json @@ -326,6 +326,18 @@ "TopP": "Параметр выборки Top P", "TopPTitle": "Топ P" }, + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Position": { "Bottom": "смещение нескольких сообщений снизу", "BottomTitle": "смещение дна", @@ -455,6 +467,7 @@ "SourceTypeTitle": "тип источника", "Title": "Поиск в Вики", "Tool": { + "Description": "", "Parameters": { "filter": { "Description": "TiddlyWiki выражения фильтров", @@ -480,6 +493,27 @@ "Description": "Имя или идентификатор рабочей области для поиска", "Title": "название рабочего пространства" } + }, + "UpdateEmbeddings": { + "Description": "", + "Parameters": { + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } + }, + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" + } } }, "ToolListPosition": { @@ -516,6 +550,18 @@ } }, "Tool": { + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Schema": { "Description": "описание", "Examples": "пример использования", @@ -537,6 +583,10 @@ "WikiSearch": { "Error": { "ExecutionFailed": "Выполнение инструмента завершилось неудачей: {{error}}", + "FilterSearchRequiresFilter": "", + "VectorSearchFailed": "", + "VectorSearchRequiresConfig": "", + "VectorSearchRequiresQuery": "", "WorkspaceNotExist": "Рабочее пространство {{workspaceID}} не существует", "WorkspaceNotFound": "Название или идентификатор рабочего пространства \"{{workspaceName}}\" не существует. Доступные рабочие пространства: {{availableWorkspaces}}" }, diff --git a/localization/locales/ru/translation.json b/localization/locales/ru/translation.json index b51e3d6d..91c81e5a 100644 --- a/localization/locales/ru/translation.json +++ b/localization/locales/ru/translation.json @@ -234,6 +234,14 @@ "Tags": { } }, + "KeyboardShortcut": { + "Clear": "", + "HelpText": "", + "None": "", + "PressKeys": "", + "PressKeysPrompt": "", + "RegisterShortcut": "" + }, "LOG": { "CommitBackupMessage": "Использование TaiJi Desktop для резервного копирования", "CommitMessage": "Синхронизация с использованием TaiJi Desktop версии." @@ -309,6 +317,7 @@ "SelectNextWorkspace": "Выбрать следующее рабочее пространство", "SelectPreviousWorkspace": "Выбрать предыдущее рабочее пространство", "TidGi": "TidGi", + "TidGiMenuBar": "", "TidGiMiniWindow": "Мини-окно TidGi", "View": "Просмотр", "Wiki": "Wiki", @@ -352,6 +361,8 @@ "HideMenuBarDetail": "Скрыть детали меню", "HideSideBar": "Скрыть боковую панель", "HideSideBarIconDetail": "Скрыть детали иконки боковой панели", + "HideTidgiMiniWindow": "", + "HideTidgiMiniWindowDetail": "", "HideTitleBar": "Скрыть заголовок", "HowToEnableNotifications": "<0>TidGi поддерживает уведомления из коробки. Но в некоторых случаях, чтобы получать уведомления, вам нужно вручную настроить дополнительные параметры веб-приложения.<1>Узнать больше<2>.", "IgnoreCertificateErrors": "Игнорировать ошибки сертификатов", @@ -359,8 +370,7 @@ "ItIsWorking": "Работает!", "Languages": "Языки", "LightTheme": "Светлая тема", - "TidgiMiniWindowAlwaysOnTop": "TidGi мини-окно всегда сверху", - "TidgiMiniWindowAlwaysOnTopDetail": "Держать мини-окно TidGi всегда поверх других окон", + "Logout": "Выйти", "Miscellaneous": "Разное", "MoreWorkspaceSyncSettings": "Дополнительные настройки синхронизации рабочего пространства", "MoreWorkspaceSyncSettingsDescription": "Описание дополнительных настроек синхронизации рабочего пространства", @@ -388,6 +398,7 @@ "RunOnBackground": "Запуск в фоновом режиме", "RunOnBackgroundDetail": "Детали запуска в фоновом режиме", "RunOnBackgroundDetailNotMac": "Детали запуска в фоновом режиме (не для Mac)", + "SelectWorkspace": "", "ShareBrowsingData": "Делиться данными браузера", "ShowSideBar": "Показать боковую панель", "ShowSideBarDetail": "Показать детали боковой панели", @@ -413,7 +424,22 @@ "TestNotificationDescription": "<0>Если уведомление не отображается, убедитесь, что уведомления включены в <1>настройках macOS → Уведомления → TidGi", "Theme": "Тема", "TiddlyWiki": "TiddlyWiki", + "TidgiMiniWindow": "", + "TidgiMiniWindowAlwaysOnTop": "TidGi мини-окно всегда сверху", + "TidgiMiniWindowAlwaysOnTopDetail": "Держать мини-окно TidGi всегда поверх других окон", + "TidgiMiniWindowFixedWorkspace": "", + "TidgiMiniWindowShortcutKey": "", + "TidgiMiniWindowShortcutKeyHelperText": "", + "TidgiMiniWindowShortcutKeyPlaceholder": "", + "TidgiMiniWindowShowSidebar": "", + "TidgiMiniWindowShowSidebarTip": "", + "TidgiMiniWindowShowTitleBar": "", + "TidgiMiniWindowShowTitleBarDetail": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindow": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "", + "TidgiMiniWindowTip": "", "ToggleMenuBar": "Переключить меню", + "ToggleTidgiMiniWindow": "", "Token": "Токен", "TokenDescription": "Описание токена", "Translatium": "Translatium", diff --git a/localization/locales/zh-Hans/translation.json b/localization/locales/zh-Hans/translation.json index 830f8dad..2063128f 100644 --- a/localization/locales/zh-Hans/translation.json +++ b/localization/locales/zh-Hans/translation.json @@ -23,6 +23,15 @@ "GitRepoUrl": "Git仓库线上网址", "GitTokenDescription": "用于登录Git的凭证,一定时间后会过期", "GitUserNameDescription": "用于登录Git的账户名,注意是你的仓库网址中你的名字部分", + "CustomServerUrl": "自定义服务器地址", + "CustomServerUrlDescription": "OAuth 服务器的基础 URL(例如:http://127.0.0.1:8888)", + "CustomClientId": "客户端 ID", + "CustomClientIdDescription": "OAuth 应用的客户端 ID", + "GitToken": "Git 凭证", + "GitUserName": "Git 用户名", + "GitEmail": "Git 邮箱", + "GitBranch": "Git 分支", + "GitBranchDescription": "要使用的 Git 分支(默认:main)", "ImportWiki": "导入知识库: ", "LocalWikiHtml": "HTML文件的路径", "LocalWorkspace": "本地知识库", @@ -317,6 +326,7 @@ "SelectNextWorkspace": "选择下一个工作区", "SelectPreviousWorkspace": "选择前一个工作区", "TidGi": "太记", + "TidGiMenuBar": "", "TidGiMiniWindow": "太记小窗", "View": "查看", "Wiki": "知识库", @@ -332,10 +342,10 @@ "AlwaysOnTopDetail": "让太记的主窗口永远保持在其它窗口上方,不会被其他窗口覆盖", "AntiAntiLeech": "有的网站做了防盗链,会阻止某些图片在你的知识库上显示,我们通过模拟访问该网站的请求头来绕过这种限制。", "AskDownloadLocation": "下载前询问每个文件的保存位置", - "TidgiMiniWindow": "附加到太记小窗", - "TidgiMiniWindowShowSidebar": "太记小窗包含侧边栏", - "TidgiMiniWindowShowSidebarTip": "一般太记小窗仅用于快速查看当前工作区,所以默认与主窗口工作区同步,不需要侧边栏,默认隐藏侧边栏。", - "TidgiMiniWindowTip": "创建一个点击系统托盘图标会弹出的小太记窗口。提示:右键单击小图标以访问上下文菜单。", + "AttachToMenuBar": "", + "AttachToMenuBarShowSidebar": "", + "AttachToMenuBarShowSidebarTip": "", + "AttachToMenuBarTip": "", "AttachToTaskbar": "附加到任务栏", "AttachToTaskbarShowSidebar": "附加到任务栏的窗口包含侧边栏", "ChooseLanguage": "选择语言 Choose Language", @@ -364,6 +374,8 @@ "HideMenuBarDetail": "按下 Alt + M 可以显示被隐藏的菜单栏", "HideSideBar": "隐藏侧边栏", "HideSideBarIconDetail": "隐藏图标只显示工作区的名字,让工作区列表更紧凑", + "HideTidgiMiniWindow": "", + "HideTidgiMiniWindowDetail": "", "HideTitleBar": "隐藏标题栏", "HowToEnableNotifications": "<0>TidGi支持原生通知功能。但在某些情况下,要接收通知,您需要手动配置一些Web应用设置。<1>了解详情<2>。", "IgnoreCertificateErrors": "忽略网络证书错误", @@ -371,16 +383,7 @@ "ItIsWorking": "好使的!", "Languages": "语言/Lang", "LightTheme": "亮色主题", - "TidgiMiniWindowAlwaysOnTop": "保持太记小窗口在其他窗口上方", - "TidgiMiniWindowAlwaysOnTopDetail": "让太记的小窗口永远保持在其它窗口上方,不会被其他窗口覆盖", - "TidgiMiniWindowFixedWorkspace": "为固定的太记小窗口选择工作区", - "TidgiMiniWindowShortcutKey": "设置快捷键来切换太记小窗口", - "TidgiMiniWindowShortcutKeyHelperText": "设置一个快捷键来快速打开或关闭太记小窗口", - "TidgiMiniWindowShortcutKeyPlaceholder": "例如:Ctrl+Shift+D", - "TidgiMiniWindowSyncWorkspaceWithMainWindow": "小窗和主窗口展示同样的工作区", - "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "勾选后,小窗将与主窗口同步显示相同的工作区内容", - "TidgiMiniWindowShowTitleBar": "小窗显示标题栏", - "TidgiMiniWindowShowTitleBarDetail": "在太记小窗口上显示可拖动的标题栏", + "Logout": "登出", "Miscellaneous": "其他设置", "MoreWorkspaceSyncSettings": "更多工作区同步设置", "MoreWorkspaceSyncSettingsDescription": "请右键工作区图标,点右键菜单里的「编辑工作区」来打开工作区设置,在里面配各个工作区的同步设置。", @@ -448,6 +451,21 @@ "TestNotificationDescription": "<0>如果通知未显示,请确保在<1>macOS首选项 → 通知 → TidGi中启用通知", "Theme": "主题色", "TiddlyWiki": "太微", + "TidgiMiniWindow": "附加到太记小窗", + "TidgiMiniWindowAlwaysOnTop": "保持太记小窗口在其他窗口上方", + "TidgiMiniWindowAlwaysOnTopDetail": "让太记的小窗口永远保持在其它窗口上方,不会被其他窗口覆盖", + "TidgiMiniWindowFixedWorkspace": "为固定的太记小窗口选择工作区", + "TidgiMiniWindowShortcutKey": "设置快捷键来切换太记小窗口", + "TidgiMiniWindowShortcutKeyHelperText": "设置一个快捷键来快速打开或关闭太记小窗口", + "TidgiMiniWindowShortcutKeyPlaceholder": "例如:Ctrl+Shift+D", + "TidgiMiniWindowShowSidebar": "太记小窗包含侧边栏", + "TidgiMiniWindowShowSidebarTip": "一般太记小窗仅用于快速查看当前工作区,所以默认与主窗口工作区同步,不需要侧边栏,默认隐藏侧边栏。", + "TidgiMiniWindowShowTitleBar": "小窗显示标题栏", + "TidgiMiniWindowShowTitleBarDetail": "在太记小窗口上显示可拖动的标题栏", + "TidgiMiniWindowSyncWorkspaceWithMainWindow": "小窗和主窗口展示同样的工作区", + "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "勾选后,小窗将与主窗口同步显示相同的工作区内容", + "TidgiMiniWindowTip": "创建一个点击系统托盘图标会弹出的小太记窗口。提示:右键单击小图标以访问上下文菜单。", + "ToggleMenuBar": "", "ToggleTidgiMiniWindow": "切换太记小窗", "Token": "Git身份凭证", "TokenDescription": "用于向Git服务器验证身份并同步内容的凭证,可通过登录在线存储服务(如Github)来取得,也可以手动获取「Personal Access Token」后填到这里。", @@ -471,6 +489,7 @@ "UpdateAvailable": "有新版本!" }, "Unknown": "未知", + "Update": "", "Updater": { "CheckUpdate": "检查更新", "CheckingFailed": "检查更新失败(网络错误)", diff --git a/localization/locales/zh-Hant/agent.json b/localization/locales/zh-Hant/agent.json index 4b4d0002..2b853710 100644 --- a/localization/locales/zh-Hant/agent.json +++ b/localization/locales/zh-Hant/agent.json @@ -313,6 +313,18 @@ "TopP": "Top P 採樣參數", "TopPTitle": "Top P" }, + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Position": { "Bottom": "自底部偏移幾條消息", "BottomTitle": "底部偏移", @@ -442,6 +454,7 @@ "SourceTypeTitle": "源類型", "Title": "Wiki 搜索", "Tool": { + "Description": "", "Parameters": { "filter": { "Description": "TiddlyWiki 篩選器表達式", @@ -469,11 +482,24 @@ } }, "UpdateEmbeddings": { + "Description": "", "Parameters": { "forceUpdate": { + "Description": "", + "Title": "" }, "workspaceName": { + "Description": "", + "Title": "" } + }, + "forceUpdate": { + "Description": "", + "Title": "" + }, + "workspaceName": { + "Description": "", + "Title": "" } } }, @@ -511,6 +537,18 @@ } }, "Tool": { + "Plugin": { + "Caption": "", + "CaptionTitle": "", + "Content": "", + "ContentTitle": "", + "ForbidOverrides": "", + "ForbidOverridesTitle": "", + "Id": "", + "IdTitle": "", + "PluginId": "", + "PluginIdTitle": "" + }, "Schema": { "Description": "描述", "Examples": "使用範例", @@ -532,6 +570,10 @@ "WikiSearch": { "Error": { "ExecutionFailed": "工具執行失敗:{{error}}", + "FilterSearchRequiresFilter": "", + "VectorSearchFailed": "", + "VectorSearchRequiresConfig": "", + "VectorSearchRequiresQuery": "", "WorkspaceNotExist": "工作區{{workspaceID}}不存在", "WorkspaceNotFound": "工作區名稱或ID\"{{workspaceName}}\"不存在。可用工作區:{{availableWorkspaces}}" }, diff --git a/localization/locales/zh-Hant/translation.json b/localization/locales/zh-Hant/translation.json index ab92283f..6d420813 100644 --- a/localization/locales/zh-Hant/translation.json +++ b/localization/locales/zh-Hant/translation.json @@ -234,6 +234,14 @@ "Tags": { } }, + "KeyboardShortcut": { + "Clear": "", + "HelpText": "", + "None": "", + "PressKeys": "", + "PressKeysPrompt": "", + "RegisterShortcut": "" + }, "LOG": { "CommitBackupMessage": "使用太記桌面版備份", "CommitMessage": "使用太記桌面版同步" @@ -309,6 +317,7 @@ "SelectNextWorkspace": "選擇下一個工作區", "SelectPreviousWorkspace": "選擇前一個工作區", "TidGi": "太記", + "TidGiMenuBar": "", "TidGiMiniWindow": "太記小窗", "View": "查看", "Wiki": "知識庫", @@ -324,10 +333,10 @@ "AlwaysOnTopDetail": "讓太記的主窗口永遠保持在其它窗口上方,不會被其他窗口覆蓋", "AntiAntiLeech": "有的網站做了防盜鏈,會阻止某些圖片在你的知識庫上顯示,我們透過模擬訪問該網站的請求頭來繞過這種限制。", "AskDownloadLocation": "下載前詢問每個文件的保存位置", - "TidgiMiniWindow": "附加到太記小窗", - "TidgiMiniWindowShowSidebar": "太記小窗包含側邊欄", - "TidgiMiniWindowShowSidebarTip": "一般太記小窗僅用於快速查看當前工作區,所以默認與主窗口工作區同步,不需要側邊欄,默認隱藏側邊欄。", - "TidgiMiniWindowTip": "創建一個點擊系統托盤圖示會彈出的小太記窗口。提示:右鍵單擊小圖示以訪問上下文菜單。", + "AttachToMenuBar": "", + "AttachToMenuBarShowSidebar": "", + "AttachToMenuBarShowSidebarTip": "", + "AttachToMenuBarTip": "", "AttachToTaskbar": "附加到任務欄", "AttachToTaskbarShowSidebar": "附加到任務欄的窗口包含側邊欄", "ChooseLanguage": "選擇語言 Choose Language", @@ -356,6 +365,8 @@ "HideMenuBarDetail": "按下 Alt + M 可以顯示被隱藏的選單欄", "HideSideBar": "隱藏側邊欄", "HideSideBarIconDetail": "隱藏圖示只顯示工作區的名字,讓工作區列表更緊湊", + "HideTidgiMiniWindow": "", + "HideTidgiMiniWindowDetail": "", "HideTitleBar": "隱藏標題欄", "HowToEnableNotifications": "<0>TidGi支持原生通知功能。但在某些情況下,要接收通知,您需要手動配置一些Web應用設定。<1>了解詳情<2>。", "IgnoreCertificateErrors": "忽略網路證書錯誤", @@ -363,8 +374,7 @@ "ItIsWorking": "好使的!", "Languages": "語言/Lang", "LightTheme": "亮色主題", - "TidgiMiniWindowAlwaysOnTop": "保持太記小窗口在其他窗口上方", - "TidgiMiniWindowAlwaysOnTopDetail": "讓太記的小窗口永遠保持在其它窗口上方,不會被其他窗口覆蓋", + "Logout": "登出", "Miscellaneous": "其他設置", "MoreWorkspaceSyncSettings": "更多工作區同步設定", "MoreWorkspaceSyncSettingsDescription": "請右鍵工作區圖示,點右鍵菜單裡的「編輯工作區」來打開工作區設置,在裡面配各個工作區的同步設定。", @@ -406,6 +416,7 @@ "SearchEmbeddingStatusIdle": "未生成嵌入", "SearchEmbeddingUpdate": "更新嵌入", "SearchNoWorkspaces": "未找到工作區", + "SelectWorkspace": "", "ShareBrowsingData": "在工作區之間共享瀏覽器數據(cookies、快取等),關閉後可以每個工作區登不同的第三方服務帳號。", "ShowSideBar": "顯示側邊欄", "ShowSideBarDetail": "側邊欄讓你可以在工作區之間快速切換", @@ -431,6 +442,21 @@ "TestNotificationDescription": "<0>如果通知未顯示,請確保在<1>macOS首選項 → 通知 → TidGi中啟用通知", "Theme": "主題色", "TiddlyWiki": "太微", + "TidgiMiniWindow": "附加到太記小窗", + "TidgiMiniWindowAlwaysOnTop": "保持太記小窗口在其他窗口上方", + "TidgiMiniWindowAlwaysOnTopDetail": "讓太記的小窗口永遠保持在其它窗口上方,不會被其他窗口覆蓋", + "TidgiMiniWindowFixedWorkspace": "", + "TidgiMiniWindowShortcutKey": "", + "TidgiMiniWindowShortcutKeyHelperText": "", + "TidgiMiniWindowShortcutKeyPlaceholder": "", + "TidgiMiniWindowShowSidebar": "太記小窗包含側邊欄", + "TidgiMiniWindowShowSidebarTip": "一般太記小窗僅用於快速查看當前工作區,所以默認與主窗口工作區同步,不需要側邊欄,默認隱藏側邊欄。", + "TidgiMiniWindowShowTitleBar": "", + "TidgiMiniWindowShowTitleBarDetail": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindow": "", + "TidgiMiniWindowSyncWorkspaceWithMainWindowDetail": "", + "TidgiMiniWindowTip": "創建一個點擊系統托盤圖示會彈出的小太記窗口。提示:右鍵單擊小圖示以訪問上下文菜單。", + "ToggleMenuBar": "", "ToggleTidgiMiniWindow": "切換太記小窗", "Token": "Git身份憑證", "TokenDescription": "用於向Git伺服器驗證身份並同步內容的憑證,可透過登錄在線儲存服務(如Github)來取得,也可以手動獲取「Personal Access Token」後填到這裡。", diff --git a/package.json b/package.json index e6756835..dfbd2b3a 100644 --- a/package.json +++ b/package.json @@ -6,20 +6,19 @@ "license": "MPL 2.0", "packageManager": "pnpm@10.18.2", "scripts": { - "start:init": "pnpm run clean && pnpm run init:git-submodule && pnpm run build:plugin && cross-env NODE_ENV=development pnpm dlx tsx scripts/developmentMkdir.ts && pnpm run start:dev", + "start:init": "pnpm run clean && pnpm run init:git-submodule && pnpm run build:plugin && cross-env NODE_ENV=development tsx scripts/developmentMkdir.ts && pnpm run start:dev", "start:dev": "cross-env NODE_ENV=development electron-forge start", - "clean": "rimraf -- ./out ./logs ./userData-dev ./userData-test ./wiki-dev ./wiki-test ./node_modules/tiddlywiki/plugins/linonetwo && pnpm run clean:cache", - "clean:cache": "rimraf -- ./.vite ./node_modules/.cache", + "clean": "rimraf -- ./out ./logs ./userData-dev ./userData-test ./wiki-dev ./wiki-test ./node_modules/tiddlywiki/plugins/linonetwo", "start:dev:debug-worker": "cross-env NODE_ENV=development DEBUG_WORKER=true electron-forge start", "start:dev:debug-main": "cross-env NODE_ENV=development DEBUG_MAIN=true electron-forge start", "start:dev:debug-vite": "cross-env NODE_ENV=development DEBUG=electron-forge:* electron-forge start", "start:dev:debug-react": "cross-env NODE_ENV=development DEBUG_REACT=true electron-forge start", "build:plugin": "zx scripts/compilePlugins.mjs", "test": "pnpm run test:unit && pnpm run test:prepare-e2e && pnpm run test:e2e", - "test:unit": "cross-env ELECTRON_RUN_AS_NODE=1 ./node_modules/.bin/electron ./node_modules/vitest/vitest.mjs run", + "test:unit": "cross-env ELECTRON_RUN_AS_NODE=1 ./node_modules/.bin/electron --max-old-space-size=8192 ./node_modules/vitest/vitest.mjs run", "test:unit:coverage": "pnpm run test:unit --coverage", "test:prepare-e2e": "cross-env READ_DOC_BEFORE_USING='docs/Testing.md' && pnpm run clean && pnpm run build:plugin && cross-env NODE_ENV=test DEBUG=electron-forge:* electron-forge package", - "test:e2e": "rimraf -- ./userData-test ./wiki-test && cross-env NODE_ENV=test pnpm dlx tsx scripts/developmentMkdir.ts && cross-env NODE_ENV=test cucumber-js --config features/cucumber.config.js", + "test:e2e": "rimraf -- ./userData-test ./wiki-test && cross-env NODE_ENV=test tsx scripts/developmentMkdir.ts && cross-env NODE_ENV=test cucumber-js --config features/cucumber.config.js", "make": "pnpm run build:plugin && cross-env NODE_ENV=production electron-forge make", "make:analyze": "cross-env ANALYZE=true pnpm run make", "init:git-submodule": "git submodule update --init --recursive && git submodule update --remote", @@ -32,34 +31,34 @@ "author": "Lin Onetwo , Quang Lam ", "main": ".vite/build/main.js", "dependencies": { - "@ai-sdk/anthropic": "^1.2.11", - "@ai-sdk/deepseek": "^0.2.14", - "@ai-sdk/openai": "^1.3.22", - "@ai-sdk/openai-compatible": "^0.2.14", - "@algolia/autocomplete-js": "^1.19.1", - "@algolia/autocomplete-theme-classic": "^1.19.1", + "@ai-sdk/anthropic": "^2.0.35", + "@ai-sdk/deepseek": "^1.0.23", + "@ai-sdk/openai": "^2.0.53", + "@ai-sdk/openai-compatible": "^1.0.22", + "@algolia/autocomplete-js": "^1.19.4", + "@algolia/autocomplete-theme-classic": "^1.19.4", "@dnd-kit/core": "6.3.1", "@dnd-kit/modifiers": "9.0.0", "@dnd-kit/sortable": "10.0.0", "@dnd-kit/utilities": "3.2.2", - "@dr.pogodin/react-helmet": "^3.0.2", - "@fontsource/roboto": "^5.1.1", + "@dr.pogodin/react-helmet": "^3.0.4", + "@fontsource/roboto": "^5.2.8", "@monaco-editor/react": "^4.7.0", - "@mui/icons-material": "^7.1.1", - "@mui/material": "^7.1.1", - "@mui/system": "^7.1.1", - "@mui/types": "^7.4.3", - "@mui/x-date-pickers": "^8.4.0", + "@mui/icons-material": "^7.3.4", + "@mui/material": "^7.3.4", + "@mui/system": "^7.3.3", + "@mui/types": "^7.4.7", + "@mui/x-date-pickers": "^8.14.1", "@rjsf/core": "6.0.0-beta.8", "@rjsf/mui": "6.0.0-beta.10", "@rjsf/utils": "6.0.0-beta.10", "@rjsf/validator-ajv8": "6.0.0-beta.8", - "ai": "^4.3.15", + "ai": "^5.0.76", "ansi-to-html": "^0.7.2", "app-path": "^4.0.0", "beautiful-react-hooks": "5.0.3", - "best-effort-json-parser": "1.1.3", - "better-sqlite3": "^11.9.1", + "best-effort-json-parser": "1.2.1", + "better-sqlite3": "^12.4.1", "bluebird": "3.7.2", "date-fns": "3.6.0", "default-gateway": "6.0.3", @@ -69,58 +68,59 @@ "electron-settings": "5.0.0", "electron-unhandled": "4.0.1", "electron-window-state": "5.0.3", - "espree": "^10.3.0", - "exponential-backoff": "^3.1.1", - "fs-extra": "11.3.0", + "espree": "^10.4.0", + "exponential-backoff": "^3.1.3", + "fs-extra": "11.3.2", "git-sync-js": "^2.0.5", "graphql-hooks": "8.2.0", "html-minifier-terser": "^7.2.0", - "i18next": "25.2.1", + "i18next": "25.6.0", "i18next-electron-fs-backend": "3.0.3", "i18next-fs-backend": "2.6.0", - "immer": "^10.1.1", + "immer": "^10.1.3", "intercept-stdout": "0.1.2", - "inversify": "6.2.1", + "inversify": "7.10.3", "ipaddr.js": "2.2.0", "jimp": "1.6.0", "json5": "^2.2.3", "lodash": "4.17.21", "material-ui-popup-state": "^5.3.6", - "menubar": "9.5.1", - "monaco-editor": "^0.52.2", - "nanoid": "^5.0.9", - "new-github-issue-url": "^1.0.0", + "menubar": "9.5.2", + "monaco-editor": "^0.54.0", + "nanoid": "^5.1.6", + "new-github-issue-url": "^1.1.0", "node-fetch": "3.3.2", - "ollama-ai-provider": "^1.2.0", - "react": "19.0.0", - "react-dom": "19.0.0", - "react-i18next": "15.5.2", + "oidc-client-ts": "^3.3.0", + "ollama-ai-provider-v2": "^1.5.1", + "react": "19.2.0", + "react-dom": "19.2.0", + "react-i18next": "16.1.3", "react-masonry-css": "^1.0.16", - "react-window": "^1.8.11", + "react-window": "^2.2.1", "reflect-metadata": "0.2.2", "registry-js": "1.16.1", - "rotating-file-stream": "^3.2.5", + "rotating-file-stream": "^3.2.7", "rxjs": "7.8.2", - "semver": "7.7.2", + "semver": "7.7.3", "serialize-error": "^12.0.0", - "simplebar": "6.3.1", - "simplebar-react": "3.3.0", + "simplebar": "6.3.2", + "simplebar-react": "3.3.2", "source-map-support": "0.5.21", "sqlite-vec": "0.1.7-alpha.2", - "strip-ansi": "^7.1.0", - "tapable": "^2.2.2", - "tiddlywiki": "5.3.7", - "type-fest": "4.41.0", - "typeorm": "^0.3.22", + "strip-ansi": "^7.1.2", + "tapable": "^2.3.0", + "tiddlywiki": "5.3.8", + "type-fest": "5.1.0", + "typeorm": "^0.3.27", "typescript-styled-is": "^2.1.0", "v8-compile-cache-lib": "^3.0.1", - "winston": "3.17.0", + "winston": "3.18.3", "winston-daily-rotate-file": "5.0.0", "winston-transport": "4.9.0", "wouter": "^3.7.1", - "zod": "^3.25.28", - "zustand": "^5.0.4", - "zx": "8.5.5" + "zod": "^4.1.12", + "zustand": "^5.0.8", + "zx": "8.8.5" }, "optionalDependencies": { "@electron-forge/maker-deb": "7.10.2", @@ -132,54 +132,55 @@ "@reforged/maker-appimage": "5.1.0" }, "devDependencies": { - "@cucumber/cucumber": "^11.2.0", + "@cucumber/cucumber": "^12.2.0", "@electron-forge/cli": "7.10.2", "@electron-forge/plugin-auto-unpack-natives": "7.10.2", "@electron-forge/plugin-vite": "7.10.2", "@electron/rebuild": "^4.0.1", "@fetsorn/vite-node-worker": "^1.0.1", - "@testing-library/jest-dom": "^6.6.3", + "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/better-sqlite3": "^7.6.13", "@types/bluebird": "3.5.42", - "@types/chai": "5.0.1", + "@types/chai": "5.2.3", "@types/fs-extra": "11.0.4", "@types/html-minifier-terser": "^7.0.2", - "@types/i18next-fs-backend": "1.1.5", - "@types/intercept-stdout": "0.1.3", - "@types/lodash": "4.17.15", - "@types/node": "22.13.0", - "@types/react": "19.0.8", - "@types/react-dom": "19.0.3", + "@types/intercept-stdout": "0.1.4", + "@types/lodash": "4.17.20", + "@types/node": "24.9.1", + "@types/react": "19.2.2", + "@types/react-dom": "19.2.2", "@types/react-jsonschema-form": "^1.7.13", - "@types/semver": "7.5.8", + "@types/semver": "7.7.1", "@types/source-map-support": "0.5.10", "@vitejs/plugin-react": "^5.0.4", - "@vitest/coverage-v8": "^3.2.3", - "@vitest/ui": "^3.2.3", - "chai": "5.1.2", - "cross-env": "7.0.3", - "dprint": "^0.50.0", - "electron": "36.4.0", - "electron-chrome-web-store": "^0.12.0", - "esbuild": "^0.25.2", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/ui": "^3.2.4", + "chai": "6.2.0", + "cross-env": "10.1.0", + "dprint": "^0.50.2", + "electron": "38.3.0", + "electron-chrome-web-store": "^0.13.0", + "esbuild": "^0.25.11", "eslint-config-tidgi": "^2.2.0", "identity-obj-proxy": "^3.0.0", - "jsdom": "^26.1.0", + "jsdom": "^27.0.1", "memory-fs": "^0.5.0", "node-loader": "2.1.0", + "oauth2-mock-server": "^8.1.0", "path-browserify": "^1.0.1", - "playwright": "^1.53.0", + "playwright": "^1.56.1", "rimraf": "^6.0.1", "ts-node": "10.9.2", + "tsx": "^4.20.6", "tw5-typed": "^0.6.3", - "typescript": "5.8.3", + "typescript": "5.9.3", "typesync": "0.14.3", - "unplugin-swc": "^1.5.5", - "vite": "^7.1.9", + "unplugin-swc": "^1.5.8", + "vite": "^7.1.11", "vite-bundle-analyzer": "^1.2.3", - "vitest": "^3.2.3" + "vitest": "^3.2.4" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81dd762a..c67f3678 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,74 +14,74 @@ importers: .: dependencies: '@ai-sdk/anthropic': - specifier: ^1.2.11 - version: 1.2.11(zod@3.25.28) + specifier: ^2.0.35 + version: 2.0.35(zod@4.1.12) '@ai-sdk/deepseek': - specifier: ^0.2.14 - version: 0.2.14(zod@3.25.28) + specifier: ^1.0.23 + version: 1.0.23(zod@4.1.12) '@ai-sdk/openai': - specifier: ^1.3.22 - version: 1.3.22(zod@3.25.28) + specifier: ^2.0.53 + version: 2.0.53(zod@4.1.12) '@ai-sdk/openai-compatible': - specifier: ^0.2.14 - version: 0.2.14(zod@3.25.28) + specifier: ^1.0.22 + version: 1.0.22(zod@4.1.12) '@algolia/autocomplete-js': - specifier: ^1.19.1 - version: 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3) + specifier: ^1.19.4 + version: 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3) '@algolia/autocomplete-theme-classic': - specifier: ^1.19.1 - version: 1.19.1 + specifier: ^1.19.4 + version: 1.19.4 '@dnd-kit/core': specifier: 6.3.1 - version: 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@dnd-kit/modifiers': specifier: 9.0.0 - version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) '@dnd-kit/sortable': specifier: 10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) '@dnd-kit/utilities': specifier: 3.2.2 - version: 3.2.2(react@19.0.0) + version: 3.2.2(react@19.2.0) '@dr.pogodin/react-helmet': - specifier: ^3.0.2 - version: 3.0.2(react@19.0.0) + specifier: ^3.0.4 + version: 3.0.4(react@19.2.0) '@fontsource/roboto': - specifier: ^5.1.1 - version: 5.1.1 + specifier: ^5.2.8 + version: 5.2.8 '@monaco-editor/react': specifier: ^4.7.0 - version: 4.7.0(monaco-editor@0.52.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 4.7.0(monaco-editor@0.54.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mui/icons-material': - specifier: ^7.1.1 - version: 7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) + specifier: ^7.3.4 + version: 7.3.4(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) '@mui/material': - specifier: ^7.1.1 - version: 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.3.4 + version: 7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mui/system': - specifier: ^7.1.1 - version: 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) + specifier: ^7.3.3 + version: 7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) '@mui/types': - specifier: ^7.4.3 - version: 7.4.3(@types/react@19.0.8) + specifier: ^7.4.7 + version: 7.4.7(@types/react@19.2.2) '@mui/x-date-pickers': - specifier: ^8.4.0 - version: 8.4.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns@3.6.0)(dayjs@1.11.13)(luxon@3.5.0)(moment@2.29.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^8.14.1 + version: 8.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mui/system@7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(date-fns@3.6.0)(dayjs@1.11.18)(luxon@3.7.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@rjsf/core': specifier: 6.0.0-beta.8 - version: 6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0) + version: 6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0) '@rjsf/mui': specifier: 6.0.0-beta.10 - version: 6.0.0-beta.10(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/icons-material@7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@rjsf/core@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0))(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0) + version: 6.0.0-beta.10(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/icons-material@7.3.4(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@rjsf/core@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0))(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0) '@rjsf/utils': specifier: 6.0.0-beta.10 - version: 6.0.0-beta.10(react@19.0.0) + version: 6.0.0-beta.10(react@19.2.0) '@rjsf/validator-ajv8': specifier: 6.0.0-beta.8 - version: 6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0)) + version: 6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0)) ai: - specifier: ^4.3.15 - version: 4.3.15(react@19.0.0)(zod@3.25.28) + specifier: ^5.0.76 + version: 5.0.76(zod@4.1.12) ansi-to-html: specifier: ^0.7.2 version: 0.7.2 @@ -90,13 +90,13 @@ importers: version: 4.0.0 beautiful-react-hooks: specifier: 5.0.3 - version: 5.0.3(react-dom@19.0.0(react@19.0.0))(react-router-dom@7.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rxjs@7.8.2) + version: 5.0.3(react-dom@19.2.0(react@19.2.0))(react-router-dom@7.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(rxjs@7.8.2) best-effort-json-parser: - specifier: 1.1.3 - version: 1.1.3 + specifier: 1.2.1 + version: 1.2.1 better-sqlite3: - specifier: ^11.9.1 - version: 11.9.1 + specifier: ^12.4.1 + version: 12.4.1 bluebird: specifier: 3.7.2 version: 3.7.2 @@ -114,10 +114,10 @@ importers: version: 4.0.0 electron-ipc-cat: specifier: 2.1.1 - version: 2.1.1(electron@36.4.0)(rxjs@7.8.2) + version: 2.1.1(electron@38.3.0)(rxjs@7.8.2) electron-settings: specifier: 5.0.0 - version: 5.0.0(electron@36.4.0) + version: 5.0.0(electron@38.3.0) electron-unhandled: specifier: 4.0.1 version: 4.0.1 @@ -125,26 +125,26 @@ importers: specifier: 5.0.3 version: 5.0.3 espree: - specifier: ^10.3.0 - version: 10.3.0 + specifier: ^10.4.0 + version: 10.4.0 exponential-backoff: - specifier: ^3.1.1 - version: 3.1.1 + specifier: ^3.1.3 + version: 3.1.3 fs-extra: - specifier: 11.3.0 - version: 11.3.0 + specifier: 11.3.2 + version: 11.3.2 git-sync-js: specifier: ^2.0.5 version: 2.0.5 graphql-hooks: specifier: 8.2.0 - version: 8.2.0(react@19.0.0) + version: 8.2.0(react@19.2.0) html-minifier-terser: specifier: ^7.2.0 version: 7.2.0 i18next: - specifier: 25.2.1 - version: 25.2.1(typescript@5.8.3) + specifier: 25.6.0 + version: 25.6.0(typescript@5.9.3) i18next-electron-fs-backend: specifier: 3.0.3 version: 3.0.3 @@ -152,14 +152,14 @@ importers: specifier: 2.6.0 version: 2.6.0 immer: - specifier: ^10.1.1 - version: 10.1.1 + specifier: ^10.1.3 + version: 10.1.3 intercept-stdout: specifier: 0.1.2 version: 0.1.2 inversify: - specifier: 6.2.1 - version: 6.2.1(reflect-metadata@0.2.2) + specifier: 7.10.3 + version: 7.10.3(reflect-metadata@0.2.2) ipaddr.js: specifier: 2.2.0 version: 2.2.0 @@ -174,40 +174,43 @@ importers: version: 4.17.21 material-ui-popup-state: specifier: ^5.3.6 - version: 5.3.6(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) + version: 5.3.6(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) menubar: - specifier: 9.5.1 - version: 9.5.1(electron@36.4.0) + specifier: 9.5.2 + version: 9.5.2(electron@38.3.0) monaco-editor: - specifier: ^0.52.2 - version: 0.52.2 + specifier: ^0.54.0 + version: 0.54.0 nanoid: - specifier: ^5.0.9 - version: 5.0.9 + specifier: ^5.1.6 + version: 5.1.6 new-github-issue-url: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.1.0 + version: 1.1.0 node-fetch: specifier: 3.3.2 version: 3.3.2 - ollama-ai-provider: - specifier: ^1.2.0 - version: 1.2.0(zod@3.25.28) + oidc-client-ts: + specifier: ^3.3.0 + version: 3.3.0 + ollama-ai-provider-v2: + specifier: ^1.5.1 + version: 1.5.1(zod@4.1.12) react: - specifier: 19.0.0 - version: 19.0.0 + specifier: 19.2.0 + version: 19.2.0 react-dom: - specifier: 19.0.0 - version: 19.0.0(react@19.0.0) + specifier: 19.2.0 + version: 19.2.0(react@19.2.0) react-i18next: - specifier: 15.5.2 - version: 15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.3) + specifier: 16.1.3 + version: 16.1.3(i18next@25.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) react-masonry-css: specifier: ^1.0.16 - version: 1.0.16(react@19.0.0) + version: 1.0.16(react@19.2.0) react-window: - specifier: ^1.8.11 - version: 1.8.11(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^2.2.1 + version: 2.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) reflect-metadata: specifier: 0.2.2 version: 0.2.2 @@ -215,23 +218,23 @@ importers: specifier: 1.16.1 version: 1.16.1 rotating-file-stream: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.2.7 + version: 3.2.7 rxjs: specifier: 7.8.2 version: 7.8.2 semver: - specifier: 7.7.2 - version: 7.7.2 + specifier: 7.7.3 + version: 7.7.3 serialize-error: specifier: ^12.0.0 version: 12.0.0 simplebar: - specifier: 6.3.1 - version: 6.3.1 + specifier: 6.3.2 + version: 6.3.2 simplebar-react: - specifier: 3.3.0 - version: 3.3.0(react@19.0.0) + specifier: 3.3.2 + version: 3.3.2(react@19.2.0) source-map-support: specifier: 0.5.21 version: 0.5.21 @@ -239,54 +242,54 @@ importers: specifier: 0.1.7-alpha.2 version: 0.1.7-alpha.2 strip-ansi: - specifier: ^7.1.0 - version: 7.1.0 + specifier: ^7.1.2 + version: 7.1.2 tapable: - specifier: ^2.2.2 - version: 2.2.2 + specifier: ^2.3.0 + version: 2.3.0 tiddlywiki: - specifier: 5.3.7 - version: 5.3.7 + specifier: 5.3.8 + version: 5.3.8 type-fest: - specifier: 4.41.0 - version: 4.41.0 + specifier: 5.1.0 + version: 5.1.0 typeorm: - specifier: ^0.3.22 - version: 0.3.22(better-sqlite3@11.9.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.0)(@types/node@22.13.0)(typescript@5.8.3)) + specifier: ^0.3.27 + version: 0.3.27(babel-plugin-macros@3.1.0)(better-sqlite3@12.4.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.0)(@types/node@24.9.1)(typescript@5.9.3)) typescript-styled-is: specifier: ^2.1.0 - version: 2.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(styled-components@6.1.18(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + version: 2.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.18(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) v8-compile-cache-lib: specifier: ^3.0.1 version: 3.0.1 winston: - specifier: 3.17.0 - version: 3.17.0 + specifier: 3.18.3 + version: 3.18.3 winston-daily-rotate-file: specifier: 5.0.0 - version: 5.0.0(winston@3.17.0) + version: 5.0.0(winston@3.18.3) winston-transport: specifier: 4.9.0 version: 4.9.0 wouter: specifier: ^3.7.1 - version: 3.7.1(react@19.0.0) + version: 3.7.1(react@19.2.0) zod: - specifier: ^3.25.28 - version: 3.25.28 + specifier: ^4.1.12 + version: 4.1.12 zustand: - specifier: ^5.0.4 - version: 5.0.4(@types/react@19.0.8)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)) + specifier: ^5.0.8 + version: 5.0.8(@types/react@19.2.2)(immer@10.1.3)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)) zx: - specifier: 8.5.5 - version: 8.5.5 + specifier: 8.8.5 + version: 8.8.5 devDependencies: '@cucumber/cucumber': - specifier: ^11.2.0 - version: 11.2.0 + specifier: ^12.2.0 + version: 12.2.0 '@electron-forge/cli': specifier: 7.10.2 - version: 7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.2) + version: 7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.11) '@electron-forge/plugin-auto-unpack-natives': specifier: 7.10.2 version: 7.10.2(bluebird@3.7.2) @@ -300,11 +303,11 @@ importers: specifier: ^1.0.1 version: 1.0.1 '@testing-library/jest-dom': - specifier: ^6.6.3 - version: 6.6.3 + specifier: ^6.9.1 + version: 6.9.1 '@testing-library/react': specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) @@ -315,116 +318,119 @@ importers: specifier: 3.5.42 version: 3.5.42 '@types/chai': - specifier: 5.0.1 - version: 5.0.1 + specifier: 5.2.3 + version: 5.2.3 '@types/fs-extra': specifier: 11.0.4 version: 11.0.4 '@types/html-minifier-terser': specifier: ^7.0.2 version: 7.0.2 - '@types/i18next-fs-backend': - specifier: 1.1.5 - version: 1.1.5 '@types/intercept-stdout': - specifier: 0.1.3 - version: 0.1.3 + specifier: 0.1.4 + version: 0.1.4 '@types/lodash': - specifier: 4.17.15 - version: 4.17.15 + specifier: 4.17.20 + version: 4.17.20 '@types/node': - specifier: 22.13.0 - version: 22.13.0 + specifier: 24.9.1 + version: 24.9.1 '@types/react': - specifier: 19.0.8 - version: 19.0.8 + specifier: 19.2.2 + version: 19.2.2 '@types/react-dom': - specifier: 19.0.3 - version: 19.0.3(@types/react@19.0.8) + specifier: 19.2.2 + version: 19.2.2(@types/react@19.2.2) '@types/react-jsonschema-form': specifier: ^1.7.13 version: 1.7.13 '@types/semver': - specifier: 7.5.8 - version: 7.5.8 + specifier: 7.7.1 + version: 7.7.1 '@types/source-map-support': specifier: 0.5.10 version: 0.5.10 '@vitejs/plugin-react': specifier: ^5.0.4 - version: 5.0.4(vite@7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0)) + version: 5.0.4(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/coverage-v8': - specifier: ^3.2.3 - version: 3.2.3(vitest@3.2.3) + specifier: ^3.2.4 + version: 3.2.4(vitest@3.2.4) '@vitest/ui': - specifier: ^3.2.3 - version: 3.2.3(vitest@3.2.3) + specifier: ^3.2.4 + version: 3.2.4(vitest@3.2.4) chai: - specifier: 5.1.2 - version: 5.1.2 + specifier: 6.2.0 + version: 6.2.0 cross-env: - specifier: 7.0.3 - version: 7.0.3 + specifier: 10.1.0 + version: 10.1.0 dprint: - specifier: ^0.50.0 - version: 0.50.0 + specifier: ^0.50.2 + version: 0.50.2 electron: - specifier: 36.4.0 - version: 36.4.0 + specifier: 38.3.0 + version: 38.3.0 electron-chrome-web-store: - specifier: ^0.12.0 - version: 0.12.0 + specifier: ^0.13.0 + version: 0.13.0 esbuild: - specifier: ^0.25.2 - version: 0.25.2 + specifier: ^0.25.11 + version: 0.25.11 eslint-config-tidgi: specifier: ^2.2.0 - version: 2.2.0(jiti@2.4.2)(typescript@5.8.3) + version: 2.2.0(jiti@2.6.1)(typescript@5.9.3) identity-obj-proxy: specifier: ^3.0.0 version: 3.0.0 jsdom: - specifier: ^26.1.0 - version: 26.1.0 + specifier: ^27.0.1 + version: 27.0.1(postcss@8.5.6) memory-fs: specifier: ^0.5.0 version: 0.5.0 node-loader: specifier: 2.1.0 - version: 2.1.0(webpack@5.88.1(@swc/core@1.12.0)(esbuild@0.25.2)) + version: 2.1.0(webpack@5.102.1(@swc/core@1.12.0)(esbuild@0.25.11)) + oauth2-mock-server: + specifier: ^8.1.0 + version: 8.1.0 path-browserify: specifier: ^1.0.1 version: 1.0.1 playwright: - specifier: ^1.53.0 - version: 1.53.0 + specifier: ^1.56.1 + version: 1.56.1 rimraf: specifier: ^6.0.1 version: 6.0.1 ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.12.0)(@types/node@22.13.0)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.12.0)(@types/node@24.9.1)(typescript@5.9.3) + tsx: + specifier: ^4.20.6 + version: 4.20.6 tw5-typed: specifier: ^0.6.3 version: 0.6.3 typescript: - specifier: 5.8.3 - version: 5.8.3 + specifier: 5.9.3 + version: 5.9.3 typesync: specifier: 0.14.3 version: 0.14.3 unplugin-swc: - specifier: ^1.5.5 - version: 1.5.5(@swc/core@1.12.0)(rollup@4.43.0) + specifier: ^1.5.8 + version: 1.5.8(@swc/core@1.12.0)(rollup@4.52.5) vite: - specifier: ^7.1.9 - version: 7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0) + specifier: ^7.1.11 + version: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-bundle-analyzer: specifier: ^1.2.3 version: 1.2.3 vitest: - specifier: ^3.2.3 - version: 3.2.3(@types/node@22.13.0)(@vitest/ui@3.2.3)(jiti@2.4.2)(jsdom@26.1.0)(terser@5.18.2)(yaml@2.8.0) + specifier: ^3.2.4 + version: 3.2.4(@types/node@24.9.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: '@electron-forge/maker-deb': specifier: 7.10.2 @@ -450,109 +456,85 @@ importers: packages: - '@0no-co/graphql.web@1.0.7': - resolution: {integrity: sha512-E3Qku4mTzdrlwVWGPxklDnME5ANrEGetvYw4i2GCRlppWXXE4QD66j7pwb8HelZwS6LnqEChhrSOGCXpbiu6MQ==} + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@adobe/css-tools@4.4.3': - resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} - - '@ai-sdk/anthropic@1.2.11': - resolution: {integrity: sha512-lZLcEMh8MXY4NVSrN/7DyI2rnid8k7cn/30nMmd3bwJrnIsOuIuuFvY8f0nj+pFcTi6AYK7ujLdqW5dQVz1YQw==} + '@ai-sdk/anthropic@2.0.35': + resolution: {integrity: sha512-R0HtYqnKhxH67qpfKJwPCzRJLeW6M/adFM0E4YyF2+m80UvaigmiVwEODcODHEhsA3hQdf1hLNXzq4AEbkz8xw==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/deepseek@0.2.14': - resolution: {integrity: sha512-TISD1FzBWuQkHEHoVustoJILV33ZNgfYxeTkq1xU2vHEZuWTGZV7/IlXixyFsfqDCdVgrbLeIABk5FuCw7niLg==} + '@ai-sdk/deepseek@1.0.23': + resolution: {integrity: sha512-9knOQmgIwlSkIYXWra550mC33HAX0PlVW8rMUAcJGzt8nka4IJEqa1aKDtLRUb6RXUWBsturZL+LwrC1ApQmbQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai-compatible@0.2.14': - resolution: {integrity: sha512-icjObfMCHKSIbywijaoLdZ1nSnuRnWgMEMLgwoxPJgxsUHMx0aVORnsLUid4SPtdhHI3X2masrt6iaEQLvOSFw==} + '@ai-sdk/gateway@2.0.0': + resolution: {integrity: sha512-Gj0PuawK7NkZuyYgO/h5kDK/l6hFOjhLdTq3/Lli1FTl47iGmwhH1IZQpAL3Z09BeFYWakcwUmn02ovIm2wy9g==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@1.3.22': - resolution: {integrity: sha512-QwA+2EkG0QyjVR+7h6FE7iOu2ivNqAVMm9UJZkVxxTk5OIq5fFJDTEI/zICEMuHImTTXR2JjsL6EirJ28Jc4cw==} + '@ai-sdk/openai-compatible@1.0.22': + resolution: {integrity: sha512-Q+lwBIeMprc/iM+vg1yGjvzRrp74l316wDpqWdbmd4VXXlllblzGsUgBLTeKvcEapFTgqk0FRETvSb58Y6dsfA==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@2.2.4': - resolution: {integrity: sha512-13sEGBxB6kgaMPGOgCLYibF6r8iv8mgjhuToFrOTU09bBxbFQd8ZoARarCfJN6VomCUbUvMKwjTBLb1vQnN+WA==} + '@ai-sdk/openai@2.0.53': + resolution: {integrity: sha512-GIkR3+Fyif516ftXv+YPSPstnAHhcZxNoR2s8uSHhQ1yBT7I7aQYTVwpjAuYoT3GR+TeP50q7onj2/nDRbT2FQ==} engines: {node: '>=18'} peerDependencies: - zod: ^3.23.8 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@2.2.8': - resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} + '@ai-sdk/provider-utils@3.0.12': + resolution: {integrity: sha512-ZtbdvYxdMoria+2SlNarEk6Hlgyf+zzcznlD55EAl+7VZvJaSg2sqPvwArY7L6TfDEDJsnCq0fdhBSkYo0Xqdg==} engines: {node: '>=18'} peerDependencies: - zod: ^3.23.8 + zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider@1.1.0': - resolution: {integrity: sha512-0M+qjp+clUD0R1E5eWQFhxEvWLNaOtGQRUaBn8CUABnSKredagq92hUS9VjOzGsTm37xLfpaxl97AVtbeOsHew==} + '@ai-sdk/provider@2.0.0': + resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} engines: {node: '>=18'} - '@ai-sdk/provider@1.1.3': - resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} - engines: {node: '>=18'} + '@algolia/autocomplete-core@1.19.4': + resolution: {integrity: sha512-yVwXLrfwQ3dAndY12j1pfa0oyC5hTDv+/dgwvVHj57dY3zN6PbAmcHdV5DOOdGJrCMXff+fsPr8G2Ik8zWOPTw==} - '@ai-sdk/react@1.2.12': - resolution: {integrity: sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.23.8 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/ui-utils@1.2.11': - resolution: {integrity: sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.23.8 - - '@algolia/autocomplete-core@1.19.1': - resolution: {integrity: sha512-MeZZN1NSPgfp2zhiaCyAW02jOWMftCJ06qoeEVEQ8v+kMlXL15SUYBpQwj7Gd+nV46KHqDrW+g5EGqhCsX6zWg==} - - '@algolia/autocomplete-js@1.19.1': - resolution: {integrity: sha512-4uVK+2GQ3JbnaOtX2eD6mYew62jHY5hJ/0ZPn/0awaVnvlqpvXo4iRo4RNbrZ/7GyMNNlsBeE1p4PZJ+hDB5UQ==} + '@algolia/autocomplete-js@1.19.4': + resolution: {integrity: sha512-ZkwsuTTIEuw+hbsIooMrNLvTVulUSSKqJT3ZeYYd//kA5fHaFf2/T0BDmd9qSGxZRhT5WS8AJYjFARLmj5x08g==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/autocomplete-plugin-algolia-insights@1.19.1': - resolution: {integrity: sha512-TPVerIGKbfOwd69ZNrriI6voKRwwj6Vmy4tD12/3RCh8zdvDOdRvc7LxeKPtgwJzavZkfH7nK9pb+4E+PCdgdg==} + '@algolia/autocomplete-plugin-algolia-insights@1.19.4': + resolution: {integrity: sha512-K6TQhTKxx0Es1ZbjlAQjgm/QLDOtKvw23MX0xmpvO7AwkmlmaEXo2PwHdVSs3Bquv28CkO2BYKks7jVSIdcXUg==} peerDependencies: search-insights: '>= 1 < 3' - '@algolia/autocomplete-preset-algolia@1.19.1': - resolution: {integrity: sha512-8VTPeE7UwyfvNF44IEkaNOnRoofv0Ejtsqg3tu9T8gj+pbVMj8NBErlbYD88es893EseqJj7oWAhqcq1bgnxcQ==} + '@algolia/autocomplete-preset-algolia@1.19.4': + resolution: {integrity: sha512-WhX4mYosy7yBDjkB6c/ag+WKICjvV2fqQv/+NWJlpvnk2JtMaZByi73F6svpQX945J+/PxpQe8YIRBZHuYsLAQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/autocomplete-shared@1.19.1': - resolution: {integrity: sha512-/GcOv70emuVdSHBAERW7/r4czMzJROkgLOl45+ugyxK79RzSkXV2esY638qSo6mzC7EVwglSJ8BQ0kAVKVxMjA==} + '@algolia/autocomplete-shared@1.19.4': + resolution: {integrity: sha512-V7tYDgRXP0AqL4alwZBWNm1HPWjJvEU94Nr7Qa2cuPcIAbsTAj7M/F/+Pv/iwOWXl3N7tzVzNkOWm7sX6JT1SQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/autocomplete-theme-classic@1.19.1': - resolution: {integrity: sha512-cNYN9Zosz+4hS+N8bE3yaKu4N0JD0CiNoNEqtZbemI+2xDSDo2MjRVVwWRz7gBn7wyimfp90apWgRJ3mnuGvDw==} + '@algolia/autocomplete-theme-classic@1.19.4': + resolution: {integrity: sha512-/qE8BETNFbul4WrrUyBYgaaKcgFPk0Px9FDKADnr3HlIkXquRpcFHTxXK16jdwXb33yrcXaAVSQZRfUUSSnxVA==} '@algolia/client-abtesting@5.26.0': resolution: {integrity: sha512-B2NdQEjxtWPNMTI9xm+4JUjL7f7a8j7eZou7CMPy0NSc4R7qfW6yXdN3nL0zbhUwVTTxjYhWSaUaVrKg7woUgQ==} @@ -630,8 +612,14 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@3.2.0': - resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@4.0.5': + resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==} + + '@asamuzakjp/dom-selector@6.7.2': + resolution: {integrity: sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -646,13 +634,13 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/types@3.357.0': - resolution: {integrity: sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g==} - engines: {node: '>=14.0.0'} + '@aws-sdk/types@3.910.0': + resolution: {integrity: sha512-o67gL3vjf4nhfmuSUNNkit0d62QJEwwHLxucwVJkR/rw9mfUtAWsgBs8Tp16cdUbMgsyQtCQilL8RAJDoGtadQ==} + engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.310.0': - resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-locate-window@3.893.0': + resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} + engines: {node: '>=18.0.0'} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} @@ -708,11 +696,6 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.4': resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} @@ -730,12 +713,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.1': - resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': @@ -746,10 +725,6 @@ packages: resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} - engines: {node: '>=6.9.0'} - '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} @@ -770,8 +745,8 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} '@csstools/css-calc@2.1.4': @@ -781,8 +756,8 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.10': - resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: '@csstools/css-parser-algorithms': ^3.0.5 @@ -794,6 +769,12 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-syntax-patches-for-csstree@1.0.14': + resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} @@ -804,9 +785,9 @@ packages: '@cucumber/cucumber-expressions@18.0.1': resolution: {integrity: sha512-NSid6bI+7UlgMywl5octojY5NXnxR9uq+JisjOrO52VbFsQM6gTWuQFE8syI10KnIBEdPzuEUSVEeZ0VFzRnZA==} - '@cucumber/cucumber@11.2.0': - resolution: {integrity: sha512-F69uIPTc7dfgU7/TGAaQaWUz7r/DzoPW39AfJoKQOC7IvBiPQwpvSIo6QEd+63pdpdKNRbtQoVl5vP9IclhhuA==} - engines: {node: 18 || 20 || 22 || >=23} + '@cucumber/cucumber@12.2.0': + resolution: {integrity: sha512-b7W4snvXYi1T2puUjxamASCCNhNzVSzb/fQUuGSkdjm/AFfJ24jo8kOHQyOcaoArCG71sVQci4vkZaITzl/V1w==} + engines: {node: 20 || 22 || >=24} hasBin: true '@cucumber/gherkin-streams@5.0.1': @@ -817,23 +798,23 @@ packages: '@cucumber/message-streams': '>=4.0.0' '@cucumber/messages': '>=17.1.1' - '@cucumber/gherkin-utils@9.0.0': - resolution: {integrity: sha512-clk4q39uj7pztZuZtyI54V8lRsCUz0Y/p8XRjIeHh7ExeEztpWkp4ca9q1FjUOPfQQ8E7OgqFbqoQQXZ1Bx7fw==} + '@cucumber/gherkin-utils@9.2.0': + resolution: {integrity: sha512-3nmRbG1bUAZP3fAaUBNmqWO0z0OSkykZZotfLjyhc8KWwDSOrOmMJlBTd474lpA8EWh4JFLAX3iXgynBqBvKzw==} hasBin: true - '@cucumber/gherkin@28.0.0': - resolution: {integrity: sha512-Ee6zJQq0OmIUPdW0mSnsCsrWA2PZAELNDPICD2pLfs0Oz7RAPgj80UsD2UCtqyAhw2qAR62aqlktKUlai5zl/A==} + '@cucumber/gherkin@31.0.0': + resolution: {integrity: sha512-wlZfdPif7JpBWJdqvHk1Mkr21L5vl4EfxVUOS4JinWGf3FLRV6IKUekBv5bb5VX79fkDcfDvESzcQ8WQc07Wgw==} - '@cucumber/gherkin@30.0.4': - resolution: {integrity: sha512-pb7lmAJqweZRADTTsgnC3F5zbTh3nwOB1M83Q9ZPbUKMb3P76PzK6cTcPTJBHWy3l7isbigIv+BkDjaca6C8/g==} + '@cucumber/gherkin@34.0.0': + resolution: {integrity: sha512-659CCFsrsyvuBi/Eix1fnhSheMnojSfnBcqJ3IMPNawx7JlrNJDcXYSSdxcUw3n/nG05P+ptCjmiZY3i14p+tA==} - '@cucumber/html-formatter@21.7.0': - resolution: {integrity: sha512-bv211aY8mErp6CdmhN426E+7KIsVIES4fGx5ASMlUzYWiMus6NhSdI9UL3Vswx8JXJMgySeIcJJKfznREUFLNA==} + '@cucumber/html-formatter@21.14.0': + resolution: {integrity: sha512-vQqbmQZc0QiN4c+cMCffCItpODJlOlYtPG7pH6We096dBOa7u0ttDMjT6KrMAnQlcln54rHL46r408IFpuznAw==} peerDependencies: '@cucumber/messages': '>=18' - '@cucumber/junit-xml-formatter@0.7.1': - resolution: {integrity: sha512-AzhX+xFE/3zfoYeqkT7DNq68wAQfBcx4Dk9qS/ocXM2v5tBv6eFQ+w8zaSfsktCjYzu4oYRH/jh4USD1CYHfaQ==} + '@cucumber/junit-xml-formatter@0.8.1': + resolution: {integrity: sha512-FT1Y96pyd9/ifbE9I7dbkTCjkwEdW9C0MBobUZoKD13c8EnWAt0xl1Yy/v/WZLTk4XfCLte1DATtLx01jt+YiA==} peerDependencies: '@cucumber/messages': '*' @@ -842,22 +823,31 @@ packages: peerDependencies: '@cucumber/messages': '>=17.1.1' - '@cucumber/messages@24.1.0': - resolution: {integrity: sha512-hxVHiBurORcobhVk80I9+JkaKaNXkW6YwGOEFIh/2aO+apAN+5XJgUUWjng9NwqaQrW1sCFuawLB1AuzmBaNdQ==} + '@cucumber/messages@26.0.1': + resolution: {integrity: sha512-DIxSg+ZGariumO+Lq6bn4kOUIUET83A4umrnWmidjGFl8XxkBieUZtsmNbLYgH/gnsmP07EfxxdTr0hOchV1Sg==} - '@cucumber/messages@27.0.2': - resolution: {integrity: sha512-jo2B+vYXmpuLOKh6Gc8loHl2E8svCkLvEXLVgFwVHqKWZJWBTa9yTRCPmZIxrz4fnO7Pr3N3vKQCPu73/gjlVQ==} + '@cucumber/messages@27.2.0': + resolution: {integrity: sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==} - '@cucumber/query@13.0.2': - resolution: {integrity: sha512-ykjwL99F5ZmJ3XnIRPe/eA8LvfSTc+C6ZZXrD5QrAfhfMRomBNpZT03MNnxrJ92ge18eDbculhclrIJQiVJCJg==} + '@cucumber/messages@28.1.0': + resolution: {integrity: sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA==} + + '@cucumber/pretty-formatter@1.0.1': + resolution: {integrity: sha512-A1lU4VVP0aUWdOTmpdzvXOyEYuPtBDI0xYwYJnmoMDplzxMdhcHk86lyyvYDoMoPzzq6OkOE3isuosvUU4X7IQ==} + peerDependencies: + '@cucumber/cucumber': '>=7.0.0' + '@cucumber/messages': '*' + + '@cucumber/query@13.6.0': + resolution: {integrity: sha512-tiDneuD5MoWsJ9VKPBmQok31mSX9Ybl+U4wqDoXeZgsXHDURqzM3rnpWVV3bC34y9W6vuFxrlwF/m7HdOxwqRw==} peerDependencies: '@cucumber/messages': '*' - '@cucumber/tag-expressions@6.1.1': - resolution: {integrity: sha512-0oj5KTzf2DsR3DhL3hYeI9fP3nyKzs7TQdpl54uJelJ3W3Hlyyet2Hib+8LK7kNnqJsXENnJg9zahRYyrtvNEg==} + '@cucumber/tag-expressions@6.2.0': + resolution: {integrity: sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==} - '@dabh/diagnostics@2.0.3': - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + '@dabh/diagnostics@2.0.8': + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} '@dnd-kit/accessibility@3.1.1': resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} @@ -892,8 +882,8 @@ packages: cpu: [arm64] os: [darwin] - '@dprint/darwin-arm64@0.50.0': - resolution: {integrity: sha512-KqWpsvm4JveYdKDLSLlQINGNW4pEAGHcTFPEHR5qXMYV4pPomLgHHPyBrxe3XdGtlUp4I8HfvBMBw3b/LKd06A==} + '@dprint/darwin-arm64@0.50.2': + resolution: {integrity: sha512-4d08INZlTxbPW9LK9W8+93viN543/qA2Kxn4azVnPW/xCb2Im03UqJBz8mMm3nJZdtNnK3uTVG3ib1VW+XJisw==} cpu: [arm64] os: [darwin] @@ -902,16 +892,16 @@ packages: cpu: [x64] os: [darwin] - '@dprint/darwin-x64@0.50.0': - resolution: {integrity: sha512-kFeeLYhCIVAe1SMtFYk1q0qWxrkmW8FhOBTUh2oblr4AnAjpjb03m8BVUrHHKFeBTsppwck+1b8hzU6LRZO7fA==} + '@dprint/darwin-x64@0.50.2': + resolution: {integrity: sha512-ZXWPBwdLojhdBATq+bKwJvB7D8bIzrD6eR/Xuq9UYE7evQazUiR069d9NPF0iVuzTo6wNf9ub9SXI7qDl11EGA==} cpu: [x64] os: [darwin] - '@dprint/dockerfile@0.3.0': - resolution: {integrity: sha512-u2XhDkS0LrhmBrJ6ecP0TZsFv5a4W688XnD3F11/i9H0r/4/6QHLk6B2aKZmjK3rHaO1ERBYRA6YtKGxwkn2xg==} + '@dprint/dockerfile@0.3.3': + resolution: {integrity: sha512-/4BDocOt1ke+eHFce9O+e+OnfnFO8M33RjGDtbqsFjYOML3+UZ/TvysH0oqteirlqSuKG+AHYBqhMB/i4Ok3ZA==} - '@dprint/formatter@0.2.0': - resolution: {integrity: sha512-E1q1JaOPeEUBhG//IUayqJQvNpqprZ0OCF8B/bIhUqSsMIp0Y74PgF8JPvDCrOdq43qiGUYAavVO8iCBHOoU/A==} + '@dprint/formatter@0.2.1': + resolution: {integrity: sha512-GCzgRt2o4mhZLy8L47k2A+q9EMG/jWhzZebE29EqKsxmjDrSfv2VisEj/Q+39OOf04jTkEfB/TRO+IZSyxHdYg==} '@dprint/formatter@0.3.0': resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} @@ -924,8 +914,8 @@ packages: cpu: [arm64] os: [linux] - '@dprint/linux-arm64-glibc@0.50.0': - resolution: {integrity: sha512-EL0+uMSdj/n+cZOP9ZO8ndvjmtOSWXNsMHKdAAaTG0+EjH9M9YKXD6kopP6PKOR5pJuiyHCRpVKJ4xoD4adfpQ==} + '@dprint/linux-arm64-glibc@0.50.2': + resolution: {integrity: sha512-marxQzRw8atXAnaawwZHeeUaaAVewrGTlFKKcDASGyjPBhc23J5fHPUPremm8xCbgYZyTlokzrV8/1rDRWhJcw==} cpu: [arm64] os: [linux] @@ -934,8 +924,8 @@ packages: cpu: [arm64] os: [linux] - '@dprint/linux-arm64-musl@0.50.0': - resolution: {integrity: sha512-bzyYxKtFw/hYAA+7lWQGQGo2YFPnH7Ql9uWxxWqiGaWVPU66K9WQt0RUEqu1hQBrCk9mMz3jx5l4oKWQ/Dc0fw==} + '@dprint/linux-arm64-musl@0.50.2': + resolution: {integrity: sha512-oGDq44ydzo0ZkJk6RHcUzUN5sOMT5HC6WA8kHXI6tkAsLUkaLO2DzZFfW4aAYZUn+hYNpQfQD8iGew0sjkyLyg==} cpu: [arm64] os: [linux] @@ -944,8 +934,8 @@ packages: cpu: [riscv64] os: [linux] - '@dprint/linux-riscv64-glibc@0.50.0': - resolution: {integrity: sha512-ElFqmKs96NyVXWqd2SJGJGtyVmUWNiLUyaImEzL7XZRmpoJG+Ky7SryhccMQU0ENtQmY0CVgZipLZ1SqhIoluA==} + '@dprint/linux-riscv64-glibc@0.50.2': + resolution: {integrity: sha512-QMmZoZYWsXezDcC03fBOwPfxhTpPEyHqutcgJ0oauN9QcSXGji9NSZITMmtLz2Ki3T1MIvdaLd1goGzNSvNqTQ==} cpu: [riscv64] os: [linux] @@ -954,8 +944,8 @@ packages: cpu: [x64] os: [linux] - '@dprint/linux-x64-glibc@0.50.0': - resolution: {integrity: sha512-Kim8TtCdpCQUNqF2D96vunuonYy6tPfp/AQblSVA4ADChVyFLGfPaQIECpGAAKxXnIG2SX5JRQP7nB/4JgPNbA==} + '@dprint/linux-x64-glibc@0.50.2': + resolution: {integrity: sha512-KMeHEzb4teQJChTgq8HuQzc+reRNDnarOTGTQovAZ9WNjOtKLViftsKWW5HsnRHtP5nUIPE9rF1QLjJ/gUsqvw==} cpu: [x64] os: [linux] @@ -964,8 +954,8 @@ packages: cpu: [x64] os: [linux] - '@dprint/linux-x64-musl@0.50.0': - resolution: {integrity: sha512-ChZf0BnS3S6BIfqAPgQKqEh/7vgD1xc0MpcFcTrvkVQHuSdCQu1XiqUN12agzxB+Y5Ml9exgzP8lYgNza7iXvw==} + '@dprint/linux-x64-musl@0.50.2': + resolution: {integrity: sha512-qM37T7H69g5coBTfE7SsA+KZZaRBky6gaUhPgAYxW+fOsoVtZSVkXtfTtQauHTpqqOEtbxfCtum70Hz1fr1teg==} cpu: [x64] os: [linux] @@ -989,8 +979,8 @@ packages: cpu: [arm64] os: [win32] - '@dprint/win32-arm64@0.50.0': - resolution: {integrity: sha512-xSY607bRyIPG7UO3uRa5c5wTGHKJqLUkQst85Hcz89EL/It6wswwUSNcywDydssN99HmSHop4fIf6FJTEpEp2g==} + '@dprint/win32-arm64@0.50.2': + resolution: {integrity: sha512-kuGVHGoxLwssVDsodefUIYQRoO2fQncurH/xKgXiZwMPOSzFcgUzYJQiyqmJEp+PENhO9VT1hXUHZtlyCAWBUQ==} cpu: [arm64] os: [win32] @@ -999,13 +989,13 @@ packages: cpu: [x64] os: [win32] - '@dprint/win32-x64@0.50.0': - resolution: {integrity: sha512-uGDjrK88LOet9a8pPRM9nKins93mK2NLozqL/hCNV88Nu5Nk0bBeVwRMAnPapjV3Jo+hsJOeq3Z1ibrq2c3v8w==} + '@dprint/win32-x64@0.50.2': + resolution: {integrity: sha512-N3l9k31c3IMfVXqL0L6ygIhJFvCIrfQ+Z5Jph6RnCcBO6oDYWeYhAv/qBk1vLsF2y/e79TKsR1tvaEwnrQ03XA==} cpu: [x64] os: [win32] - '@dr.pogodin/react-helmet@3.0.2': - resolution: {integrity: sha512-Y0O840J+TMZyq5eoJt3A/S5i7d35AiDXJ26VEg3uelvONEmMPPYoYpKmGx78tdZGVPWJ6llP/YFQRY8z8M1Kpw==} + '@dr.pogodin/react-helmet@3.0.4': + resolution: {integrity: sha512-TesfNpzO12qcbyqKyWGDIYTdwVxD3pJv75rE/zhKUq/k9yxeP0BpOdHQ5cc1zA3j/GyY7CuIZjAUXmsxqI1/yw==} peerDependencies: react: '19' @@ -1026,10 +1016,6 @@ packages: resolution: {integrity: sha512-1QN4qnPVTjo+qWYG+s0kYv7XcuIowsPVvbl718FgJUcvkxyRjUA6kWHjFxRvdV6g7Sa2PzZBF+/Mrjpws1lehQ==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-base@7.8.1': - resolution: {integrity: sha512-GUZqschGuEBzSzE0bMeDip65IDds48DZXzldlRwQ+85SYVA6RMU2AwDDqx3YiYsvP2OuxKruuqIJZtOF5ps4FQ==} - engines: {node: '>= 16.4.0'} - '@electron-forge/maker-deb@7.10.2': resolution: {integrity: sha512-4MPr9NW5UbEUbf9geZn5R/0O/QVIiy2EgUXOYOeKkA7oR8U6I1I3+BytYFHYcxbY6+PGhi1H1VTLJLITbHGVWw==} engines: {node: '>= 16.4.0'} @@ -1074,10 +1060,6 @@ packages: resolution: {integrity: sha512-e2pd9RsdbKwsNf6UtKoolmJGy92Nc0/XO4SI91doV8cM954hM2XSYz3VHoqXebMFAF1JDfXoEUt6UCRbEDgMgw==} engines: {node: '>= 16.4.0'} - '@electron-forge/shared-types@7.8.1': - resolution: {integrity: sha512-guLyGjIISKQQRWHX+ugmcjIOjn2q/BEzCo3ioJXFowxiFwmZw/oCZ2KlPig/t6dMqgUrHTH5W/F0WKu0EY4M+Q==} - engines: {node: '>= 16.4.0'} - '@electron-forge/template-base@7.10.2': resolution: {integrity: sha512-D9DbEx3rtikIhUyn4tcz2pJqHNU/+FXKNnzSvmrJoJ9LusR3C42OU9GtbU8oT3nawpnCGgPFIOGXrzexFPp6DA==} engines: {node: '>= 16.4.0'} @@ -1102,21 +1084,17 @@ packages: resolution: {integrity: sha512-jhLLQbttfZViSOYn/3SJc8HML+jNZAytPVJwgGGd3coUiFysWJ2Xald99iqOiouPAhIigBfNPxQb/q/EbcDu4g==} engines: {node: '>= 14.17.5'} - '@electron-forge/tracer@7.8.1': - resolution: {integrity: sha512-r2i7aHVp2fylGQSPDw3aTcdNfVX9cpL1iL2MKHrCRNwgrfR+nryGYg434T745GGm1rNQIv5Egdkh5G9xf00oWA==} - engines: {node: '>= 14.17.5'} - - '@electron/asar@3.2.17': - resolution: {integrity: sha512-OcWImUI686w8LkghQj9R2ynZ2ME693Ek6L1SiaAgqGKzBaTIZw3fHDqN82Rcl+EU1Gm9EgkJ5KLIY/q5DCRbbA==} + '@electron/asar@3.4.1': + resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} hasBin: true - '@electron/get@2.0.2': - resolution: {integrity: sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==} + '@electron/get@2.0.3': + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} - '@electron/get@3.0.0': - resolution: {integrity: sha512-hLv4BYFiyrNRI+U0Mm2X7RxCCdJLkDUn8GCEp9QJzbLpZRko+UaLlCjOMkj6TEtirNLPyBA7y1SeGfnpOB21aQ==} + '@electron/get@3.1.0': + resolution: {integrity: sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==} engines: {node: '>=14'} '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': @@ -1125,17 +1103,17 @@ packages: engines: {node: '>=12.13.0'} hasBin: true - '@electron/notarize@2.2.0': - resolution: {integrity: sha512-Sf7RG47rafeGuUm+kLEbTXMN8XZeYXN70dMBstrcgiykxCq3SLl1uqxFWndxSI1LfMqv4Eq9PTDHLPwiya31Kg==} + '@electron/notarize@2.5.0': + resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==} engines: {node: '>= 10.0.0'} - '@electron/osx-sign@1.0.5': - resolution: {integrity: sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==} + '@electron/osx-sign@1.3.3': + resolution: {integrity: sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==} engines: {node: '>=12.0.0'} hasBin: true - '@electron/packager@18.3.6': - resolution: {integrity: sha512-1eXHB5t+SQKvUiDpWGpvr90ZSSbXj+isrh3YbjCTjKT4bE4SQrKSBfukEAaBvp67+GXHFtCHjQgN9qSTFIge+Q==} + '@electron/packager@18.4.4': + resolution: {integrity: sha512-fTUCmgL25WXTcFpM1M72VmFP8w3E4d+KNzWxmTDRpvwkfn/S206MAtM2cy0GF78KS9AwASMOUmlOIzCHeNxcGQ==} engines: {node: '>= 16.13.0'} hasBin: true @@ -1149,23 +1127,23 @@ packages: engines: {node: '>=22.12.0'} hasBin: true - '@electron/universal@2.0.1': - resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} + '@electron/universal@2.0.3': + resolution: {integrity: sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==} engines: {node: '>=16.4'} - '@electron/windows-sign@1.1.2': - resolution: {integrity: sha512-eXEiZjDtxW3QORCWfRUarANPRTlH9B6At4jqBZJ0NzokSGutXQUVLPA6WmGpIhDW6w2yCMdHW1EJd1HrXtU5sg==} + '@electron/windows-sign@1.2.2': + resolution: {integrity: sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==} engines: {node: '>=14.14'} hasBin: true - '@emnapi/core@1.4.3': - resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + '@emnapi/core@1.6.0': + resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.6.0': + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} - '@emnapi/wasi-threads@1.0.2': - resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -1179,8 +1157,8 @@ packages: '@emotion/is-prop-valid@1.2.2': resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} - '@emotion/is-prop-valid@1.3.1': - resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + '@emotion/is-prop-valid@1.4.0': + resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} '@emotion/memoize@0.8.1': resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} @@ -1230,158 +1208,167 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.25.2': - resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + + '@esbuild/aix-ppc64@0.25.11': + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.2': - resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} + '@esbuild/android-arm64@0.25.11': + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.2': - resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} + '@esbuild/android-arm@0.25.11': + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.2': - resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} + '@esbuild/android-x64@0.25.11': + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.2': - resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} + '@esbuild/darwin-arm64@0.25.11': + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.2': - resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} + '@esbuild/darwin-x64@0.25.11': + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.2': - resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} + '@esbuild/freebsd-arm64@0.25.11': + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.2': - resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} + '@esbuild/freebsd-x64@0.25.11': + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.2': - resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} + '@esbuild/linux-arm64@0.25.11': + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.2': - resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} + '@esbuild/linux-arm@0.25.11': + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.2': - resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} + '@esbuild/linux-ia32@0.25.11': + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.2': - resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} + '@esbuild/linux-loong64@0.25.11': + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.2': - resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} + '@esbuild/linux-mips64el@0.25.11': + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.2': - resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} + '@esbuild/linux-ppc64@0.25.11': + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.2': - resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} + '@esbuild/linux-riscv64@0.25.11': + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.2': - resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} + '@esbuild/linux-s390x@0.25.11': + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.2': - resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} + '@esbuild/linux-x64@0.25.11': + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.2': - resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + '@esbuild/netbsd-arm64@0.25.11': + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.2': - resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} + '@esbuild/netbsd-x64@0.25.11': + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.2': - resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} + '@esbuild/openbsd-arm64@0.25.11': + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.2': - resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} + '@esbuild/openbsd-x64@0.25.11': + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.2': - resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} + '@esbuild/openharmony-arm64@0.25.11': + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.11': + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.2': - resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} + '@esbuild/win32-arm64@0.25.11': + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.2': - resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} + '@esbuild/win32-ia32@0.25.11': + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.2': - resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} + '@esbuild/win32-x64@0.25.11': + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.5.1': - resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + '@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 @@ -1390,43 +1377,47 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + '@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/config-helpers@0.2.1': - resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + '@eslint/config-helpers@0.4.1': + resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.13.0': resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.16.0': + resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.23.0': - resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + '@eslint/js@9.38.0': + resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@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/plugin-kit@0.2.8': resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.4.0': + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fetsorn/vite-node-worker@1.0.1': resolution: {integrity: sha512-uQCIrfW5tzTXzpfJTS0/+lpzNsYI6Y0w+6oaTBvvQ6gJ8/ttqmRy4P2Q9dzksmlzYOY6Bcq17kI61eHrJ3qbug==} - '@fontsource/roboto@5.1.1': - resolution: {integrity: sha512-XwVVXtERDQIM7HPUIbyDe0FP4SRovpjF7zMI8M7pbqFp3ahLJsJTd18h+E6pkar6UbV3btbwkKjYARr5M+SQow==} + '@fontsource/roboto@5.2.8': + resolution: {integrity: sha512-oh9g4Cg3loVMz9MWeKWfDI+ooxxG1aRVetkiKIb2ESS2rrryGecQ/y4pAj4z5A5ebyw450dYRi/c4k/I3UBhHA==} '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -1435,20 +1426,16 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@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/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@inquirer/checkbox@3.0.1': @@ -1471,8 +1458,8 @@ packages: resolution: {integrity: sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==} engines: {node: '>=18'} - '@inquirer/figures@1.0.13': - resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} + '@inquirer/figures@1.0.14': + resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} engines: {node: '>=18'} '@inquirer/input@3.0.1': @@ -1511,16 +1498,35 @@ packages: resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} engines: {node: '>=18'} - '@inversifyjs/common@1.4.0': - resolution: {integrity: sha512-qfRJ/3iOlCL/VfJq8+4o5X4oA14cZSBbpAmHsYj8EsIit1xDndoOl0xKOyglKtQD4u4gdNVxMHx4RWARk/I4QA==} + '@inversifyjs/common@1.5.2': + resolution: {integrity: sha512-WlzR9xGadABS9gtgZQ+luoZ8V6qm4Ii6RQfcfC9Ho2SOlE6ZuemFo7PKJvKI0ikm8cmKbU8hw5UK6E4qovH21w==} - '@inversifyjs/core@1.3.5': - resolution: {integrity: sha512-B4MFXabhNTAmrfgB+yeD6wd/GIvmvWC6IQ8Rh/j2C3Ix69kmqwz9pr8Jt3E+Nho9aEHOQCZaGmrALgtqRd+oEQ==} - - '@inversifyjs/reflect-metadata-utils@0.2.4': - resolution: {integrity: sha512-u95rV3lKfG+NT2Uy/5vNzoDujos8vN8O18SSA5UyhxsGYd4GLQn/eUsGXfOsfa7m34eKrDelTKRUX1m/BcNX5w==} + '@inversifyjs/container@1.14.0': + resolution: {integrity: sha512-jOxjPgkDGc8N6tm2kuAg911/83Ybnf4u70EanXZPSdOskUSnxohCZmLrOJ1WRr/kzLJYCg3sqhZ5iK32z0uOPQ==} peerDependencies: - reflect-metadata: 0.2.2 + reflect-metadata: ~0.2.2 + + '@inversifyjs/core@9.1.0': + resolution: {integrity: sha512-SEpW7Rqa/9f1OcaqtqSTGJQOiuSlauSDcyOcZZCyK1g15efshVw0LsYQS+wpUFkpgEYKhGRBIfvlfgWKKYiFuQ==} + + '@inversifyjs/plugin@0.2.0': + resolution: {integrity: sha512-R/JAdkTSD819pV1zi0HP54mWHyX+H2m8SxldXRgPQarS3ySV4KPyRdosWcfB8Se0JJZWZLHYiUNiS6JvMWSPjw==} + + '@inversifyjs/prototype-utils@0.1.2': + resolution: {integrity: sha512-WZAEycwVd8zVCPCQ7GRzuQmjYF7X5zbjI9cGigDbBoTHJ8y5US9om00IAp0RYislO+fYkMzgcB2SnlIVIzyESA==} + + '@inversifyjs/reflect-metadata-utils@1.4.1': + resolution: {integrity: sha512-Cp77C4d2wLaHXiUB7iH6Cxb7i1lD/YDuTIHLTDzKINqGSz0DCSoL/Dg2wVkW/6Qx03r/yQMLJ+32Agl32N2X8g==} + peerDependencies: + reflect-metadata: ~0.2.2 + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1649,36 +1655,18 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -1710,8 +1698,8 @@ packages: resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} - '@monaco-editor/loader@1.5.0': - resolution: {integrity: sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==} + '@monaco-editor/loader@1.6.1': + resolution: {integrity: sha512-w3tEnj9HYEC73wtjdpR089AqkUPskFRcdkxsiSFt3SoUc3OHpmu+leP94CXBm4mHfefmhsdfI0ZQu6qJ0wgtPg==} '@monaco-editor/react@4.7.0': resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} @@ -1720,27 +1708,27 @@ packages: 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 - '@mui/core-downloads-tracker@7.1.1': - resolution: {integrity: sha512-yBckQs4aQ8mqukLnPC6ivIRv6guhaXi8snVl00VtyojBbm+l6VbVhyTSZ68Abcx7Ah8B+GZhrB7BOli+e+9LkQ==} + '@mui/core-downloads-tracker@7.3.4': + resolution: {integrity: sha512-BIktMapG3r4iXwIhYNpvk97ZfYWTreBBQTWjQKbNbzI64+ULHfYavQEX2w99aSWHS58DvXESWIgbD9adKcUOBw==} - '@mui/icons-material@7.1.1': - resolution: {integrity: sha512-X37+Yc8QpEnl0sYmz+WcLFy2dWgNRzbswDzLPXG7QU1XDVlP5TPp1HXjdmCupOWLL/I9m1fyhcyZl8/HPpp/Cg==} + '@mui/icons-material@7.3.4': + resolution: {integrity: sha512-9n6Xcq7molXWYb680N2Qx+FRW8oT6j/LXF5PZFH3ph9X/Rct0B/BlLAsFI7iL9ySI6LVLuQIVtrLiPT82R7OZw==} engines: {node: '>=14.0.0'} peerDependencies: - '@mui/material': ^7.1.1 + '@mui/material': ^7.3.4 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/material@7.1.1': - resolution: {integrity: sha512-mTpdmdZCaHCGOH3SrYM41+XKvNL0iQfM9KlYgpSjgadXx/fEKhhvOktxm8++Xw6FFeOHoOiV+lzOI8X1rsv71A==} + '@mui/material@7.3.4': + resolution: {integrity: sha512-gEQL9pbJZZHT7lYJBKQCS723v1MGys2IFc94COXbUIyCTWa+qC77a7hUax4Yjd5ggEm35dk4AyYABpKKWC4MLw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^7.1.1 + '@mui/material-pigment-css': ^7.3.3 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1754,8 +1742,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@7.1.1': - resolution: {integrity: sha512-M8NbLUx+armk2ZuaxBkkMk11ultnWmrPlN0Xe3jUEaBChg/mcxa5HWIWS1EE4DF36WRACaAHVAvyekWlDQf0PQ==} + '@mui/private-theming@7.3.3': + resolution: {integrity: sha512-OJM+9nj5JIyPUvsZ5ZjaeC9PfktmK+W5YaVLToLR8L0lB/DGmv1gcKE43ssNLSvpoW71Hct0necfade6+kW3zQ==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1764,8 +1752,8 @@ packages: '@types/react': optional: true - '@mui/styled-engine@7.1.1': - resolution: {integrity: sha512-R2wpzmSN127j26HrCPYVQ53vvMcT5DaKLoWkrfwUYq3cYytL6TQrCH8JBH3z79B6g4nMZZVoaXrxO757AlShaw==} + '@mui/styled-engine@7.3.3': + resolution: {integrity: sha512-CmFxvRJIBCEaWdilhXMw/5wFJ1+FT9f3xt+m2pPXhHPeVIbBg9MnMvNSJjdALvnQJMPw8jLhrUtXmN7QAZV2fw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -1777,8 +1765,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@7.1.1': - resolution: {integrity: sha512-Kj1uhiqnj4Zo7PDjAOghtXJtNABunWvhcRU0O7RQJ7WOxeynoH6wXPcilphV8QTFtkKaip8EiNJRiCD+B3eROA==} + '@mui/system@7.3.3': + resolution: {integrity: sha512-Lqq3emZr5IzRLKaHPuMaLBDVaGvxoh6z7HMWd1RPKawBM5uMRaQ4ImsmmgXWtwJdfZux5eugfDhXJUo2mliS8Q==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1793,16 +1781,16 @@ packages: '@types/react': optional: true - '@mui/types@7.4.3': - resolution: {integrity: sha512-2UCEiK29vtiZTeLdS2d4GndBKacVyxGvReznGXGr+CzW/YhjIX+OHUdCIczZjzcRAgKBGmE9zCIgoV9FleuyRQ==} + '@mui/types@7.4.7': + resolution: {integrity: sha512-8vVje9rdEr1rY8oIkYgP+Su5Kwl6ik7O3jQ0wl78JGSmiZhRHV+vkjooGdKD8pbtZbutXFVTWQYshu2b3sG9zw==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/utils@7.1.0': - resolution: {integrity: sha512-/OM3S8kSHHmWNOP+NH9xEtpYSG10upXeQ0wLZnfDgmgadTAk5F4MQfFLyZ5FCRJENB3eRzltMmaNl6UtDnPovw==} + '@mui/utils@7.3.3': + resolution: {integrity: sha512-kwNAUh7bLZ7mRz9JZ+6qfRnnxbE4Zuc+RzXnhSpRSxjTlSTj7b4JxRLXpG+MVtPVtqks5k/XC8No1Vs3x4Z2gg==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1811,18 +1799,8 @@ packages: '@types/react': optional: true - '@mui/utils@7.1.1': - resolution: {integrity: sha512-BkOt2q7MBYl7pweY2JWwfrlahhp+uGLR8S+EhiyRaofeRYUWL2YKbSGQvN4hgSN1i8poN0PaUiii1kEMrchvzg==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/x-date-pickers@8.4.0': - resolution: {integrity: sha512-x7jI7JnKK25xL3yjD2Z1r86gAWtabKj9ogI2WDKd/v9WwE1VxmDD/NTiXprEZFo9psPOoqr+juPGDz5Cb2v7jw==} + '@mui/x-date-pickers@8.14.1': + resolution: {integrity: sha512-NpUt08a0djJA/qnGzvfFoqZu8aumST73wdSgfFpA76Gd20a50NNL8OMk0enDQZG45jKHsgJqEYN9ramB+R/t5A==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -1858,14 +1836,14 @@ packages: moment-jalaali: optional: true - '@mui/x-internals@8.4.0': - resolution: {integrity: sha512-Z7FCahC4MLfTVzEwnKOB7P1fiR9DzFuMzHOPRNaMXc/rsS7unbtBKAG94yvsRzReCyjzZUVA7h37lnQ1DoPKJw==} + '@mui/x-internals@8.14.0': + resolution: {integrity: sha512-esYyl61nuuFXiN631TWuPh2tqdoyTdBI/4UXgwH3rytF8jiWvy6prPBPRHEH1nvW3fgw9FoBI48FlOO+yEI8xg==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@napi-rs/wasm-runtime@0.2.11': - resolution: {integrity: sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==} + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1896,8 +1874,8 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This functionality has been moved to @npmcli/fs - '@npmcli/redact@3.1.1': - resolution: {integrity: sha512-3Hc2KGIkrvJWJqTbvueXzBeZlmvoOxc2jyX00yzr3+sNFquJg0N8hH4SAPLPVrkWIRQICVpVgjrss971awXVnA==} + '@npmcli/redact@3.2.2': + resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} engines: {node: ^18.17.0 || >=20.5.0} '@opentelemetry/api@1.9.0': @@ -1912,8 +1890,8 @@ packages: resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@polka/url@1.0.0-next.24': - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -1959,8 +1937,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.38': resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@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 @@ -1968,103 +1946,113 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.43.0': - resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==} + '@rollup/rollup-android-arm-eabi@4.52.5': + resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.43.0': - resolution: {integrity: sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==} + '@rollup/rollup-android-arm64@4.52.5': + resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.43.0': - resolution: {integrity: sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==} + '@rollup/rollup-darwin-arm64@4.52.5': + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.43.0': - resolution: {integrity: sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==} + '@rollup/rollup-darwin-x64@4.52.5': + resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.43.0': - resolution: {integrity: sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==} + '@rollup/rollup-freebsd-arm64@4.52.5': + resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.43.0': - resolution: {integrity: sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==} + '@rollup/rollup-freebsd-x64@4.52.5': + resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.43.0': - resolution: {integrity: sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.43.0': - resolution: {integrity: sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==} + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.43.0': - resolution: {integrity: sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==} + '@rollup/rollup-linux-arm64-gnu@4.52.5': + resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.43.0': - resolution: {integrity: sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==} + '@rollup/rollup-linux-arm64-musl@4.52.5': + resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.43.0': - resolution: {integrity: sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==} + '@rollup/rollup-linux-loong64-gnu@4.52.5': + resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.43.0': - resolution: {integrity: sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==} + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.43.0': - resolution: {integrity: sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==} + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.43.0': - resolution: {integrity: sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==} + '@rollup/rollup-linux-riscv64-musl@4.52.5': + resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.43.0': - resolution: {integrity: sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==} + '@rollup/rollup-linux-s390x-gnu@4.52.5': + resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.43.0': - resolution: {integrity: sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==} + '@rollup/rollup-linux-x64-gnu@4.52.5': + resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.43.0': - resolution: {integrity: sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==} + '@rollup/rollup-linux-x64-musl@4.52.5': + resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.43.0': - resolution: {integrity: sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==} + '@rollup/rollup-openharmony-arm64@4.52.5': + resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.5': + resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.43.0': - resolution: {integrity: sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==} + '@rollup/rollup-win32-ia32-msvc@4.52.5': + resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.43.0': - resolution: {integrity: sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==} + '@rollup/rollup-win32-x64-gnu@4.52.5': + resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.5': + resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] os: [win32] @@ -2079,6 +2067,10 @@ packages: resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} + '@smithy/types@4.8.0': + resolution: {integrity: sha512-QpELEHLO8SsQVtqP+MkEgCYTFW0pleGozfs3cZ183ZBj9z3VC1CX1/wtFMK64p+5bhtZo41SeLK1rBRtd25nHQ==} + 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'} @@ -2087,12 +2079,18 @@ packages: resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} + '@so-ric/colorspace@1.1.6': + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + '@spacingbat3/lss@1.2.0': resolution: {integrity: sha512-aywhxHNb6l7COooF3m439eT/6QN8E/RSl5IVboSKthMHcp0GlZYMSoS7546rqDLmFRxTD8f1tu/NIS9vtDwYAg==} '@sqltools/formatter@1.2.5': resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@swc/core-darwin-arm64@1.12.0': resolution: {integrity: sha512-usLr8kC80GDv3pwH2zoEaS279kxtWY0MY3blbMFw7zA8fAjqxa8IDxm3WcgyNLNWckWn4asFfguEwz/Weem3nA==} engines: {node: '>=10'} @@ -2165,8 +2163,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/types@0.1.22': - resolution: {integrity: sha512-D13mY/ZA4PPEFSy6acki9eBT/3WgjMoRqNcdpIvjaYLQ44Xk5BdaL7UkDxAh6Z9UOe7tCCp67BVmZCojYp9owg==} + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -2180,8 +2178,8 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/jest-dom@6.6.3': - resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} '@testing-library/react@16.3.0': @@ -2212,8 +2210,8 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -2224,8 +2222,8 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -2251,35 +2249,29 @@ packages: '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - '@types/chai@5.0.1': - resolution: {integrity: sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==} - - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/chrome@0.0.287': resolution: {integrity: sha512-wWhBNPNXZHwycHKNYnexUcpSbrihVZu++0rdp6GEk5ZgAglenLx+RwdEouh6FrHS0XQiOxSd62yaujM1OoQlZQ==} - '@types/codemirror@5.60.15': - resolution: {integrity: sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==} + '@types/codemirror@5.60.16': + resolution: {integrity: sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/diff-match-patch@1.0.36': - resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} - '@types/echarts@4.9.22': resolution: {integrity: sha512-7Fo6XdWpoi8jxkwP7BARUOM7riq8bMhmsCtSG8gzUcJmFhLo387tihoBYS/y5j7jl3PENT5RxeWZdN9RiwO7HQ==} - '@types/eslint-scope@3.7.4': - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@8.40.2': - resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/filesystem@0.0.36': resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==} @@ -2293,14 +2285,13 @@ packages: '@types/fs-extra@9.0.13': resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/har-format@1.2.16': resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==} - '@types/hoist-non-react-statics@3.3.1': - resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + '@types/hoist-non-react-statics@3.3.7': + resolution: {integrity: sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==} + peerDependencies: + '@types/react': '*' '@types/html-minifier-terser@7.0.2': resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} @@ -2308,11 +2299,8 @@ packages: '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/i18next-fs-backend@1.1.5': - resolution: {integrity: sha512-QKKYWkfQ13spBwa+5/lBThkPkMv8svU6a5Z0Bz96IuN+HupJZXVAbP93p5bK7iOcY7Y/g/W9Y6qy5z0i0NpTog==} - - '@types/intercept-stdout@0.1.3': - resolution: {integrity: sha512-5qWSvqohM5rRKsF58LBWJeyu+lUlZwYKSnTcnXGfvFyMYIjvhpfniQRJNiyE/Gcru3jwVr2pHedsKTGLtzZqNA==} + '@types/intercept-stdout@0.1.4': + resolution: {integrity: sha512-P9+D15le1ye5MSN4ZBiDuOAzRnPoiAm6gdGa0WL79Vx+xc9zUV0ylJF60Z00WjNSIAEuwUA9i/f7HwfjAthPsA==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2320,17 +2308,14 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/jsonfile@6.1.1': - resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/lodash@4.17.15': - resolution: {integrity: sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/lodash@4.17.20': + resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} '@types/mute-stream@0.0.4': resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} @@ -2338,25 +2323,28 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@20.14.9': - resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==} + '@types/node@20.19.23': + resolution: {integrity: sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==} '@types/node@22.13.0': resolution: {integrity: sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==} + '@types/node@24.9.1': + resolution: {integrity: sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/react-dom@19.0.3': - resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==} + '@types/react-dom@19.2.2': + resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} peerDependencies: - '@types/react': ^19.0.0 + '@types/react': ^19.2.0 '@types/react-jsonschema-form@1.7.13': resolution: {integrity: sha512-C2jgO7/ow76oCSfUK++jKKox17R0A7ryMYNE5hJ2dR1Ske9jhuvjIlurvzMePh+Xjk8wey0nzB2C7HFKe2pRdg==} @@ -2366,14 +2354,14 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.0.8': - resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==} + '@types/react@19.2.2': + resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} '@types/source-map-support@0.5.10': resolution: {integrity: sha512-tgVP2H469x9zq34Z0m/fgPewGhg/MLClalNOiPIzQlXrSS2YrKu/xCdSCKnEDwkFha51VKEKB6A9wW26/ZNwzA==} @@ -2384,26 +2372,24 @@ packages: '@types/stylis@4.2.5': resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} - '@types/tern@0.23.4': - resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} + '@types/tern@0.23.9': + resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} - '@types/triple-beam@1.3.2': - resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - '@types/uuid@9.0.8': - resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - '@types/yauzl@2.10.0': - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@types/zrender@4.0.3': - resolution: {integrity: sha512-EPI269lkHNsObwILJ1k1z7znLjKyePuWRy/XKK0shSGpBb9cIX307arcwJV4+2NeZj5wEjN06r4D8yFv7sI06g==} + '@types/zrender@5.0.0': + resolution: {integrity: sha512-70NLuJssk1cp5+8l18zk/z6kpcxKw4/vTbeFKh0R1TIv7/XF7+U7wkGvUOCEzIJv3Px3L1HaUM5ASP0mqKJPKQ==} + deprecated: This is a stub types definition. zrender provides its own type definitions, so you do not need this installed. '@typescript-eslint/eslint-plugin@8.28.0': resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} @@ -2413,16 +2399,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/eslint-plugin@8.29.0': - resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} + '@typescript-eslint/eslint-plugin@8.46.2': + resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} 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.46.2 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/experimental-utils@5.61.0': - resolution: {integrity: sha512-r4RTnwTcaRRVUyKb7JO4DiOGmcMCat+uNs6HqJBfX7K2nlq5TagYZShhbhAw7hFT3bHaYgxMw6pKP0fhu05VMA==} + '@typescript-eslint/experimental-utils@5.62.0': + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2444,15 +2430,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.29.0': - resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} + '@typescript-eslint/parser@8.46.2': + resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@5.61.0': - resolution: {integrity: sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==} + '@typescript-eslint/project-service@8.46.2': + resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@typescript-eslint/scope-manager@6.21.0': @@ -2463,10 +2455,16 @@ packages: resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.29.0': - resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} + '@typescript-eslint/scope-manager@8.46.2': + resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.46.2': + resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.28.0': resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2474,15 +2472,15 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.29.0': - resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} + '@typescript-eslint/type-utils@8.46.2': + resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@5.61.0': - resolution: {integrity: sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==} + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@typescript-eslint/types@6.21.0': @@ -2493,12 +2491,12 @@ packages: resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.29.0': - resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} + '@typescript-eslint/types@8.46.2': + resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@5.61.0': - resolution: {integrity: sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==} + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2521,14 +2519,14 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/typescript-estree@8.29.0': - resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} + '@typescript-eslint/typescript-estree@8.46.2': + resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@5.61.0': - resolution: {integrity: sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==} + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2540,15 +2538,15 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.29.0': - resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} + '@typescript-eslint/utils@8.46.2': + resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@5.61.0': - resolution: {integrity: sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==} + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@typescript-eslint/visitor-keys@6.21.0': @@ -2559,115 +2557,129 @@ packages: resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.29.0': - resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} + '@typescript-eslint/visitor-keys@8.46.2': + resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unrs/resolver-binding-darwin-arm64@1.7.13': - resolution: {integrity: sha512-LIKeCzNSkTWwGHjtiUIfvS96+7kpuyrKq2pzw/0XT2S8ykczj40Hh27oLTbXguCX8tGrCoaD2yXxzwqMMhAzhA==} + '@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.7.13': - resolution: {integrity: sha512-GB5G3qUNrdo2l6xaZehpz1ln4wCQ75tr51HZ8OQEcX6XkBIFVL9E4ikCZvCmRmUgKGR+zP5ogyFib7ZbIMWKWA==} + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.7.13': - resolution: {integrity: sha512-rb8gzoBgqVhDkQiKaq+MrFPhNK3x8XkSFhgU55LfgOa5skv7KIdM3dELKzQVNZNlY49DuZmm0FsEfHK5xPKKiA==} + '@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.7.13': - resolution: {integrity: sha512-bqdzngbTGzhsqhTV3SWECyZUAyvtewKtrCW4E8QPcK6yHSaN0k1h9gKwNOBxFwIqkQRsAibpm18XDum8M5AiCw==} + '@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.7.13': - resolution: {integrity: sha512-vkoL3DSS5tsUNLhNtBJWaqDJNNEQsMCr0o2N02sLCSpe5S8TQHz+klQT42Qgj4PqATMwnG3OF0QQ5BH0oAKIPg==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.7.13': - resolution: {integrity: sha512-uNpLKxlDF+NF6aUztbAVhhFSF65zf/6QEfk5NifUgYFbpBObzvMnl2ydEsXV96spwPcmeNTpG9byvq+Twwd3HQ==} + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-arm64-musl@1.7.13': - resolution: {integrity: sha512-mEFL6q7vtxA6YJ9sLbxCnKOBynOvClVOcqwUErmaCxA94hgP11rlstouySxJCGeFAb8KfUX9mui82waYrqoBlQ==} + '@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.7.13': - resolution: {integrity: sha512-MjJaNk8HK3rCOIPS6AQPJXlrDfG1LaePum+CZddHZygPqDNZyVrVdWTadT+U51vIx5QOdEE0oXcgTY+7VYsU1g==} + '@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.7.13': - resolution: {integrity: sha512-9gAuT1+ed2eIuOXHSu4SdJOe7SUEzPTpOTEuTjGePvMEoWHywY5pvlcY7xMn3d8rhKHpwMzEhl8F8Oy+rkudzA==} + '@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.7.13': - resolution: {integrity: sha512-CNrJythJN9jC8SIJGoawebYylzGNJuWAWTKxxxx5Fr3DGEXbex/We4U7N4u6/dQAK3cLVOuAE/9a4D2JH35JIA==} + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-s390x-gnu@1.7.13': - resolution: {integrity: sha512-J0MVXXPvM2Bv+f+gzOZHLHEmXUJNKwJqkfMDTwE763w/tD+OA7UlTMLQihrcYRXwW5jZ8nbM2cEWTeFsTiH2JQ==} + '@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.7.13': - resolution: {integrity: sha512-Ii2WhtIpeWUe6XG/YhPUX3JNL3PiyXe56PJzqAYDUyB0gctkk/nngpuPnNKlLMcN9FID0T39mIJPhA6YpRcGDQ==} + '@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.7.13': - resolution: {integrity: sha512-8F5E9EhtGYkfEM1OhyVgq76+SnMF5NfZS4v5Rq9JlfuqPnqXWgUjg903hxnG54PQr4I3jmG5bEeT77pGAA3Vvg==} + '@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.7.13': - resolution: {integrity: sha512-7RXGTyDtyR/5o1FlBcjEaQQmQ2rKvu5Jq0Uhvce3PsbreZ61M4LQ5Mey2OMomIq4opphAkfDdm/lkHhWJNKNrw==} + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.7.13': - resolution: {integrity: sha512-MomJVcaVZe3j+CvkcfIVEcQyOOzauKpJYGY8d6PoKXn1FalMVGHX9/c0kXCI0WCK+CRGMExAiQhD8jkhyUVKxg==} + '@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.7.13': - resolution: {integrity: sha512-pnHfzbFj6e4gUARI1Yvz0TUhmFZae248O7JOMCSmSBN3R35RJiKyHmsMuIiPrUYWDzm5jUMPTxSs+b3Ipawusw==} + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.7.13': - resolution: {integrity: sha512-tI0+FTntE3BD0UxhTP12F/iTtkeMK+qh72/2aSxPZnTlOcMR9CTJid8CdppbSjj9wenq7PNcqScLtpPENH3Lvg==} + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} cpu: [x64] os: [win32] + '@vercel/oidc@3.0.3': + resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} + engines: {node: '>= 20'} + '@vitejs/plugin-react@5.0.4': resolution: {integrity: sha512-La0KD0vGkVkSk6K+piWDKRUyg8Rl5iAIKRMH0vMJI0Eg47bq1eOxmoObAaQG37WMW9MSyk7Cs8EIWwJC1PtzKA==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@3.2.3': - resolution: {integrity: sha512-D1QKzngg8PcDoCE8FHSZhREDuEy+zcKmMiMafYse41RZpBE5EDJyKOTdqK3RQfsV2S2nyKor5KCs8PyPRFqKPg==} + '@vitest/coverage-v8@3.2.4': + resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} peerDependencies: - '@vitest/browser': 3.2.3 - vitest: 3.2.3 + '@vitest/browser': 3.2.4 + vitest: 3.2.4 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.3': - resolution: {integrity: sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/mocker@3.2.3': - resolution: {integrity: sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==} + '@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 @@ -2677,76 +2689,76 @@ packages: vite: optional: true - '@vitest/pretty-format@3.2.3': - resolution: {integrity: sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/runner@3.2.3': - resolution: {integrity: sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==} + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} - '@vitest/snapshot@3.2.3': - resolution: {integrity: sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==} + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} - '@vitest/spy@3.2.3': - resolution: {integrity: sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==} + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/ui@3.2.3': - resolution: {integrity: sha512-9aR2tY/WT7GRHGEH/9sSIipJqeA21Eh3C6xmiOVmfyBCFmezUSUFLalpaSmRHlRzWCKQU10yz3AHhKuYcdnZGQ==} + '@vitest/ui@3.2.4': + resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} peerDependencies: - vitest: 3.2.3 + vitest: 3.2.4 - '@vitest/utils@3.2.3': - resolution: {integrity: sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} '@vscode/sudo-prompt@9.3.1': resolution: {integrity: sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==} - '@webassemblyjs/ast@1.11.6': - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - '@webassemblyjs/helper-buffer@1.11.6': - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - '@webassemblyjs/helper-wasm-section@1.11.6': - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - '@webassemblyjs/wasm-edit@1.11.6': - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - '@webassemblyjs/wasm-gen@1.11.6': - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - '@webassemblyjs/wasm-opt@1.11.6': - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - '@webassemblyjs/wasm-parser@1.11.6': - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - '@webassemblyjs/wast-printer@1.11.6': - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - '@xmldom/xmldom@0.8.10': - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + '@xmldom/xmldom@0.8.11': + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} engines: {node: '>=10.0.0'} '@xtuc/ieee754@1.2.0': @@ -2762,41 +2774,34 @@ packages: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} - acorn-import-assertions@1.9.0: - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - deprecated: package has been renamed to acorn-import-attributes + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-import-phases@1.0.4: + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} + engines: {node: '>=10.13.0'} peerDependencies: - acorn: ^8 + acorn: ^8.14.0 acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.12.0: - resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true - acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} - engines: {node: '>=0.4.0'} - hasBin: true - adm-zip@0.5.16: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} @@ -2805,8 +2810,8 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} agentkeepalive@4.6.0: @@ -2817,15 +2822,11 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ai@4.3.15: - resolution: {integrity: sha512-TYKRzbWg6mx/pmTadlAEIhuQtzfHUV0BbLY72+zkovXwq/9xhcH24IlQmkyBpElK6/4ArS0dHdOOtR1jOPVwtg==} + ai@5.0.76: + resolution: {integrity: sha512-ZCxi1vrpyCUnDbtYrO/W8GLvyacV9689f00yshTIQ3mFFphbD7eIv40a2AOZBv3GGRA7SSRYIDnr56wcS/gyQg==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.23.8 - peerDependenciesMeta: - react: - optional: true + zod: ^3.25.76 || ^4.1.8 ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -2835,16 +2836,16 @@ packages: ajv: optional: true - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: - ajv: ^6.9.1 + ajv: ^8.8.2 ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} algoliasearch@5.26.0: resolution: {integrity: sha512-iriwDyAqedYgi9YTpVwJbE/TQJwelclpVFfDgNBfhdIhIzAdKo+Kitwinn+krx9tjDsnzRt3tqTQdbJ0E6OwNw==} @@ -2866,8 +2867,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -2878,8 +2879,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansi-to-html@0.7.2: @@ -2925,8 +2926,8 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-union@2.1.0: @@ -2957,15 +2958,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - asar@3.2.0: - resolution: {integrity: sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==} - engines: {node: '>=10.12.0'} - deprecated: Please use @electron/asar moving forward. There is no API change, just a package name change - hasBin: true - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - assertion-error-formatter@3.0.0: resolution: {integrity: sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==} @@ -2973,21 +2965,25 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-v8-to-istanbul@0.3.3: - resolution: {integrity: sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==} + ast-v8-to-istanbul@0.3.7: + resolution: {integrity: sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==} - async-lock@1.4.0: - resolution: {integrity: sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==} + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} - async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + async-lock@1.4.1: + resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - atomically@2.0.1: - resolution: {integrity: sha512-sxBhVZUFBFhqSAsYMM3X2oaUi2NVDJ8U026FsIusM8gYXls9AYs/eXzgGrufs1Qjpkxi9zunds+75QUFz+m7UQ==} + atomically@2.0.3: + resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} author-regex@1.0.0: resolution: {integrity: sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==} @@ -3015,6 +3011,14 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.8.18: + resolution: {integrity: sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==} + hasBin: true + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + beautiful-react-hooks@5.0.3: resolution: {integrity: sha512-OuRRpxKhczpNoYoMzjqqGsZj/TG6xIRdQNUUp83nE7Ea5XiM+j84ImkvzK/rKuW7ltZbakwWDuuiSjU16UkzBw==} peerDependencies: @@ -3023,11 +3027,15 @@ packages: react-router-dom: '>=5.0.0' rxjs: '>=7.0.0' - best-effort-json-parser@1.1.3: - resolution: {integrity: sha512-O3LfmiLJ5UQOGqrrl6ynCdfDgK50cd0nxy0JacFZ7ARhfhjdksTfScHAJ0580RNgNejLjRvu/7Yj9znY0sqeFA==} + best-effort-json-parser@1.2.1: + resolution: {integrity: sha512-UICSLibQdzS1f+PBsi3u2YE3SsdXcWicHUg3IMvfuaePS2AYnZJdJeKhGv5OM8/mqJwPt79aDrEJ1oa84tELvw==} - better-sqlite3@11.9.1: - resolution: {integrity: sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==} + better-sqlite3@12.4.1: + resolution: {integrity: sha512-3yVdyZhklTiNrtg+4WqHpJpFDd+WHTg2oM7UcR80GqL05AOV0xEJzc6qNvFYoEtE+hRp1n9MpN6/+4yhlGkDXQ==} + engines: {node: 20.x || 22.x || 23.x || 24.x} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -3044,22 +3052,26 @@ packages: bmp-ts@1.0.9: resolution: {integrity: sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==} + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - 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.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3079,6 +3091,10 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -3103,10 +3119,6 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - call-bind@1.0.8: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} @@ -3125,32 +3137,24 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001709: - resolution: {integrity: sha512-NgL3vUTnDrPCZ3zTahp4fsugQ4dc7EKTSzwQDPEel6DMoMnfH2jhry9n2Zm8onbSR+f/QtKHFOA+iAQu4kbtWA==} + caniuse-lite@1.0.30001751: + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} - engines: {node: '>=12'} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chai@6.2.0: + resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} + engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -3169,15 +3173,12 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-pickle-js@0.2.0: - resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} - - ci-info@4.2.0: - resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} class-transformer@0.5.1: @@ -3186,8 +3187,8 @@ packages: classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - clean-css@5.3.2: - resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} clean-git-ref@2.0.1: @@ -3213,8 +3214,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cli-truncate@3.1.0: @@ -3243,31 +3244,32 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - 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-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-name@2.0.2: + resolution: {integrity: sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A==} + engines: {node: '>=12.20'} - color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + 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'} colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -3276,10 +3278,14 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@12.0.0: - resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} + commander@14.0.1: + resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} + engines: {node: '>=20'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -3308,22 +3314,42 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + cookie@1.0.2: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} - core-js-compat@3.41.0: - resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + core-js-compat@3.46.0: + resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -3339,25 +3365,21 @@ packages: cross-dirname@0.1.0: resolution: {integrity: sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==} - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} hasBin: true cross-spawn@6.0.6: resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} engines: {node: '>=4.8'} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - cross-zip@4.0.0: - resolution: {integrity: sha512-MEzGfZo0rqE10O/B+AEcCSJLZsrWuRUvmqJTqHNqBtALhaJc3E3ixLGLJNTRzEA2K34wbmOHC4fwYs9sVsdcCA==} + cross-zip@4.0.1: + resolution: {integrity: sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==} engines: {node: '>=12.10'} css-color-keywords@1.0.0: @@ -3367,15 +3389,16 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssstyle@4.4.0: - resolution: {integrity: sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==} - engines: {node: '>=18'} - - csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + cssstyle@5.3.1: + resolution: {integrity: sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==} + engines: {node: '>=20'} csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -3384,9 +3407,9 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@6.0.0: + resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} + engines: {node: '>=20'} data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} @@ -3403,8 +3426,8 @@ packages: date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -3422,8 +3445,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3431,33 +3454,23 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - deep-eql@5.0.1: - resolution: {integrity: sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==} + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-extend@0.6.0: @@ -3486,27 +3499,28 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.2: - resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - diff3@0.0.3: resolution: {integrity: sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==} @@ -3544,22 +3558,25 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dompurify@3.1.7: + resolution: {integrity: sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} dprint@0.49.1: resolution: {integrity: sha512-pO9XH79SyXybj2Vhc9ITZMEI8cJkdlQQRoD8oEfPH6Jjpp/7WX5kIgECVd3DBOjjAdCSiW6R47v3gJBx/qZVkw==} hasBin: true - dprint@0.50.0: - resolution: {integrity: sha512-aNJhOQsUS5D9k/YkMUaLLniIpxEBUR0ZwT0RXGQV5YpaGwE2nx6FcKuVkC6wRaZXTr8X0NpV/2HFbcvNuI2jtA==} + dprint@0.50.2: + resolution: {integrity: sha512-+0Fzg+17jsMMUouK00/Fara5YtGOuE76EAJINHB8VpkXHd0n00rMXtw/03qorOgz23eo8Y0UpYvNZBJJo3aNtw==} hasBin: true dugite@2.7.1: @@ -3573,15 +3590,18 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-chrome-web-store@0.12.0: - resolution: {integrity: sha512-CPAd1GOPClZ7IJwWmC0YmpIZhlUU29WpuIicrnu2wllDkaZ2fib4KrWwMIaFE4n5ILsJR12bV8WUxIaltK8BEA==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-chrome-web-store@0.13.0: + resolution: {integrity: sha512-2haYZKPo+Hnkcffxae1QxTu9usYDz0KGl1vUlgTSLYgfuILPVymMoGKDk4RUFG0CJLVS40VLnY+FifT7UxUJFw==} electron-dl@4.0.0: resolution: {integrity: sha512-USiB9816d2JzKv0LiSbreRfTg5lDk3lWh0vlx/gugCO92ZIJkHVH0UM18EHvKeadErP6Xn4yiTphWzYfbA2Ong==} engines: {node: '>=18'} - electron-installer-common@0.10.3: - resolution: {integrity: sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==} + electron-installer-common@0.10.4: + resolution: {integrity: sha512-8gMNPXfAqUE5CfXg8RL0vXpLE9HAaPkgLXVoHE3BMUzogMWenf4LmwQ27BdCUrEhkjrKl+igs2IHJibclR3z3Q==} engines: {node: '>= 10.0.0'} electron-installer-debian@3.2.0: @@ -3618,8 +3638,8 @@ packages: peerDependencies: electron: '>= 2' - electron-to-chromium@1.5.130: - resolution: {integrity: sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA==} + electron-to-chromium@1.5.237: + resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} electron-unhandled@4.0.1: resolution: {integrity: sha512-6BsLnBg+i96eUnbaIFZyYdyfNX3f80/Nlfqy34YEMxXT9JP3ddNsNnUeiOF8ezN4+et4t4D37gjghKTP0V3jyw==} @@ -3628,12 +3648,12 @@ packages: resolution: {integrity: sha512-1mNTwCfkolXl3kMf50yW3vE2lZj0y92P/HYWFBrb+v2S/pCka5mdwN3cagKm458A7NjndSwijynXgcLWRodsVg==} engines: {node: '>=8.0.0'} - electron-winstaller@5.3.0: - resolution: {integrity: sha512-ml77/OmeeLFFc+dk3YCwPQrl8rthwYcAea6mMZPFq7cGXlpWyRmmT0LY73XdCukPnevguXJFs+4Xu+aGHJwFDA==} + electron-winstaller@5.4.0: + resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@36.4.0: - resolution: {integrity: sha512-LLOOZEuW5oqvnjC7HBQhIqjIIJAZCIFjQxltQGLfEC7XFsBoZgQ3u3iFj+Kzw68Xj97u1n57Jdt7P98qLvUibQ==} + electron@38.3.0: + resolution: {integrity: sha512-Wij4AzX4SAV0X/ktq+NrWrp5piTCSS8F6YWh1KAcG+QRtNzyns9XLKERP68nFHIwfprhxF2YCN2uj7nx9DaeJw==} engines: {node: '>= 12.20.55'} hasBin: true @@ -3650,14 +3670,18 @@ packages: enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} ensure-error@2.1.0: @@ -3686,18 +3710,14 @@ packages: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -3734,8 +3754,8 @@ packages: es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - esbuild@0.25.2: - resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + esbuild@0.25.11: + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} engines: {node: '>=18'} hasBin: true @@ -3747,6 +3767,9 @@ packages: resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} engines: {node: '>=12'} + 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'} @@ -3817,8 +3840,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3862,8 +3885,8 @@ packages: peerDependencies: eslint: '>=4.19.1' - eslint-plugin-format@1.0.1: - resolution: {integrity: sha512-Tdns+CDjS+m7QrM85wwRi2yLae88XiWVdIOXjp9mDII0pmTBQlczPCmjpKnjiUIY3yPZNLqb5Ms/A/JXcBF2Dw==} + eslint-plugin-format@1.0.2: + resolution: {integrity: sha512-ySrDaLQZbreNAr/Betq6ocd5Hxy3+LBIfWNV2621EQQ6yGf/ZSLtN2MiM62WO2YQTX+nSFhv332Tpp51q+AkZQ==} peerDependencies: eslint: ^8.40.0 || ^9.0.0 @@ -3881,8 +3904,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-n@17.17.0: - resolution: {integrity: sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==} + eslint-plugin-n@17.23.1: + resolution: {integrity: sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' @@ -3933,8 +3956,8 @@ packages: peerDependencies: eslint: '>=9.22.0' - eslint-plugin-unused-imports@4.1.4: - resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + eslint-plugin-unused-imports@4.3.0: + resolution: {integrity: sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==} peerDependencies: '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 eslint: ^9.0.0 || ^8.0.0 @@ -3950,8 +3973,8 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.3.0: - resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-utils@2.1.0: @@ -3966,12 +3989,12 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + 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.23.0: - resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + eslint@9.38.0: + resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3980,8 +4003,8 @@ packages: jiti: optional: true - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: @@ -4019,6 +4042,14 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -4026,6 +4057,10 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -4041,12 +4076,16 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} ext-list@2.2.2: resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} @@ -4085,31 +4124,15 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fdir@6.4.5: - resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -4159,11 +4182,15 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} find-up@2.1.0: @@ -4188,21 +4215,26 @@ packages: fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -4210,8 +4242,8 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} fs-extra@7.0.1: @@ -4265,6 +4297,10 @@ packages: resolution: {integrity: sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -4277,9 +4313,6 @@ packages: resolution: {integrity: sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==} hasBin: true - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -4308,8 +4341,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.12.0: + resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} gifwrap@0.10.1: resolution: {integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==} @@ -4335,8 +4368,8 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} hasBin: true @@ -4365,14 +4398,10 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@16.0.0: - resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} + 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==} - engines: {node: '>= 0.4'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -4381,6 +4410,9 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -4407,8 +4439,9 @@ packages: resolution: {integrity: sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==} engines: {node: '>=8'} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + 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==} @@ -4439,12 +4472,12 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - hosted-git-info@8.0.2: - resolution: {integrity: sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==} + hosted-git-info@8.1.0: + resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} engines: {node: ^18.17.0 || >=20.5.0} htm@3.1.1: @@ -4471,6 +4504,10 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -4504,11 +4541,8 @@ packages: i18next-fs-backend@2.6.0: resolution: {integrity: sha512-3ZlhNoF9yxnM8pa8bWp5120/Ob6t4lVl1l/tbLmkml/ei3ud8IWySCHt2lrY5xWRlSU5D9IV2sm5bEbGuTqwTw==} - i18next@21.10.0: - resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==} - - i18next@25.2.1: - resolution: {integrity: sha512-+UoXK5wh+VlE1Zy5p6MjcvctHXAhRwQKCxiJD8noKZzIXmnAX8gdHX5fLPA3MEVxEN4vbZkQFy8N0LyD9tUqPw==} + i18next@25.6.0: + resolution: {integrity: sha512-tTn8fLrwBYtnclpL5aPXK/tAYBLWVvoHM1zdfXoRNLcI+RvtMsoZRV98ePlaW3khHYKuNh/Q65W/+NVFUeIwVw==} peerDependencies: typescript: ^5 peerDependenciesMeta: @@ -4523,6 +4557,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} + identity-obj-proxy@3.0.0: resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} engines: {node: '>=4'} @@ -4530,19 +4568,19 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + image-q@4.0.0: resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} - immer@10.1.1: - resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + immer@10.1.3: + resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -4560,8 +4598,8 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} engines: {node: '>=18'} infer-owner@1.0.4: @@ -4592,23 +4630,21 @@ packages: resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} engines: {node: '>=10.13.0'} - inversify@6.2.1: - resolution: {integrity: sha512-W6Xi0icXIiC48RWdT681+GlZVgAKmCrNTiP7hj4IVPFbcxHz+Jj8Gxz5qr/Az2cgcZMYdB8tKIr2e68LUi1LYQ==} - peerDependencies: - reflect-metadata: ~0.2.2 + inversify@7.10.3: + resolution: {integrity: sha512-pqcnrXWOg28LykoR/ndoPQJIgkoxtUgxbkcsH+43nmf1BcM4GfCBKjzC0IncWdQRYOKUdkKhOGAtQfdlhwAEiQ==} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -4616,11 +4652,8 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - 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.1.0: @@ -4670,10 +4703,14 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} + is-git-ref-name-valid@1.0.0: + resolution: {integrity: sha512-2hLTg+7IqMSP9nNp/EVCxzvAOJGsAn0f/cKtF8JaBeivjH5UgE/XZo3iJ0AvibdE7KSF1f/7JbjBTB8Wqgbn/w==} + engines: {node: '>=10'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -4693,8 +4730,8 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} is-number-object@1.1.1: @@ -4713,9 +4750,16 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -4744,10 +4788,6 @@ packages: 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==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -4764,8 +4804,8 @@ packages: resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} isarray@1.0.0: @@ -4785,9 +4825,9 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} - isomorphic-git@1.25.2: - resolution: {integrity: sha512-GHMZVujE76NpZ7Za0Kus/46J6Y7UZsY+xcHMLnFHqvcGbJzkXB1LQCzpYaRq+xQinWGdkcjBDQoE+8Tv3StPCg==} - engines: {node: '>=12'} + isomorphic-git@1.34.0: + resolution: {integrity: sha512-J82yRa/4wm9VuOWSlI37I9Sa+n1gWaSWuKQk8zhpo6RqTW+ZTcK5c/KubLMcuVU3Btc+maRCa3YlRKqqY9q7qQ==} + engines: {node: '>=14.17'} hasBin: true istanbul-lib-coverage@3.2.2: @@ -4802,8 +4842,8 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} iterator.prototype@1.1.5: @@ -4813,8 +4853,8 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} jest-worker@27.5.1: @@ -4825,10 +4865,13 @@ packages: resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} engines: {node: '>=18'} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jose@6.1.0: + resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==} + jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} @@ -4846,12 +4889,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - jsdom@26.1.0: - resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} - engines: {node: '>=18'} + jsdom@27.0.1: + resolution: {integrity: sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==} + engines: {node: '>=20'} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -4905,16 +4945,11 @@ packages: engines: {node: '>=6'} hasBin: true - jsondiffpatch@0.6.0: - resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -4924,14 +4959,18 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} - jsx-ast-utils@3.3.4: - resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} junk@3.1.0: resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} engines: {node: '>=8'} + jwt-decode@4.0.0: + resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} + engines: {node: '>=18'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -4964,8 +5003,8 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@2.0.4: @@ -4992,9 +5031,6 @@ packages: lodash._getnative@3.9.1: resolution: {integrity: sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==} - lodash._reinterpolate@3.0.0: - resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} - lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -5026,12 +5062,8 @@ packages: lodash.set@4.3.2: resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} - lodash.template@4.5.0: - resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} - deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. - - lodash.templatesettings@4.2.0: - resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} @@ -5061,11 +5093,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.0: - resolution: {integrity: sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==} - - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -5077,35 +5106,27 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - luxon@3.2.1: - resolution: {integrity: sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==} - engines: {node: '>=12'} - - luxon@3.5.0: - resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + luxon@3.7.1: + resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} engines: {node: '>=12'} lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -5129,11 +5150,19 @@ packages: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} engines: {node: '>=6'} - markdown-to-jsx@7.7.6: - resolution: {integrity: sha512-/PWFFoKKMidk4Ut06F5hs5sluq1aJ0CGvUJWsnCK6hx/LPM8vlhvKAxtGHJ+U+V2Il2wmnfO6r81ICD3xZRVaw==} + markdown-to-jsx@7.7.16: + resolution: {integrity: sha512-2YLPWjSAdJqVCTIQtP3zPPYfLUWuu74Ms7E9vr/RqLTWzPT5clZWNIlgxyzUKD/Gv+P12TNgpnRgtaNNj/vn8A==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' + peerDependenciesMeta: + react: + optional: true + + marked@14.0.0: + resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==} + engines: {node: '>= 18'} + hasBin: true matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} @@ -5154,6 +5183,13 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + mem@4.3.0: resolution: {integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==} engines: {node: '>=6'} @@ -5161,17 +5197,18 @@ packages: memize@2.1.1: resolution: {integrity: sha512-8Nl+i9S5D6KXnruM03Jgjb+LwSupvR13WBr4hJegaaEyobvowCVupi79y2WSiWvO1mzBWxPwEYE5feCe8vyA5w==} - memoize-one@4.0.3: - resolution: {integrity: sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==} - memory-fs@0.5.0: resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - menubar@9.5.1: - resolution: {integrity: sha512-swfgKal+DTgJINay36X+LGBSqyFKS4d9FyJ2w0s/4MtO7/UGplEZqluLTnq4xgLNxNjMWhXycOELP+rRYpTagA==} + menubar@9.5.2: + resolution: {integrity: sha512-yUn4jCMPOiNuqxplEE+SITlTX+Wy92ZNZaG5tsTczEvVT1El8plHR3kinOTfUPwfQcAYcWE0SLiBM41z/hS6pg==} peerDependencies: - electron: '>=9.0.0 <33.0.0' + electron: '>=9.0.0 <35.0.0' + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5188,10 +5225,18 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -5213,8 +5258,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} engines: {node: 20 || >=22} minimatch@3.1.2: @@ -5250,10 +5295,6 @@ packages: resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - minipass-fetch@4.0.0: - resolution: {integrity: sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==} - engines: {node: ^18.17.0 || >=20.5.0} - minipass-fetch@4.0.1: resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -5286,12 +5327,8 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - minizlib@3.0.1: - resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} - engines: {node: '>= 18'} - - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mitt@3.0.1: @@ -5309,32 +5346,24 @@ packages: engines: {node: '>=10'} hasBin: true - mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} - engines: {node: '>=10'} - hasBin: true - mkdirp@3.0.1: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true - moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - monaco-editor@0.52.2: - resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==} + monaco-editor@0.54.0: + resolution: {integrity: sha512-hx45SEUoLatgWxHKCmlLJH81xBo0uXP4sRkESUpmDQevfi+e7K1VuiSprK6UpQ8u4zOcKNiH0pMvHvlMWA/4cw==} - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -5350,21 +5379,16 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.9: - resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} - engines: {node: ^18 || >=20} - hasBin: true - - nanoid@5.1.5: - resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} engines: {node: ^18 || >=20} hasBin: true napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - napi-postinstall@0.2.4: - resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -5385,8 +5409,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - new-github-issue-url@1.0.0: - resolution: {integrity: sha512-wa9jlUFg3v6S3ddijQiB18SY4u9eJYcUe5sHa+6SB8m1UUbtX+H/bBglxOLnhhF1zIHuhWXnKBAa8kBeKRIozQ==} + new-github-issue-url@1.1.0: + resolution: {integrity: sha512-R4r7f3Q/SzlI4Q/J/0KPRf+bwxYk7BiaYEy0zTVqpikA5F1CwCHgwVReKhpYRlG1besvLdtABQGQRhFy8CyT3g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} nice-try@1.0.5: @@ -5395,12 +5419,12 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.75.0: - resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} + node-abi@3.78.0: + resolution: {integrity: sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==} engines: {node: '>=10'} - node-abi@4.9.0: - resolution: {integrity: sha512-0isb3h+AXUblx5Iv0mnYy2WsErH+dk2e9iXJXdKAtS076Q5hP+scQhp6P4tvDeVlOBlG3ROKvkpQHtbORllq2A==} + node-abi@4.14.0: + resolution: {integrity: sha512-E4n91K4Nk1Rch2KzD+edU2bfZTP4W42GypAUDXU4vu1A+4u9PvUNDkGI0dXbsy8ZeF3WGj0SD/uHxnXD/sW+3w==} engines: {node: '>=22.12.0'} node-addon-api@3.2.1: @@ -5414,8 +5438,8 @@ packages: engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead - node-fetch@2.6.12: - resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -5427,8 +5451,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-gyp@11.2.0: - resolution: {integrity: sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==} + node-gyp@11.5.0: + resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true @@ -5438,8 +5462,8 @@ packages: peerDependencies: webpack: ^5.0.0 - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.26: + resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} nopt@6.0.0: resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} @@ -5462,8 +5486,8 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - npm-package-arg@12.0.1: - resolution: {integrity: sha512-aDxjFfPV3Liw0WOBWlyZLMBqtbgbg03rmGvHDJa2Ttv7tIz+1oB5qWec4psCDFZcZi9b5XdGkPdQiJxOPzvQRQ==} + npm-package-arg@12.0.2: + resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} engines: {node: ^18.17.0 || >=20.5.0} npm-registry-fetch@18.0.2: @@ -5478,8 +5502,10 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + oauth2-mock-server@8.1.0: + resolution: {integrity: sha512-Zi0VMDVCsavanLfW9X82uoniPS1kFGkOKFKKQF0NdrEwG4Uap/ylhYtRGPujZUJ0CmG3h73TsF/sefpCLTaKsQ==} + engines: {node: ^20.19 || ^22.12 || ^24} + hasBin: true object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -5493,18 +5519,10 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} @@ -5525,18 +5543,23 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - ollama-ai-provider@1.2.0: - resolution: {integrity: sha512-jTNFruwe3O/ruJeppI/quoOUxG7NA6blG3ZyQj3lei4+NnJo7bi3eIRWqlVpRlu/mbzbFXeJSBuYQWF6pzGKww==} + oidc-client-ts@3.3.0: + resolution: {integrity: sha512-t13S540ZwFOEZKLYHJwSfITugupW4uYLwuQSSXyKH/wHwZ+7FvgHE7gnNJh1YQIZ1Yd1hKSRjqeXGSUtS0r9JA==} + engines: {node: '>=18'} + + ollama-ai-provider-v2@1.5.1: + resolution: {integrity: sha512-5R3z7Y+mm8VEtoq+rIoIqkEy83oYM3DXX6Nyrn6yofYvYl56BCoJMNwXsPrpmCI0O4fN/gAIDTLpznYMRGzZ5g==} engines: {node: '>=18'} peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true + zod: ^4.0.16 omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -5547,8 +5570,8 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - 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: @@ -5645,15 +5668,16 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} - partial-json@0.1.7: - resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -5696,6 +5720,9 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + path-type@2.0.0: resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} engines: {node: '>=4'} @@ -5707,8 +5734,8 @@ packages: 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'} pbf@4.0.1: @@ -5733,10 +5760,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -5757,13 +5780,13 @@ packages: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true - playwright-core@1.53.0: - resolution: {integrity: sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==} + playwright-core@1.56.1: + resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} engines: {node: '>=18'} hasBin: true - playwright@1.53.0: - resolution: {integrity: sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==} + playwright@1.56.1: + resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==} engines: {node: '>=18'} hasBin: true @@ -5783,8 +5806,8 @@ packages: resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} engines: {node: '>=14.19.0'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss-value-parser@4.2.0: @@ -5803,8 +5826,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - preact@10.26.6: - resolution: {integrity: sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==} + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} @@ -5819,8 +5842,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} hasBin: true @@ -5839,6 +5862,10 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -5858,30 +5885,34 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-expr@2.0.5: - resolution: {integrity: sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==} + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} protocol-buffers-schema@3.6.0: resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pupa@3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + pupa@3.3.0: + resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} engines: {node: '>=12.20'} + 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==} @@ -5892,19 +5923,27 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.1: + resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} + engines: {node: '>= 0.10'} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-dom@19.0.0: - resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} peerDependencies: - react: ^19.0.0 + react: ^19.2.0 - react-i18next@15.5.2: - resolution: {integrity: sha512-ePODyXgmZQAOYTbZXQn5rRsSBu3Gszo69jxW6aKmlSgxKAI1fOhDwSu6bT4EKHciWPKQ7v7lPrjeiadR6Gi+1A==} + react-i18next@16.1.3: + resolution: {integrity: sha512-LnHvU73n/GDMWSlK8WJQHEYtKSm5g3lpsrFoxyxp+sgJiI2SZg54U3lnt8zFfo9DOohaPbe5SsjquA0MuuvBqg==} peerDependencies: - i18next: '>= 23.2.3' + i18next: '>= 25.5.2' react: '>= 16.8.0' react-dom: '*' react-native: '*' @@ -5923,11 +5962,11 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-is@19.1.0: - resolution: {integrity: sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==} + react-is@19.2.0: + resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==} react-masonry-css@1.0.16: resolution: {integrity: sha512-KSW0hR2VQmltt/qAa3eXOctQDyOu7+ZBevtKgpNDSzT7k5LA/0XntNa9z9HKCdz3QlxmJHglTZ18e4sX4V8zZQ==} @@ -5961,15 +6000,14 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react-window@1.8.11: - resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} - engines: {node: '>8.0.0'} + react-window@2.2.1: + resolution: {integrity: sha512-jrUMKDLW1B4yX4OU0QjdytGgWIg6wqWfiTe86lUhFsCUltkNNB/zYxFU0DTKAzBOMRbkpLVWS1IkLvQeO4L7nw==} peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 - react@19.0.0: - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} read-binary-file-arch@1.0.6: @@ -5999,8 +6037,12 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-web-to-node-stream@3.0.2: - resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readable-web-to-node-stream@3.0.4: + resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} engines: {node: '>=8'} rechoir@0.8.0: @@ -6011,10 +6053,6 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - reflect-metadata@0.2.1: - resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} - deprecated: This version has a critical bug in fallback handling. Please upgrade to reflect-metadata@0.2.2 or newer. - reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -6064,10 +6102,13 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - resedit@2.0.2: - resolution: {integrity: sha512-UKTnq602iVe+W5SyRAQx/WdWMnlDiONfXBLFg/ur4QE4EQQ8eP7Jgm5mNXdK12kKawk1vvXPja2iXKqZiGDW6Q==} + resedit@2.0.3: + resolution: {integrity: sha512-oTeemxwoMuxxTYxXUwjkrOPfngTQehlv0/HoYFNkB4uzsP1Un1A9nI8JQKGOFkxpqkC7qkMs0lUsGrvUlbLNUA==} engines: {node: '>=14', npm: '>=7'} + reselect@5.1.1: + resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -6075,22 +6116,14 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve-pkg@2.0.0: - resolution: {integrity: sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==} - engines: {node: '>=8'} - resolve-protobuf-schema@2.1.0: resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -6113,12 +6146,12 @@ packages: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 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'} - rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} @@ -6130,10 +6163,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} @@ -6143,15 +6172,19 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - rollup@4.43.0: - resolution: {integrity: sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==} + rollup@4.52.5: + resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rotating-file-stream@3.2.5: - resolution: {integrity: sha512-T8iBxUA4SookMTU97cIHUPck7beLOvN4g+y4db9E2eLn54OFsdp4qMnxuqmmJ05lcQHzueEVnPRykxfnPG948g==} + rotating-file-stream@3.2.7: + resolution: {integrity: sha512-SVquhBEVvRFY+nWLUc791Y0MIlyZrEClRZwZFLLRgJKldHyV1z4e2e/dp9LPqCS3AM//uq/c3PnOFgjqnm5P+A==} engines: {node: '>=14.0'} + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -6182,33 +6215,30 @@ packages: safe-regex@2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.25.0: - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} search-insights@2.17.3: resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - seed-random@2.2.0: resolution: {integrity: sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==} @@ -6223,16 +6253,20 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + serialize-error@12.0.0: resolution: {integrity: sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==} engines: {node: '>=18'} @@ -6248,6 +6282,10 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} @@ -6263,8 +6301,12 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} hasBin: true shallowequal@1.1.0: @@ -6308,10 +6350,6 @@ packages: signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} - engines: {node: '>=14'} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -6322,26 +6360,23 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - simple-xml-to-json@1.2.3: resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} engines: {node: '>=20.12.2'} - simplebar-core@1.3.1: - resolution: {integrity: sha512-d2JFNivCgxykWz9//MhUbpmxXmL4qDfZpUulmeY4KE1cq2amr+6rZhIOv6JyCprWP3yFlayYb0J5ApKV81r6Sg==} + simplebar-core@1.3.2: + resolution: {integrity: sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w==} - simplebar-react@3.3.0: - resolution: {integrity: sha512-sxzy+xRuU41He4tT4QLGYutchtOuye/xxVeq7xhyOiwMiHNK1ZpvbOTyy+7P0i7gfpXLGTJ8Bep8+4Mhdgtz/g==} + simplebar-react@3.3.2: + resolution: {integrity: sha512-ZsgcQhKLtt5ra0BRIJeApfkTBQCa1vUPA/WXI4HcYReFt+oCEOvdVz6rR/XsGJcKxTlCRPmdGx1uJIUChupo+A==} peerDependencies: react: '>=16.8.0' - simplebar@6.3.1: - resolution: {integrity: sha512-8xGpty5YCvzNAJLil8yn81x1WLChu/Wce+jYOyIuT3uZvl5FoYodUH97D7GllZSKUolFdXQg+aW1nMMIWPN/PA==} + simplebar@6.3.2: + resolution: {integrity: sha512-l4P1Oma0nply0g+pkrkwfC1SF5WDnIHrgiQDXSDzIdjngUDLkPgZcPGKrOvuFeXoSensfKijjIjDlUJSEp+mLQ==} - sirv@3.0.1: - resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} slash@3.0.0: @@ -6364,8 +6399,8 @@ packages: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.4: - resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sort-keys-length@1.0.1: @@ -6394,26 +6429,23 @@ packages: spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + 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.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + spdx-license-ids@3.0.22: + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sprintf-js@1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} - sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sql-highlight@6.0.0: - resolution: {integrity: sha512-+fLpbAbWkQ+d0JEchJT/NrRRXbYRNbG15gFpANx73EwxQB1PRjj+k/OI0GTU0J63g8ikGkJECQp9z8XEJZvPRw==} + sql-highlight@6.1.0: + resolution: {integrity: sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==} engines: {node: '>=14'} sqlite-vec-darwin-arm64@0.1.7-alpha.2: @@ -6467,8 +6499,20 @@ packages: state-local@1.0.7: resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} @@ -6515,8 +6559,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: @@ -6535,8 +6579,8 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} strip-json-comments@2.0.1: @@ -6547,8 +6591,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} strip-outer@1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} @@ -6558,8 +6602,8 @@ packages: resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} engines: {node: '>=10'} - stubborn-fs@1.2.4: - resolution: {integrity: sha512-KRa4nIRJ8q6uApQbPwYZVhOof8979fw4xbajBWa5kPJFa4nyY3aFaMWVyIVCDnkNCCG/3HLipUZ4QaNlYsmX1w==} + stubborn-fs@1.2.5: + resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} styled-components@6.1.18: resolution: {integrity: sha512-Mvf3gJFzZCkhjY2Y/Fx9z1m3dxbza0uI9H1CbNZm/jSHCojzJhQ0R7bByrlFJINnMzz/gPulpoFFGymNwrsMcw==} @@ -6590,24 +6634,23 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - swr@2.3.3: - resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + synckit@0.9.3: + resolution: {integrity: sha512-JJoOEKTfL1urb1mDoEblhD9NhEbWmq9jHEMEnxoC4ujUaZ4itA8vKgwkFAyNClgxplLi9tsUKX+EduK0p/l7sg==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - tar-fs@2.1.3: - resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -6617,16 +6660,16 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} temp@0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} - terser-webpack-plugin@5.3.9: - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + terser-webpack-plugin@5.3.14: + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -6641,8 +6684,8 @@ packages: uglify-js: optional: true - terser@5.18.2: - resolution: {integrity: sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==} + terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} engines: {node: '>=10'} hasBin: true @@ -6660,12 +6703,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - throttleit@2.1.0: - resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} - engines: {node: '>=18'} - - tiddlywiki@5.3.7: - resolution: {integrity: sha512-BVVmqGUj47BC+wFZgNLU5qKuNJbTnWWTOB9mEELHtovdKaAchMF5DEXFvZEl0SOTjhF29ljecKhjla19vmoHPA==} + tiddlywiki@5.3.8: + resolution: {integrity: sha512-T25acZfdhAX/lUVPY/9SXo7bMJKgSaMs5PDOb83S2WKbTCD7DnOUQ4aC3qDy0j5XqlCn4ih3mzMWct3xnQx+Mw==} engines: {node: '>=0.8.2'} hasBin: true @@ -6684,35 +6723,27 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} - - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.0: - resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@2.0.0: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.86: - resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + tldts-core@7.0.17: + resolution: {integrity: sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==} - tldts@6.1.86: - resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + tldts@7.0.17: + resolution: {integrity: sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==} hasBin: true tmp-promise@3.0.3: @@ -6722,14 +6753,22 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + token-types@4.2.1: resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} engines: {node: '>=10'} @@ -6741,16 +6780,16 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@5.1.2: - resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} engines: {node: '>=16'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} - engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} trim-repeated@1.0.0: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} @@ -6760,8 +6799,8 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -6772,6 +6811,15 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-declaration-location@1.0.7: + resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} + peerDependencies: + typescript: '>=4.0.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -6792,6 +6840,9 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -6804,6 +6855,11 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsx@4.20.6: + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} + engines: {node: '>=18.0.0'} + hasBin: true + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -6838,6 +6894,14 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.1.0: + resolution: {integrity: sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg==} + engines: {node: '>=20'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -6854,15 +6918,14 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typeorm@0.3.22: - resolution: {integrity: sha512-P/Tsz3UpJ9+K0oryC0twK5PO27zejLYYwMsE8SISfZc1lVHX+ajigiOyWsKbuXpEFMjD9z7UjLzY3+ElVOMMDA==} + typeorm@0.3.27: + resolution: {integrity: sha512-pNV1bn+1n8qEe8tUNsNdD8ejuPcMAg47u2lUGnbsajiNUr3p2Js1XLKQjBMH0yMRMDfdX8T+fIRejFmIwy9x4A==} engines: {node: '>=16.13.0'} hasBin: true peerDependencies: '@google-cloud/spanner': ^5.18.0 || ^6.0.0 || ^7.0.0 - '@sap/hana-client': ^2.12.25 - better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 - hdb-pool: ^0.1.6 + '@sap/hana-client': ^2.14.22 + better-sqlite3: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 ioredis: ^5.0.4 mongodb: ^5.8.0 || ^6.0.0 mssql: ^9.1.1 || ^10.0.1 || ^11.0.1 @@ -6871,7 +6934,7 @@ packages: pg: ^8.5.1 pg-native: ^3.0.0 pg-query-stream: ^4.0.0 - redis: ^3.1.1 || ^4.0.0 + redis: ^3.1.1 || ^4.0.0 || ^5.0.14 reflect-metadata: ^0.1.14 || ^0.2.0 sql.js: ^1.4.0 sqlite3: ^5.0.3 @@ -6884,8 +6947,6 @@ packages: optional: true better-sqlite3: optional: true - hdb-pool: - optional: true ioredis: optional: true mongodb: @@ -6913,12 +6974,12 @@ packages: typeorm-aurora-data-api-driver: optional: true - typescript-eslint@8.29.0: - resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==} + typescript-eslint@8.46.2: + resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' typescript-styled-is@2.1.0: resolution: {integrity: sha512-hzr9NZXkyDzRBomktzKBQDFzS9DkNoapABFlcytvZdruzEPDn7edgpfuPNz8EEzizmZqTtY+LfpNy7+d5ojnkg==} @@ -6932,8 +6993,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -6946,12 +7007,15 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -6976,21 +7040,25 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unplugin-swc@1.5.5: - resolution: {integrity: sha512-BahYtYvQ/KSgOqHoy5FfQgp/oZNAB7jwERxNeFVeN/PtJhg4fpK/ybj9OwKtqGPseOadS7+TGbq6tH2DmDAYvA==} + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-swc@1.5.8: + resolution: {integrity: sha512-6qVAQsCn/AMFiw7XGXkNC/q/Or4OpL0zRPertzLT1BoigjOQp0ktPxDWY4lc51FGwVbzW4V1BURaal1rpbJwSg==} peerDependencies: '@swc/core': ^1.2.108 - unplugin@2.3.5: - resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==} + unplugin@2.3.10: + resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} engines: {node: '>=18.12.0'} - unrs-resolver@1.7.13: - resolution: {integrity: sha512-QUjCYKAgrdJpf3wA73zWjOrO7ra19lfnwQ8HRkNOLah5AVDqOS38UunnyhzsSL8AE+2/AGnAHxlr8cGshCP35A==} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} unused-filename@4.0.1: resolution: {integrity: sha512-ZX6U1J04K1FoSUeoX1OicAhw4d0aro2qo+L8RhJkiGTNtBNkd/Fi1Wxoc9HzcVu6HfOzm0si/N15JjxFmD1z6A==} @@ -7014,8 +7082,8 @@ packages: peerDependencies: react: '>=16.13' - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -7032,19 +7100,16 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + uuid@11.0.5: + resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true v8-compile-cache-lib@3.0.1: @@ -7053,8 +7118,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@6.0.0: - resolution: {integrity: sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==} + validate-npm-package-name@6.0.2: + resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} validate.io-array@1.0.6: @@ -7072,17 +7137,21 @@ packages: validate.io-number@1.0.3: resolution: {integrity: sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vite-bundle-analyzer@1.2.3: resolution: {integrity: sha512-8nhwDGHWMKKgg6oegAOpDgTT7/yzTVzeYzLF4y8WBJoYu9gO7h29UpHiQnXD2rAvfQzDy5Wqe/Za5cgqhnxi5g==} hasBin: true - vite-node@3.2.3: - resolution: {integrity: sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==} + 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@7.1.9: - resolution: {integrity: sha512-4nVGliEpxmhCL8DslSAUdxlB6+SMrhB0a1v5ijlh1xB1nEPuy1mxaHxysVucLHuWryAxLWg6a5ei+U4TLn/rFg==} + vite@7.1.11: + resolution: {integrity: sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -7121,16 +7190,16 @@ packages: yaml: optional: true - vitest@3.2.3: - resolution: {integrity: sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==} + 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/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.3 - '@vitest/ui': 3.2.3 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -7157,33 +7226,33 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + webidl-conversions@8.0.0: + resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + engines: {node: '>=20'} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.88.1: - resolution: {integrity: sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==} + webpack@5.102.1: + resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -7200,15 +7269,15 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - when-exit@2.1.0: - resolution: {integrity: sha512-H85ulNwUBU1e6PGxkWUDgxnbohSXD++ah6Xw1VHAN7CtypcbZaC4aYjQ+C2PMVaDkURDuOinNAT+Lnz3utWXxQ==} + when-exit@2.1.4: + resolution: {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} @@ -7222,10 +7291,6 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.19: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} @@ -7259,12 +7324,12 @@ packages: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} - winston@3.17.0: - resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==} + winston@3.18.3: + resolution: {integrity: sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==} engines: {node: '>= 12.0.0'} - word-wrap@1.2.4: - resolution: {integrity: sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} wouter@3.7.1: @@ -7287,8 +7352,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.2: - resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7339,12 +7404,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} hasBin: true @@ -7379,19 +7440,20 @@ packages: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} - yup@1.2.0: - resolution: {integrity: sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ==} + yup@1.7.0: + resolution: {integrity: sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==} - zod-to-json-schema@3.24.5: - resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} - peerDependencies: - zod: ^3.24.1 + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@3.25.28: - resolution: {integrity: sha512-/nt/67WYKnr5by3YS7LroZJbtcCBurDKKPBPWWzaxvVCGuG/NOsiKkrjoOhI8mJ+SQUXEbUzeB3S+6XDUEEj7Q==} + zod@4.1.12: + resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} - zustand@5.0.4: - resolution: {integrity: sha512-39VFTN5InDtMd28ZhjLyuTnlytDr9HfwO512Ai4I8ZABCoyAj4F1+sr7sD1jP/+p7k77Iko0Pb5NhgBFDCX0kQ==} + zrender@6.0.0: + resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} + + zustand@5.0.8: + resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -7408,124 +7470,101 @@ packages: use-sync-external-store: optional: true - zx@8.5.5: - resolution: {integrity: sha512-kzkjV3uqyEthw1IBDbA7Co2djji77vCP1DRvt58aYSMwiX4nyvAkFE8OBSEsOUbDJAst0Yo4asNvMTGG5HGPXA==} + zx@8.8.5: + resolution: {integrity: sha512-SNgDF5L0gfN7FwVOdEFguY3orU5AkfFZm9B5YSHog/UDHv+lvmd82ZAsOenOkQixigwH2+yyH198AwNdKhj+RA==} engines: {node: '>= 12.17.0'} hasBin: true snapshots: - '@0no-co/graphql.web@1.0.7': {} + '@0no-co/graphql.web@1.2.0': {} - '@aashutoshrathi/word-wrap@1.2.6': {} + '@adobe/css-tools@4.4.4': {} - '@adobe/css-tools@4.4.3': {} - - '@ai-sdk/anthropic@1.2.11(zod@3.25.28)': + '@ai-sdk/anthropic@2.0.35(zod@4.1.12)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - zod: 3.25.28 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/deepseek@0.2.14(zod@3.25.28)': + '@ai-sdk/deepseek@1.0.23(zod@4.1.12)': dependencies: - '@ai-sdk/openai-compatible': 0.2.14(zod@3.25.28) - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - zod: 3.25.28 + '@ai-sdk/openai-compatible': 1.0.22(zod@4.1.12) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/openai-compatible@0.2.14(zod@3.25.28)': + '@ai-sdk/gateway@2.0.0(zod@4.1.12)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - zod: 3.25.28 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) + '@vercel/oidc': 3.0.3 + zod: 4.1.12 - '@ai-sdk/openai@1.3.22(zod@3.25.28)': + '@ai-sdk/openai-compatible@1.0.22(zod@4.1.12)': dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - zod: 3.25.28 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/provider-utils@2.2.4(zod@3.25.28)': + '@ai-sdk/openai@2.0.53(zod@4.1.12)': dependencies: - '@ai-sdk/provider': 1.1.0 - nanoid: 3.3.11 - secure-json-parse: 2.7.0 - zod: 3.25.28 + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) + zod: 4.1.12 - '@ai-sdk/provider-utils@2.2.8(zod@3.25.28)': + '@ai-sdk/provider-utils@3.0.12(zod@4.1.12)': dependencies: - '@ai-sdk/provider': 1.1.3 - nanoid: 3.3.11 - secure-json-parse: 2.7.0 - zod: 3.25.28 + '@ai-sdk/provider': 2.0.0 + '@standard-schema/spec': 1.0.0 + eventsource-parser: 3.0.6 + zod: 4.1.12 - '@ai-sdk/provider@1.1.0': + '@ai-sdk/provider@2.0.0': dependencies: json-schema: 0.4.0 - '@ai-sdk/provider@1.1.3': + '@algolia/autocomplete-core@1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3)': dependencies: - json-schema: 0.4.0 - - '@ai-sdk/react@1.2.12(react@19.0.0)(zod@3.25.28)': - dependencies: - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.28) - react: 19.0.0 - swr: 2.3.3(react@19.0.0) - throttleit: 2.1.0 - optionalDependencies: - zod: 3.25.28 - - '@ai-sdk/ui-utils@1.2.11(zod@3.25.28)': - dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - zod: 3.25.28 - zod-to-json-schema: 3.24.5(zod@3.25.28) - - '@algolia/autocomplete-core@1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-js@1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3)': + '@algolia/autocomplete-js@1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) - '@algolia/autocomplete-shared': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) + '@algolia/autocomplete-core': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) + '@algolia/autocomplete-shared': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) '@algolia/client-search': 5.27.0 algoliasearch: 5.26.0 htm: 3.1.1 - preact: 10.26.6 + preact: 10.27.2 transitivePeerDependencies: - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) + '@algolia/autocomplete-shared': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)': + '@algolia/autocomplete-preset-algolia@1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)': dependencies: - '@algolia/autocomplete-shared': 1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) + '@algolia/autocomplete-shared': 1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0) '@algolia/client-search': 5.27.0 algoliasearch: 5.26.0 - '@algolia/autocomplete-shared@1.19.1(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)': + '@algolia/autocomplete-shared@1.19.4(@algolia/client-search@5.27.0)(algoliasearch@5.26.0)': dependencies: '@algolia/client-search': 5.27.0 algoliasearch: 5.26.0 - '@algolia/autocomplete-theme-classic@1.19.1': {} + '@algolia/autocomplete-theme-classic@1.19.4': {} '@algolia/client-abtesting@5.26.0': dependencies: @@ -7627,31 +7666,41 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@asamuzakjp/css-color@3.2.0': + '@asamuzakjp/css-color@4.0.5': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - lru-cache: 10.4.3 + lru-cache: 11.2.2 + + '@asamuzakjp/dom-selector@6.7.2': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.2 + + '@asamuzakjp/nwsapi@2.3.9': {} '@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.357.0 - '@aws-sdk/util-locate-window': 3.310.0 + '@aws-sdk/types': 3.910.0 + '@aws-sdk/util-locate-window': 3.893.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.357.0 + '@aws-sdk/types': 3.910.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -7660,15 +7709,16 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.357.0 + '@aws-sdk/types': 3.910.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/types@3.357.0': + '@aws-sdk/types@3.910.0': dependencies: + '@smithy/types': 4.8.0 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.310.0': + '@aws-sdk/util-locate-window@3.893.0': dependencies: tslib: 2.8.1 @@ -7693,7 +7743,7 @@ snapshots: '@babel/types': 7.28.4 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -7712,7 +7762,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.24.4 + browserslist: 4.26.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -7747,10 +7797,6 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.4 - '@babel/parser@7.27.5': - dependencies: - '@babel/types': 7.27.6 - '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 @@ -7765,9 +7811,7 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.27.1': {} - - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: @@ -7783,15 +7827,10 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.27.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -7808,16 +7847,16 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.0.2': {} + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 + '@csstools/color-helpers': 5.1.0 '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -7826,6 +7865,10 @@ snapshots: dependencies: '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + '@csstools/css-tokenizer@3.0.4': {} '@cucumber/ci-environment@10.0.1': {} @@ -7834,27 +7877,28 @@ snapshots: dependencies: regexp-match-indices: 1.0.2 - '@cucumber/cucumber@11.2.0': + '@cucumber/cucumber@12.2.0': dependencies: '@cucumber/ci-environment': 10.0.1 '@cucumber/cucumber-expressions': 18.0.1 - '@cucumber/gherkin': 30.0.4 - '@cucumber/gherkin-streams': 5.0.1(@cucumber/gherkin@30.0.4)(@cucumber/message-streams@4.0.1(@cucumber/messages@27.0.2))(@cucumber/messages@27.0.2) - '@cucumber/gherkin-utils': 9.0.0 - '@cucumber/html-formatter': 21.7.0(@cucumber/messages@27.0.2) - '@cucumber/junit-xml-formatter': 0.7.1(@cucumber/messages@27.0.2) - '@cucumber/message-streams': 4.0.1(@cucumber/messages@27.0.2) - '@cucumber/messages': 27.0.2 - '@cucumber/tag-expressions': 6.1.1 + '@cucumber/gherkin': 34.0.0 + '@cucumber/gherkin-streams': 5.0.1(@cucumber/gherkin@34.0.0)(@cucumber/message-streams@4.0.1(@cucumber/messages@28.1.0))(@cucumber/messages@28.1.0) + '@cucumber/gherkin-utils': 9.2.0 + '@cucumber/html-formatter': 21.14.0(@cucumber/messages@28.1.0) + '@cucumber/junit-xml-formatter': 0.8.1(@cucumber/messages@28.1.0) + '@cucumber/message-streams': 4.0.1(@cucumber/messages@28.1.0) + '@cucumber/messages': 28.1.0 + '@cucumber/pretty-formatter': 1.0.1(@cucumber/cucumber@12.2.0)(@cucumber/messages@28.1.0) + '@cucumber/tag-expressions': 6.2.0 assertion-error-formatter: 3.0.0 capital-case: 1.0.4 chalk: 4.1.2 - cli-table3: 0.6.3 - commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) + cli-table3: 0.6.5 + commander: 14.0.1 + debug: 4.4.3(supports-color@8.1.1) error-stack-parser: 2.1.4 figures: 3.2.0 - glob: 10.4.5 + glob: 11.0.3 has-ansi: 4.0.1 indent-string: 4.0.0 is-installed-globally: 0.4.0 @@ -7862,137 +7906,151 @@ snapshots: knuth-shuffle-seeded: 1.0.6 lodash.merge: 4.6.2 lodash.mergewith: 4.6.2 - luxon: 3.2.1 + luxon: 3.7.1 mime: 3.0.0 - mkdirp: 2.1.6 + mkdirp: 3.0.1 mz: 2.7.0 progress: 2.0.3 read-package-up: 11.0.0 - resolve-pkg: 2.0.0 - semver: 7.5.3 + semver: 7.7.2 string-argv: 0.3.1 supports-color: 8.1.1 - tmp: 0.2.3 type-fest: 4.41.0 util-arity: 1.1.0 - yaml: 2.3.1 - yup: 1.2.0 + yaml: 2.8.1 + yup: 1.7.0 - '@cucumber/gherkin-streams@5.0.1(@cucumber/gherkin@30.0.4)(@cucumber/message-streams@4.0.1(@cucumber/messages@27.0.2))(@cucumber/messages@27.0.2)': + '@cucumber/gherkin-streams@5.0.1(@cucumber/gherkin@34.0.0)(@cucumber/message-streams@4.0.1(@cucumber/messages@28.1.0))(@cucumber/messages@28.1.0)': dependencies: - '@cucumber/gherkin': 30.0.4 - '@cucumber/message-streams': 4.0.1(@cucumber/messages@27.0.2) - '@cucumber/messages': 27.0.2 + '@cucumber/gherkin': 34.0.0 + '@cucumber/message-streams': 4.0.1(@cucumber/messages@28.1.0) + '@cucumber/messages': 28.1.0 commander: 9.1.0 source-map-support: 0.5.21 - '@cucumber/gherkin-utils@9.0.0': + '@cucumber/gherkin-utils@9.2.0': dependencies: - '@cucumber/gherkin': 28.0.0 - '@cucumber/messages': 24.1.0 + '@cucumber/gherkin': 31.0.0 + '@cucumber/messages': 27.2.0 '@teppeis/multimaps': 3.0.0 - commander: 12.0.0 + commander: 13.1.0 source-map-support: 0.5.21 - '@cucumber/gherkin@28.0.0': + '@cucumber/gherkin@31.0.0': dependencies: - '@cucumber/messages': 24.1.0 + '@cucumber/messages': 26.0.1 - '@cucumber/gherkin@30.0.4': + '@cucumber/gherkin@34.0.0': dependencies: - '@cucumber/messages': 24.1.0 + '@cucumber/messages': 28.1.0 - '@cucumber/html-formatter@21.7.0(@cucumber/messages@27.0.2)': + '@cucumber/html-formatter@21.14.0(@cucumber/messages@28.1.0)': dependencies: - '@cucumber/messages': 27.0.2 + '@cucumber/messages': 28.1.0 - '@cucumber/junit-xml-formatter@0.7.1(@cucumber/messages@27.0.2)': + '@cucumber/junit-xml-formatter@0.8.1(@cucumber/messages@28.1.0)': dependencies: - '@cucumber/messages': 27.0.2 - '@cucumber/query': 13.0.2(@cucumber/messages@27.0.2) + '@cucumber/messages': 28.1.0 + '@cucumber/query': 13.6.0(@cucumber/messages@28.1.0) '@teppeis/multimaps': 3.0.0 - luxon: 3.5.0 + luxon: 3.7.1 xmlbuilder: 15.1.1 - '@cucumber/message-streams@4.0.1(@cucumber/messages@27.0.2)': + '@cucumber/message-streams@4.0.1(@cucumber/messages@28.1.0)': dependencies: - '@cucumber/messages': 27.0.2 + '@cucumber/messages': 28.1.0 - '@cucumber/messages@24.1.0': - dependencies: - '@types/uuid': 9.0.8 - class-transformer: 0.5.1 - reflect-metadata: 0.2.1 - uuid: 9.0.1 - - '@cucumber/messages@27.0.2': + '@cucumber/messages@26.0.1': dependencies: '@types/uuid': 10.0.0 class-transformer: 0.5.1 reflect-metadata: 0.2.2 uuid: 10.0.0 - '@cucumber/query@13.0.2(@cucumber/messages@27.0.2)': + '@cucumber/messages@27.2.0': dependencies: - '@cucumber/messages': 27.0.2 + '@types/uuid': 10.0.0 + class-transformer: 0.5.1 + reflect-metadata: 0.2.2 + uuid: 11.0.5 + + '@cucumber/messages@28.1.0': + dependencies: + '@types/uuid': 10.0.0 + class-transformer: 0.5.1 + reflect-metadata: 0.2.2 + uuid: 11.1.0 + + '@cucumber/pretty-formatter@1.0.1(@cucumber/cucumber@12.2.0)(@cucumber/messages@28.1.0)': + dependencies: + '@cucumber/cucumber': 12.2.0 + '@cucumber/messages': 28.1.0 + ansi-styles: 5.2.0 + cli-table3: 0.6.5 + figures: 3.2.0 + ts-dedent: 2.2.0 + + '@cucumber/query@13.6.0(@cucumber/messages@28.1.0)': + dependencies: + '@cucumber/messages': 28.1.0 '@teppeis/multimaps': 3.0.0 - assert: 2.1.0 + lodash.sortby: 4.7.0 - '@cucumber/tag-expressions@6.1.1': {} + '@cucumber/tag-expressions@6.2.0': {} - '@dabh/diagnostics@2.0.3': + '@dabh/diagnostics@2.0.8': dependencies: - colorspace: 1.1.4 + '@so-ric/colorspace': 1.1.6 enabled: 2.0.0 kuler: 2.0.0 - '@dnd-kit/accessibility@3.1.1(react@19.0.0)': + '@dnd-kit/accessibility@3.1.1(react@19.2.0)': dependencies: - react: 19.0.0 + react: 19.2.0 tslib: 2.8.1 - '@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.0.0) - '@dnd-kit/utilities': 3.2.2(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - tslib: 2.6.2 + '@dnd-kit/accessibility': 3.1.1(react@19.2.0) + '@dnd-kit/utilities': 3.2.2(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + tslib: 2.8.1 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@dnd-kit/utilities': 3.2.2(react@19.0.0) - react: 19.0.0 - tslib: 2.6.2 + '@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@dnd-kit/utilities': 3.2.2(react@19.2.0) + react: 19.2.0 + tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@dnd-kit/utilities': 3.2.2(react@19.0.0) - react: 19.0.0 - tslib: 2.6.2 + '@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@dnd-kit/utilities': 3.2.2(react@19.2.0) + react: 19.2.0 + tslib: 2.8.1 - '@dnd-kit/utilities@3.2.2(react@19.0.0)': + '@dnd-kit/utilities@3.2.2(react@19.2.0)': dependencies: - react: 19.0.0 - tslib: 2.6.2 + react: 19.2.0 + tslib: 2.8.1 '@dprint/darwin-arm64@0.49.1': optional: true - '@dprint/darwin-arm64@0.50.0': + '@dprint/darwin-arm64@0.50.2': optional: true '@dprint/darwin-x64@0.49.1': optional: true - '@dprint/darwin-x64@0.50.0': + '@dprint/darwin-x64@0.50.2': optional: true - '@dprint/dockerfile@0.3.0': {} + '@dprint/dockerfile@0.3.3': {} - '@dprint/formatter@0.2.0': {} + '@dprint/formatter@0.2.1': {} '@dprint/formatter@0.3.0': {} @@ -8001,31 +8059,31 @@ snapshots: '@dprint/linux-arm64-glibc@0.49.1': optional: true - '@dprint/linux-arm64-glibc@0.50.0': + '@dprint/linux-arm64-glibc@0.50.2': optional: true '@dprint/linux-arm64-musl@0.49.1': optional: true - '@dprint/linux-arm64-musl@0.50.0': + '@dprint/linux-arm64-musl@0.50.2': optional: true '@dprint/linux-riscv64-glibc@0.49.1': optional: true - '@dprint/linux-riscv64-glibc@0.50.0': + '@dprint/linux-riscv64-glibc@0.50.2': optional: true '@dprint/linux-x64-glibc@0.49.1': optional: true - '@dprint/linux-x64-glibc@0.50.0': + '@dprint/linux-x64-glibc@0.50.2': optional: true '@dprint/linux-x64-musl@0.49.1': optional: true - '@dprint/linux-x64-musl@0.50.0': + '@dprint/linux-x64-musl@0.50.2': optional: true '@dprint/markdown@0.15.3': {} @@ -8041,35 +8099,35 @@ snapshots: '@dprint/win32-arm64@0.49.1': optional: true - '@dprint/win32-arm64@0.50.0': + '@dprint/win32-arm64@0.50.2': optional: true '@dprint/win32-x64@0.49.1': optional: true - '@dprint/win32-x64@0.50.0': + '@dprint/win32-x64@0.50.2': optional: true - '@dr.pogodin/react-helmet@3.0.2(react@19.0.0)': + '@dr.pogodin/react-helmet@3.0.4(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.1 - react: 19.0.0 + '@babel/runtime': 7.28.4 + react: 19.2.0 - '@electron-forge/cli@7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.2)': + '@electron-forge/cli@7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.11)': dependencies: - '@electron-forge/core': 7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.2) + '@electron-forge/core': 7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.11) '@electron-forge/core-utils': 7.10.2(bluebird@3.7.2) '@electron-forge/shared-types': 7.10.2(bluebird@3.7.2) - '@electron/get': 3.0.0 + '@electron/get': 3.1.0 '@inquirer/prompts': 6.0.1 '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@6.0.1) chalk: 4.1.2 commander: 11.1.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 10.1.0 listr2: 7.0.2 log-symbols: 4.1.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - '@swc/core' - bluebird @@ -8085,17 +8143,17 @@ snapshots: '@electron/rebuild': 3.7.2(bluebird@3.7.2) '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) find-up: 5.0.0 fs-extra: 10.1.0 log-symbols: 4.1.0 parse-author: 2.0.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/core@7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.2)': + '@electron-forge/core@7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(encoding@0.1.13)(esbuild@0.25.11)': dependencies: '@electron-forge/core-utils': 7.10.2(bluebird@3.7.2) '@electron-forge/maker-base': 7.10.2(bluebird@3.7.2) @@ -8106,15 +8164,15 @@ snapshots: '@electron-forge/template-vite': 7.10.2(bluebird@3.7.2) '@electron-forge/template-vite-typescript': 7.10.2(bluebird@3.7.2) '@electron-forge/template-webpack': 7.10.2(bluebird@3.7.2) - '@electron-forge/template-webpack-typescript': 7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(esbuild@0.25.2) + '@electron-forge/template-webpack-typescript': 7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(esbuild@0.25.11) '@electron-forge/tracer': 7.10.2 - '@electron/get': 3.0.0 - '@electron/packager': 18.3.6 + '@electron/get': 3.1.0 + '@electron/packager': 18.4.4 '@electron/rebuild': 3.7.2(bluebird@3.7.2) '@malept/cross-spawn-promise': 2.0.0 '@vscode/sudo-prompt': 9.3.1 chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 filenamify: 4.3.0 find-up: 5.0.0 @@ -8122,13 +8180,13 @@ snapshots: global-dirs: 3.0.1 got: 11.8.6 interpret: 3.1.1 - jiti: 2.4.2 + jiti: 2.6.1 listr2: 7.0.2 lodash: 4.17.21 log-symbols: 4.1.0 - node-fetch: 2.6.12(encoding@0.1.13) + node-fetch: 2.7.0(encoding@0.1.13) rechoir: 0.8.0 - semver: 7.7.2 + semver: 7.7.3 source-map-support: 0.5.21 username: 5.1.0 transitivePeerDependencies: @@ -8149,16 +8207,6 @@ snapshots: - bluebird - supports-color - '@electron-forge/maker-base@7.8.1(bluebird@3.7.2)': - dependencies: - '@electron-forge/shared-types': 7.8.1(bluebird@3.7.2) - fs-extra: 10.1.0 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - optional: true - '@electron-forge/maker-deb@7.10.2(bluebird@3.7.2)': dependencies: '@electron-forge/maker-base': 7.10.2(bluebird@3.7.2) @@ -8210,7 +8258,7 @@ snapshots: '@electron-forge/shared-types': 7.10.2(bluebird@3.7.2) fs-extra: 10.1.0 optionalDependencies: - electron-winstaller: 5.3.0 + electron-winstaller: 5.4.0 transitivePeerDependencies: - bluebird - supports-color @@ -8220,7 +8268,7 @@ snapshots: dependencies: '@electron-forge/maker-base': 7.10.2(bluebird@3.7.2) '@electron-forge/shared-types': 7.10.2(bluebird@3.7.2) - cross-zip: 4.0.0 + cross-zip: 4.0.1 fs-extra: 10.1.0 got: 11.8.6 transitivePeerDependencies: @@ -8248,7 +8296,7 @@ snapshots: '@electron-forge/plugin-base': 7.10.2(bluebird@3.7.2) '@electron-forge/shared-types': 7.10.2(bluebird@3.7.2) chalk: 4.1.2 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 10.1.0 listr2: 7.0.2 transitivePeerDependencies: @@ -8265,32 +8313,21 @@ snapshots: '@electron-forge/shared-types@7.10.2(bluebird@3.7.2)': dependencies: '@electron-forge/tracer': 7.10.2 - '@electron/packager': 18.3.6 + '@electron/packager': 18.4.4 '@electron/rebuild': 3.7.2(bluebird@3.7.2) listr2: 7.0.2 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/shared-types@7.8.1(bluebird@3.7.2)': - dependencies: - '@electron-forge/tracer': 7.8.1 - '@electron/packager': 18.3.6 - '@electron/rebuild': 3.7.2(bluebird@3.7.2) - listr2: 7.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - optional: true - '@electron-forge/template-base@7.10.2(bluebird@3.7.2)': dependencies: '@electron-forge/core-utils': 7.10.2(bluebird@3.7.2) '@electron-forge/shared-types': 7.10.2(bluebird@3.7.2) '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 10.1.0 - semver: 7.7.2 + semver: 7.7.3 username: 5.1.0 transitivePeerDependencies: - bluebird @@ -8314,13 +8351,13 @@ snapshots: - bluebird - supports-color - '@electron-forge/template-webpack-typescript@7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(esbuild@0.25.2)': + '@electron-forge/template-webpack-typescript@7.10.2(@swc/core@1.12.0)(bluebird@3.7.2)(esbuild@0.25.11)': dependencies: '@electron-forge/shared-types': 7.10.2(bluebird@3.7.2) '@electron-forge/template-base': 7.10.2(bluebird@3.7.2) fs-extra: 10.1.0 typescript: 5.4.5 - webpack: 5.88.1(@swc/core@1.12.0)(esbuild@0.25.2) + webpack: 5.102.1(@swc/core@1.12.0)(esbuild@0.25.11) transitivePeerDependencies: - '@swc/core' - bluebird @@ -8340,22 +8377,17 @@ snapshots: '@electron-forge/tracer@7.10.2': dependencies: - chrome-trace-event: 1.0.3 + chrome-trace-event: 1.0.4 - '@electron-forge/tracer@7.8.1': - dependencies: - chrome-trace-event: 1.0.3 - optional: true - - '@electron/asar@3.2.17': + '@electron/asar@3.4.1': dependencies: commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 - '@electron/get@2.0.2': + '@electron/get@2.0.3': dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -8367,9 +8399,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/get@3.0.0': + '@electron/get@3.1.0': dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -8384,31 +8416,31 @@ snapshots: '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2(bluebird@3.7.2)': dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.1 + exponential-backoff: 3.1.3 glob: 8.1.0 graceful-fs: 4.2.11 make-fetch-happen: 10.2.1(bluebird@3.7.2) nopt: 6.0.0 proc-log: 2.0.1 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: - bluebird - supports-color - '@electron/notarize@2.2.0': + '@electron/notarize@2.5.0': dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 9.1.0 promise-retry: 2.0.1 transitivePeerDependencies: - supports-color - '@electron/osx-sign@1.0.5': + '@electron/osx-sign@1.3.3': dependencies: compare-version: 0.1.2 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 10.1.0 isbinaryfile: 4.0.10 minimist: 1.2.8 @@ -8416,26 +8448,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/packager@18.3.6': + '@electron/packager@18.4.4': dependencies: - '@electron/asar': 3.2.17 - '@electron/get': 3.0.0 - '@electron/notarize': 2.2.0 - '@electron/osx-sign': 1.0.5 - '@electron/universal': 2.0.1 - '@electron/windows-sign': 1.1.2 - debug: 4.4.1 + '@electron/asar': 3.4.1 + '@electron/get': 3.1.0 + '@electron/notarize': 2.5.0 + '@electron/osx-sign': 1.3.3 + '@electron/universal': 2.0.3 + '@electron/windows-sign': 1.2.2 + '@malept/cross-spawn-promise': 2.0.0 + debug: 4.4.3(supports-color@8.1.1) extract-zip: 2.0.1 filenamify: 4.3.0 - fs-extra: 11.3.0 + fs-extra: 11.3.2 galactus: 1.0.0 get-package-info: 1.0.0 junk: 3.1.0 parse-author: 2.0.0 plist: 3.1.0 - resedit: 2.0.2 - resolve: 1.22.10 - semver: 7.7.2 + prettier: 3.6.2 + resedit: 2.0.3 + resolve: 1.22.11 + semver: 7.7.3 yargs-parser: 21.1.1 transitivePeerDependencies: - supports-color @@ -8445,15 +8479,15 @@ snapshots: '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2(bluebird@3.7.2) '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.1 - detect-libc: 2.0.4 + debug: 4.4.3(supports-color@8.1.1) + detect-libc: 2.1.2 fs-extra: 10.1.0 got: 11.8.6 - node-abi: 3.75.0 + node-abi: 3.78.0 node-api-version: 0.2.1 ora: 5.4.1 read-binary-file-arch: 1.0.6 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: @@ -8464,55 +8498,55 @@ snapshots: dependencies: '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.1 - detect-libc: 2.0.4 + debug: 4.4.3(supports-color@8.1.1) + detect-libc: 2.1.2 got: 11.8.6 graceful-fs: 4.2.11 - node-abi: 4.9.0 + node-abi: 4.14.0 node-api-version: 0.2.1 - node-gyp: 11.2.0 + node-gyp: 11.5.0 ora: 5.4.1 read-binary-file-arch: 1.0.6 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@electron/universal@2.0.1': + '@electron/universal@2.0.3': dependencies: - '@electron/asar': 3.2.17 + '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) dir-compare: 4.2.0 - fs-extra: 11.3.0 + fs-extra: 11.3.2 minimatch: 9.0.5 plist: 3.1.0 transitivePeerDependencies: - supports-color - '@electron/windows-sign@1.1.2': + '@electron/windows-sign@1.2.2': dependencies: cross-dirname: 0.1.0 - debug: 4.4.1 - fs-extra: 11.3.0 + debug: 4.4.3(supports-color@8.1.1) + fs-extra: 11.3.2 minimist: 1.2.8 postject: 1.0.0-alpha.6 transitivePeerDependencies: - supports-color - '@emnapi/core@1.4.3': + '@emnapi/core@1.6.0': dependencies: - '@emnapi/wasi-threads': 1.0.2 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.3': + '@emnapi/runtime@1.6.0': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.0.2': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true @@ -8520,7 +8554,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -8547,7 +8581,7 @@ snapshots: dependencies: '@emotion/memoize': 0.8.1 - '@emotion/is-prop-valid@1.3.1': + '@emotion/is-prop-valid@1.4.0': dependencies: '@emotion/memoize': 0.9.0 @@ -8555,19 +8589,19 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0)': + '@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) '@emotion/utils': 1.4.2 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.0.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 transitivePeerDependencies: - supports-color @@ -8581,18 +8615,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0) + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) '@emotion/utils': 1.4.2 - react: 19.0.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 transitivePeerDependencies: - supports-color @@ -8600,119 +8634,126 @@ snapshots: '@emotion/unitless@0.8.1': {} - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.0.0)': + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.0)': dependencies: - react: 19.0.0 + react: 19.2.0 '@emotion/utils@1.4.2': {} '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.25.2': + '@epic-web/invariant@1.0.0': {} + + '@esbuild/aix-ppc64@0.25.11': optional: true - '@esbuild/android-arm64@0.25.2': + '@esbuild/android-arm64@0.25.11': optional: true - '@esbuild/android-arm@0.25.2': + '@esbuild/android-arm@0.25.11': optional: true - '@esbuild/android-x64@0.25.2': + '@esbuild/android-x64@0.25.11': optional: true - '@esbuild/darwin-arm64@0.25.2': + '@esbuild/darwin-arm64@0.25.11': optional: true - '@esbuild/darwin-x64@0.25.2': + '@esbuild/darwin-x64@0.25.11': optional: true - '@esbuild/freebsd-arm64@0.25.2': + '@esbuild/freebsd-arm64@0.25.11': optional: true - '@esbuild/freebsd-x64@0.25.2': + '@esbuild/freebsd-x64@0.25.11': optional: true - '@esbuild/linux-arm64@0.25.2': + '@esbuild/linux-arm64@0.25.11': optional: true - '@esbuild/linux-arm@0.25.2': + '@esbuild/linux-arm@0.25.11': optional: true - '@esbuild/linux-ia32@0.25.2': + '@esbuild/linux-ia32@0.25.11': optional: true - '@esbuild/linux-loong64@0.25.2': + '@esbuild/linux-loong64@0.25.11': optional: true - '@esbuild/linux-mips64el@0.25.2': + '@esbuild/linux-mips64el@0.25.11': optional: true - '@esbuild/linux-ppc64@0.25.2': + '@esbuild/linux-ppc64@0.25.11': optional: true - '@esbuild/linux-riscv64@0.25.2': + '@esbuild/linux-riscv64@0.25.11': optional: true - '@esbuild/linux-s390x@0.25.2': + '@esbuild/linux-s390x@0.25.11': optional: true - '@esbuild/linux-x64@0.25.2': + '@esbuild/linux-x64@0.25.11': optional: true - '@esbuild/netbsd-arm64@0.25.2': + '@esbuild/netbsd-arm64@0.25.11': optional: true - '@esbuild/netbsd-x64@0.25.2': + '@esbuild/netbsd-x64@0.25.11': optional: true - '@esbuild/openbsd-arm64@0.25.2': + '@esbuild/openbsd-arm64@0.25.11': optional: true - '@esbuild/openbsd-x64@0.25.2': + '@esbuild/openbsd-x64@0.25.11': optional: true - '@esbuild/sunos-x64@0.25.2': + '@esbuild/openharmony-arm64@0.25.11': optional: true - '@esbuild/win32-arm64@0.25.2': + '@esbuild/sunos-x64@0.25.11': optional: true - '@esbuild/win32-ia32@0.25.2': + '@esbuild/win32-arm64@0.25.11': optional: true - '@esbuild/win32-x64@0.25.2': + '@esbuild/win32-ia32@0.25.11': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))': + '@esbuild/win32-x64@0.25.11': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.19.2': + '@eslint/config-array@0.21.1': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + '@eslint/object-schema': 2.1.7 + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.1': {} + '@eslint/config-helpers@0.4.1': + dependencies: + '@eslint/core': 0.16.0 - '@eslint/core@0.12.0': + '@eslint/core@0.13.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.13.0': + '@eslint/core@0.16.0': dependencies: '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1 - espree: 10.3.0 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 @@ -8722,40 +8763,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.23.0': {} + '@eslint/js@9.38.0': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/object-schema@2.1.7': {} '@eslint/plugin-kit@0.2.8': dependencies: '@eslint/core': 0.13.0 levn: 0.4.1 + '@eslint/plugin-kit@0.4.0': + dependencies: + '@eslint/core': 0.16.0 + levn: 0.4.1 + '@fetsorn/vite-node-worker@1.0.1': dependencies: - magic-string: 0.30.17 + magic-string: 0.30.19 - '@fontsource/roboto@5.1.1': {} + '@fontsource/roboto@5.2.8': {} '@gar/promisify@1.1.3': {} '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} + '@humanwhocodes/retry@0.4.3': {} '@inquirer/checkbox@3.0.1': dependencies: '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.13 + '@inquirer/figures': 1.0.14 '@inquirer/type': 2.0.0 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.3 @@ -8767,7 +8811,7 @@ snapshots: '@inquirer/core@9.2.1': dependencies: - '@inquirer/figures': 1.0.13 + '@inquirer/figures': 1.0.14 '@inquirer/type': 2.0.0 '@types/mute-stream': 0.0.4 '@types/node': 22.13.0 @@ -8792,7 +8836,7 @@ snapshots: '@inquirer/type': 2.0.0 yoctocolors-cjs: 2.1.3 - '@inquirer/figures@1.0.13': {} + '@inquirer/figures@1.0.14': {} '@inquirer/input@3.0.1': dependencies: @@ -8832,14 +8876,14 @@ snapshots: '@inquirer/search@2.0.1': dependencies: '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.13 + '@inquirer/figures': 1.0.14 '@inquirer/type': 2.0.0 yoctocolors-cjs: 2.1.3 '@inquirer/select@3.0.1': dependencies: '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.13 + '@inquirer/figures': 1.0.14 '@inquirer/type': 2.0.0 ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.3 @@ -8852,24 +8896,45 @@ snapshots: dependencies: mute-stream: 1.0.0 - '@inversifyjs/common@1.4.0': {} + '@inversifyjs/common@1.5.2': {} - '@inversifyjs/core@1.3.5(reflect-metadata@0.2.2)': + '@inversifyjs/container@1.14.0(reflect-metadata@0.2.2)': dependencies: - '@inversifyjs/common': 1.4.0 - '@inversifyjs/reflect-metadata-utils': 0.2.4(reflect-metadata@0.2.2) + '@inversifyjs/common': 1.5.2 + '@inversifyjs/core': 9.1.0(reflect-metadata@0.2.2) + '@inversifyjs/plugin': 0.2.0 + '@inversifyjs/reflect-metadata-utils': 1.4.1(reflect-metadata@0.2.2) + reflect-metadata: 0.2.2 + + '@inversifyjs/core@9.1.0(reflect-metadata@0.2.2)': + dependencies: + '@inversifyjs/common': 1.5.2 + '@inversifyjs/prototype-utils': 0.1.2 + '@inversifyjs/reflect-metadata-utils': 1.4.1(reflect-metadata@0.2.2) transitivePeerDependencies: - reflect-metadata - '@inversifyjs/reflect-metadata-utils@0.2.4(reflect-metadata@0.2.2)': + '@inversifyjs/plugin@0.2.0': {} + + '@inversifyjs/prototype-utils@0.1.2': + dependencies: + '@inversifyjs/common': 1.5.2 + + '@inversifyjs/reflect-metadata-utils@1.4.1(reflect-metadata@0.2.2)': dependencies: reflect-metadata: 0.2.2 + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -8935,7 +9000,7 @@ snapshots: dependencies: '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-blur@1.6.0': dependencies: @@ -8945,7 +9010,7 @@ snapshots: '@jimp/plugin-circle@1.6.0': dependencies: '@jimp/types': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-color@1.6.0': dependencies: @@ -8953,7 +9018,7 @@ snapshots: '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 tinycolor2: 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-contain@1.6.0': dependencies: @@ -8962,7 +9027,7 @@ snapshots: '@jimp/plugin-resize': 1.6.0 '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-cover@1.6.0': dependencies: @@ -8970,20 +9035,20 @@ snapshots: '@jimp/plugin-crop': 1.6.0 '@jimp/plugin-resize': 1.6.0 '@jimp/types': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-crop@1.6.0': dependencies: '@jimp/core': 1.6.0 '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-displace@1.6.0': dependencies: '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-dither@1.6.0': dependencies: @@ -8993,12 +9058,12 @@ snapshots: dependencies: '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-flip@1.6.0': dependencies: '@jimp/types': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-hash@1.6.0': dependencies: @@ -9016,7 +9081,7 @@ snapshots: '@jimp/plugin-mask@1.6.0': dependencies: '@jimp/types': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-print@1.6.0': dependencies: @@ -9029,18 +9094,18 @@ snapshots: parse-bmfont-binary: 1.0.6 parse-bmfont-xml: 1.1.6 simple-xml-to-json: 1.2.3 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-quantize@1.6.0': dependencies: image-q: 4.0.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-resize@1.6.0': dependencies: '@jimp/core': 1.6.0 '@jimp/types': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-rotate@1.6.0': dependencies: @@ -9049,7 +9114,7 @@ snapshots: '@jimp/plugin-resize': 1.6.0 '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/plugin-threshold@1.6.0': dependencies: @@ -9058,11 +9123,11 @@ snapshots: '@jimp/plugin-hash': 1.6.0 '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - zod: 3.25.28 + zod: 3.25.76 '@jimp/types@1.6.0': dependencies: - zod: 3.25.28 + zod: 3.25.76 '@jimp/utils@1.6.0': dependencies: @@ -9071,49 +9136,32 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.1': {} + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.5': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@6.0.1)': dependencies: @@ -9132,10 +9180,10 @@ snapshots: '@malept/electron-installer-flatpak@0.11.4': dependencies: '@malept/flatpak-bundler': 0.4.0 - debug: 4.4.1 - electron-installer-common: 0.10.3 + debug: 4.4.3(supports-color@8.1.1) + electron-installer-common: 0.10.4 lodash: 4.17.21 - semver: 7.7.2 + semver: 7.7.3 yargs: 16.2.0 transitivePeerDependencies: - supports-color @@ -9143,7 +9191,7 @@ snapshots: '@malept/flatpak-bundler@0.4.0': dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 9.1.0 lodash: 4.17.21 tmp-promise: 3.0.3 @@ -9151,152 +9199,142 @@ snapshots: - supports-color optional: true - '@monaco-editor/loader@1.5.0': + '@monaco-editor/loader@1.6.1': dependencies: state-local: 1.0.7 - '@monaco-editor/react@4.7.0(monaco-editor@0.52.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@monaco-editor/react@4.7.0(monaco-editor@0.54.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@monaco-editor/loader': 1.5.0 - monaco-editor: 0.52.2 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) + '@monaco-editor/loader': 1.6.1 + monaco-editor: 0.54.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - '@mui/core-downloads-tracker@7.1.1': {} + '@mui/core-downloads-tracker@7.3.4': {} - '@mui/icons-material@7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)': + '@mui/icons-material@7.3.4(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.1 - '@mui/material': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 - '@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.1 - '@mui/core-downloads-tracker': 7.1.1 - '@mui/system': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) - '@mui/types': 7.4.3(@types/react@19.0.8) - '@mui/utils': 7.1.1(@types/react@19.0.8)(react@19.0.0) + '@babel/runtime': 7.28.4 + '@mui/core-downloads-tracker': 7.3.4 + '@mui/system': 7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@mui/types': 7.4.7(@types/react@19.2.2) + '@mui/utils': 7.3.3(@types/react@19.2.2)(react@19.2.0) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.0.8) + '@types/react-transition-group': 4.4.12(@types/react@19.2.2) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-is: 19.1.0 - react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-is: 19.2.0 + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) - '@types/react': 19.0.8 + '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@types/react': 19.2.2 - '@mui/private-theming@7.1.1(@types/react@19.0.8)(react@19.0.0)': + '@mui/private-theming@7.3.3(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 - '@mui/utils': 7.1.1(@types/react@19.0.8)(react@19.0.0) + '@babel/runtime': 7.28.4 + '@mui/utils': 7.3.3(@types/react@19.2.2)(react@19.2.0) prop-types: 15.8.1 - react: 19.0.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 - '@mui/styled-engine@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(react@19.0.0)': + '@mui/styled-engine@7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0 + react: 19.2.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) - '@mui/system@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0)': + '@mui/system@7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.1 - '@mui/private-theming': 7.1.1(@types/react@19.0.8)(react@19.0.0) - '@mui/styled-engine': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(react@19.0.0) - '@mui/types': 7.4.3(@types/react@19.0.8) - '@mui/utils': 7.1.1(@types/react@19.0.8)(react@19.0.0) + '@babel/runtime': 7.28.4 + '@mui/private-theming': 7.3.3(@types/react@19.2.2)(react@19.2.0) + '@mui/styled-engine': 7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(react@19.2.0) + '@mui/types': 7.4.7(@types/react@19.2.2) + '@mui/utils': 7.3.3(@types/react@19.2.2)(react@19.2.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0 + react: 19.2.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) - '@types/react': 19.0.8 + '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@types/react': 19.2.2 - '@mui/types@7.4.3(@types/react@19.0.8)': + '@mui/types@7.4.7(@types/react@19.2.2)': dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.28.4 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 - '@mui/utils@7.1.0(@types/react@19.0.8)(react@19.0.0)': + '@mui/utils@7.3.3(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 - '@mui/types': 7.4.3(@types/react@19.0.8) - '@types/prop-types': 15.7.14 + '@babel/runtime': 7.28.4 + '@mui/types': 7.4.7(@types/react@19.2.2) + '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0 - react-is: 19.1.0 + react: 19.2.0 + react-is: 19.2.0 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 - '@mui/utils@7.1.1(@types/react@19.0.8)(react@19.0.0)': + '@mui/x-date-pickers@8.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mui/system@7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(date-fns@3.6.0)(dayjs@1.11.18)(luxon@3.7.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 - '@mui/types': 7.4.3(@types/react@19.0.8) - '@types/prop-types': 15.7.14 + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@mui/system': 7.3.3(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@mui/utils': 7.3.3(@types/react@19.2.2)(react@19.2.0) + '@mui/x-internals': 8.14.0(@types/react@19.2.2)(react@19.2.0) + '@types/react-transition-group': 4.4.12(@types/react@19.2.2) clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0 - react-is: 19.1.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) optionalDependencies: - '@types/react': 19.0.8 - - '@mui/x-date-pickers@8.4.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mui/system@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(date-fns@3.6.0)(dayjs@1.11.13)(luxon@3.5.0)(moment@2.29.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@babel/runtime': 7.27.1 - '@mui/material': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mui/system': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) - '@mui/utils': 7.1.0(@types/react@19.0.8)(react@19.0.0) - '@mui/x-internals': 8.4.0(@types/react@19.0.8)(react@19.0.0) - '@types/react-transition-group': 4.4.12(@types/react@19.0.8) - clsx: 2.1.1 - prop-types: 15.8.1 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) date-fns: 3.6.0 - dayjs: 1.11.13 - luxon: 3.5.0 - moment: 2.29.4 + dayjs: 1.11.18 + luxon: 3.7.1 + moment: 2.30.1 transitivePeerDependencies: - '@types/react' - '@mui/x-internals@8.4.0(@types/react@19.0.8)(react@19.0.0)': + '@mui/x-internals@8.14.0(@types/react@19.2.2)(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 - '@mui/utils': 7.1.0(@types/react@19.0.8)(react@19.0.0) - react: 19.0.0 + '@babel/runtime': 7.28.4 + '@mui/utils': 7.3.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.0 + reselect: 5.1.1 + use-sync-external-store: 1.6.0(react@19.2.0) transitivePeerDependencies: - '@types/react' - '@napi-rs/wasm-runtime@0.2.11': + '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.3 - '@tybys/wasm-util': 0.9.0 + '@emnapi/core': 1.6.0 + '@emnapi/runtime': 1.6.0 + '@tybys/wasm-util': 0.10.1 optional: true '@nodelib/fs.scandir@2.1.5': @@ -9309,11 +9347,11 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.19.1 '@npmcli/agent@3.0.0': dependencies: - agent-base: 7.1.3 + agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 10.4.3 @@ -9324,18 +9362,18 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.2 + semver: 7.7.3 '@npmcli/move-file@2.0.1': dependencies: mkdirp: 1.0.4 rimraf: 3.0.2 - '@npmcli/redact@3.1.1': {} + '@npmcli/redact@3.2.2': {} '@opentelemetry/api@1.9.0': {} @@ -9344,16 +9382,16 @@ snapshots: '@pkgr/core@0.1.2': {} - '@polka/url@1.0.0-next.24': {} + '@polka/url@1.0.0-next.29': {} '@popperjs/core@2.11.8': {} '@reforged/maker-appimage@5.1.0(bluebird@3.7.2)': dependencies: - '@electron-forge/maker-base': 7.8.1(bluebird@3.7.2) + '@electron-forge/maker-base': 7.10.2(bluebird@3.7.2) '@reforged/maker-types': 2.0.0 '@spacingbat3/lss': 1.2.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - bluebird - supports-color @@ -9362,113 +9400,119 @@ snapshots: '@reforged/maker-types@2.0.0': optional: true - '@rjsf/core@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0)': + '@rjsf/core@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0)': dependencies: - '@rjsf/utils': 6.0.0-beta.10(react@19.0.0) + '@rjsf/utils': 6.0.0-beta.10(react@19.2.0) lodash: 4.17.21 lodash-es: 4.17.21 - markdown-to-jsx: 7.7.6(react@19.0.0) - nanoid: 5.1.5 + markdown-to-jsx: 7.7.16(react@19.2.0) + nanoid: 5.1.6 prop-types: 15.8.1 - react: 19.0.0 + react: 19.2.0 - '@rjsf/mui@6.0.0-beta.10(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/icons-material@7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@rjsf/core@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0))(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0)': + '@rjsf/mui@6.0.0-beta.10(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/icons-material@7.3.4(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@rjsf/core@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0))(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0)': dependencies: - '@emotion/react': 11.14.0(@types/react@19.0.8)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) - '@mui/icons-material': 7.1.1(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0) - '@mui/material': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@rjsf/core': 6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0))(react@19.0.0) - '@rjsf/utils': 6.0.0-beta.10(react@19.0.0) - react: 19.0.0 + '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@mui/icons-material': 7.3.4(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@mui/material': 7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rjsf/core': 6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0))(react@19.2.0) + '@rjsf/utils': 6.0.0-beta.10(react@19.2.0) + react: 19.2.0 - '@rjsf/utils@6.0.0-beta.10(react@19.0.0)': + '@rjsf/utils@6.0.0-beta.10(react@19.2.0)': dependencies: - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-merge-allof: 0.8.1 jsonpointer: 5.0.1 lodash: 4.17.21 lodash-es: 4.17.21 - nanoid: 5.1.5 - react: 19.0.0 - react-is: 18.2.0 + nanoid: 5.1.6 + react: 19.2.0 + react-is: 18.3.1 - '@rjsf/validator-ajv8@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.0.0))': + '@rjsf/validator-ajv8@6.0.0-beta.8(@rjsf/utils@6.0.0-beta.10(react@19.2.0))': dependencies: - '@rjsf/utils': 6.0.0-beta.10(react@19.0.0) - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) + '@rjsf/utils': 6.0.0-beta.10(react@19.2.0) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) lodash: 4.17.21 lodash-es: 4.17.21 '@rolldown/pluginutils@1.0.0-beta.38': {} - '@rollup/pluginutils@5.2.0(rollup@4.43.0)': + '@rollup/pluginutils@5.3.0(rollup@4.52.5)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: - rollup: 4.43.0 + rollup: 4.52.5 - '@rollup/rollup-android-arm-eabi@4.43.0': + '@rollup/rollup-android-arm-eabi@4.52.5': optional: true - '@rollup/rollup-android-arm64@4.43.0': + '@rollup/rollup-android-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-arm64@4.43.0': + '@rollup/rollup-darwin-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-x64@4.43.0': + '@rollup/rollup-darwin-x64@4.52.5': optional: true - '@rollup/rollup-freebsd-arm64@4.43.0': + '@rollup/rollup-freebsd-arm64@4.52.5': optional: true - '@rollup/rollup-freebsd-x64@4.43.0': + '@rollup/rollup-freebsd-x64@4.52.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.43.0': + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.43.0': + '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.43.0': + '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.43.0': + '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.43.0': + '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.43.0': + '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.43.0': + '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-musl@4.43.0': + '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.43.0': + '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.43.0': + '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-x64-musl@4.43.0': + '@rollup/rollup-linux-x64-musl@4.52.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.43.0': + '@rollup/rollup-openharmony-arm64@4.52.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.43.0': + '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true - '@rollup/rollup-win32-x64-msvc@4.43.0': + '@rollup/rollup-win32-ia32-msvc@4.52.5': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.5': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true '@rtsao/scc@1.1.0': {} @@ -9479,6 +9523,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/types@4.8.0': + dependencies: + tslib: 2.8.1 + '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 @@ -9489,11 +9537,18 @@ snapshots: '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 + '@so-ric/colorspace@1.1.6': + dependencies: + color: 5.0.2 + text-hex: 1.0.0 + '@spacingbat3/lss@1.2.0': optional: true '@sqltools/formatter@1.2.5': {} + '@standard-schema/spec@1.0.0': {} + '@swc/core-darwin-arm64@1.12.0': optional: true @@ -9527,7 +9582,7 @@ snapshots: '@swc/core@1.12.0': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.22 + '@swc/types': 0.1.25 optionalDependencies: '@swc/core-darwin-arm64': 1.12.0 '@swc/core-darwin-x64': 1.12.0 @@ -9542,7 +9597,7 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/types@0.1.22': + '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 @@ -9555,7 +9610,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -9563,25 +9618,24 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.6.3': + '@testing-library/jest-dom@6.9.1': dependencies: - '@adobe/css-tools': 4.4.3 + '@adobe/css-tools': 4.4.4 aria-query: 5.3.2 - chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - lodash: 4.17.21 + picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.0 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.0.8 - '@types/react-dom': 19.0.3(@types/react@19.0.8) + '@types/react': 19.2.2 + '@types/react-dom': 19.2.2(@types/react@19.2.2) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': dependencies: @@ -9591,7 +9645,7 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@tsconfig/node10@1.0.9': {} + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -9599,7 +9653,7 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@tybys/wasm-util@0.9.0': + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true @@ -9608,20 +9662,20 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__traverse@7.28.0': dependencies: @@ -9629,7 +9683,7 @@ snapshots: '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 '@types/bluebird@3.5.42': {} @@ -9637,45 +9691,40 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.13.0 + '@types/node': 24.9.1 '@types/responselike': 1.0.3 - '@types/chai@5.0.1': - dependencies: - '@types/deep-eql': 4.0.2 - - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/chrome@0.0.287': dependencies: '@types/filesystem': 0.0.36 '@types/har-format': 1.2.16 - '@types/codemirror@5.60.15': + '@types/codemirror@5.60.16': dependencies: - '@types/tern': 0.23.4 + '@types/tern': 0.23.9 '@types/deep-eql@4.0.2': {} - '@types/diff-match-patch@1.0.36': {} - '@types/echarts@4.9.22': dependencies: - '@types/zrender': 4.0.3 + '@types/zrender': 5.0.0 - '@types/eslint-scope@3.7.4': + '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 8.40.2 - '@types/estree': 1.0.7 + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 - '@types/eslint@8.40.2': + '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/filesystem@0.0.36': dependencies: @@ -9685,25 +9734,19 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: - '@types/jsonfile': 6.1.1 - '@types/node': 22.13.0 + '@types/jsonfile': 6.1.4 + '@types/node': 24.9.1 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.13.0 - optional: true - - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 22.13.0 + '@types/node': 24.9.1 optional: true '@types/har-format@1.2.16': {} - '@types/hoist-non-react-statics@3.3.1': + '@types/hoist-non-react-statics@3.3.7(@types/react@19.2.2)': dependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 hoist-non-react-statics: 3.3.2 optional: true @@ -9711,71 +9754,70 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} - '@types/i18next-fs-backend@1.1.5': + '@types/intercept-stdout@0.1.4': dependencies: - i18next: 21.10.0 - - '@types/intercept-stdout@0.1.3': {} + '@types/node': 24.9.1 '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} - '@types/jsonfile@6.1.1': + '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 '@types/keyv@3.1.4': dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 - '@types/lodash@4.17.15': {} - - '@types/minimatch@5.1.2': - optional: true + '@types/lodash@4.17.20': {} '@types/mute-stream@0.0.4': dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 '@types/node@16.9.1': {} - '@types/node@20.14.9': + '@types/node@20.19.23': dependencies: - undici-types: 5.26.5 + undici-types: 6.21.0 '@types/node@22.13.0': dependencies: undici-types: 6.20.0 + '@types/node@24.9.1': + dependencies: + undici-types: 7.16.0 + '@types/normalize-package-data@2.4.4': {} '@types/parse-json@4.0.2': {} - '@types/prop-types@15.7.14': {} + '@types/prop-types@15.7.15': {} - '@types/react-dom@19.0.3(@types/react@19.0.8)': + '@types/react-dom@19.2.2(@types/react@19.2.2)': dependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 '@types/react-jsonschema-form@1.7.13': dependencies: '@types/json-schema': 7.0.15 - '@types/react': 19.0.8 + '@types/react': 19.2.2 - '@types/react-transition-group@4.4.12(@types/react@19.0.8)': + '@types/react-transition-group@4.4.12(@types/react@19.2.2)': dependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 - '@types/react@19.0.8': + '@types/react@19.2.2': dependencies: csstype: 3.1.3 '@types/responselike@1.0.3': dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 - '@types/semver@7.5.8': {} + '@types/semver@7.7.1': {} '@types/source-map-support@0.5.10': dependencies: @@ -9783,115 +9825,124 @@ snapshots: '@types/styled-components@5.1.34': dependencies: - '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 19.0.8 - csstype: 3.1.2 + '@types/hoist-non-react-statics': 3.3.7(@types/react@19.2.2) + '@types/react': 19.2.2 + csstype: 3.1.3 optional: true '@types/stylis@4.2.5': {} - '@types/tern@0.23.4': + '@types/tern@0.23.9': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 - '@types/triple-beam@1.3.2': {} + '@types/triple-beam@1.3.5': {} '@types/uuid@10.0.0': {} - '@types/uuid@9.0.8': {} - '@types/wrap-ansi@3.0.0': {} - '@types/yauzl@2.10.0': + '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 optional: true - '@types/zrender@4.0.3': {} + '@types/zrender@5.0.0': + dependencies: + zrender: 6.0.0 - '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.28.0 - '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.28.0 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.29.0 - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + eslint: 9.38.0(jiti@2.6.1) graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/experimental-utils@5.61.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/experimental-utils@5.62.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 5.61.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/parser@6.21.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@6.21.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1 - eslint: 9.23.0(jiti@2.4.2) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.38.0(jiti@2.6.1) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.28.0 '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.28.0 - debug: 4.4.1 - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.38.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.29.0 - debug: 4.4.1 - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.38.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.61.0': + '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/visitor-keys': 5.61.0 + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 '@typescript-eslint/scope-manager@6.21.0': dependencies: @@ -9903,138 +9954,145 @@ snapshots: '@typescript-eslint/types': 8.28.0 '@typescript-eslint/visitor-keys': 8.28.0 - '@typescript-eslint/scope-manager@8.29.0': + '@typescript-eslint/scope-manager@8.46.2': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 - '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - debug: 4.4.1 - eslint: 9.23.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.38.0(jiti@2.6.1) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - debug: 4.4.1 - eslint: 9.23.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.38.0(jiti@2.6.1) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.61.0': {} + '@typescript-eslint/types@5.62.0': {} '@typescript-eslint/types@6.21.0': {} '@typescript-eslint/types@8.28.0': {} - '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/types@8.46.2': {} - '@typescript-eslint/typescript-estree@5.61.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/visitor-keys': 5.61.0 - debug: 4.4.1 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.2 - tsutils: 3.21.0(typescript@5.8.3) + semver: 7.7.3 + tsutils: 3.21.0(typescript@5.9.3) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.7.2 - ts-api-utils: 1.3.0(typescript@5.8.3) + semver: 7.7.3 + ts-api-utils: 1.4.3(typescript@5.9.3) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.28.0 '@typescript-eslint/visitor-keys': 8.28.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.29.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 - debug: 4.4.1 + '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 + debug: 4.4.3(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.61.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@5.62.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) eslint-scope: 5.1.1 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.28.0 '@typescript-eslint/types': 8.28.0 - '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@5.61.0': + '@typescript-eslint/visitor-keys@5.62.0': dependencies: - '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 '@typescript-eslint/visitor-keys@6.21.0': @@ -10045,67 +10103,75 @@ snapshots: '@typescript-eslint/visitor-keys@8.28.0': dependencies: '@typescript-eslint/types': 8.28.0 - eslint-visitor-keys: 4.2.0 + eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.29.0': + '@typescript-eslint/visitor-keys@8.46.2': dependencies: - '@typescript-eslint/types': 8.29.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.46.2 + eslint-visitor-keys: 4.2.1 - '@unrs/resolver-binding-darwin-arm64@1.7.13': + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true - '@unrs/resolver-binding-darwin-x64@1.7.13': + '@unrs/resolver-binding-android-arm64@1.11.1': optional: true - '@unrs/resolver-binding-freebsd-x64@1.7.13': + '@unrs/resolver-binding-darwin-arm64@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.13': + '@unrs/resolver-binding-darwin-x64@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.7.13': + '@unrs/resolver-binding-freebsd-x64@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.7.13': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.7.13': + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.7.13': + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.7.13': + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.7.13': + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.7.13': + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.7.13': + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.7.13': + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.7.13': + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': dependencies: - '@napi-rs/wasm-runtime': 0.2.11 + '@napi-rs/wasm-runtime': 0.2.12 optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.7.13': + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.7.13': + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.7.13': + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@5.0.4(vite@7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0))': + '@vercel/oidc@3.0.3': {} + + '@vitejs/plugin-react@5.0.4(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -10113,161 +10179,161 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.38 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.3(vitest@3.2.3)': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.3 - debug: 4.4.1 + ast-v8-to-istanbul: 0.3.7 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 + istanbul-reports: 3.2.0 + magic-string: 0.30.19 magicast: 0.3.5 - std-env: 3.9.0 + std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.3(@types/node@22.13.0)(@vitest/ui@3.2.3)(jiti@2.4.2)(jsdom@26.1.0)(terser@5.18.2)(yaml@2.8.0) + vitest: 3.2.4(@types/node@24.9.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitest/expect@3.2.3': + '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 - '@vitest/spy': 3.2.3 - '@vitest/utils': 3.2.3 - chai: 5.2.0 + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.3(vite@7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: - '@vitest/spy': 3.2.3 + '@vitest/spy': 3.2.4 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.19 optionalDependencies: - vite: 7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/pretty-format@3.2.3': + '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.2.3': + '@vitest/runner@3.2.4': dependencies: - '@vitest/utils': 3.2.3 + '@vitest/utils': 3.2.4 pathe: 2.0.3 - strip-literal: 3.0.0 + strip-literal: 3.1.0 - '@vitest/snapshot@3.2.3': + '@vitest/snapshot@3.2.4': dependencies: - '@vitest/pretty-format': 3.2.3 - magic-string: 0.30.17 + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.19 pathe: 2.0.3 - '@vitest/spy@3.2.3': + '@vitest/spy@3.2.4': dependencies: - tinyspy: 4.0.3 + tinyspy: 4.0.4 - '@vitest/ui@3.2.3(vitest@3.2.3)': + '@vitest/ui@3.2.4(vitest@3.2.4)': dependencies: - '@vitest/utils': 3.2.3 + '@vitest/utils': 3.2.4 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 - sirv: 3.0.1 - tinyglobby: 0.2.14 + sirv: 3.0.2 + tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.3(@types/node@22.13.0)(@vitest/ui@3.2.3)(jiti@2.4.2)(jsdom@26.1.0)(terser@5.18.2)(yaml@2.8.0) + vitest: 3.2.4(@types/node@24.9.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitest/utils@3.2.3': + '@vitest/utils@3.2.4': dependencies: - '@vitest/pretty-format': 3.2.3 - loupe: 3.1.3 + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 tinyrainbow: 2.0.0 '@vscode/sudo-prompt@9.3.1': {} - '@webassemblyjs/ast@1.11.6': + '@webassemblyjs/ast@1.14.1': dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - '@webassemblyjs/helper-api-error@1.11.6': {} + '@webassemblyjs/helper-api-error@1.13.2': {} - '@webassemblyjs/helper-buffer@1.11.6': {} + '@webassemblyjs/helper-buffer@1.14.1': {} - '@webassemblyjs/helper-numbers@1.11.6': + '@webassemblyjs/helper-numbers@1.13.2': dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - '@webassemblyjs/helper-wasm-section@1.11.6': + '@webassemblyjs/helper-wasm-section@1.14.1': 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 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/ieee754@1.11.6': + '@webassemblyjs/ieee754@1.13.2': dependencies: '@xtuc/ieee754': 1.2.0 - '@webassemblyjs/leb128@1.11.6': + '@webassemblyjs/leb128@1.13.2': dependencies: '@xtuc/long': 4.2.2 - '@webassemblyjs/utf8@1.11.6': {} + '@webassemblyjs/utf8@1.13.2': {} - '@webassemblyjs/wasm-edit@1.11.6': + '@webassemblyjs/wasm-edit@1.14.1': 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 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 - '@webassemblyjs/wasm-gen@1.11.6': + '@webassemblyjs/wasm-gen@1.14.1': 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 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - '@webassemblyjs/wasm-opt@1.11.6': + '@webassemblyjs/wasm-opt@1.14.1': dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wasm-parser@1.11.6': + '@webassemblyjs/wasm-parser@1.14.1': 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 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - '@webassemblyjs/wast-printer@1.11.6': + '@webassemblyjs/wast-printer@1.14.1': dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@xmldom/xmldom@0.8.10': {} + '@xmldom/xmldom@0.8.11': {} '@xtuc/ieee754@1.2.0': {} @@ -10277,33 +10343,38 @@ snapshots: abbrev@3.0.1: {} - acorn-import-assertions@1.9.0(acorn@8.15.0): + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.0 + acorn: 8.15.0 - acorn-walk@8.2.0: {} - - acorn@8.12.0: {} - - acorn@8.14.0: {} + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 acorn@8.15.0: {} - acorn@8.9.0: {} - adm-zip@0.5.16: {} agent-base@6.0.2: dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - agent-base@7.1.3: {} + agent-base@7.1.4: {} agentkeepalive@4.6.0: dependencies: @@ -10314,25 +10385,22 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@4.3.15(react@19.0.0)(zod@3.25.28): + ai@5.0.76(zod@4.1.12): dependencies: - '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.28) - '@ai-sdk/react': 1.2.12(react@19.0.0)(zod@3.25.28) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.28) + '@ai-sdk/gateway': 2.0.0(zod@4.1.12) + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 - zod: 3.25.28 - optionalDependencies: - react: 19.0.0 + zod: 4.1.12 - ajv-formats@2.1.1(ajv@8.12.0): + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: - ajv: 8.12.0 + ajv: 8.17.1 - ajv-keywords@3.5.2(ajv@6.12.6): + ajv-keywords@5.1.0(ajv@8.17.1): dependencies: - ajv: 6.12.6 + ajv: 8.17.1 + fast-deep-equal: 3.1.3 ajv@6.12.6: dependencies: @@ -10341,12 +10409,12 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + 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 - uri-js: 4.4.1 algoliasearch@5.26.0: dependencies: @@ -10376,7 +10444,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -10384,7 +10452,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} ansi-to-html@0.7.2: dependencies: @@ -10422,14 +10490,16 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-includes@3.1.8: + array-includes@3.1.9: dependencies: call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + 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-union@2.1.0: {} @@ -10437,7 +10507,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -10447,7 +10517,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -10456,21 +10526,21 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 @@ -10479,29 +10549,11 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - asar@3.2.0: - dependencies: - chromium-pickle-js: 0.2.0 - commander: 5.1.0 - glob: 7.2.3 - minimatch: 3.1.2 - optionalDependencies: - '@types/glob': 7.2.0 - optional: true - - assert@2.1.0: - dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 - assertion-error-formatter@3.0.0: dependencies: diff: 4.0.2 @@ -10510,28 +10562,30 @@ snapshots: assertion-error@2.0.1: {} - ast-v8-to-istanbul@0.3.3: + ast-v8-to-istanbul@0.3.7: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 js-tokens: 9.0.1 - async-lock@1.4.0: {} + async-function@1.0.0: {} - async@3.2.4: {} + async-lock@1.4.1: {} + + async@3.2.6: {} at-least-node@1.0.0: {} - atomically@2.0.1: + atomically@2.0.3: dependencies: - stubborn-fs: 1.2.4 - when-exit: 2.1.0 + stubborn-fs: 1.2.5 + when-exit: 2.1.4 author-regex@1.0.0: {} available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 await-to-js@3.0.0: {} @@ -10542,30 +10596,40 @@ snapshots: babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 cosmiconfig: 7.1.0 - resolve: 1.22.10 + resolve: 1.22.11 balanced-match@1.0.2: {} base64-js@1.5.1: {} - beautiful-react-hooks@5.0.3(react-dom@19.0.0(react@19.0.0))(react-router-dom@7.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rxjs@7.8.2): + baseline-browser-mapping@2.8.18: {} + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + beautiful-react-hooks@5.0.3(react-dom@19.2.0(react@19.2.0))(react-router-dom@7.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(rxjs@7.8.2): dependencies: lodash.debounce: 4.0.8 lodash.throttle: 4.1.1 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-router-dom: 7.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-router-dom: 7.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) rxjs: 7.8.2 - best-effort-json-parser@1.1.3: {} + best-effort-json-parser@1.2.1: {} - better-sqlite3@11.9.1: + better-sqlite3@12.4.1: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + big.js@5.2.2: {} bindings@1.5.0: @@ -10582,15 +10646,29 @@ snapshots: bmp-ts@1.0.9: {} + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.3(supports-color@8.1.1) + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.1 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + boolean@3.2.0: optional: true - 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 @@ -10598,12 +10676,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.4: + browserslist@4.26.3: dependencies: - caniuse-lite: 1.0.30001709 - electron-to-chromium: 1.5.130 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) + baseline-browser-mapping: 2.8.18 + caniuse-lite: 1.0.30001751 + electron-to-chromium: 1.5.237 + node-releases: 2.0.26 + update-browserslist-db: 1.1.3(browserslist@4.26.3) buffer-crc32@0.2.13: {} @@ -10621,6 +10700,8 @@ snapshots: builtin-modules@5.0.0: {} + bytes@3.1.2: {} + cac@6.7.14: {} cacache@16.1.3(bluebird@3.7.2): @@ -10658,7 +10739,7 @@ snapshots: minipass-pipeline: 1.2.4 p-map: 7.0.3 ssri: 12.0.0 - tar: 7.4.3 + tar: 7.5.1 unique-filename: 4.0.0 cacheable-lookup@5.0.4: {} @@ -10678,14 +10759,6 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.2 @@ -10707,42 +10780,29 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001709: {} + caniuse-lite@1.0.30001751: {} capital-case@1.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 upper-case-first: 2.0.2 - chai@5.1.2: + chai@5.3.3: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 - deep-eql: 5.0.1 - loupe: 3.1.0 - pathval: 2.0.0 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.1 - loupe: 3.1.0 - pathval: 2.0.0 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + chai@6.2.0: {} chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.4.1: {} - chardet@0.7.0: {} check-error@2.1.1: {} @@ -10753,18 +10813,15 @@ snapshots: chownr@3.0.0: {} - chrome-trace-event@1.0.3: {} + chrome-trace-event@1.0.4: {} - chromium-pickle-js@0.2.0: - optional: true - - ci-info@4.2.0: {} + ci-info@4.3.1: {} class-transformer@0.5.1: {} classnames@2.5.1: {} - clean-css@5.3.2: + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -10786,7 +10843,7 @@ snapshots: cli-spinners@2.9.2: {} - cli-table3@0.6.3: + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: @@ -10820,40 +10877,36 @@ snapshots: clsx@2.1.1: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - 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-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 + color-name@2.0.2: {} - color@3.2.1: + color-string@2.1.2: dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 + color-name: 2.0.2 + + color@5.0.2: + dependencies: + color-convert: 3.1.2 + color-string: 2.1.2 colorette@2.0.20: {} - colorspace@1.1.4: - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - commander@10.0.1: {} commander@11.1.0: {} - commander@12.0.0: {} + commander@13.1.0: {} + + commander@14.0.1: {} commander@2.20.3: {} @@ -10880,18 +10933,33 @@ snapshots: concat-map@0.0.1: {} + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + cookie@1.0.2: {} - core-js-compat@3.41.0: + core-js-compat@3.46.0: dependencies: - browserslist: 4.24.4 + browserslist: 4.26.3 core-util-is@1.0.3: {} + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -10906,9 +10974,10 @@ snapshots: cross-dirname@0.1.0: {} - cross-env@7.0.3: + cross-env@10.1.0: dependencies: - cross-spawn: 7.0.3 + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 cross-spawn@6.0.6: dependencies: @@ -10918,19 +10987,13 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - cross-zip@4.0.0: + cross-zip@4.0.1: optional: true css-color-keywords@1.0.0: {} @@ -10941,24 +11004,29 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css.escape@1.5.1: {} - cssstyle@4.4.0: + cssstyle@5.3.1(postcss@8.5.6): dependencies: - '@asamuzakjp/css-color': 3.2.0 - rrweb-cssom: 0.8.0 - - csstype@3.1.2: - optional: true + '@asamuzakjp/css-color': 4.0.5 + '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) + css-tree: 3.1.0 + transitivePeerDependencies: + - postcss csstype@3.1.3: {} data-uri-to-buffer@4.0.1: {} - data-urls@5.0.0: + data-urls@6.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-url: 15.1.0 data-view-buffer@1.0.2: dependencies: @@ -10980,7 +11048,7 @@ snapshots: date-fns@3.6.0: {} - dayjs@1.11.13: {} + dayjs@1.11.18: {} debug@2.6.9: dependencies: @@ -10990,27 +11058,23 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4(supports-color@8.1.1): + debug@4.4.3(supports-color@8.1.1): dependencies: - ms: 2.1.2 + ms: 2.1.3 optionalDependencies: supports-color: 8.1.1 - debug@4.4.0: - dependencies: - ms: 2.1.3 - - debug@4.4.1: - dependencies: - ms: 2.1.3 - - decimal.js@10.5.0: {} + decimal.js@10.6.0: {} decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - deep-eql@5.0.1: {} + dedent@1.7.0(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 + + deep-eql@5.0.2: {} deep-extend@0.6.0: {} @@ -11038,19 +11102,19 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.2: {} + defu@6.1.4: {} + + depd@2.0.0: {} dequal@2.0.3: {} - detect-indent@7.0.1: {} + detect-indent@7.0.2: {} - detect-libc@2.0.4: {} + detect-libc@2.1.2: {} detect-node@2.1.0: optional: true - diff-match-patch@1.0.5: {} - diff3@0.0.3: {} diff@4.0.2: {} @@ -11074,7 +11138,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 csstype: 3.1.3 dom-serializer@2.0.0: @@ -11089,7 +11153,9 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@3.1.0: + dompurify@3.1.7: {} + + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -11100,7 +11166,7 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 - dotenv@16.5.0: {} + dotenv@16.6.1: {} dprint@0.49.1: optionalDependencies: @@ -11114,17 +11180,17 @@ snapshots: '@dprint/win32-arm64': 0.49.1 '@dprint/win32-x64': 0.49.1 - dprint@0.50.0: + dprint@0.50.2: optionalDependencies: - '@dprint/darwin-arm64': 0.50.0 - '@dprint/darwin-x64': 0.50.0 - '@dprint/linux-arm64-glibc': 0.50.0 - '@dprint/linux-arm64-musl': 0.50.0 - '@dprint/linux-riscv64-glibc': 0.50.0 - '@dprint/linux-x64-glibc': 0.50.0 - '@dprint/linux-x64-musl': 0.50.0 - '@dprint/win32-arm64': 0.50.0 - '@dprint/win32-x64': 0.50.0 + '@dprint/darwin-arm64': 0.50.2 + '@dprint/darwin-x64': 0.50.2 + '@dprint/linux-arm64-glibc': 0.50.2 + '@dprint/linux-arm64-musl': 0.50.2 + '@dprint/linux-riscv64-glibc': 0.50.2 + '@dprint/linux-x64-glibc': 0.50.2 + '@dprint/linux-x64-musl': 0.50.2 + '@dprint/win32-arm64': 0.50.2 + '@dprint/win32-x64': 0.50.2 dugite@2.7.1: dependencies: @@ -11139,11 +11205,13 @@ snapshots: eastasianwidth@0.2.0: {} - electron-chrome-web-store@0.12.0: + ee-first@1.1.1: {} + + electron-chrome-web-store@0.13.0: dependencies: '@types/chrome': 0.0.287 adm-zip: 0.5.16 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) pbf: 4.0.1 transitivePeerDependencies: - supports-color @@ -11151,19 +11219,19 @@ snapshots: electron-dl@4.0.0: dependencies: ext-name: 5.0.0 - pupa: 3.1.0 + pupa: 3.3.0 unused-filename: 4.0.1 - electron-installer-common@0.10.3: + electron-installer-common@0.10.4: dependencies: + '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 1.1.1 - asar: 3.2.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 9.1.0 glob: 7.2.3 lodash: 4.17.21 parse-author: 2.0.0 - semver: 7.7.2 + semver: 7.7.3 tmp-promise: 3.0.3 optionalDependencies: '@types/fs-extra': 9.0.13 @@ -11174,12 +11242,12 @@ snapshots: electron-installer-debian@3.2.0: dependencies: '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.1 - electron-installer-common: 0.10.3 + debug: 4.4.3(supports-color@8.1.1) + electron-installer-common: 0.10.4 fs-extra: 9.1.0 get-folder-size: 2.0.1 lodash: 4.17.21 - word-wrap: 1.2.4 + word-wrap: 1.2.5 yargs: 16.2.0 transitivePeerDependencies: - supports-color @@ -11188,11 +11256,11 @@ snapshots: electron-installer-redhat@3.4.0: dependencies: '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.1 - electron-installer-common: 0.10.3 + debug: 4.4.3(supports-color@8.1.1) + electron-installer-common: 0.10.4 fs-extra: 9.1.0 lodash: 4.17.21 - word-wrap: 1.2.4 + word-wrap: 1.2.5 yargs: 16.2.0 transitivePeerDependencies: - supports-color @@ -11201,12 +11269,12 @@ snapshots: electron-installer-snap@5.2.0: dependencies: '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.1 - electron-installer-common: 0.10.3 + debug: 4.4.3(supports-color@8.1.1) + electron-installer-common: 0.10.4 fs-extra: 9.1.0 js-yaml: 3.14.1 lodash: 4.17.21 - semver: 7.7.2 + semver: 7.7.3 tmp-promise: 3.0.3 which: 2.0.2 yargs: 16.2.0 @@ -11214,9 +11282,9 @@ snapshots: - supports-color optional: true - electron-ipc-cat@2.1.1(electron@36.4.0)(rxjs@7.8.2): + electron-ipc-cat@2.1.1(electron@38.3.0)(rxjs@7.8.2): dependencies: - electron: 36.4.0 + electron: 38.3.0 memize: 2.1.1 rxjs: 7.8.2 serialize-error: 12.0.0 @@ -11225,17 +11293,17 @@ snapshots: electron-positioner@4.1.0: {} - electron-settings@5.0.0(electron@36.4.0): + electron-settings@5.0.0(electron@38.3.0): dependencies: - atomically: 2.0.1 - electron: 36.4.0 + atomically: 2.0.3 + electron: 38.3.0 lodash.get: 4.4.2 lodash.has: 4.5.2 lodash.set: 4.3.2 lodash.unset: 4.5.2 mkdirp: 1.0.4 - electron-to-chromium@1.5.130: {} + electron-to-chromium@1.5.237: {} electron-unhandled@4.0.1: dependencies: @@ -11250,22 +11318,22 @@ snapshots: jsonfile: 4.0.0 mkdirp: 0.5.6 - electron-winstaller@5.3.0: + electron-winstaller@5.4.0: dependencies: - '@electron/asar': 3.2.17 - debug: 4.4.1 + '@electron/asar': 3.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 7.0.1 - lodash.template: 4.5.0 + lodash: 4.17.21 temp: 0.9.4 optionalDependencies: - '@electron/windows-sign': 1.1.2 + '@electron/windows-sign': 1.2.2 transitivePeerDependencies: - supports-color optional: true - electron@36.4.0: + electron@38.3.0: dependencies: - '@electron/get': 2.0.2 + '@electron/get': 2.0.3 '@types/node': 22.13.0 extract-zip: 2.0.1 transitivePeerDependencies: @@ -11279,19 +11347,21 @@ snapshots: enabled@2.0.0: {} + encodeurl@2.0.0: {} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 optional: true - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 - enhanced-resolve@5.18.1: + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.3.0 ensure-error@2.1.0: {} @@ -11309,7 +11379,7 @@ snapshots: dependencies: prr: 1.0.1 - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -11317,7 +11387,7 @@ snapshots: dependencies: stackframe: 1.3.4 - es-abstract@1.23.9: + es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -11346,7 +11416,9 @@ snapshots: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 + is-negative-zero: 2.0.3 is-regex: 1.2.1 + is-set: 2.0.3 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 @@ -11361,6 +11433,7 @@ snapshots: 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 @@ -11371,10 +11444,6 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.3.0 - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -11384,7 +11453,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -11424,150 +11493,153 @@ snapshots: es6-error@4.1.1: optional: true - esbuild@0.25.2: + esbuild@0.25.11: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.2 - '@esbuild/android-arm': 0.25.2 - '@esbuild/android-arm64': 0.25.2 - '@esbuild/android-x64': 0.25.2 - '@esbuild/darwin-arm64': 0.25.2 - '@esbuild/darwin-x64': 0.25.2 - '@esbuild/freebsd-arm64': 0.25.2 - '@esbuild/freebsd-x64': 0.25.2 - '@esbuild/linux-arm': 0.25.2 - '@esbuild/linux-arm64': 0.25.2 - '@esbuild/linux-ia32': 0.25.2 - '@esbuild/linux-loong64': 0.25.2 - '@esbuild/linux-mips64el': 0.25.2 - '@esbuild/linux-ppc64': 0.25.2 - '@esbuild/linux-riscv64': 0.25.2 - '@esbuild/linux-s390x': 0.25.2 - '@esbuild/linux-x64': 0.25.2 - '@esbuild/netbsd-arm64': 0.25.2 - '@esbuild/netbsd-x64': 0.25.2 - '@esbuild/openbsd-arm64': 0.25.2 - '@esbuild/openbsd-x64': 0.25.2 - '@esbuild/sunos-x64': 0.25.2 - '@esbuild/win32-arm64': 0.25.2 - '@esbuild/win32-ia32': 0.25.2 - '@esbuild/win32-x64': 0.25.2 + '@esbuild/aix-ppc64': 0.25.11 + '@esbuild/android-arm': 0.25.11 + '@esbuild/android-arm64': 0.25.11 + '@esbuild/android-x64': 0.25.11 + '@esbuild/darwin-arm64': 0.25.11 + '@esbuild/darwin-x64': 0.25.11 + '@esbuild/freebsd-arm64': 0.25.11 + '@esbuild/freebsd-x64': 0.25.11 + '@esbuild/linux-arm': 0.25.11 + '@esbuild/linux-arm64': 0.25.11 + '@esbuild/linux-ia32': 0.25.11 + '@esbuild/linux-loong64': 0.25.11 + '@esbuild/linux-mips64el': 0.25.11 + '@esbuild/linux-ppc64': 0.25.11 + '@esbuild/linux-riscv64': 0.25.11 + '@esbuild/linux-s390x': 0.25.11 + '@esbuild/linux-x64': 0.25.11 + '@esbuild/netbsd-arm64': 0.25.11 + '@esbuild/netbsd-x64': 0.25.11 + '@esbuild/openbsd-arm64': 0.25.11 + '@esbuild/openbsd-x64': 0.25.11 + '@esbuild/openharmony-arm64': 0.25.11 + '@esbuild/sunos-x64': 0.25.11 + '@esbuild/win32-arm64': 0.25.11 + '@esbuild/win32-ia32': 0.25.11 + '@esbuild/win32-x64': 0.25.11 escalade@3.2.0: {} escape-goat@4.0.0: {} + escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.23.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) - semver: 7.7.2 + eslint: 9.38.0(jiti@2.6.1) + semver: 7.7.3 - eslint-config-standard-with-typescript@43.0.1(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + eslint-config-standard-with-typescript@43.0.1(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-promise@7.2.1(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 6.21.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) - eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-n: 17.17.0(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-promise: 7.2.1(eslint@9.23.0(jiti@2.4.2)) - typescript: 5.8.3 + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-promise@7.2.1(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-n: 17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-promise: 7.2.1(eslint@9.38.0(jiti@2.6.1)) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2)): + eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-promise@7.2.1(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-n: 17.17.0(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-promise: 7.2.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.38.0(jiti@2.6.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-n: 17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-promise: 7.2.1(eslint@9.38.0(jiti@2.6.1)) - eslint-config-tidgi@2.2.0(jiti@2.4.2)(typescript@5.8.3): + eslint-config-tidgi@2.2.0(jiti@2.6.1)(typescript@5.9.3): dependencies: - '@eslint/js': 9.23.0 - '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@eslint/js': 9.38.0 + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) dprint: 0.49.1 - eslint: 9.23.0(jiti@2.4.2) - eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2)) - eslint-config-standard-with-typescript: 43.0.1(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)))(eslint-plugin-promise@7.2.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.38.0(jiti@2.6.1) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-promise@7.2.1(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1)) + eslint-config-standard-with-typescript: 43.0.1(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import@2.31.0)(eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-promise@7.2.1(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.31.0) - eslint-import-resolver-typescript: 4.3.1(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-autofix: 2.2.0(eslint@9.23.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.1(eslint-plugin-import@2.31.0)(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-autofix: 2.2.0(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-dprint-integration: 0.3.0 - eslint-plugin-format: 1.0.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-format: 1.0.2(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-html: 8.1.2 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-n: 17.17.0(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-node: 11.1.0(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-promise: 7.2.1(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-react: 7.37.4(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-n: 17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-node: 11.1.0(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-promise: 7.2.1(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.4(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-security: 3.0.1 eslint-plugin-security-node: 1.1.4 - eslint-plugin-typescript-sort-keys: 3.3.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint-plugin-unicorn: 58.0.0(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2)) - typescript: 5.8.3 - typescript-eslint: 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-typescript-sort-keys: 3.3.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-unicorn: 58.0.0(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-unused-imports: 4.3.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) + typescript: 5.9.3 + typescript-eslint: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x - jiti - supports-color - eslint-formatting-reporter@0.0.0(eslint@9.23.0(jiti@2.4.2)): + eslint-formatting-reporter@0.0.0(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) prettier-linter-helpers: 1.0.0 eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0): dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)) eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.10 + resolve: 1.22.11 transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.3.1(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)): + eslint-import-resolver-typescript@4.3.1(eslint-plugin-import@2.31.0)(eslint@9.38.0(jiti@2.6.1)): dependencies: - debug: 4.4.1 - eslint: 9.23.0(jiti@2.4.2) - get-tsconfig: 4.10.0 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.38.0(jiti@2.6.1) + get-tsconfig: 4.12.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.14 - unrs-resolver: 1.7.13 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.3.1(eslint-plugin-import@2.31.0)(eslint@9.23.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.3.1(eslint-plugin-import@2.31.0)(eslint@9.38.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color eslint-parser-plain@0.1.1: {} - eslint-plugin-autofix@2.2.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-autofix@2.2.0(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) eslint-rule-composer: 0.3.0 espree: 9.6.1 esutils: 2.0.3 @@ -11575,56 +11647,56 @@ snapshots: eslint-plugin-dprint-integration@0.3.0: dependencies: - '@dprint/dockerfile': 0.3.0 - '@dprint/formatter': 0.2.0 + '@dprint/dockerfile': 0.3.3 + '@dprint/formatter': 0.2.1 '@dprint/json': 0.17.4 '@dprint/markdown': 0.15.3 '@dprint/toml': 0.5.4 '@dprint/typescript': 0.84.4 - defu: 6.1.2 + defu: 6.1.4 find-up: 5.0.0 prettier-linter-helpers: 1.0.0 - eslint-plugin-es-x@7.8.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-es-x@7.8.0(eslint@9.38.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 - eslint: 9.23.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.38.0(jiti@2.6.1) + eslint-compat-utils: 0.5.1(eslint@9.38.0(jiti@2.6.1)) - eslint-plugin-es@3.0.1(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-es@3.0.1(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-format@1.0.2(eslint@9.38.0(jiti@2.6.1)): dependencies: '@dprint/formatter': 0.3.0 '@dprint/markdown': 0.17.8 '@dprint/toml': 0.6.4 - eslint: 9.23.0(jiti@2.4.2) - eslint-formatting-reporter: 0.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.38.0(jiti@2.6.1) + eslint-formatting-reporter: 0.0.0(eslint@9.38.0(jiti@2.6.1)) eslint-parser-plain: 0.1.1 - prettier: 3.5.3 - synckit: 0.9.2 + prettier: 3.6.2 + synckit: 0.9.3 eslint-plugin-html@8.1.2: dependencies: htmlparser2: 9.1.0 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 + 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: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.1)(eslint@9.23.0(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.3.1)(eslint@9.38.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -11636,55 +11708,58 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-n@17.23.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) - enhanced-resolve: 5.18.1 - eslint: 9.23.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.23.0(jiti@2.4.2)) - get-tsconfig: 4.10.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + enhanced-resolve: 5.18.3 + eslint: 9.38.0(jiti@2.6.1) + eslint-plugin-es-x: 7.8.0(eslint@9.38.0(jiti@2.6.1)) + get-tsconfig: 4.12.0 globals: 15.15.0 + globrex: 0.1.2 ignore: 5.3.2 - minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 + ts-declaration-location: 1.0.7(typescript@5.9.3) + transitivePeerDependencies: + - typescript - eslint-plugin-node@11.1.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-node@11.1.0(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) - eslint-plugin-es: 3.0.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.38.0(jiti@2.6.1) + eslint-plugin-es: 3.0.1(eslint@9.38.0(jiti@2.6.1)) eslint-utils: 2.1.0 ignore: 5.3.2 minimatch: 3.1.2 - resolve: 1.22.10 + resolve: 1.22.11 semver: 6.3.1 - eslint-plugin-promise@7.2.1(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-promise@7.2.1(eslint@9.38.0(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) - eslint: 9.23.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + eslint: 9.38.0(jiti@2.6.1) - eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) - eslint-plugin-react@7.37.4(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-react@7.37.4(eslint@9.38.0(jiti@2.6.1)): dependencies: - array-includes: 3.1.8 + 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.2.1 - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 - jsx-ast-utils: 3.3.4 + jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.9 object.fromentries: 2.0.8 @@ -11701,28 +11776,28 @@ snapshots: dependencies: safe-regex: 2.1.1 - eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + eslint-plugin-typescript-sort-keys@3.3.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/experimental-utils': 5.61.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) json-schema: 0.4.0 natural-compare-lite: 1.4.0 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@58.0.0(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-unicorn@58.0.0(eslint@9.38.0(jiti@2.6.1)): dependencies: '@babel/helper-validator-identifier': 7.27.1 - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@eslint/plugin-kit': 0.2.8 - ci-info: 4.2.0 + ci-info: 4.3.1 clean-regexp: 1.0.0 - core-js-compat: 3.41.0 - eslint: 9.23.0(jiti@2.4.2) + core-js-compat: 3.46.0 + eslint: 9.38.0(jiti@2.6.1) esquery: 1.6.0 - globals: 16.0.0 + globals: 16.4.0 indent-string: 5.0.0 is-builtin-module: 5.0.0 jsesc: 3.1.0 @@ -11730,14 +11805,14 @@ snapshots: read-package-up: 11.0.0 regexp-tree: 0.1.27 regjsparser: 0.12.0 - semver: 7.7.2 - strip-indent: 4.0.0 + semver: 7.7.3 + strip-indent: 4.1.1 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.23.0(jiti@2.4.2) + eslint: 9.38.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) eslint-rule-composer@0.3.0: {} @@ -11746,7 +11821,7 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.3.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -11759,31 +11834,30 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} - eslint@9.23.0(jiti@2.4.2): + eslint@9.38.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/config-helpers': 0.2.1 - '@eslint/core': 0.12.0 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.1 + '@eslint/core': 0.16.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.23.0 - '@eslint/plugin-kit': 0.2.8 - '@humanfs/node': 0.16.6 + '@eslint/js': 9.38.0 + '@eslint/plugin-kit': 0.4.0 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.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 @@ -11797,22 +11871,22 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 optionalDependencies: - jiti: 2.4.2 + jiti: 2.6.1 transitivePeerDependencies: - supports-color - espree@10.3.0: + espree@10.4.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 espree@9.6.1: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: @@ -11834,14 +11908,20 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esutils@2.0.3: {} + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + eventemitter3@5.0.1: {} events@3.3.0: {} + eventsource-parser@3.0.6: {} + execa@1.0.0: dependencies: cross-spawn: 6.0.6 @@ -11868,13 +11948,45 @@ snapshots: expand-template@2.0.3: {} - expect-type@1.2.1: {} + expect-type@1.2.2: {} - exponential-backoff@3.1.1: {} + exponential-backoff@3.1.3: {} + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.3(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.2 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color ext-list@2.2.2: dependencies: - mime-db: 1.52.0 + mime-db: 1.54.0 ext-name@5.0.0: dependencies: @@ -11891,11 +12003,11 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.0 + '@types/yauzl': 2.10.3 transitivePeerDependencies: - supports-color @@ -11915,24 +12027,16 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} - fastq@1.15.0: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fd-slicer@1.1.0: dependencies: pend: 1.2.0 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - fdir@6.4.5(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -11942,7 +12046,7 @@ snapshots: fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 + web-streams-polyfill: 3.3.3 fflate@0.8.2: {} @@ -11956,11 +12060,11 @@ snapshots: file-stream-rotator@0.6.1: dependencies: - moment: 2.29.4 + moment: 2.30.1 file-type@16.5.4: dependencies: - readable-web-to-node-stream: 3.0.2 + readable-web-to-node-stream: 3.0.4 strtok3: 6.3.0 token-types: 4.2.1 @@ -11978,9 +12082,20 @@ snapshots: dependencies: to-regex-range: 5.0.1 + finalhandler@2.1.0: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + find-root@1.1.0: {} - find-up-simple@1.0.0: {} + find-up-simple@1.0.1: {} find-up@2.1.0: dependencies: @@ -12000,43 +12115,43 @@ snapshots: flora-colossus@2.0.0: dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) fs-extra: 10.1.0 transitivePeerDependencies: - supports-color fn.name@1.1.0: {} - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 - signal-exit: 4.0.2 + signal-exit: 4.1.0 formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 + forwarded@0.2.0: {} + + fresh@2.0.0: {} + fs-constants@1.0.0: {} fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 + jsonfile: 6.2.0 + universalify: 2.0.1 - fs-extra@11.3.0: + fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 + jsonfile: 6.2.0 + universalify: 2.0.1 fs-extra@7.0.1: dependencies: @@ -12055,8 +12170,8 @@ snapshots: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 + jsonfile: 6.2.0 + universalify: 2.0.1 fs-minipass@2.1.0: dependencies: @@ -12089,7 +12204,7 @@ snapshots: galactus@1.0.0: dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) flora-colossus: 2.0.0 fs-extra: 10.1.0 transitivePeerDependencies: @@ -12098,6 +12213,8 @@ snapshots: gar@1.0.4: optional: true + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -12108,8 +12225,6 @@ snapshots: tiny-each-async: 2.0.3 optional: true - get-func-name@2.0.2: {} - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -12139,11 +12254,11 @@ snapshots: get-stream@4.1.0: dependencies: - pump: 3.0.2 + pump: 3.0.3 get-stream@5.2.0: dependencies: - pump: 3.0.2 + pump: 3.0.3 get-stream@6.0.1: {} @@ -12153,7 +12268,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.0: + get-tsconfig@4.12.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -12165,8 +12280,8 @@ snapshots: git-sync-js@2.0.5: dependencies: dugite: 2.7.1 - fs-extra: 11.3.0 - isomorphic-git: 1.25.2 + fs-extra: 11.3.2 + isomorphic-git: 1.34.0 lodash: 4.17.21 github-from-package@0.0.0: {} @@ -12183,18 +12298,18 @@ snapshots: glob@10.4.5: dependencies: - foreground-child: 3.1.1 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.0: + glob@11.0.3: dependencies: - foreground-child: 3.1.1 - jackspeak: 4.0.2 - minimatch: 10.0.1 + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.0 @@ -12222,7 +12337,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.7.2 + semver: 7.7.3 serialize-error: 7.0.1 optional: true @@ -12234,12 +12349,7 @@ snapshots: globals@15.15.0: {} - globals@16.0.0: {} - - globalthis@1.0.3: - dependencies: - define-properties: 1.2.1 - optional: true + globals@16.4.0: {} globalthis@1.0.4: dependencies: @@ -12255,6 +12365,8 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globrex@0.1.2: {} + gopd@1.2.0: {} got@11.8.6: @@ -12275,15 +12387,15 @@ snapshots: graphemer@1.4.0: {} - graphql-hooks@8.2.0(react@19.0.0): + graphql-hooks@8.2.0(react@19.2.0): dependencies: - '@0no-co/graphql.web': 1.0.7 + '@0no-co/graphql.web': 1.2.0 '@aws-crypto/sha256-browser': 5.2.0 buffer: 6.0.3 events: 3.3.0 extract-files: 11.0.0 - react: 19.0.0 - use-deep-compare-effect: 1.8.1(react@19.0.0) + react: 19.2.0 + use-deep-compare-effect: 1.8.1(react@19.2.0) transitivePeerDependencies: - graphql @@ -12293,7 +12405,7 @@ snapshots: dependencies: ansi-regex: 4.1.1 - has-bigints@1.0.2: {} + has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -12321,11 +12433,11 @@ snapshots: hosted-git-info@2.8.9: {} - hosted-git-info@7.0.1: + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 - hosted-git-info@8.0.2: + hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 @@ -12340,12 +12452,12 @@ snapshots: html-minifier-terser@7.2.0: dependencies: camel-case: 4.1.2 - clean-css: 5.3.2 + clean-css: 5.3.3 commander: 10.0.1 entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.18.2 + terser: 5.44.0 html-parse-stringify@3.0.1: dependencies: @@ -12355,23 +12467,31 @@ snapshots: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 entities: 4.5.0 http-cache-semantics@4.2.0: {} + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.3 - debug: 4.4.1 + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -12383,14 +12503,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.3 - debug: 4.4.1 + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -12407,15 +12527,11 @@ snapshots: i18next-fs-backend@2.6.0: {} - i18next@21.10.0: + i18next@25.6.0(typescript@5.9.3): dependencies: - '@babel/runtime': 7.27.1 - - i18next@25.2.1(typescript@5.8.3): - dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.28.4 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 iconv-lite@0.4.24: dependencies: @@ -12425,21 +12541,25 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.0: + dependencies: + safer-buffer: 2.1.2 + identity-obj-proxy@3.0.0: dependencies: harmony-reflect: 1.6.2 ieee754@1.2.1: {} - ignore@5.2.4: {} - ignore@5.3.2: {} + ignore@7.0.5: {} + image-q@4.0.0: dependencies: '@types/node': 16.9.1 - immer@10.1.1: {} + immer@10.1.3: {} import-fresh@3.3.1: dependencies: @@ -12452,7 +12572,7 @@ snapshots: indent-string@5.0.0: {} - index-to-position@0.1.2: {} + index-to-position@1.2.0: {} infer-owner@1.0.4: {} @@ -12479,24 +12599,20 @@ snapshots: interpret@3.1.1: {} - inversify@6.2.1(reflect-metadata@0.2.2): + inversify@7.10.3(reflect-metadata@0.2.2): dependencies: - '@inversifyjs/common': 1.4.0 - '@inversifyjs/core': 1.3.5(reflect-metadata@0.2.2) - reflect-metadata: 0.2.2 + '@inversifyjs/common': 1.5.2 + '@inversifyjs/container': 1.14.0(reflect-metadata@0.2.2) + '@inversifyjs/core': 9.1.0(reflect-metadata@0.2.2) + transitivePeerDependencies: + - reflect-metadata - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 + ip-address@10.0.1: {} + + ipaddr.js@1.9.1: {} ipaddr.js@2.2.0: {} - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.8 - has-tostringtag: 1.0.2 - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -12505,15 +12621,17 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: {} - - 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.1.0: dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 is-boolean-object@1.2.2: dependencies: @@ -12526,7 +12644,7 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 is-callable@1.2.7: {} @@ -12555,9 +12673,15 @@ snapshots: is-fullwidth-code-point@4.0.0: {} - is-generator-function@1.0.10: + is-generator-function@1.1.2: dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-git-ref-name-valid@1.0.0: {} is-glob@4.0.3: dependencies: @@ -12574,10 +12698,7 @@ snapshots: is-map@2.0.3: {} - is-nan@1.3.2: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 + is-negative-zero@2.0.3: {} is-number-object@1.1.1: dependencies: @@ -12590,8 +12711,12 @@ snapshots: is-plain-obj@1.1.0: {} + is-plain-obj@4.1.0: {} + is-potential-custom-element-name@1.0.1: {} + is-promise@4.0.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -12620,10 +12745,6 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.19 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 @@ -12636,9 +12757,9 @@ snapshots: dependencies: call-bound: 1.0.4 - is-weakset@2.0.3: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.4 get-intrinsic: 1.3.0 isarray@1.0.0: {} @@ -12651,18 +12772,20 @@ snapshots: isexe@3.1.1: {} - isomorphic-git@1.25.2: + isomorphic-git@1.34.0: dependencies: - async-lock: 1.4.0 + async-lock: 1.4.1 clean-git-ref: 2.0.1 crc-32: 1.2.2 diff3: 0.0.3 - ignore: 5.2.4 + ignore: 5.3.2 + is-git-ref-name-valid: 1.0.0 minimisted: 2.0.1 pako: 1.0.11 + path-browserify: 1.0.1 pify: 4.0.1 readable-stream: 3.6.2 - sha.js: 2.4.11 + sha.js: 2.4.12 simple-get: 4.0.1 istanbul-lib-coverage@3.2.2: {} @@ -12675,13 +12798,13 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.1 + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 @@ -12701,13 +12824,13 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.0.2: + jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 jest-worker@27.5.1: dependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12741,7 +12864,9 @@ snapshots: '@jimp/types': 1.6.0 '@jimp/utils': 1.6.0 - jiti@2.4.2: {} + jiti@2.6.1: {} + + jose@6.1.0: {} jpeg-js@0.4.4: {} @@ -12759,32 +12884,31 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} - - jsdom@26.1.0: + jsdom@27.0.1(postcss@8.5.6): dependencies: - cssstyle: 4.4.0 - data-urls: 5.0.0 - decimal.js: 10.5.0 + '@asamuzakjp/dom-selector': 6.7.2 + cssstyle: 5.3.1(postcss@8.5.6) + data-urls: 6.0.0 + decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 - parse5: 7.3.0 + parse5: 8.0.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.2 + tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 + webidl-conversions: 8.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - ws: 8.18.2 + whatwg-url: 15.1.0 + ws: 8.18.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil + - postcss - supports-color - utf-8-validate @@ -12823,19 +12947,13 @@ snapshots: json5@2.2.3: {} - jsondiffpatch@0.6.0: - dependencies: - '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 - diff-match-patch: 1.0.5 - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: - universalify: 2.0.0 + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 @@ -12843,15 +12961,17 @@ snapshots: jsonpointer@5.0.1: {} - jsx-ast-utils@3.3.4: + jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.8 + array-includes: 3.1.9 array.prototype.flat: 1.3.3 object.assign: 4.1.7 object.values: 1.2.1 junk@3.1.0: {} + jwt-decode@4.0.0: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -12877,7 +12997,7 @@ snapshots: colorette: 2.0.20 eventemitter3: 5.0.1 log-update: 5.0.1 - rfdc: 1.3.0 + rfdc: 1.4.1 wrap-ansi: 8.1.0 load-json-file@2.0.0: @@ -12889,7 +13009,7 @@ snapshots: load-tsconfig@0.2.5: {} - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@2.0.4: dependencies: @@ -12914,9 +13034,6 @@ snapshots: lodash._getnative@3.9.1: {} - lodash._reinterpolate@3.0.0: - optional: true - lodash.clonedeep@4.5.0: {} lodash.debounce@4.0.8: {} @@ -12941,16 +13058,7 @@ snapshots: lodash.set@4.3.2: {} - lodash.template@4.5.0: - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 - optional: true - - lodash.templatesettings@4.2.0: - dependencies: - lodash._reinterpolate: 3.0.0 - optional: true + lodash.sortby@4.7.0: {} lodash.throttle@4.1.1: {} @@ -12974,27 +13082,23 @@ snapshots: ansi-escapes: 5.0.0 cli-cursor: 4.0.0 slice-ansi: 5.0.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrap-ansi: 8.1.0 logform@2.7.0: dependencies: '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.2 + '@types/triple-beam': 1.3.5 fecha: 4.2.3 ms: 2.1.3 - safe-stable-stringify: 2.4.3 + safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - loupe@3.1.0: - dependencies: - get-func-name: 2.0.2 - - loupe@3.1.3: {} + loupe@3.2.1: {} lower-case@2.0.2: dependencies: @@ -13004,37 +13108,31 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.2: {} + lru-cache@11.2.2: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru-cache@7.18.3: {} - luxon@3.2.1: {} - - luxon@3.5.0: {} + luxon@3.7.1: {} lz-string@1.5.0: {} - magic-string@0.30.17: + magic-string@0.30.19: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 magicast@0.3.5: dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} @@ -13080,28 +13178,34 @@ snapshots: dependencies: p-defer: 1.0.0 - markdown-to-jsx@7.7.6(react@19.0.0): - dependencies: - react: 19.0.0 + markdown-to-jsx@7.7.16(react@19.2.0): + optionalDependencies: + react: 19.2.0 + + marked@14.0.0: {} matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 optional: true - material-ui-popup-state@5.3.6(@mui/material@7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@types/react@19.0.8)(react@19.0.0): + material-ui-popup-state@5.3.6(@mui/material@7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.2)(react@19.2.0): dependencies: - '@babel/runtime': 7.27.1 - '@mui/material': 7.1.1(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@types/prop-types': 15.7.14 + '@babel/runtime': 7.28.4 + '@mui/material': 7.3.4(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@types/prop-types': 15.7.15 classnames: 2.5.1 prop-types: 15.8.1 - react: 19.0.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.0.8 + '@types/react': 19.2.2 math-intrinsics@1.1.0: {} + mdn-data@2.12.2: {} + + media-typer@1.1.0: {} + mem@4.3.0: dependencies: map-age-cleaner: 0.1.3 @@ -13110,18 +13214,18 @@ snapshots: memize@2.1.1: {} - memoize-one@4.0.3: {} - memory-fs@0.5.0: dependencies: errno: 0.1.8 readable-stream: 2.3.8 - menubar@9.5.1(electron@36.4.0): + menubar@9.5.2(electron@38.3.0): dependencies: - electron: 36.4.0 + electron: 38.3.0 electron-positioner: 4.1.0 + merge-descriptors@2.0.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13133,10 +13237,16 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + mime@3.0.0: {} mimic-fn@2.1.0: {} @@ -13147,25 +13257,25 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.0.1: + minimatch@10.0.3: dependencies: - brace-expansion: 2.0.1 + '@isaacs/brace-expansion': 5.0.0 minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.3: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} @@ -13189,19 +13299,11 @@ snapshots: optionalDependencies: encoding: 0.1.13 - minipass-fetch@4.0.0: - dependencies: - minipass: 7.1.2 - minipass-sized: 1.0.3 - minizlib: 3.0.1 - optionalDependencies: - encoding: 0.1.13 - minipass-fetch@4.0.1: dependencies: minipass: 7.1.2 minipass-sized: 1.0.3 - minizlib: 3.0.2 + minizlib: 3.1.0 optionalDependencies: encoding: 0.1.13 @@ -13230,12 +13332,7 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - minizlib@3.0.1: - dependencies: - minipass: 7.1.2 - rimraf: 5.0.10 - - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 @@ -13249,20 +13346,19 @@ snapshots: mkdirp@1.0.4: {} - mkdirp@2.1.6: {} - mkdirp@3.0.1: {} - moment@2.29.4: {} + moment@2.30.1: {} - monaco-editor@0.52.2: {} + monaco-editor@0.54.0: + dependencies: + dompurify: 3.1.7 + marked: 14.0.0 - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} mute-stream@1.0.0: {} @@ -13275,13 +13371,11 @@ snapshots: nanoid@3.3.11: {} - nanoid@5.0.9: {} - - nanoid@5.1.5: {} + nanoid@5.1.6: {} napi-build-utils@2.0.0: {} - napi-postinstall@0.2.4: {} + napi-postinstall@0.3.4: {} natural-compare-lite@1.4.0: {} @@ -13293,7 +13387,7 @@ snapshots: neo-async@2.6.2: {} - new-github-issue-url@1.0.0: {} + new-github-issue-url@1.1.0: {} nice-try@1.0.5: {} @@ -13302,23 +13396,23 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.75.0: + node-abi@3.78.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 - node-abi@4.9.0: + node-abi@4.14.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-addon-api@3.2.1: {} node-api-version@0.2.1: dependencies: - semver: 7.7.2 + semver: 7.7.3 node-domexception@1.0.0: {} - node-fetch@2.6.12(encoding@0.1.13): + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 optionalDependencies: @@ -13330,27 +13424,27 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-gyp@11.2.0: + node-gyp@11.5.0: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.1 + exponential-backoff: 3.1.3 graceful-fs: 4.2.11 make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 - tar: 7.4.3 - tinyglobby: 0.2.14 + semver: 7.7.3 + tar: 7.5.1 + tinyglobby: 0.2.15 which: 5.0.0 transitivePeerDependencies: - supports-color - node-loader@2.1.0(webpack@5.88.1(@swc/core@1.12.0)(esbuild@0.25.2)): + node-loader@2.1.0(webpack@5.102.1(@swc/core@1.12.0)(esbuild@0.25.11)): dependencies: loader-utils: 2.0.4 - webpack: 5.88.1(@swc/core@1.12.0)(esbuild@0.25.2) + webpack: 5.102.1(@swc/core@1.12.0)(esbuild@0.25.11) - node-releases@2.0.19: {} + node-releases@2.0.26: {} nopt@6.0.0: dependencies: @@ -13363,34 +13457,34 @@ snapshots: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.10 + resolve: 1.22.11 semver: 5.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@6.0.2: dependencies: - hosted-git-info: 7.0.1 - semver: 7.7.2 + hosted-git-info: 7.0.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-url@6.1.0: {} - npm-package-arg@12.0.1: + npm-package-arg@12.0.2: dependencies: - hosted-git-info: 8.0.2 + hosted-git-info: 8.1.0 proc-log: 5.0.0 - semver: 7.7.2 - validate-npm-package-name: 6.0.0 + semver: 7.7.3 + validate-npm-package-name: 6.0.2 npm-registry-fetch@18.0.2: dependencies: - '@npmcli/redact': 3.1.1 + '@npmcli/redact': 3.2.2 jsonparse: 1.3.1 make-fetch-happen: 14.0.3 minipass: 7.1.2 - minipass-fetch: 4.0.0 - minizlib: 3.0.1 - npm-package-arg: 12.0.1 + minipass-fetch: 4.0.1 + minizlib: 3.1.0 + npm-package-arg: 12.0.2 proc-log: 5.0.0 transitivePeerDependencies: - supports-color @@ -13403,7 +13497,15 @@ snapshots: dependencies: path-key: 3.1.1 - nwsapi@2.2.20: {} + oauth2-mock-server@8.1.0: + dependencies: + basic-auth: 2.0.1 + cors: 2.8.5 + express: 5.1.0 + is-plain-obj: 4.1.0 + jose: 6.1.0 + transitivePeerDependencies: + - supports-color object-assign@4.1.1: {} @@ -13411,20 +13513,8 @@ snapshots: object-inspect@1.13.4: {} - object-is@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - object-keys@1.1.1: {} - object.assign@4.1.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - object.assign@4.1.7: dependencies: call-bind: 1.0.8 @@ -13445,14 +13535,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 object.values@1.2.1: dependencies: @@ -13461,16 +13551,22 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - ollama-ai-provider@1.2.0(zod@3.25.28): + oidc-client-ts@3.3.0: dependencies: - '@ai-sdk/provider': 1.1.0 - '@ai-sdk/provider-utils': 2.2.4(zod@3.25.28) - partial-json: 0.1.7 - optionalDependencies: - zod: 3.25.28 + jwt-decode: 4.0.0 + + ollama-ai-provider-v2@1.5.1(zod@4.1.12): + dependencies: + '@ai-sdk/provider': 2.0.0 + '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) + zod: 4.1.12 omggif@1.0.10: {} + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -13483,14 +13579,14 @@ snapshots: dependencies: mimic-fn: 2.1.0 - optionator@0.9.3: + optionator@0.9.4: 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: @@ -13576,26 +13672,26 @@ snapshots: parse-json@2.2.0: dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@8.1.0: + parse-json@8.3.0: dependencies: '@babel/code-frame': 7.27.1 - index-to-position: 0.1.2 + index-to-position: 1.2.0 type-fest: 4.41.0 - parse5@7.3.0: + parse5@8.0.0: dependencies: entities: 6.0.1 - partial-json@0.1.7: {} + parseurl@1.3.3: {} pascal-case@3.1.2: dependencies: @@ -13625,9 +13721,11 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.0.2 + lru-cache: 11.2.2 minipass: 7.1.2 + path-to-regexp@8.3.0: {} + path-type@2.0.0: dependencies: pify: 2.3.0 @@ -13636,7 +13734,7 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.0: {} + pathval@2.0.1: {} pbf@4.0.1: dependencies: @@ -13652,8 +13750,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.2: {} - picomatch@4.0.3: {} picospinner@3.0.0: {} @@ -13666,17 +13762,17 @@ snapshots: dependencies: pngjs: 6.0.0 - playwright-core@1.53.0: {} + playwright-core@1.56.1: {} - playwright@1.53.0: + playwright@1.56.1: dependencies: - playwright-core: 1.53.0 + playwright-core: 1.56.1 optionalDependencies: fsevents: 2.3.2 plist@3.1.0: dependencies: - '@xmldom/xmldom': 0.8.10 + '@xmldom/xmldom': 0.8.11 base64-js: 1.5.1 xmlbuilder: 15.1.1 @@ -13686,7 +13782,7 @@ snapshots: pngjs@7.0.0: {} - possible-typed-array-names@1.0.0: {} + possible-typed-array-names@1.1.0: {} postcss-value-parser@4.2.0: {} @@ -13706,21 +13802,21 @@ snapshots: dependencies: commander: 9.5.0 - preact@10.26.6: {} + preact@10.27.2: {} prebuild-install@7.1.3: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.75.0 - pump: 3.0.2 + node-abi: 3.78.0 + pump: 3.0.3 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 2.1.3 + tar-fs: 2.1.4 tunnel-agent: 0.6.0 prelude-ls@1.2.1: {} @@ -13729,7 +13825,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.5.3: {} + prettier@3.6.2: {} pretty-format@27.5.1: dependencies: @@ -13743,6 +13839,8 @@ snapshots: process-nextick-args@2.0.1: {} + process@0.11.10: {} + progress@2.0.3: {} promise-inflight@1.0.1(bluebird@3.7.2): @@ -13760,25 +13858,32 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - property-expr@2.0.5: {} + property-expr@2.0.6: {} protocol-buffers-schema@3.6.0: {} + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + prr@1.0.1: {} - pump@3.0.2: + pump@3.0.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 - punycode@2.3.0: {} - punycode@2.3.1: {} - pupa@3.1.0: + pupa@3.3.0: dependencies: escape-goat: 4.0.0 + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + queue-microtask@1.2.3: {} quick-lru@5.1.1: {} @@ -13787,6 +13892,15 @@ snapshots: dependencies: safe-buffer: 5.2.1 + range-parser@1.2.1: {} + + raw-body@3.0.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.7.0 + unpipe: 1.0.0 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -13794,76 +13908,74 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dom@19.0.0(react@19.0.0): + react-dom@19.2.0(react@19.2.0): dependencies: - react: 19.0.0 - scheduler: 0.25.0 + react: 19.2.0 + scheduler: 0.27.0 - react-i18next@15.5.2(i18next@25.2.1(typescript@5.8.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.3): + react-i18next@16.1.3(i18next@25.6.0(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3): dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.28.4 html-parse-stringify: 3.0.1 - i18next: 25.2.1(typescript@5.8.3) - react: 19.0.0 + i18next: 25.6.0(typescript@5.9.3) + react: 19.2.0 optionalDependencies: - react-dom: 19.0.0(react@19.0.0) - typescript: 5.8.3 + react-dom: 19.2.0(react@19.2.0) + typescript: 5.9.3 react-is@16.13.1: {} react-is@17.0.2: {} - react-is@18.2.0: {} + react-is@18.3.1: {} - react-is@19.1.0: {} + react-is@19.2.0: {} - react-masonry-css@1.0.16(react@19.0.0): + react-masonry-css@1.0.16(react@19.2.0): dependencies: - react: 19.0.0 + react: 19.2.0 react-refresh@0.17.0: {} - react-router-dom@7.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-router-dom@7.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-router: 7.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-router: 7.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-router@7.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-router@7.6.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: cookie: 1.0.2 - react: 19.0.0 + react: 19.2.0 set-cookie-parser: 2.7.1 optionalDependencies: - react-dom: 19.0.0(react@19.0.0) + react-dom: 19.2.0(react@19.2.0) - react-transition-group@4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.28.4 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - react-window@1.8.11(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-window@2.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@babel/runtime': 7.27.1 - memoize-one: 4.0.3 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - react@19.0.0: {} + react@19.2.0: {} read-binary-file-arch@1.0.6: dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color read-package-up@11.0.0: dependencies: - find-up-simple: 1.0.0 + find-up-simple: 1.0.1 read-pkg: 9.0.1 type-fest: 4.41.0 @@ -13882,7 +13994,7 @@ snapshots: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 - parse-json: 8.1.0 + parse-json: 8.3.0 type-fest: 4.41.0 unicorn-magic: 0.1.0 @@ -13902,28 +14014,34 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-web-to-node-stream@3.0.2: + readable-stream@4.7.0: dependencies: - readable-stream: 3.6.2 + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readable-web-to-node-stream@3.0.4: + dependencies: + readable-stream: 4.7.0 rechoir@0.8.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - reflect-metadata@0.2.1: {} - reflect-metadata@0.2.2: {} reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -13966,27 +14084,23 @@ snapshots: require-from-string@2.0.2: {} - resedit@2.0.2: + resedit@2.0.3: dependencies: pe-library: 1.0.1 + reselect@5.1.1: {} + resolve-alpn@1.2.1: {} resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve-pkg@2.0.0: - dependencies: - resolve-from: 5.0.0 - resolve-protobuf-schema@2.1.0: dependencies: protocol-buffers-schema: 3.6.0 - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -14014,9 +14128,9 @@ snapshots: retry@0.12.0: {} - reusify@1.0.4: {} + reusify@1.1.0: {} - rfdc@1.3.0: {} + rfdc@1.4.1: {} rimraf@2.6.3: dependencies: @@ -14027,52 +14141,60 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - rimraf@6.0.1: dependencies: - glob: 11.0.0 + glob: 11.0.3 package-json-from-dist: 1.0.1 roarr@2.15.4: dependencies: boolean: 3.2.0 detect-node: 2.1.0 - globalthis: 1.0.3 + globalthis: 1.0.4 json-stringify-safe: 5.0.1 semver-compare: 1.0.0 - sprintf-js: 1.1.2 + sprintf-js: 1.1.3 optional: true - rollup@4.43.0: + rollup@4.52.5: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.43.0 - '@rollup/rollup-android-arm64': 4.43.0 - '@rollup/rollup-darwin-arm64': 4.43.0 - '@rollup/rollup-darwin-x64': 4.43.0 - '@rollup/rollup-freebsd-arm64': 4.43.0 - '@rollup/rollup-freebsd-x64': 4.43.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.43.0 - '@rollup/rollup-linux-arm-musleabihf': 4.43.0 - '@rollup/rollup-linux-arm64-gnu': 4.43.0 - '@rollup/rollup-linux-arm64-musl': 4.43.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.43.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.43.0 - '@rollup/rollup-linux-riscv64-gnu': 4.43.0 - '@rollup/rollup-linux-riscv64-musl': 4.43.0 - '@rollup/rollup-linux-s390x-gnu': 4.43.0 - '@rollup/rollup-linux-x64-gnu': 4.43.0 - '@rollup/rollup-linux-x64-musl': 4.43.0 - '@rollup/rollup-win32-arm64-msvc': 4.43.0 - '@rollup/rollup-win32-ia32-msvc': 4.43.0 - '@rollup/rollup-win32-x64-msvc': 4.43.0 + '@rollup/rollup-android-arm-eabi': 4.52.5 + '@rollup/rollup-android-arm64': 4.52.5 + '@rollup/rollup-darwin-arm64': 4.52.5 + '@rollup/rollup-darwin-x64': 4.52.5 + '@rollup/rollup-freebsd-arm64': 4.52.5 + '@rollup/rollup-freebsd-x64': 4.52.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 + '@rollup/rollup-linux-arm-musleabihf': 4.52.5 + '@rollup/rollup-linux-arm64-gnu': 4.52.5 + '@rollup/rollup-linux-arm64-musl': 4.52.5 + '@rollup/rollup-linux-loong64-gnu': 4.52.5 + '@rollup/rollup-linux-ppc64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-musl': 4.52.5 + '@rollup/rollup-linux-s390x-gnu': 4.52.5 + '@rollup/rollup-linux-x64-gnu': 4.52.5 + '@rollup/rollup-linux-x64-musl': 4.52.5 + '@rollup/rollup-openharmony-arm64': 4.52.5 + '@rollup/rollup-win32-arm64-msvc': 4.52.5 + '@rollup/rollup-win32-ia32-msvc': 4.52.5 + '@rollup/rollup-win32-x64-gnu': 4.52.5 + '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 - rotating-file-stream@3.2.5: {} + rotating-file-stream@3.2.7: {} + + router@2.2.0: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.3.0 + transitivePeerDependencies: + - supports-color rrweb-cssom@0.8.0: {} @@ -14111,28 +14233,27 @@ snapshots: dependencies: regexp-tree: 0.1.27 - safe-stable-stringify@2.4.3: {} + safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} - sax@1.2.4: {} + sax@1.4.1: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 - scheduler@0.25.0: {} + scheduler@0.27.0: {} - schema-utils@3.3.0: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) search-insights@2.17.3: {} - secure-json-parse@2.7.0: {} - seed-random@2.2.0: {} semver-compare@1.0.0: @@ -14142,12 +14263,26 @@ snapshots: semver@6.3.1: {} - semver@7.5.3: - dependencies: - lru-cache: 6.0.0 - semver@7.7.2: {} + semver@7.7.3: {} + + send@1.2.0: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + serialize-error@12.0.0: dependencies: type-fest: 4.41.0 @@ -14165,6 +14300,15 @@ snapshots: dependencies: randombytes: 2.1.0 + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + set-cookie-parser@2.7.1: {} set-function-length@1.2.2: @@ -14189,10 +14333,13 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - sha.js@2.4.11: + setprototypeof@1.2.0: {} + + sha.js@2.4.12: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + to-buffer: 1.2.2 shallowequal@1.1.0: {} @@ -14240,8 +14387,6 @@ snapshots: signal-exit@3.0.7: {} - signal-exit@4.0.2: {} - signal-exit@4.1.0: {} simple-concat@1.0.1: {} @@ -14252,37 +14397,33 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - simple-xml-to-json@1.2.3: {} - simplebar-core@1.3.1: + simplebar-core@1.3.2: dependencies: lodash: 4.17.21 lodash-es: 4.17.21 - simplebar-react@3.3.0(react@19.0.0): + simplebar-react@3.3.2(react@19.2.0): dependencies: - react: 19.0.0 - simplebar-core: 1.3.1 + react: 19.2.0 + simplebar-core: 1.3.2 - simplebar@6.3.1: + simplebar@6.3.2: dependencies: - simplebar-core: 1.3.1 + simplebar-core: 1.3.2 - sirv@3.0.1: + sirv@3.0.2: dependencies: - '@polka/url': 1.0.0-next.24 - mrmime: 2.0.0 + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 totalist: 3.0.1 slash@3.0.0: {} slice-ansi@5.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 4.0.0 smart-buffer@4.2.0: {} @@ -14290,22 +14431,22 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.1 - socks: 2.8.4 + debug: 4.4.3(supports-color@8.1.1) + socks: 2.8.7 transitivePeerDependencies: - supports-color socks-proxy-agent@8.0.5: dependencies: - agent-base: 7.1.3 - debug: 4.4.1 - socks: 2.8.4 + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.4: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.0.1 smart-buffer: 4.2.0 sort-keys-length@1.0.1: @@ -14330,26 +14471,24 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.22 - spdx-exceptions@2.3.0: {} + spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.22 - spdx-license-ids@3.0.13: {} + spdx-license-ids@3.0.22: {} sprintf-js@1.0.3: optional: true - sprintf-js@1.1.2: + sprintf-js@1.1.3: optional: true - sprintf-js@1.1.3: {} - - sql-highlight@6.0.0: {} + sql-highlight@6.1.0: {} sqlite-vec-darwin-arm64@0.1.7-alpha.2: optional: true @@ -14392,7 +14531,16 @@ snapshots: state-local@1.0.7: {} - std-env@3.9.0: {} + statuses@2.0.1: {} + + statuses@2.0.2: {} + + std-env@3.10.0: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 string-argv@0.3.1: {} @@ -14408,14 +14556,14 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -14429,7 +14577,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 string.prototype.trim@1.2.10: dependencies: @@ -14437,7 +14585,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -14466,9 +14614,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -14480,15 +14628,13 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 + strip-indent@4.1.1: {} strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} - strip-literal@3.0.0: + strip-literal@3.1.0: dependencies: js-tokens: 9.0.1 @@ -14501,9 +14647,9 @@ snapshots: '@tokenizer/token': 0.3.0 peek-readable: 4.1.0 - stubborn-fs@1.2.4: {} + stubborn-fs@1.2.5: {} - styled-components@6.1.18(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + styled-components@6.1.18(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@emotion/is-prop-valid': 1.2.2 '@emotion/unitless': 0.8.1 @@ -14511,8 +14657,8 @@ snapshots: css-to-react-native: 3.2.0 csstype: 3.1.3 postcss: 8.4.49 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) shallowequal: 1.1.0 stylis: 4.3.2 tslib: 2.6.2 @@ -14523,7 +14669,7 @@ snapshots: sumchecker@3.0.1: dependencies: - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -14537,32 +14683,28 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.3.3(react@19.0.0): - dependencies: - dequal: 2.0.3 - react: 19.0.0 - use-sync-external-store: 1.5.0(react@19.0.0) - symbol-tree@3.2.4: {} - synckit@0.9.2: + synckit@0.9.3: dependencies: '@pkgr/core': 0.1.2 tslib: 2.8.1 - tapable@2.2.2: {} + tagged-tag@1.0.0: {} - tar-fs@2.1.3: + tapable@2.3.0: {} + + tar-fs@2.1.4: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 - pump: 3.0.2 + pump: 3.0.3 tar-stream: 2.2.0 tar-stream@2.2.0: dependencies: bl: 4.1.0 - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 @@ -14576,13 +14718,12 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - tar@7.4.3: + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 temp@0.9.4: @@ -14591,22 +14732,22 @@ snapshots: rimraf: 2.6.3 optional: true - terser-webpack-plugin@5.3.9(@swc/core@1.12.0)(esbuild@0.25.2)(webpack@5.88.1(@swc/core@1.12.0)(esbuild@0.25.2)): + terser-webpack-plugin@5.3.14(@swc/core@1.12.0)(esbuild@0.25.11)(webpack@5.102.1(@swc/core@1.12.0)(esbuild@0.25.11)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 3.3.0 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.18.2 - webpack: 5.88.1(@swc/core@1.12.0)(esbuild@0.25.2) + terser: 5.44.0 + webpack: 5.102.1(@swc/core@1.12.0)(esbuild@0.25.11) optionalDependencies: '@swc/core': 1.12.0 - esbuild: 0.25.2 + esbuild: 0.25.11 - terser@5.18.2: + terser@5.44.0: dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.12.0 + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -14626,9 +14767,7 @@ snapshots: dependencies: any-promise: 1.3.0 - throttleit@2.1.0: {} - - tiddlywiki@5.3.7: {} + tiddlywiki@5.3.8: {} tiny-case@1.0.3: {} @@ -14641,48 +14780,47 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.12: - dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 - - tinyglobby@0.2.14: - dependencies: - fdir: 6.4.5(picomatch@4.0.2) - picomatch: 4.0.2 - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.0: {} + tinypool@1.1.1: {} tinyrainbow@2.0.0: {} - tinyspy@4.0.3: {} + tinyspy@4.0.4: {} - tldts-core@6.1.86: {} + tldts-core@7.0.17: {} - tldts@6.1.86: + tldts@7.0.17: dependencies: - tldts-core: 6.1.86 + tldts-core: 7.0.17 tmp-promise@3.0.3: dependencies: - tmp: 0.2.3 + tmp: 0.2.5 optional: true tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.3: {} + tmp@0.2.5: + optional: true + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + token-types@4.2.1: dependencies: '@tokenizer/token': 0.3.0 @@ -14692,13 +14830,13 @@ snapshots: totalist@3.0.1: {} - tough-cookie@5.1.2: + tough-cookie@6.0.0: dependencies: - tldts: 6.1.86 + tldts: 7.0.17 tr46@0.0.3: {} - tr46@5.1.1: + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -14708,29 +14846,36 @@ snapshots: triple-beam@1.4.1: {} - ts-api-utils@1.3.0(typescript@5.8.3): + ts-api-utils@1.4.3(typescript@5.9.3): dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.8.3 + typescript: 5.9.3 - ts-node@10.9.2(@swc/core@1.12.0)(@types/node@22.13.0)(typescript@5.8.3): + ts-declaration-location@1.0.7(typescript@5.9.3): + dependencies: + picomatch: 4.0.3 + typescript: 5.9.3 + + ts-dedent@2.2.0: {} + + ts-node@10.9.2(@swc/core@1.12.0)(@types/node@24.9.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.0 - acorn: 8.9.0 - acorn-walk: 8.2.0 + '@types/node': 24.9.1 + acorn: 8.15.0 + acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: @@ -14745,14 +14890,23 @@ snapshots: tslib@1.14.1: {} + tslib@2.3.0: {} + tslib@2.6.2: {} tslib@2.8.1: {} - tsutils@3.21.0(typescript@5.8.3): + tsutils@3.21.0(typescript@5.9.3): dependencies: tslib: 1.14.1 - typescript: 5.8.3 + typescript: 5.9.3 + + tsx@4.20.6: + dependencies: + esbuild: 0.25.11 + get-tsconfig: 4.12.0 + optionalDependencies: + fsevents: 2.3.3 tunnel-agent@0.6.0: dependencies: @@ -14760,9 +14914,9 @@ snapshots: tw5-typed@0.6.3: dependencies: - '@types/codemirror': 5.60.15 + '@types/codemirror': 5.60.16 '@types/echarts': 4.9.22 - '@types/node': 20.14.9 + '@types/node': 20.19.23 type-check@0.4.0: dependencies: @@ -14781,6 +14935,16 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.1.0: + dependencies: + tagged-tag: 1.0.0 + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -14811,78 +14975,83 @@ snapshots: for-each: 0.3.5 gopd: 1.2.0 is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typeorm@0.3.22(better-sqlite3@11.9.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.0)(@types/node@22.13.0)(typescript@5.8.3)): + typeorm@0.3.27(babel-plugin-macros@3.1.0)(better-sqlite3@12.4.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.0)(@types/node@24.9.1)(typescript@5.9.3)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 3.17.0 app-root-path: 3.1.0 buffer: 6.0.3 - dayjs: 1.11.13 - debug: 4.4.0 - dotenv: 16.5.0 + dayjs: 1.11.18 + debug: 4.4.3(supports-color@8.1.1) + dedent: 1.7.0(babel-plugin-macros@3.1.0) + dotenv: 16.6.1 glob: 10.4.5 reflect-metadata: 0.2.2 - sha.js: 2.4.11 - sql-highlight: 6.0.0 + sha.js: 2.4.12 + sql-highlight: 6.1.0 tslib: 2.8.1 uuid: 11.1.0 yargs: 17.7.2 optionalDependencies: - better-sqlite3: 11.9.1 - ts-node: 10.9.2(@swc/core@1.12.0)(@types/node@22.13.0)(typescript@5.8.3) + better-sqlite3: 12.4.1 + ts-node: 10.9.2(@swc/core@1.12.0)(@types/node@24.9.1)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-eslint@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3): + typescript-styled-is@2.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.18(react-dom@19.2.0(react@19.2.0))(react@19.2.0)): dependencies: - '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.23.0(jiti@2.4.2) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - - typescript-styled-is@2.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(styled-components@6.1.18(react-dom@19.0.0(react@19.0.0))(react@19.0.0)): - dependencies: - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - styled-components: 6.1.18(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-components: 6.1.18(react-dom@19.2.0(react@19.2.0))(react@19.2.0) optionalDependencies: '@types/styled-components': 5.1.34 typescript@5.4.5: {} - typescript@5.8.3: {} + typescript@5.9.3: {} typesync@0.14.3: dependencies: ansis: 3.17.0 awilix: 12.0.5 - detect-indent: 7.0.1 + detect-indent: 7.0.2 lilconfig: 3.1.3 npm-registry-fetch: 18.0.2 picospinner: 3.0.0 - semver: 7.7.2 - tinyglobby: 0.2.12 - yaml: 2.8.0 + semver: 7.7.3 + tinyglobby: 0.2.15 + yaml: 2.8.1 transitivePeerDependencies: - supports-color unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 - has-bigints: 1.0.2 + has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@5.26.5: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} + + undici-types@7.16.0: {} + unicorn-magic@0.1.0: {} unique-filename@2.0.1: @@ -14903,53 +15072,58 @@ snapshots: universalify@0.1.2: {} - universalify@2.0.0: {} + universalify@2.0.1: {} - unplugin-swc@1.5.5(@swc/core@1.12.0)(rollup@4.43.0): + unpipe@1.0.0: {} + + unplugin-swc@1.5.8(@swc/core@1.12.0)(rollup@4.52.5): dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.43.0) + '@rollup/pluginutils': 5.3.0(rollup@4.52.5) '@swc/core': 1.12.0 load-tsconfig: 0.2.5 - unplugin: 2.3.5 + unplugin: 2.3.10 transitivePeerDependencies: - rollup - unplugin@2.3.5: + unplugin@2.3.10: dependencies: + '@jridgewell/remapping': 2.3.5 acorn: 8.15.0 - picomatch: 4.0.2 + picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - unrs-resolver@1.7.13: + unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.2.4 + napi-postinstall: 0.3.4 optionalDependencies: - '@unrs/resolver-binding-darwin-arm64': 1.7.13 - '@unrs/resolver-binding-darwin-x64': 1.7.13 - '@unrs/resolver-binding-freebsd-x64': 1.7.13 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.13 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.13 - '@unrs/resolver-binding-linux-arm64-gnu': 1.7.13 - '@unrs/resolver-binding-linux-arm64-musl': 1.7.13 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.13 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.13 - '@unrs/resolver-binding-linux-riscv64-musl': 1.7.13 - '@unrs/resolver-binding-linux-s390x-gnu': 1.7.13 - '@unrs/resolver-binding-linux-x64-gnu': 1.7.13 - '@unrs/resolver-binding-linux-x64-musl': 1.7.13 - '@unrs/resolver-binding-wasm32-wasi': 1.7.13 - '@unrs/resolver-binding-win32-arm64-msvc': 1.7.13 - '@unrs/resolver-binding-win32-ia32-msvc': 1.7.13 - '@unrs/resolver-binding-win32-x64-msvc': 1.7.13 + '@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 unused-filename@4.0.1: dependencies: escape-string-regexp: 5.0.0 path-exists: 5.0.0 - update-browserslist-db@1.1.3(browserslist@4.24.4): + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: - browserslist: 4.24.4 + browserslist: 4.26.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -14959,17 +15133,17 @@ snapshots: uri-js@4.4.1: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 - use-deep-compare-effect@1.8.1(react@19.0.0): + use-deep-compare-effect@1.8.1(react@19.2.0): dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 dequal: 2.0.3 - react: 19.0.0 + react: 19.2.0 - use-sync-external-store@1.5.0(react@19.0.0): + use-sync-external-store@1.6.0(react@19.2.0): dependencies: - react: 19.0.0 + react: 19.2.0 username@5.1.0: dependencies: @@ -14984,19 +15158,11 @@ snapshots: util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - uuid@10.0.0: {} - uuid@11.1.0: {} + uuid@11.0.5: {} - uuid@9.0.1: {} + uuid@11.1.0: {} v8-compile-cache-lib@3.0.1: {} @@ -15005,7 +15171,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@6.0.0: {} + validate-npm-package-name@6.0.2: {} validate.io-array@1.0.6: {} @@ -15022,15 +15188,17 @@ snapshots: validate.io-number@1.0.3: {} + vary@1.1.2: {} + vite-bundle-analyzer@1.2.3: {} - vite-node@3.2.3(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0): + vite-node@3.2.4(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -15045,50 +15213,51 @@ snapshots: - tsx - yaml - vite@7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0): + vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.2 + esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.43.0 + rollup: 4.52.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.13.0 + '@types/node': 24.9.1 fsevents: 2.3.3 - jiti: 2.4.2 - terser: 5.18.2 - yaml: 2.8.0 + jiti: 2.6.1 + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.8.1 - vitest@3.2.3(@types/node@22.13.0)(@vitest/ui@3.2.3)(jiti@2.4.2)(jsdom@26.1.0)(terser@5.18.2)(yaml@2.8.0): + vitest@3.2.4(@types/node@24.9.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.3 - '@vitest/mocker': 3.2.3(vite@7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0)) - '@vitest/pretty-format': 3.2.3 - '@vitest/runner': 3.2.3 - '@vitest/snapshot': 3.2.3 - '@vitest/spy': 3.2.3 - '@vitest/utils': 3.2.3 - chai: 5.2.0 - debug: 4.4.1 - expect-type: 1.2.1 - magic-string: 0.30.17 + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@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(supports-color@8.1.1) + expect-type: 1.2.2 + magic-string: 0.30.19 pathe: 2.0.3 - picomatch: 4.0.2 - std-env: 3.9.0 + picomatch: 4.0.3 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 - tinypool: 1.1.0 + tinyglobby: 0.2.15 + tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0) - vite-node: 3.2.3(@types/node@22.13.0)(jiti@2.4.2)(terser@5.18.2)(yaml@2.8.0) + vite: 7.1.11(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@24.9.1)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.0 - '@vitest/ui': 3.2.3(vitest@3.2.3) - jsdom: 26.1.0 + '@types/node': 24.9.1 + '@vitest/ui': 3.2.4(vitest@3.2.4) + jsdom: 27.0.1(postcss@8.5.6) transitivePeerDependencies: - jiti - less @@ -15109,7 +15278,7 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - watchpack@2.4.0: + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -15118,42 +15287,43 @@ snapshots: dependencies: defaults: 1.0.4 - web-streams-polyfill@3.2.1: {} + web-streams-polyfill@3.3.3: {} webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} + webidl-conversions@8.0.0: {} - webpack-sources@3.2.3: {} + webpack-sources@3.3.3: {} webpack-virtual-modules@0.6.2: {} - webpack@5.88.1(@swc/core@1.12.0)(esbuild@0.25.2): + webpack@5.102.1(@swc/core@1.12.0)(esbuild@0.25.11): dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.7 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 - acorn-import-assertions: 1.9.0(acorn@8.15.0) - browserslist: 4.24.4 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.18.1 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.26.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 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 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.2 - terser-webpack-plugin: 5.3.9(@swc/core@1.12.0)(esbuild@0.25.2)(webpack@5.88.1(@swc/core@1.12.0)(esbuild@0.25.2)) - watchpack: 2.4.0 - webpack-sources: 3.2.3 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(@swc/core@1.12.0)(esbuild@0.25.11)(webpack@5.102.1(@swc/core@1.12.0)(esbuild@0.25.11)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild @@ -15165,17 +15335,17 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@14.2.0: + whatwg-url@15.1.0: dependencies: - tr46: 5.1.1 - webidl-conversions: 7.0.0 + tr46: 6.0.0 + webidl-conversions: 8.0.0 whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - when-exit@2.1.0: {} + when-exit@2.1.4: {} which-boxed-primitive@1.1.1: dependencies: @@ -15190,10 +15360,10 @@ snapshots: call-bound: 1.0.4 function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 + is-async-function: 2.1.1 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.2 is-regex: 1.2.1 is-weakref: 1.1.1 isarray: 2.0.5 @@ -15206,15 +15376,7 @@ snapshots: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 + is-weakset: 2.0.4 which-typed-array@1.1.19: dependencies: @@ -15243,12 +15405,12 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - winston-daily-rotate-file@5.0.0(winston@3.17.0): + winston-daily-rotate-file@5.0.0(winston@3.18.3): dependencies: file-stream-rotator: 0.6.1 object-hash: 3.0.0 triple-beam: 1.4.1 - winston: 3.17.0 + winston: 3.18.3 winston-transport: 4.9.0 winston-transport@4.9.0: @@ -15257,29 +15419,28 @@ snapshots: readable-stream: 3.6.2 triple-beam: 1.4.1 - winston@3.17.0: + winston@3.18.3: dependencies: '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.4 + '@dabh/diagnostics': 2.0.8 + async: 3.2.6 is-stream: 2.0.1 logform: 2.7.0 one-time: 1.0.0 readable-stream: 3.6.2 - safe-stable-stringify: 2.4.3 + safe-stable-stringify: 2.5.0 stack-trace: 0.0.10 triple-beam: 1.4.1 winston-transport: 4.9.0 - word-wrap@1.2.4: - optional: true + word-wrap@1.2.5: {} - wouter@3.7.1(react@19.0.0): + wouter@3.7.1(react@19.2.0): dependencies: mitt: 3.0.1 - react: 19.0.0 + react: 19.2.0 regexparam: 3.0.0 - use-sync-external-store: 1.5.0(react@19.0.0) + use-sync-external-store: 1.6.0(react@19.2.0) wrap-ansi@6.2.0: dependencies: @@ -15295,13 +15456,13 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} - ws@8.18.2: {} + ws@8.18.3: {} xml-name-validator@5.0.0: {} @@ -15309,7 +15470,7 @@ snapshots: xml2js@0.5.0: dependencies: - sax: 1.2.4 + sax: 1.4.1 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} @@ -15328,9 +15489,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.3.1: {} - - yaml@2.8.0: {} + yaml@2.8.1: {} yargs-parser@20.2.9: optional: true @@ -15369,24 +15528,26 @@ snapshots: yoctocolors-cjs@2.1.3: {} - yup@1.2.0: + yup@1.7.0: dependencies: - property-expr: 2.0.5 + property-expr: 2.0.6 tiny-case: 1.0.3 toposort: 2.0.2 type-fest: 2.19.0 - zod-to-json-schema@3.24.5(zod@3.25.28): + zod@3.25.76: {} + + zod@4.1.12: {} + + zrender@6.0.0: dependencies: - zod: 3.25.28 + tslib: 2.3.0 - zod@3.25.28: {} - - zustand@5.0.4(@types/react@19.0.8)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)): + zustand@5.0.8(@types/react@19.2.2)(immer@10.1.3)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)): optionalDependencies: - '@types/react': 19.0.8 - immer: 10.1.1 - react: 19.0.0 - use-sync-external-store: 1.5.0(react@19.0.0) + '@types/react': 19.2.2 + immer: 10.1.3 + react: 19.2.0 + use-sync-external-store: 1.6.0(react@19.2.0) - zx@8.5.5: {} + zx@8.8.5: {} diff --git a/src/__tests__/__mocks__/services-container.ts b/src/__tests__/__mocks__/services-container.ts index 7993c5eb..ac98ea71 100644 --- a/src/__tests__/__mocks__/services-container.ts +++ b/src/__tests__/__mocks__/services-container.ts @@ -61,7 +61,11 @@ export const serviceInstances: { wikiOperationInServer: vi.fn().mockResolvedValue([]) as IWikiService['wikiOperationInServer'], }, auth: { + get: vi.fn().mockResolvedValue(undefined), + set: vi.fn().mockResolvedValue(undefined), getStorageServiceUserInfo: vi.fn().mockResolvedValue(undefined), + getUserInfos: vi.fn().mockResolvedValue({ userName: '' }), + setUserInfos: vi.fn(), }, context: { get: vi.fn().mockResolvedValue(undefined), diff --git a/src/components/TokenForm/CustomServerTokenForm.tsx b/src/components/TokenForm/CustomServerTokenForm.tsx new file mode 100644 index 00000000..04856691 --- /dev/null +++ b/src/components/TokenForm/CustomServerTokenForm.tsx @@ -0,0 +1,121 @@ +import { Button, TextField } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import { useTranslation } from 'react-i18next'; + +import { SupportedStorageServices } from '@services/types'; +import { useState } from 'react'; +import { useAuth, useGetGithubUserInfoOnLoad } from './gitTokenHooks'; +import { useTokenForm } from './useTokenForm'; + +const AuthingLoginButton = styled(Button)` + width: 100%; +`; +const GitTokenInput = styled((props: React.ComponentProps & { helperText?: string }) => )` + color: ${({ theme }) => theme.palette.text.primary}; + input { + color: ${({ theme }) => theme.palette.text.primary}; + } + p, + label { + color: ${({ theme }) => theme.palette.text.secondary}; + } +`; + +export function CustomServerTokenForm(): React.JSX.Element { + const { t } = useTranslation(); + const storageService = SupportedStorageServices.testOAuth; + + const [onClickLogin, onClickLogout] = useAuth(storageService); + useGetGithubUserInfoOnLoad(); + + const { token, userName, email, branch, isLoggedIn, isReady, tokenSetter, userNameSetter, emailSetter, branchSetter } = useTokenForm(storageService); + + // Custom server configuration + const [serverUrl, serverUrlSetter] = useState('http://127.0.0.1:8888'); + const [clientId, clientIdSetter] = useState('test-client-id'); + + // Store custom server config before OAuth login + const handleLogin = async () => { + // Save custom server configuration + await window.service.auth.set('testOAuth-serverUrl', serverUrl); + await window.service.auth.set('testOAuth-clientId', clientId); + // Then trigger OAuth login + await onClickLogin(); + }; + + if (!isReady) { + return
{t('Loading')}
; + } + + return ( + <> + { + serverUrlSetter(event.target.value); + }} + placeholder='http://127.0.0.1:8888' + data-testid='custom-server-url-input' + /> + { + clientIdSetter(event.target.value); + }} + placeholder='client-id' + data-testid='custom-client-id-input' + /> + {!isLoggedIn && ( + + {t('AddWorkspace.LogoutToGetStorageServiceToken')} + + )} + {isLoggedIn && ( + + {t('Preference.Logout')} + + )} + { + tokenSetter(event.target.value); + }} + value={token} + data-testid='custom-token-input' + /> + { + userNameSetter(event.target.value); + }} + value={userName} + data-testid='custom-username-input' + /> + { + emailSetter(event.target.value); + }} + value={email} + data-testid='custom-email-input' + /> + { + branchSetter(event.target.value); + }} + value={branch} + placeholder='main' + data-testid='custom-branch-input' + /> + + ); +} diff --git a/src/components/TokenForm/GitTokenForm.tsx b/src/components/TokenForm/GitTokenForm.tsx index b0dc658d..80872959 100644 --- a/src/components/TokenForm/GitTokenForm.tsx +++ b/src/components/TokenForm/GitTokenForm.tsx @@ -1,13 +1,10 @@ import { Button, TextField } from '@mui/material'; import { styled } from '@mui/material/styles'; -import useDebouncedCallback from 'beautiful-react-hooks/useDebouncedCallback'; import { useTranslation } from 'react-i18next'; -import { useUserInfoObservable } from '@services/auth/hooks'; -import { IUserInfos } from '@services/auth/interface'; import { SupportedStorageServices } from '@services/types'; -import { useEffect, useState } from 'react'; import { useAuth, useGetGithubUserInfoOnLoad } from './gitTokenHooks'; +import { useTokenForm } from './useTokenForm'; const AuthingLoginButton = styled(Button)` width: 100%; @@ -30,66 +27,51 @@ export function GitTokenForm(props: { const { children, storageService } = props; const { t } = useTranslation(); - const userInfo = useUserInfoObservable(); - const [onClickLogin] = useAuth(storageService); + const [onClickLogin, onClickLogout] = useAuth(storageService); useGetGithubUserInfoOnLoad(); - // local state for text inputs - const [token, tokenSetter] = useState(undefined); - const [userName, userNameSetter] = useState(undefined); - const [email, emailSetter] = useState(undefined); - const [branch, branchSetter] = useState(undefined); - const debouncedSet = useDebouncedCallback( - (key: K, value: IUserInfos[K]) => { - void window.service.auth.set(key, value); - }, - [], - 500, - ); - useEffect(() => { - if (userInfo === undefined) return; - if (token === undefined) tokenSetter(userInfo[`${storageService}-token`]); - if (userName === undefined) userNameSetter(userInfo[`${storageService}-userName`]); - if (email === undefined) emailSetter(userInfo[`${storageService}-email`]); - if (branch === undefined) branchSetter(userInfo[`${storageService}-branch`]); - }, [branch, email, storageService, token, userInfo, userName]); - if (userInfo === undefined) { + const { token, userName, email, branch, isLoggedIn, isReady, tokenSetter, userNameSetter, emailSetter, branchSetter } = useTokenForm(storageService); + + if (!isReady) { return
{t('Loading')}
; } return ( <> - {t('AddWorkspace.LogoutToGetStorageServiceToken')} + {!isLoggedIn && ( + {t('AddWorkspace.LogoutToGetStorageServiceToken')} + )} + {isLoggedIn && {t('Preference.Logout')}} ) => { tokenSetter(event.target.value); - debouncedSet(`${storageService}-token`, event.target.value); }} value={token} + data-testid={`${storageService}-token-input`} /> ) => { userNameSetter(event.target.value); - debouncedSet(`${storageService}-userName`, event.target.value); }} value={userName} + data-testid={`${storageService}-userName-input`} /> ) => { emailSetter(event.target.value); - debouncedSet(`${storageService}-email`, event.target.value); }} value={email} + data-testid={`${storageService}-email-input`} /> ) => { branchSetter(event.target.value); - debouncedSet(`${storageService}-branch`, event.target.value); }} value={branch} + data-testid={`${storageService}-branch-input`} /> {children} diff --git a/src/components/TokenForm/__tests__/GitTokenForm.test.tsx b/src/components/TokenForm/__tests__/GitTokenForm.test.tsx new file mode 100644 index 00000000..a381a1f6 --- /dev/null +++ b/src/components/TokenForm/__tests__/GitTokenForm.test.tsx @@ -0,0 +1,168 @@ +import type { IUserInfos } from '@services/auth/interface'; +import { SupportedStorageServices } from '@services/types'; +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { BehaviorSubject } from 'rxjs'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { GitTokenForm } from '../GitTokenForm'; + +// Mock the hooks +vi.mock('../gitTokenHooks', () => ({ + useAuth: vi.fn(() => [vi.fn(), vi.fn()]), + useGetGithubUserInfoOnLoad: vi.fn(), +})); + +describe('GitTokenForm', () => { + let userInfoSubject: BehaviorSubject; + + beforeEach(() => { + // Create a fresh observable for each test + userInfoSubject = new BehaviorSubject({ + userName: '', + 'github-token': '', + 'github-userName': '', + 'github-email': '', + 'github-branch': 'main', + }); + + // Override the window.observables.auth.userInfo$ + Object.defineProperty(window.observables.auth, 'userInfo$', { + value: userInfoSubject.asObservable(), + writable: true, + configurable: true, + }); + }); + + it('should display initial userInfo values in the form', async () => { + userInfoSubject.next({ + userName: 'TestUser', + 'github-token': 'test-token-123', + 'github-userName': 'githubUser', + 'github-email': 'test@example.com', + 'github-branch': 'develop', + }); + + render(); + + await waitFor(() => { + expect(screen.queryByText('Loading')).not.toBeInTheDocument(); + }); + + // Check that the values are displayed + const inputs = screen.getAllByRole('textbox'); + expect((inputs[0] as HTMLInputElement).value).toBe('test-token-123'); + expect((inputs[1] as HTMLInputElement).value).toBe('githubUser'); + expect((inputs[2] as HTMLInputElement).value).toBe('test@example.com'); + expect((inputs[3] as HTMLInputElement).value).toBe('develop'); + }); + + it('should update form when userInfo changes after OAuth login (BUG TEST)', async () => { + // Start with empty userInfo (before OAuth) + userInfoSubject.next({ + userName: '', + 'github-token': '', + 'github-userName': '', + 'github-email': '', + 'github-branch': 'main', + }); + + render(); + + await waitFor(() => { + expect(screen.queryByText('Loading')).not.toBeInTheDocument(); + }); + + // Verify initial empty state + const inputs = screen.getAllByRole('textbox'); + expect((inputs[0] as HTMLInputElement).value).toBe(''); + expect((inputs[1] as HTMLInputElement).value).toBe(''); + expect((inputs[2] as HTMLInputElement).value).toBe(''); + + // Simulate OAuth callback - userInfo gets updated with token and user data + // Wrap in act to acknowledge state update + await waitFor(() => { + userInfoSubject.next({ + userName: 'TestUser', + 'github-token': 'oauth-token-xyz', + 'github-userName': 'githubOAuthUser', + 'github-email': 'oauth@example.com', + 'github-branch': 'main', + }); + }); + + // The form should update to show the new values + await waitFor(() => { + const updatedInputs = screen.getAllByRole('textbox'); + expect((updatedInputs[0] as HTMLInputElement).value).toBe('oauth-token-xyz'); + expect((updatedInputs[1] as HTMLInputElement).value).toBe('githubOAuthUser'); + expect((updatedInputs[2] as HTMLInputElement).value).toBe('oauth@example.com'); + }); + }); + + it('should call auth.set when user types in input fields', async () => { + const user = userEvent.setup(); + const setSpy = vi.spyOn(window.service.auth, 'set'); + + render(); + + await waitFor(() => { + expect(screen.queryByText('Loading')).not.toBeInTheDocument(); + }); + + const inputs = screen.getAllByRole('textbox'); + + // Type in token input - userEvent.type() fires onChange for each character + await user.type(inputs[0], 'new-token'); + + // Wait for debounced call (500ms) and check that it was called with the last character + // Since debounce fires after each keystroke, we just verify the function was called + await waitFor(() => { + expect(setSpy).toHaveBeenCalled(); + }, { timeout: 1000 }); + + // Verify it was eventually called with a value containing our input + expect(setSpy).toHaveBeenCalledWith('github-token', expect.any(String)); + }); + + it('should update form when userInfo is overwritten', async () => { + // Start with initial userInfo + userInfoSubject.next({ + userName: '', + 'github-token': 'initial-token', + 'github-userName': 'initial-username', + 'github-email': 'initial@example.com', + 'github-branch': 'main', + }); + + render(); + + await waitFor(() => { + expect(screen.queryByText('Loading')).not.toBeInTheDocument(); + }); + + // Verify initial values + let inputs = screen.getAllByRole('textbox'); + expect((inputs[0] as HTMLInputElement).value).toBe('initial-token'); + expect((inputs[1] as HTMLInputElement).value).toBe('initial-username'); + + // Simulate OAuth update with new values + // Wrap in waitFor to handle the state update + await waitFor(() => { + userInfoSubject.next({ + userName: '', + 'github-token': 'oauth-token', + 'github-userName': 'oauth-username', + 'github-email': 'oauth@example.com', + 'github-branch': 'main', + }); + }); + + // The form should update with OAuth values since userInfo is the source of truth + await waitFor(() => { + inputs = screen.getAllByRole('textbox'); + expect((inputs[0] as HTMLInputElement).value).toBe('oauth-token'); + expect((inputs[1] as HTMLInputElement).value).toBe('oauth-username'); + expect((inputs[2] as HTMLInputElement).value).toBe('oauth@example.com'); + }); + }); +}); diff --git a/src/components/TokenForm/gitTokenHooks.ts b/src/components/TokenForm/gitTokenHooks.ts index 79c23812..c680ce1a 100644 --- a/src/components/TokenForm/gitTokenHooks.ts +++ b/src/components/TokenForm/gitTokenHooks.ts @@ -1,15 +1,34 @@ /* eslint-disable @typescript-eslint/no-confusing-void-expression */ /* eslint-disable @typescript-eslint/await-thenable */ +import { getOAuthConfig } from '@/constants/oauthConfig'; import { SupportedStorageServices } from '@services/types'; -import { truncate } from 'lodash'; import { useCallback, useEffect } from 'react'; export function useAuth(storageService: SupportedStorageServices): [() => Promise, () => Promise] { const onClickLogout = useCallback(async () => { try { + // Clear tokens await window.service.auth.set(`${storageService}-token`, ''); - // await window.service.window.clearStorageData(); + await window.service.auth.set(`${storageService}-userName`, ''); + await window.service.auth.set(`${storageService}-email`, ''); + + // Clear browser cookies for specific OAuth provider domain + // This clears the "remember me" state for only this service + const config = getOAuthConfig(storageService); + if (config?.authorizePath) { + try { + const oauthUrl = new URL(config.authorizePath); + const domain = oauthUrl.hostname; + + // Clear cookies for this specific domain only + await window.service.auth.clearCookiesForDomain(domain); + } catch (error) { + void window.service.native.log('error', 'Failed to parse OAuth URL or clear cookies', { function: 'useAuth', error }); + } + } + + void window.service.native.log('info', 'Logged out from service', { function: 'useAuth', storageService }); } catch (error) { void window.service.native.log('error', 'TokenForm: auth operation failed', { function: 'useAuth', error }); } @@ -18,51 +37,60 @@ export function useAuth(storageService: SupportedStorageServices): [() => Promis const onClickLogin = useCallback(async () => { await onClickLogout(); try { - // redirect current page to oauth login page - switch (storageService) { - case SupportedStorageServices.github: { - location.href = await window.service.context.get('GITHUB_OAUTH_PATH'); - } - } + void window.service.native.log('info', 'Initiating OAuth login', { + function: 'useAuth', + storageService, + }); + + // Let main process handle everything (OAuth URL generation, PKCE, state management) + // using oidc-client-ts internally + await window.service.auth.openOAuthWindow(storageService); } catch (error) { console.error(error); + void window.service.native.log('error', 'Failed to open OAuth login window', { function: 'useAuth', error }); } }, [onClickLogout, storageService]); return [onClickLogin, onClickLogout]; } -const log = (message: string, meta?: Record): void => { - void window.service.native.log('debug', message, { function: 'useGetGithubUserInfoOnLoad', ...meta }); -}; export function useGetGithubUserInfoOnLoad(): void { useEffect(() => { + void window.service.native.log('debug', 'useGetGithubUserInfoOnLoad: hook mounted', { function: 'useGetGithubUserInfoOnLoad' }); void Promise.all([window.service.auth.get('userName'), window.service.auth.getUserInfos()]).then(async ([userName, userInfo]) => { try { const token = userInfo[`${SupportedStorageServices.github}-token`]; + void window.service.native.log('debug', 'useGetGithubUserInfoOnLoad: checking token', { + function: 'useGetGithubUserInfoOnLoad', + hasToken: !!token, + tokenLength: token?.length ?? 0, + }); + if (token) { - log(`get user name and email using github api using token: ${truncate(token ?? '', { length: 6 })}...`); - // get user name and email using github api - const response = await fetch('https://api.github.com/user', { + const config = getOAuthConfig(SupportedStorageServices.github); + if (!config) return; + + // get user name and email using OAuth provider's API + const response = await fetch(config.userInfoPath, { method: 'GET', headers: { Authorization: `Bearer ${token}`, }, }); - const githubUserInfo = await (response.json() as Promise<{ email: string; login: string; name: string }>); - log(`Get githubUserInfo`, { githubUserInfo }); + const gitUserInfo = await (response.json() as Promise<{ email: string; login: string; name: string }>); + // this hook will execute on every open of GitTokenForm, so we need to check if we already have the info, not overwrite userInfo that user manually written. - if (!userInfo[`${SupportedStorageServices.github}-userName`] && githubUserInfo.login) { - userInfo[`${SupportedStorageServices.github}-userName`] = githubUserInfo.login; + if (!userInfo[`${SupportedStorageServices.github}-userName`] && gitUserInfo.login) { + userInfo[`${SupportedStorageServices.github}-userName`] = gitUserInfo.login; } - if (!userInfo[`${SupportedStorageServices.github}-email`] && githubUserInfo.email) { - userInfo[`${SupportedStorageServices.github}-email`] = githubUserInfo.email; + if (!userInfo[`${SupportedStorageServices.github}-email`] && gitUserInfo.email) { + userInfo[`${SupportedStorageServices.github}-email`] = gitUserInfo.email; } - // sometimes user already pick a Chinese username that is different from the one on Github - if (!userName && githubUserInfo.name) { - userInfo.userName = githubUserInfo.name; + // sometimes user already pick a Chinese username that is different from the one on Git service + if (!userName && gitUserInfo.name) { + userInfo.userName = gitUserInfo.name; } - log(`Store userInfo`); + await window.service.auth.setUserInfos(userInfo); } } catch (error) { diff --git a/src/components/TokenForm/index.tsx b/src/components/TokenForm/index.tsx index ba968915..0b593e78 100644 --- a/src/components/TokenForm/index.tsx +++ b/src/components/TokenForm/index.tsx @@ -5,6 +5,7 @@ import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ListItemText } from '../ListItem'; +import { CustomServerTokenForm } from './CustomServerTokenForm'; import { GitTokenForm } from './GitTokenForm'; const Container = styled('div')` @@ -83,23 +84,29 @@ export function TokenForm({ storageProvider, storageProviderSetter }: Props): Re value={currentTab} aria-label='Vertical tabs example' > - - - + + + + {currentTab === SupportedStorageServices.github && ( )} - {currentTab === SupportedStorageServices.gitlab && ( + {currentTab === SupportedStorageServices.codeberg && ( - + )} - {currentTab === SupportedStorageServices.gitee && ( + {currentTab === SupportedStorageServices.gitea && ( - Gitee(码云)一直不愿意支持 OAuth2 ,所以我们没法适配它的登录系统,如果你认识相关开发人员,请催促他们尽快支持,与国际接轨。 + + + )} + {currentTab === SupportedStorageServices.testOAuth && ( + + )} diff --git a/src/components/TokenForm/useTokenForm.ts b/src/components/TokenForm/useTokenForm.ts new file mode 100644 index 00000000..e6ece3b6 --- /dev/null +++ b/src/components/TokenForm/useTokenForm.ts @@ -0,0 +1,186 @@ +import { useUserInfoObservable } from '@services/auth/hooks'; +import { IUserInfos } from '@services/auth/interface'; +import { SupportedStorageServices } from '@services/types'; +import { useCallback, useEffect, useRef, useState } from 'react'; + +interface TokenFormState { + branch: string; + email: string; + token: string; + userName: string; +} + +interface UseTokenFormReturn extends TokenFormState { + branchSetter: (value: string) => void; + emailSetter: (value: string) => void; + isLoggedIn: boolean; + isReady: boolean; + tokenSetter: (value: string) => void; + userNameSetter: (value: string) => void; +} + +/** + * Custom hook for managing token form state + * Handles sync between userInfo observable and local form state + * Uses uncontrolled updates with useRef to prevent input lag + */ +export function useTokenForm(storageService: SupportedStorageServices): UseTokenFormReturn { + const userInfo = useUserInfoObservable(); + + // Local state for form inputs + const [state, setState] = useState({ + token: '', + userName: '', + email: '', + branch: '', + }); + + // Track if we're ready (userInfo loaded) + const isReady = userInfo !== undefined; + + // Check if user is logged in + const isLoggedIn = state.token.length > 0; + + // Use ref to track pending updates to avoid excessive re-renders + const pendingUpdatesReference = useRef>({}); + const updateTimeoutReference = useRef(null); + + // Debounced update function + const scheduleUpdate = useCallback(() => { + if (updateTimeoutReference.current) { + clearTimeout(updateTimeoutReference.current); + } + + updateTimeoutReference.current = setTimeout(() => { + const updates = pendingUpdatesReference.current; + if (Object.keys(updates).length > 0) { + // Batch all updates into a single call + Object.entries(updates).forEach(([key, value]) => { + void window.service.auth.set(key as keyof IUserInfos, value); + }); + pendingUpdatesReference.current = {}; + } + }, 500); + }, []); + + // Cleanup timeout on unmount + useEffect(() => { + return () => { + if (updateTimeoutReference.current) { + clearTimeout(updateTimeoutReference.current); + } + }; + }, []); + + // Sync userInfo changes to local state (only when userInfo changes from backend) + useEffect(() => { + if (!userInfo) { + void window.service.native.log('debug', 'useTokenForm: userInfo is undefined', { + function: 'useTokenForm.useEffect', + storageService, + }); + return; + } + + const newToken = userInfo[`${storageService}-token`] ?? ''; + const newUserName = userInfo[`${storageService}-userName`] ?? ''; + const newEmail = userInfo[`${storageService}-email`] ?? ''; + const newBranch = userInfo[`${storageService}-branch`] ?? ''; + + void window.service.native.log('debug', 'useTokenForm: userInfo changed', { + function: 'useTokenForm.useEffect', + storageService, + hasToken: !!newToken, + tokenLength: newToken.length, + hasUserName: !!newUserName, + hasEmail: !!newEmail, + hasBranch: !!newBranch, + }); + + // Only update if values actually changed + setState((currentState) => { + const updates: Partial = {}; + let hasChanges = false; + + if (currentState.token !== newToken) { + updates.token = newToken; + hasChanges = true; + void window.service.native.log('debug', 'useTokenForm: token changed', { + function: 'useTokenForm.useEffect', + storageService, + oldLength: currentState.token.length, + newLength: newToken.length, + }); + } + if (currentState.userName !== newUserName) { + updates.userName = newUserName; + hasChanges = true; + } + if (currentState.email !== newEmail) { + updates.email = newEmail; + hasChanges = true; + } + if (currentState.branch !== newBranch) { + updates.branch = newBranch; + hasChanges = true; + } + + if (hasChanges) { + void window.service.native.log('info', 'useTokenForm: state updated with new values', { + function: 'useTokenForm.useEffect', + storageService, + updates: Object.keys(updates), + }); + } + + return hasChanges ? { ...currentState, ...updates } : currentState; + }); + }, [userInfo, storageService]); + + // Optimized setters - update local state immediately, debounce backend updates + const tokenSetter = useCallback( + (value: string) => { + setState((previous) => ({ ...previous, token: value })); + pendingUpdatesReference.current[`${storageService}-token`] = value; + scheduleUpdate(); + }, + [storageService, scheduleUpdate], + ); + + const userNameSetter = useCallback( + (value: string) => { + setState((previous) => ({ ...previous, userName: value })); + pendingUpdatesReference.current[`${storageService}-userName`] = value; + scheduleUpdate(); + }, + [storageService, scheduleUpdate], + ); + + const emailSetter = useCallback( + (value: string) => { + setState((previous) => ({ ...previous, email: value })); + pendingUpdatesReference.current[`${storageService}-email`] = value; + scheduleUpdate(); + }, + [storageService, scheduleUpdate], + ); + + const branchSetter = useCallback( + (value: string) => { + setState((previous) => ({ ...previous, branch: value })); + pendingUpdatesReference.current[`${storageService}-branch`] = value; + scheduleUpdate(); + }, + [storageService, scheduleUpdate], + ); + + return { + ...state, + isLoggedIn, + isReady, + tokenSetter, + userNameSetter, + emailSetter, + branchSetter, + }; +} diff --git a/src/constants/auth.ts b/src/constants/auth.ts index f90dd29a..72bf7c7e 100644 --- a/src/constants/auth.ts +++ b/src/constants/auth.ts @@ -2,15 +2,3 @@ export const GITHUB_GRAPHQL_API = 'https://api.github.com/graphql'; export const TIDGI_AUTH_TOKEN_HEADER = 'x-tidgi-auth-token'; export const getTidGiAuthHeaderWithToken = (authToken: string) => `${TIDGI_AUTH_TOKEN_HEADER}-${authToken}`; export const DEFAULT_USER_NAME = 'TidGi User'; -/** - * Github OAuth Apps TidGi-SignIn Setting in https://github.com/organizations/tiddly-gittly/settings/applications/1326590 - */ -export const GITHUB_LOGIN_REDIRECT_PATH = 'http://127.0.0.1:3012/tidgi-auth/github'; -export const GITHUB_OAUTH_APP_CLIENT_ID = '7b6e0fc33f4afd71a4bb'; -export const GITHUB_OAUTH_APP_CLIENT_SECRET = 'e356c4499e1e38548a44da5301ef42c11ec14173'; -const GITHUB_SCOPES = 'user:email,read:user,repo,workflow'; -/** - * Will redirect to `http://127.0.0.1:3012/tidgi-auth/github?code=65xxxxxxx` after login, which is 404, and handled by src/preload/common/authRedirect.ts - */ -export const GITHUB_OAUTH_PATH = - `https://github.com/login/oauth/authorize?client_id=${GITHUB_OAUTH_APP_CLIENT_ID}&scope=${GITHUB_SCOPES}&redirect_uri=${GITHUB_LOGIN_REDIRECT_PATH}`; diff --git a/src/constants/oauthConfig.ts b/src/constants/oauthConfig.ts new file mode 100644 index 00000000..7708548c --- /dev/null +++ b/src/constants/oauthConfig.ts @@ -0,0 +1,156 @@ +/** + * @docs docs/features/OAuthFlow.md + */ +import { SupportedStorageServices } from '@services/types'; + +export interface IOAuthConfig { + /** OAuth authorization endpoint */ + authorizePath: string; + /** OAuth client ID */ + clientId: string; + /** OAuth client secret (optional if using PKCE) */ + clientSecret?: string; + /** Local redirect path for OAuth callback */ + redirectPath: string; + /** OAuth scopes */ + scopes: string; + /** Token exchange endpoint */ + tokenPath: string; + /** Use PKCE (Proof Key for Code Exchange) instead of client_secret */ + usePKCE?: boolean; + /** User info API endpoint */ + userInfoPath: string; +} + +const BASE_REDIRECT_PATH = 'http://127.0.0.1:3012/tidgi-auth'; + +export const OAUTH_CONFIGS: Partial> = { + [SupportedStorageServices.github]: { + authorizePath: 'https://github.com/login/oauth/authorize', + tokenPath: 'https://github.com/login/oauth/access_token', + userInfoPath: 'https://api.github.com/user', + clientId: '7b6e0fc33f4afd71a4bb', + clientSecret: 'e356c4499e1e38548a44da5301ef42c11ec14173', + usePKCE: true, + redirectPath: `${BASE_REDIRECT_PATH}/github`, + scopes: 'user:email,read:user,repo,workflow', + }, + [SupportedStorageServices.codeberg]: { + // https://codeberg.org/user/settings/applications + authorizePath: 'https://codeberg.org/login/oauth/authorize', + tokenPath: 'https://codeberg.org/login/oauth/access_token', + userInfoPath: 'https://codeberg.org/api/v1/user', + clientId: '0b008a26-9681-4139-9bf2-579df7c6d9cd', + clientSecret: 'gto_ykvx4f2gmoknjxtd62ssenjvl5ss4ufcu6sjjnq6kkujbis4hiva', + usePKCE: true, + redirectPath: `${BASE_REDIRECT_PATH}/codeberg`, + scopes: 'read:user,write:repository', + }, + // Gitea.com - official Gitea instance + [SupportedStorageServices.gitea]: { + // https://gitea.com/user/settings/applications + authorizePath: 'https://gitea.com/login/oauth/authorize', + tokenPath: 'https://gitea.com/login/oauth/access_token', + userInfoPath: 'https://gitea.com/api/v1/user', + clientId: '2e29bcd7-650b-4c4d-8482-26b44a0107cb', + clientSecret: 'gto_loqgvzvj3cnno27kllt2povrz6jaa7svyus7p7z6pptsciffmbaq', + usePKCE: true, + redirectPath: `${BASE_REDIRECT_PATH}/gitea`, + scopes: 'read:user,write:repository', + }, + // Local Test OAuth Server (for testing only) + // Uses standard OAuth 2 endpoints compatible with oauth2-mock-server + [SupportedStorageServices.testOAuth]: { + authorizePath: 'http://127.0.0.1:8888/authorize', // Standard OAuth 2 endpoint + tokenPath: 'http://127.0.0.1:8888/token', // Standard OAuth 2 endpoint + userInfoPath: 'http://127.0.0.1:8888/userinfo', // Standard OAuth 2 endpoint + clientId: 'test-client-id', + usePKCE: true, + redirectPath: `${BASE_REDIRECT_PATH}/testOAuth`, + scopes: 'user:email,read:user', + }, +}; + +/** + * Get OAuth configuration for a service + */ +export function getOAuthConfig(service: SupportedStorageServices): IOAuthConfig | undefined { + return OAUTH_CONFIGS[service]; +} + +/** + * Generate PKCE code verifier and challenge + * @returns { codeVerifier, codeChallenge } + */ +export function generatePKCEChallenge(): { codeVerifier: string } { + // Generate random code_verifier (43-128 characters) + const array = new Uint8Array(32); + crypto.getRandomValues(array); + const codeVerifier = btoa(String.fromCharCode(...array)) + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=/g, ''); + + return { codeVerifier }; +} + +/** + * Compute SHA-256 hash for PKCE code_challenge + */ +async function sha256(plain: string): Promise { + const encoder = new TextEncoder(); + const data = encoder.encode(plain); + const hash = await crypto.subtle.digest('SHA-256', data); + const bytes = new Uint8Array(hash); + return btoa(String.fromCharCode(...bytes)) + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=/g, ''); +} + +/** + * Build OAuth authorization URL + */ +export async function buildOAuthUrl( + service: SupportedStorageServices, +): Promise<{ codeVerifier?: string; url: string } | undefined> { + const config = getOAuthConfig(service); + if (!config || !config.authorizePath || !config.clientId) { + return undefined; + } + + const queryParameters: Record = { + client_id: config.clientId, + redirect_uri: config.redirectPath, + scope: config.scopes, + }; + + let codeVerifier: string | undefined; + + // Add PKCE parameters if enabled + if (config.usePKCE) { + const pkce = generatePKCEChallenge(); + codeVerifier = pkce.codeVerifier; + const codeChallenge = await sha256(codeVerifier); + + queryParameters.code_challenge = codeChallenge; + queryParameters.code_challenge_method = 'S256'; + } + + const urlParameters = new URLSearchParams(queryParameters); + const url = `${config.authorizePath}?${urlParameters.toString()}`; + + return { url, codeVerifier }; +} + +/** + * Check if a URL matches any OAuth redirect path + */ +export function isOAuthRedirect(url: string): { service: SupportedStorageServices; config: IOAuthConfig } | undefined { + for (const [service, config] of Object.entries(OAUTH_CONFIGS)) { + if (config && url.startsWith(config.redirectPath)) { + return { service: service as SupportedStorageServices, config }; + } + } + return undefined; +} diff --git a/src/helpers/ip.ts b/src/helpers/ip.ts index 4ed29101..edd7df02 100644 --- a/src/helpers/ip.ts +++ b/src/helpers/ip.ts @@ -2,7 +2,7 @@ import ip from 'ipaddr.js'; import { networkInterfaces, platform, type } from 'os'; /** - * Copy from https://github.com/sindresorhus/internal-ip, to fi xsilverwind/default-gateway 's bug + * Copy from https://github.com/sindresorhus/internal-ip, to fix silverwind/default-gateway 's bug * @returns */ function findIp(gateway: string): string | undefined { diff --git a/src/pages/Agent/store/agentChatStore/actions/previewActions.ts b/src/pages/Agent/store/agentChatStore/actions/previewActions.ts index add8fc3d..6f8fcaf6 100644 --- a/src/pages/Agent/store/agentChatStore/actions/previewActions.ts +++ b/src/pages/Agent/store/agentChatStore/actions/previewActions.ts @@ -1,5 +1,5 @@ import type { AgentPromptDescription, IPrompt } from '@services/agentInstance/promptConcat/promptConcatSchema'; -import type { CoreMessage } from 'ai'; +import type { ModelMessage } from 'ai'; import { StateCreator } from 'zustand'; import { AgentChatStoreType, PreviewActions } from '../types'; @@ -102,7 +102,7 @@ export const previewActionsMiddleware: StateCreator { @@ -33,7 +33,7 @@ export interface PreviewDialogState { previewCurrentStep: string; // current processing step description previewCurrentPlugin: string | null; // current plugin being processed previewResult: { - flatPrompts: CoreMessage[]; + flatPrompts: ModelMessage[]; processedPrompts: IPrompt[]; } | null; lastUpdated: Date | null; @@ -196,7 +196,7 @@ export interface PreviewActions { handlerConfig: AgentPromptDescription['handlerConfig'], ) => Promise< { - flatPrompts: CoreMessage[]; + flatPrompts: ModelMessage[]; processedPrompts: IPrompt[]; } | null >; diff --git a/src/pages/ChatTabContent/components/APILogsDialog.tsx b/src/pages/ChatTabContent/components/APILogsDialog.tsx index 49196edd..cdb122e6 100644 --- a/src/pages/ChatTabContent/components/APILogsDialog.tsx +++ b/src/pages/ChatTabContent/components/APILogsDialog.tsx @@ -115,6 +115,16 @@ export const APILogsDialog: React.FC = ({ } }; + const hasResponseContent = (rc: unknown): boolean => { + if (rc == null) return false; + if (typeof rc === 'string') return rc.length > 0; + try { + return JSON.stringify(rc).length > 0; + } catch { + return true; + } + }; + return ( = ({ {t('APILogs.ResponseContent')} - {log.responseContent && String(log.responseContent).length > 0 + {hasResponseContent(log.responseContent) ? log.responseContent : t('APILogs.NoResponse')} diff --git a/src/pages/ChatTabContent/components/PromptPreviewDialog/PreviewTabsView.tsx b/src/pages/ChatTabContent/components/PromptPreviewDialog/PreviewTabsView.tsx index 5d408d03..d58685c8 100644 --- a/src/pages/ChatTabContent/components/PromptPreviewDialog/PreviewTabsView.tsx +++ b/src/pages/ChatTabContent/components/PromptPreviewDialog/PreviewTabsView.tsx @@ -1,7 +1,7 @@ import { Box, styled } from '@mui/material'; import Tab from '@mui/material/Tab'; import Tabs from '@mui/material/Tabs'; -import { CoreMessage } from 'ai'; +import { ModelMessage } from 'ai'; import React, { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useShallow } from 'zustand/react/shallow'; @@ -67,8 +67,8 @@ export const PreviewTabsView: React.FC = ({ const formattedPreview = useMemo(() => { return previewResult ? { - flatPrompts: previewResult.flatPrompts.map((message: CoreMessage) => ({ - role: String(message.role), + flatPrompts: previewResult.flatPrompts.map((message: ModelMessage) => ({ + role: message.role as string, content: getFormattedContent(message.content), })), processedPrompts: previewResult.processedPrompts, diff --git a/src/pages/ChatTabContent/components/PromptPreviewDialog/PromptConfigForm/widgets/TagsWidget.tsx b/src/pages/ChatTabContent/components/PromptPreviewDialog/PromptConfigForm/widgets/TagsWidget.tsx index 6bc7d599..d8206938 100644 --- a/src/pages/ChatTabContent/components/PromptPreviewDialog/PromptConfigForm/widgets/TagsWidget.tsx +++ b/src/pages/ChatTabContent/components/PromptPreviewDialog/PromptConfigForm/widgets/TagsWidget.tsx @@ -80,10 +80,10 @@ export const TagsWidget: React.FC = ({ renderInput={(parameters) => ( )} sx={{ @@ -91,9 +91,9 @@ export const TagsWidget: React.FC = ({ margin: '2px', }, }} - getOptionLabel={(option) => String(option)} - isOptionEqualToValue={(option, valueItem) => String(option) === String(valueItem)} - noOptionsText={String(t('PromptConfig.Tags.NoOptions'))} + getOptionLabel={(option) => `${option}`} + isOptionEqualToValue={(option, valueItem) => `${option}` === `${valueItem}`} + noOptionsText={t('PromptConfig.Tags.NoOptions')} clearOnBlur selectOnFocus handleHomeEndKeys diff --git a/src/pages/ChatTabContent/components/PromptPreviewDialog/__tests__/PromptPreviewDialog.promptConcat.test.tsx b/src/pages/ChatTabContent/components/PromptPreviewDialog/__tests__/PromptPreviewDialog.promptConcat.test.tsx index cf79eb88..0a0266a0 100644 --- a/src/pages/ChatTabContent/components/PromptPreviewDialog/__tests__/PromptPreviewDialog.promptConcat.test.tsx +++ b/src/pages/ChatTabContent/components/PromptPreviewDialog/__tests__/PromptPreviewDialog.promptConcat.test.tsx @@ -11,7 +11,7 @@ import { lightTheme } from '@services/theme/defaultTheme'; import { useAgentChatStore } from '@/pages/Agent/store/agentChatStore/index'; import defaultAgents from '@services/agentInstance/buildInAgentHandlers/defaultAgents.json'; import { IPrompt } from '@services/agentInstance/promptConcat/promptConcatSchema'; -import { CoreMessage } from 'ai'; +import { ModelMessage } from 'ai'; import { PromptPreviewDialog } from '../index'; // Mock handler config management hook @@ -109,7 +109,7 @@ describe('PromptPreviewDialog - Tool Information Rendering', () => { }); // Type guard for preview result shape - const isPreviewResult = (v: unknown): v is { flatPrompts: CoreMessage[]; processedPrompts: IPrompt[] } => { + const isPreviewResult = (v: unknown): v is { flatPrompts: ModelMessage[]; processedPrompts: IPrompt[] } => { if (!v || typeof v !== 'object') return false; return Object.prototype.hasOwnProperty.call(v, 'flatPrompts') && Object.prototype.hasOwnProperty.call(v, 'processedPrompts'); }; @@ -125,7 +125,7 @@ describe('PromptPreviewDialog - Tool Information Rendering', () => { const observable = window.observables.agentInstance.concatPrompt({ handlerConfig } as never, messages); const results: unknown[] = []; - let finalResult: { flatPrompts: CoreMessage[]; processedPrompts: IPrompt[] } | undefined; + let finalResult: { flatPrompts: ModelMessage[]; processedPrompts: IPrompt[] } | undefined; await new Promise((resolve) => { observable.subscribe({ next: (state) => { diff --git a/src/pages/ChatTabContent/components/types.ts b/src/pages/ChatTabContent/components/types.ts index a213386a..ee77bf7d 100644 --- a/src/pages/ChatTabContent/components/types.ts +++ b/src/pages/ChatTabContent/components/types.ts @@ -1,19 +1,19 @@ -import { CoreMessage } from 'ai'; +import { ModelMessage } from 'ai'; export interface PreviewMessage { role: string; content: string; } -export interface CoreMessageContent { +export interface ModelMessageContent { text?: string; content?: string; } /** - * Convert CoreMessage content to string safely + * Convert ModelMessage content to string safely */ -export function getFormattedContent(content: CoreMessage['content']): string { +export function getFormattedContent(content: ModelMessage['content']): string { if (typeof content === 'string') { return content; } @@ -21,7 +21,7 @@ export function getFormattedContent(content: CoreMessage['content']): string { return content .map(part => { if (typeof part === 'string') return part; - const typedPart = part as CoreMessageContent; + const typedPart = part as ModelMessageContent; if (typedPart.text) return typedPart.text; if (typedPart.content) return typedPart.content; return ''; diff --git a/src/pages/ChatTabContent/hooks/useScrollHandling.tsx b/src/pages/ChatTabContent/hooks/useScrollHandling.tsx index 7a0d806f..96f0fd55 100644 --- a/src/pages/ChatTabContent/hooks/useScrollHandling.tsx +++ b/src/pages/ChatTabContent/hooks/useScrollHandling.tsx @@ -66,7 +66,7 @@ export function useScrollHandling() { * Check if initial scroll has been done for a given agent */ const hasInitialScrollBeenDone = (agentId: string): boolean => { - return !!initialScrollDoneReference.current[agentId]; + return initialScrollDoneReference.current[agentId] ?? false; }; /** diff --git a/src/pages/Main/index.tsx b/src/pages/Main/index.tsx index ef9f57ec..d42ca66d 100644 --- a/src/pages/Main/index.tsx +++ b/src/pages/Main/index.tsx @@ -69,7 +69,7 @@ export default function Main(): React.JSX.Element { {t('Menu.TidGi')}{isTidgiMiniWindow ? ` - ${t('Menu.TidGiMiniWindow')}` : ''} - + {showSidebar && } diff --git a/src/preload/common/authRedirect.ts b/src/preload/common/authRedirect.ts deleted file mode 100644 index 90ca6e67..00000000 --- a/src/preload/common/authRedirect.ts +++ /dev/null @@ -1,101 +0,0 @@ -// on production build, if we try to redirect to http://localhost:3012 , we will reach chrome-error://chromewebdata/ , but we can easily get back -// this happens when we are redirected by OAuth login -import { CreateWorkspaceTabs } from '@/windows/AddWorkspace/constants'; -import { PreferenceSections } from '@services/preferences/interface'; -import { SupportedStorageServices } from '@services/types'; -import { WindowMeta, WindowNames } from '@services/windows/WindowProperties'; -import { truncate } from 'lodash'; -import { windowName } from './browserViewMetaData'; -import { context, window as windowService } from './services'; - -const CHECK_LOADED_INTERVAL = 500; -let constantsFetched = false; -let CHROME_ERROR_PATH: string | undefined; -let GITHUB_LOGIN_REDIRECT_PATH: string | undefined; -let MAIN_WINDOW_WEBPACK_ENTRY: string | undefined; -let GITHUB_OAUTH_APP_CLIENT_SECRET: string | undefined; -let GITHUB_OAUTH_APP_CLIENT_ID: string | undefined; - -const log = (message: string): void => { - void window.service.native.log('debug', message, { function: 'authRedirect.refresh' }); -}; -async function refresh(): Promise { - // get path from src/constants/paths.ts - if (!constantsFetched) { - await Promise.all([ - context.get('CHROME_ERROR_PATH').then((pathName) => { - CHROME_ERROR_PATH = pathName; - }), - context.get('MAIN_WINDOW_WEBPACK_ENTRY').then((pathName) => { - MAIN_WINDOW_WEBPACK_ENTRY = pathName; - }), - context.get('GITHUB_LOGIN_REDIRECT_PATH').then((pathName) => { - GITHUB_LOGIN_REDIRECT_PATH = pathName; - }), - context.get('GITHUB_OAUTH_APP_CLIENT_SECRET').then((pathName) => { - GITHUB_OAUTH_APP_CLIENT_SECRET = pathName; - }), - context.get('GITHUB_OAUTH_APP_CLIENT_ID').then((pathName) => { - GITHUB_OAUTH_APP_CLIENT_ID = pathName; - }), - ]); - constantsFetched = true; - await refresh(); - return; - } - if (window.location.href.startsWith(GITHUB_LOGIN_REDIRECT_PATH!)) { - log(`window.location.href.startsWith(GITHUB_LOGIN_REDIRECT_PATH!)`); - // currently content will be something like `/tidgi-auth/github 404 not found`, we need to write something to tell user we are handling login, this is normal. - // center the text and make it large - document.body.innerHTML = '
Handling Github login, please wait...
'; - // get the code - try { - const code = window.location.href.split('code=')[1]; - log(`code: ${truncate(code ?? '', { length: 6 })}...`); - if (code) { - // exchange the code for an access token in github - const response = await fetch('https://github.com/login/oauth/access_token', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - body: JSON.stringify({ - client_id: GITHUB_OAUTH_APP_CLIENT_ID, - client_secret: GITHUB_OAUTH_APP_CLIENT_SECRET, - code, - }), - }); - // get the access token from the response - const { access_token: token } = await (response.json() as Promise<{ access_token: string }>); - log(`code: ${truncate(token ?? '', { length: 6 })}...`); - await window.service.auth.set(`${SupportedStorageServices.github}-token`, token); - } - log('updateWindowMeta'); - await windowService.updateWindowMeta( - windowName, - { - addWorkspaceTab: CreateWorkspaceTabs.CloneOnlineWiki, - preferenceGotoTab: PreferenceSections.sync, - } satisfies WindowMeta[WindowNames.addWorkspace] & WindowMeta[WindowNames.preferences], - ); - log('Done handling Github login, redirecting to main window'); - await windowService.loadURL(windowName, MAIN_WINDOW_WEBPACK_ENTRY); - } catch (error) { - await window.service.native.log('error', 'Github login failed', { function: 'authRedirect.refresh', error }); - await windowService.loadURL(windowName, MAIN_WINDOW_WEBPACK_ENTRY); - } - } else if (window.location.href === CHROME_ERROR_PATH) { - log(`window.location.href === CHROME_ERROR_PATH`); - await windowService.loadURL(windowName, MAIN_WINDOW_WEBPACK_ENTRY); - } else { - setTimeout(() => void refresh(), CHECK_LOADED_INTERVAL); - } -} - -/** - * Setting window and add workspace window may be used to login, and will be redirect, we catch it and redirect back. - */ -if (![WindowNames.main, WindowNames.view].includes(windowName)) { - setTimeout(() => void refresh(), CHECK_LOADED_INTERVAL); -} diff --git a/src/preload/index.ts b/src/preload/index.ts index a88e4ce9..7a9a6c46 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -12,7 +12,6 @@ import { ViewChannel } from '@/constants/channels'; import type { IPossibleWindowMeta } from '@services/windows/WindowProperties'; import { WindowNames } from '@services/windows/WindowProperties'; import { browserViewMetaData } from './common/browserViewMetaData'; -import './common/authRedirect'; import './view'; import { syncTidgiStateWhenWikiLoads } from './appState'; import { fixAlertConfirm } from './fixer/fixAlertConfirm'; diff --git a/src/services/agentDefinition/getAgentDefinitionTemplatesFromWikis.ts b/src/services/agentDefinition/getAgentDefinitionTemplatesFromWikis.ts index e7f569b0..cef54beb 100644 --- a/src/services/agentDefinition/getAgentDefinitionTemplatesFromWikis.ts +++ b/src/services/agentDefinition/getAgentDefinitionTemplatesFromWikis.ts @@ -69,23 +69,6 @@ export function validateAndConvertWikiTiddlerToAgentTemplate( return null; } - // Try to parse the tiddler text as JSON for agent configuration - let handlerConfig: Record; - try { - const textContent = typeof tiddler.text === 'string' ? tiddler.text : String(tiddler.text || '{}'); - const parsed = JSON.parse(textContent) as unknown; - - // Ensure handlerConfig is a valid object - if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) { - logger.warn('Invalid handlerConfig in tiddler', { function: 'validateAndConvertWikiTiddlerToAgentTemplate', title: String(tiddler.title), reason: 'not an object' }); - return null; - } - handlerConfig = parsed as Record; - } catch (parseError) { - logger.warn('Failed to parse agent template from tiddler', { function: 'validateAndConvertWikiTiddlerToAgentTemplate', title: String(tiddler.title), error: parseError }); - return null; - } - // Helper function to safely get string value from tiddler field const getStringField = (field: unknown, fallback = ''): string => { if (typeof field === 'string') return field; @@ -132,6 +115,31 @@ export function validateAndConvertWikiTiddlerToAgentTemplate( return undefined; }; + // Try to parse the tiddler text as JSON for agent configuration + let handlerConfig: Record; + try { + const textContent = typeof tiddler.text === 'string' ? tiddler.text : JSON.stringify(tiddler.text || '{}'); + const parsed = JSON.parse(textContent) as unknown; + + // Ensure handlerConfig is a valid object + if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) { + logger.warn('Invalid handlerConfig in tiddler', { + function: 'validateAndConvertWikiTiddlerToAgentTemplate', + title: getStringField(tiddler.title), + reason: 'not an object', + }); + return null; + } + handlerConfig = parsed as Record; + } catch (parseError) { + logger.warn('Failed to parse agent template from tiddler', { + function: 'validateAndConvertWikiTiddlerToAgentTemplate', + title: getStringField(tiddler.title), + error: parseError, + }); + return null; + } + // Create AgentDefinition from tiddler const agentTemplate: AgentDefinition = { id: `wiki-template-${getStringField(tiddler.title).replace(/[^a-zA-Z0-9-_]/g, '-')}`, diff --git a/src/services/agentInstance/__tests__/index.failure.test.ts b/src/services/agentInstance/__tests__/index.failure.test.ts index f05e273a..8af7c092 100644 --- a/src/services/agentInstance/__tests__/index.failure.test.ts +++ b/src/services/agentInstance/__tests__/index.failure.test.ts @@ -52,7 +52,7 @@ describe('AgentInstance failure path - external API logs on error', () => { // Mock provider stream to throw error (ai sdk failure) vi.spyOn(callProvider, 'streamFromProvider').mockImplementation((_cfg: AiAPIConfig) => { - throw new Error('Invalid prompt: message must be a CoreMessage or a UI message'); + throw new Error('Invalid prompt: message must be a ModelMessage or a UI message'); }); // Initialize services diff --git a/src/services/agentInstance/buildInAgentHandlers/__tests__/basicPromptConcatHandler.failure.test.ts b/src/services/agentInstance/buildInAgentHandlers/__tests__/basicPromptConcatHandler.failure.test.ts index 330db881..de815b82 100644 --- a/src/services/agentInstance/buildInAgentHandlers/__tests__/basicPromptConcatHandler.failure.test.ts +++ b/src/services/agentInstance/buildInAgentHandlers/__tests__/basicPromptConcatHandler.failure.test.ts @@ -18,7 +18,7 @@ const mockErrorDetail = { name: 'AIProviderError', code: 'INVALID_PROMPT', provider: 'siliconflow', - message: 'Invalid prompt: message must be a CoreMessage or a UI message', + message: 'Invalid prompt: message must be a ModelMessage or a UI message', }; function makeContext(agentId: string, agentDefId: string, messages: AgentInstanceMessage[]): AgentHandlerContext { diff --git a/src/services/agentInstance/plugins/__tests__/wikiSearchPlugin.test.ts b/src/services/agentInstance/plugins/__tests__/wikiSearchPlugin.test.ts index cb4acb37..be670fec 100644 --- a/src/services/agentInstance/plugins/__tests__/wikiSearchPlugin.test.ts +++ b/src/services/agentInstance/plugins/__tests__/wikiSearchPlugin.test.ts @@ -537,7 +537,10 @@ describe('Wiki Search Plugin - Comprehensive Tests', () => { searchSimilar: vi.fn(), }; // Replace the service in container - container.rebind(serviceIdentifier.WikiEmbedding).toConstantValue(mockWikiEmbeddingService); + if (container.isBound(serviceIdentifier.WikiEmbedding)) { + await container.unbind(serviceIdentifier.WikiEmbedding); + } + container.bind(serviceIdentifier.WikiEmbedding).toConstantValue(mockWikiEmbeddingService); }); it('should execute vector search when searchType=vector', async () => { diff --git a/src/services/agentInstance/promptConcat/promptConcat.ts b/src/services/agentInstance/promptConcat/promptConcat.ts index 88297fd5..f6fac07b 100644 --- a/src/services/agentInstance/promptConcat/promptConcat.ts +++ b/src/services/agentInstance/promptConcat/promptConcat.ts @@ -14,7 +14,7 @@ */ import { logger } from '@services/libs/log'; -import { CoreMessage } from 'ai'; +import { ModelMessage } from 'ai'; import { cloneDeep } from 'lodash'; import { AgentHandlerContext } from '../buildInAgentHandlers/type'; import { AgentInstanceMessage } from '../interface'; @@ -89,8 +89,8 @@ export function findPromptById( * @param prompts Tree-structured prompt array * @returns Flattened array of prompts */ -export function flattenPrompts(prompts: IPrompt[]): CoreMessage[] { - const result: CoreMessage[] = []; +export function flattenPrompts(prompts: IPrompt[]): ModelMessage[] { + const result: ModelMessage[] = []; // Process prompt tree recursively - collect non-role children text function processPrompt(prompt: IPrompt): string { @@ -140,7 +140,7 @@ export function flattenPrompts(prompts: IPrompt[]): CoreMessage[] { { role: prompt.role || 'system' as const, content: content.trim() || '', - } as CoreMessage, + } as ModelMessage, ); } @@ -169,7 +169,7 @@ export function flattenPrompts(prompts: IPrompt[]): CoreMessage[] { // Support 'tool' role in child prompts role: child.role, content: childContent.trim() || '', - } as CoreMessage); + } as ModelMessage); } } } @@ -187,7 +187,7 @@ export interface PromptConcatStreamState { /** Current processed prompts */ processedPrompts: IPrompt[]; /** Current flat prompts for LLM */ - flatPrompts: CoreMessage[]; + flatPrompts: ModelMessage[]; /** Current processing step */ step: 'plugin' | 'finalize' | 'flatten' | 'complete'; /** Current plugin being processed (if step is 'plugin') */ @@ -345,7 +345,7 @@ export async function promptConcat( messages: AgentInstanceMessage[], handlerContext: AgentHandlerContext, ): Promise<{ - flatPrompts: CoreMessage[]; + flatPrompts: ModelMessage[]; processedPrompts: IPrompt[]; }> { // Use the streaming version and just return the final result diff --git a/src/services/auth/index.ts b/src/services/auth/index.ts index 5fe10830..0bd1bf0f 100644 --- a/src/services/auth/index.ts +++ b/src/services/auth/index.ts @@ -1,16 +1,19 @@ +import { getOAuthConfig } from '@/constants/oauthConfig'; import { container } from '@services/container'; import type { IDatabaseService } from '@services/database/interface'; import type { IGitUserInfos } from '@services/git/interface'; import { logger } from '@services/libs/log'; +import type { IMenuService } from '@services/menu/interface'; import serviceIdentifier from '@services/serviceIdentifier'; import { SupportedStorageServices } from '@services/types'; import type { IWorkspace } from '@services/workspaces/interface'; import { isWikiWorkspace } from '@services/workspaces/interface'; +import { BrowserWindow } from 'electron'; import { injectable } from 'inversify'; -import { truncate } from 'lodash'; import { nanoid } from 'nanoid'; import { BehaviorSubject } from 'rxjs'; import type { IAuthenticationService, IUserInfos, ServiceBranchTypes, ServiceEmailTypes, ServiceTokenTypes, ServiceUserNameTypes } from './interface'; +import { setupOAuthRedirectHandler as setupOAuthHandler } from './oauthRedirectHandler'; const defaultUserInfos = { userName: '', @@ -64,7 +67,6 @@ export class Authentication implements IAuthenticationService { } public setUserInfos(newUserInfos: IUserInfos): void { - logger.debug('Storing authInfos', { function: 'setUserInfos' }); this.cachedUserInfo = newUserInfos; const databaseService = container.get(serviceIdentifier.Database); databaseService.setSetting('userInfos', newUserInfos); @@ -87,7 +89,6 @@ export class Authentication implements IAuthenticationService { } public async set(key: K, value: IUserInfos[K]): Promise { - logger.debug('Setting auth, debug value is truncated for privacy', { key, value: truncate(value, { length: 10 }), function: 'Authentication.set' }); let userInfo = this.getUserInfos(); userInfo[key] = value; userInfo = { ...userInfo, ...this.sanitizeUserInfo(userInfo) }; @@ -116,4 +117,217 @@ export class Authentication implements IAuthenticationService { const userName = (isWikiWorkspace(workspace) ? workspace.userName : '') || (await this.get('userName')) || ''; return userName; } + + /** + * Clear cookies for a specific OAuth domain + * Used during logout to clear "remember me" state + */ + public async clearCookiesForDomain(domain: string): Promise { + const { session } = await import('electron'); + try { + const cookies = await session.defaultSession.cookies.get({ domain }); + + await Promise.all( + cookies.map(async (cookie) => { + const url = `http${cookie.secure ? 's' : ''}://${cookie.domain}${cookie.path}`; + await session.defaultSession.cookies.remove(url, cookie.name); + }), + ); + } catch (error) { + logger.error('Failed to clear cookies for domain', { error, domain, function: 'clearCookiesForDomain' }); + throw error; + } + } + + /** + * Generate OAuth authorization URL using oidc-client-ts + * This ensures PKCE state is properly managed + */ + public async generateOAuthUrl(service: SupportedStorageServices): Promise { + try { + const { createOAuthClientManager } = await import('./oauthClient'); + const client = createOAuthClientManager(service); + + if (!client) { + logger.error('Failed to create OAuth client', { service, function: 'generateOAuthUrl' }); + return undefined; + } + + const result = await client.createAuthorizationUrl(); + if (!result) { + logger.error('Failed to generate OAuth URL', { service, function: 'generateOAuthUrl' }); + return undefined; + } + + logger.info('OAuth URL generated', { service, function: 'generateOAuthUrl' }); + return result.url; + } catch (error) { + logger.error('Error generating OAuth URL', { service, error, function: 'generateOAuthUrl' }); + return undefined; + } + } + + /** + * Open OAuth login in a new popup window + * The window will be automatically closed after OAuth completes + * @param service - The OAuth service to authenticate with (e.g., 'github') + */ + public async openOAuthWindow(service: SupportedStorageServices): Promise { + try { + // Generate OAuth URL using oidc-client-ts (ensures proper state management) + const url = await this.generateOAuthUrl(service); + if (!url) { + throw new Error(`Failed to generate OAuth URL for ${service}`); + } + + logger.info('Opening OAuth window', { function: 'openOAuthWindow', service, url: url.substring(0, 100) }); + + // Create a new popup window for OAuth + const oauthWindow = new BrowserWindow({ + width: 600, + height: 800, + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + }, + title: 'OAuth Login', + resizable: true, + minimizable: false, + fullscreenable: false, + show: false, // Don't show until ready + }); + + // Show window when ready + oauthWindow.once('ready-to-show', () => { + oauthWindow.show(); + logger.debug('OAuth window shown', { function: 'openOAuthWindow' }); + }); + + // Add context menu (right-click menu with DevTools) for debugging + const menuService = container.get(serviceIdentifier.MenuService); + const unregisterContextMenu = await menuService.initContextMenuForWindowWebContents(oauthWindow.webContents); + + // Setup OAuth redirect handler for this window + this.setupOAuthRedirectHandler( + oauthWindow, + () => '', // Not needed for popup window + '', // Not needed for popup window + false, // Don't navigate after auth - just close the window + ); + + // Clean up when window is closed + oauthWindow.on('closed', () => { + unregisterContextMenu(); + logger.info('OAuth window closed', { function: 'openOAuthWindow' }); + }); + + // Load OAuth URL + await oauthWindow.loadURL(url); + logger.debug('OAuth URL loaded in popup window', { function: 'openOAuthWindow' }); + } catch (error) { + logger.error('Failed to open OAuth window', { error, function: 'openOAuthWindow' }); + throw error; + } + } + + /** + * Setup OAuth redirect handler for a BrowserWindow (simplified version using oidc-client-ts) + * @param window The BrowserWindow to setup OAuth handling for + * @param getMainWindowEntry Function to get the main window entry URL + * @param preferencesPath The path to navigate to after OAuth completes + * @param shouldNavigateAfterAuth Whether to navigate after authentication (false for popup windows) + */ + public setupOAuthRedirectHandler( + window: BrowserWindow, + getMainWindowEntry: () => string, + preferencesPath: string, + shouldNavigateAfterAuth = true, + ): void { + const handleSuccess = async (service: SupportedStorageServices, accessToken: string) => { + logger.info('OAuth authentication successful', { + service, + tokenLength: accessToken.length, + function: 'setupOAuthRedirectHandler.handleSuccess', + }); + + try { + // Store access token + await this.set(`${service}-token`, accessToken); + logger.debug('Access token stored', { service, function: 'setupOAuthRedirectHandler.handleSuccess' }); + + // Fetch and store user info + const config = getOAuthConfig(service); + if (config?.userInfoPath) { + try { + const response = await fetch(config.userInfoPath, { + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: 'application/json', + }, + }); + + const userInfo = await response.json() as { email?: string; login?: string; name?: string }; + + if (userInfo.login) { + await this.set(`${service}-userName`, userInfo.login); + logger.debug('User name stored', { service, userName: userInfo.login }); + } + if (userInfo.email) { + await this.set(`${service}-email`, userInfo.email); + logger.debug('User email stored', { service, email: userInfo.email }); + } + } catch (error) { + logger.warn('Failed to fetch user info', { service, error }); + } + } + + // Force immediate save to disk + const databaseService = container.get(serviceIdentifier.Database); + await databaseService.immediatelyStoreSettingsToFile(); + logger.debug('Settings saved to disk', { service }); + + // Update observable + this.updateUserInfoSubject(); + logger.debug('UserInfo observable updated', { service }); + + // Navigate or close window + if (shouldNavigateAfterAuth) { + const targetUrl = `${getMainWindowEntry()}#/${preferencesPath}`; + await window.webContents.loadURL(targetUrl); + logger.info('Navigated to preferences', { service, targetUrl }); + } else { + if (!window.isDestroyed()) { + window.close(); + } + logger.info('OAuth popup window closed', { service }); + } + } catch (error) { + logger.error('Error handling OAuth success', { service, error }); + throw error; + } + }; + + const handleError = async (service: SupportedStorageServices, error: string) => { + logger.error('OAuth authentication failed', { + service, + error, + function: 'setupOAuthRedirectHandler.handleError', + }); + + // Navigate back to preferences on error (if not a popup) + if (shouldNavigateAfterAuth) { + const targetUrl = `${getMainWindowEntry()}#/${preferencesPath}`; + await window.webContents.loadURL(targetUrl); + logger.debug('Navigated to preferences after error', { service }); + } else { + if (!window.isDestroyed()) { + window.close(); + } + logger.debug('OAuth popup window closed after error', { service }); + } + }; + + // Use the simplified redirect handler from oauthRedirectHandler.ts + setupOAuthHandler(window, handleSuccess, handleError); + } } diff --git a/src/services/auth/interface.ts b/src/services/auth/interface.ts index 5b1061d1..d9fab2d1 100644 --- a/src/services/auth/interface.ts +++ b/src/services/auth/interface.ts @@ -25,6 +25,12 @@ export const getServiceBranchTypes = (serviceType: SupportedStorageServices): Se /** Git push: Git commit message branch, you may use different branch for different storage service */ type BranchRecord = Record; +/** Custom OAuth server configuration types */ +export type ServiceServerUrlTypes = `${SupportedStorageServices}-serverUrl`; +export type ServiceClientIdTypes = `${SupportedStorageServices}-clientId`; +type ServerUrlRecord = Partial>; +type ClientIdRecord = Partial>; + export type IUserInfos = & { /** Default UserName in TiddlyWiki, each wiki can have different username, but fallback to this if not specific on */ @@ -33,12 +39,18 @@ export type IUserInfos = & Partial & Partial & Partial - & Partial; + & Partial + & ServerUrlRecord + & ClientIdRecord; /** * Handle login to Github GitLab Coding.net */ export interface IAuthenticationService { + /** + * Clear cookies for a specific OAuth domain + */ + clearCookiesForDomain(domain: string): Promise; generateOneTimeAdminAuthTokenForWorkspace(workspaceID: string): Promise; /** * This is for internal use @@ -61,6 +73,20 @@ export interface IAuthenticationService { * Batch update all UserInfos */ setUserInfos(newUserInfos: IUserInfos): void; + /** + * Setup OAuth redirect handler for a BrowserWindow + * This intercepts OAuth callbacks and exchanges authorization codes for tokens + */ + setupOAuthRedirectHandler(window: unknown, getMainWindowEntry: () => string, preferencesPath: string): void; + /** + * Generate OAuth authorization URL using oidc-client-ts + */ + generateOAuthUrl(service: SupportedStorageServices): Promise; + /** + * Open OAuth login in a new popup window + * @param service - The OAuth service (e.g., 'github') + */ + openOAuthWindow(service: SupportedStorageServices): Promise; /** * Manually refresh the observable's content, that will be received by react component. */ @@ -70,6 +96,8 @@ export interface IAuthenticationService { export const AuthenticationServiceIPCDescriptor = { channel: AuthenticationChannel.name, properties: { + clearCookiesForDomain: ProxyPropertyType.Function, + generateOAuthUrl: ProxyPropertyType.Function, generateOneTimeAdminAuthTokenForWorkspace: ProxyPropertyType.Function, get: ProxyPropertyType.Function, getRandomStorageServiceUserInfo: ProxyPropertyType.Function, @@ -79,6 +107,7 @@ export const AuthenticationServiceIPCDescriptor = { reset: ProxyPropertyType.Function, set: ProxyPropertyType.Function, setUserInfos: ProxyPropertyType.Function, + openOAuthWindow: ProxyPropertyType.Function, updateUserInfoSubject: ProxyPropertyType.Value$, userInfo$: ProxyPropertyType.Value$, }, diff --git a/src/services/auth/oauthClient.ts b/src/services/auth/oauthClient.ts new file mode 100644 index 00000000..6ea6c6a3 --- /dev/null +++ b/src/services/auth/oauthClient.ts @@ -0,0 +1,174 @@ +/** + * OAuth 2.0 client using oidc-client-ts + * Simplified OAuth flow for Electron main process + * + * This wrapper adapts oidc-client-ts (designed for browsers) to work in Electron's main process. + * We use oidc-client-ts for: + * - PKCE generation (automatic) + * - Token exchange + * - State management + * + * But handle BrowserWindow navigation ourselves. + */ +import { getOAuthConfig } from '@/constants/oauthConfig'; +import type { SupportedStorageServices } from '@services/types'; +import type { OidcClientSettings, SigninResponse, StateStore } from 'oidc-client-ts'; +import { OidcClient } from 'oidc-client-ts'; +import { logger } from '../libs/log'; + +/** + * In-memory state store for Electron main process (SINGLETON) + * oidc-client-ts requires a state store to save PKCE verifiers and state + * Must be a singleton to ensure state persists across OAuthClientManager instances + */ +class InMemoryStateStore implements StateStore { + private static instance: InMemoryStateStore; + private store = new Map(); + + // Private constructor for singleton pattern + private constructor() {} + + public static getInstance(): InMemoryStateStore { + if (!InMemoryStateStore.instance) { + InMemoryStateStore.instance = new InMemoryStateStore(); + logger.debug('Singleton InMemoryStateStore created', { function: 'InMemoryStateStore.getInstance' }); + } + return InMemoryStateStore.instance; + } + + async set(key: string, value: string): Promise { + this.store.set(key, value); + logger.debug('State stored', { key, storeSize: this.store.size, function: 'InMemoryStateStore.set' }); + } + + async get(key: string): Promise { + const value = this.store.get(key) || null; + logger.debug('State retrieved', { key, hasValue: !!value, storeSize: this.store.size, function: 'InMemoryStateStore.get' }); + return value; + } + + async remove(key: string): Promise { + const value = this.store.get(key) || null; + this.store.delete(key); + logger.debug('State removed', { key, hadValue: !!value, storeSize: this.store.size, function: 'InMemoryStateStore.remove' }); + return value; + } + + async getAllKeys(): Promise { + return Array.from(this.store.keys()); + } +} + +/** + * OAuth client manager for a specific service + * Keeps the OidcClient instance and provides helper methods + */ +export class OAuthClientManager { + private client: OidcClient; + private service: SupportedStorageServices; + + constructor(service: SupportedStorageServices) { + const config = getOAuthConfig(service); + if (!config) { + throw new Error(`OAuth config not found for service: ${service}`); + } + + this.service = service; + + // Configure oidc-client-ts for OAuth 2.0 (not OIDC) + const settings: OidcClientSettings = { + authority: config.authorizePath.replace(/\/login\/oauth\/.*$/, '') || 'https://example.com', // Dummy authority + client_id: config.clientId, + redirect_uri: config.redirectPath, + response_type: 'code', + scope: config.scopes, + + // Client secret for confidential clients + ...(config.clientSecret && { + client_secret: config.clientSecret, + }), + + // Use singleton in-memory state store (main process doesn't have localStorage) + stateStore: InMemoryStateStore.getInstance(), + + // Explicit metadata (no OIDC discovery) + metadata: { + issuer: config.authorizePath.replace(/\/login\/oauth\/.*$/, '') || 'https://example.com', + authorization_endpoint: config.authorizePath, + token_endpoint: config.tokenPath, + userinfo_endpoint: config.userInfoPath, + }, + + // Disable OIDC-specific features + loadUserInfo: false, + }; + + this.client = new OidcClient(settings); + logger.debug('OAuth client created', { service, function: 'OAuthClientManager.constructor' }); + } + + /** + * Create authorization URL + * PKCE is automatically added by oidc-client-ts + */ + async createAuthorizationUrl(): Promise<{ url: string } | undefined> { + try { + const request = await this.client.createSigninRequest({ + // oidc-client-ts will auto-generate state and PKCE + state: undefined, + }); + + logger.debug('Authorization URL created', { + service: this.service, + hasState: !!request.state?.id, + function: 'OAuthClientManager.createAuthorizationUrl', + }); + + return { url: request.url }; + } catch (error) { + logger.error('Failed to create authorization URL', { service: this.service, error, function: 'OAuthClientManager.createAuthorizationUrl' }); + return undefined; + } + } + + /** + * Exchange authorization code for access token + * Handles PKCE verification automatically + */ + async exchangeCodeForToken( + callbackUrl: string, + ): Promise<{ accessToken: string; error?: never } | { accessToken?: never; error: string }> { + try { + // Process the callback and exchange code for token + const response: SigninResponse = await this.client.processSigninResponse(callbackUrl); + + if (!response.access_token) { + return { error: 'No access token in response' }; + } + + logger.info('Token exchange successful', { + service: this.service, + tokenLength: response.access_token.length, + function: 'OAuthClientManager.exchangeCodeForToken', + }); + + return { accessToken: response.access_token }; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + logger.error('Token exchange failed', { service: this.service, error, function: 'OAuthClientManager.exchangeCodeForToken' }); + return { error: errorMessage }; + } + } +} + +/** + * Create OAuth client manager for a service + */ +export function createOAuthClientManager(service: SupportedStorageServices): OAuthClientManager | undefined { + try { + return new OAuthClientManager(service); + } catch (error) { + logger.error('Failed to create OAuth client manager', { service, error, function: 'createOAuthClientManager' }); + return undefined; + } +} diff --git a/src/services/auth/oauthRedirectHandler.ts b/src/services/auth/oauthRedirectHandler.ts new file mode 100644 index 00000000..88c1e3d7 --- /dev/null +++ b/src/services/auth/oauthRedirectHandler.ts @@ -0,0 +1,151 @@ +/** + * Simplified OAuth redirect handler using oidc-client-ts + * Replaces the complex manual implementation in auth/index.ts + */ +import { isOAuthRedirect } from '@/constants/oauthConfig'; +import type { SupportedStorageServices } from '@services/types'; +import type { BrowserWindow } from 'electron'; +import { logger } from '../libs/log'; +import { createOAuthClientManager } from './oauthClient'; + +/** + * Setup OAuth redirect handler for a BrowserWindow + * Uses oidc-client-ts to handle token exchange + * + * @param window - The BrowserWindow to monitor for OAuth redirects + * @param onSuccess - Callback when OAuth completes successfully with access token + * @param onError - Callback when OAuth fails + */ +export function setupOAuthRedirectHandler( + window: BrowserWindow, + onSuccess: (service: SupportedStorageServices, accessToken: string) => Promise, + onError: (service: SupportedStorageServices, error: string) => Promise, +): void { + logger.info('Setting up simplified OAuth redirect handler', { function: 'setupOAuthRedirectHandler' }); + + /** + * Handle OAuth redirect (will-redirect event fires before navigation) + */ + window.webContents.on('will-redirect', async (event, url) => { + const oauthMatch = isOAuthRedirect(url); + + if (!oauthMatch) { + return; // Not an OAuth redirect, ignore + } + + logger.debug('OAuth redirect detected', { + service: oauthMatch.service, + url: url.substring(0, 100), // Log first 100 chars + function: 'setupOAuthRedirectHandler.will-redirect', + }); + + // Prevent navigation to non-existent localhost:3012 + event.preventDefault(); + + try { + // Create OAuth client for this service + const client = createOAuthClientManager(oauthMatch.service); + if (!client) { + throw new Error(`Failed to create OAuth client for ${oauthMatch.service}`); + } + + // Use oidc-client-ts to exchange code for token + const result = await client.exchangeCodeForToken(url); + + if (result.error) { + logger.error('Token exchange failed', { + service: oauthMatch.service, + error: result.error, + function: 'setupOAuthRedirectHandler.will-redirect', + }); + await onError(oauthMatch.service, result.error); + return; + } + + logger.info('Token exchange successful', { + service: oauthMatch.service, + tokenLength: result.accessToken?.length || 0, + function: 'setupOAuthRedirectHandler.will-redirect', + }); + + // Call success callback + if (result.accessToken) { + await onSuccess(oauthMatch.service, result.accessToken); + } + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + logger.error('OAuth redirect handler error', { + service: oauthMatch.service, + error: errorMessage, + function: 'setupOAuthRedirectHandler.will-redirect', + }); + await onError(oauthMatch.service, errorMessage); + } + }); + + /** + * Handle did-fail-load (connection to localhost:3012 fails as expected) + */ + window.webContents.on('did-fail-load', async (_, errorCode, __, validatedURL) => { + logger.debug('did-fail-load event', { + errorCode, + url: validatedURL, + function: 'setupOAuthRedirectHandler.did-fail-load', + }); + + // Only handle -102 (ERR_CONNECTION_REFUSED) for localhost redirects + if (errorCode !== -102) { + return; + } + + const oauthMatch = isOAuthRedirect(validatedURL); + if (!oauthMatch) { + return; + } + + logger.debug('OAuth redirect detected via did-fail-load', { + service: oauthMatch.service, + errorCode, + function: 'setupOAuthRedirectHandler.did-fail-load', + }); + + try { + const client = createOAuthClientManager(oauthMatch.service); + if (!client) { + throw new Error(`Failed to create OAuth client for ${oauthMatch.service}`); + } + + const result = await client.exchangeCodeForToken(validatedURL); + + if (result.error) { + logger.error('Token exchange failed (did-fail-load)', { + service: oauthMatch.service, + error: result.error, + function: 'setupOAuthRedirectHandler.did-fail-load', + }); + await onError(oauthMatch.service, result.error); + return; + } + + logger.debug('Token exchange successful (did-fail-load)', { + service: oauthMatch.service, + tokenLength: result.accessToken?.length || 0, + function: 'setupOAuthRedirectHandler.did-fail-load', + }); + + if (result.accessToken) { + await onSuccess(oauthMatch.service, result.accessToken); + } + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + logger.error('OAuth redirect handler error (did-fail-load)', { + service: oauthMatch.service, + error: errorMessage, + function: 'setupOAuthRedirectHandler.did-fail-load', + }); + await onError(oauthMatch.service, errorMessage); + } + }); + + logger.debug('OAuth redirect handler setup complete', { function: 'setupOAuthRedirectHandler' }); +} diff --git a/src/services/context/__tests__/contextService.spec.ts b/src/services/context/__tests__/contextService.spec.ts index 4aee7c0c..620e69f0 100644 --- a/src/services/context/__tests__/contextService.spec.ts +++ b/src/services/context/__tests__/contextService.spec.ts @@ -1,10 +1,9 @@ import * as appPaths from '@/constants/appPaths'; -import * as auth from '@/constants/auth'; import * as paths from '@/constants/paths'; import { ContextService } from '@services/context'; import { describe, expect, it } from 'vitest'; -describe('ContextService exposes constants from paths/appPaths/auth', () => { +describe('ContextService exposes constants from paths/appPaths', () => { const svc = new ContextService(); it('should expose all keys exported from src/constants/paths.ts', async () => { @@ -25,13 +24,4 @@ describe('ContextService exposes constants from paths/appPaths/auth', () => { expect(value).toBeDefined(); } }); - - it('should expose all keys exported from src/constants/auth.ts', async () => { - const keys = Object.keys(auth) as Array; - for (const k of keys) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const value = await svc.get(k as any); - expect(value).toBeDefined(); - } - }); }); diff --git a/src/services/context/index.ts b/src/services/context/index.ts index dfe2eebe..7354b1c3 100644 --- a/src/services/context/index.ts +++ b/src/services/context/index.ts @@ -5,17 +5,15 @@ import os from 'os'; import process from 'process'; import * as appPaths from '@/constants/appPaths'; -import * as auth from '@/constants/auth'; import { supportedLanguagesMap, tiddlywikiLanguagesMap } from '@/constants/languages'; import * as paths from '@/constants/paths'; import { getMainWindowEntry } from '@services/windows/viteEntry'; -import type { IAuthConstants, IConstants, IContext, IContextService, IPaths } from './interface'; +import type { IConstants, IContext, IContextService, IPaths } from './interface'; @injectable() export class ContextService implements IContextService { // @ts-expect-error Property 'MAIN_WINDOW_WEBPACK_ENTRY' is missing, esbuild will make it `pathConstants = { ..._constants_paths__WEBPACK_IMPORTED_MODULE_4__, ..._constants_appPaths__WEBPACK_IMPORTED_MODULE_5__, 'http://localhost:3012/main_window' };` private readonly pathConstants: IPaths = { ...paths, ...appPaths }; - private readonly authConstants: IAuthConstants = { ...auth }; private readonly constants: IConstants = { isDevelopment: isElectronDevelopment, platform: process.platform, @@ -33,7 +31,6 @@ export class ContextService implements IContextService { this.context = { ...this.pathConstants, ...this.constants, - ...this.authConstants, }; } @@ -42,7 +39,7 @@ export class ContextService implements IContextService { return this.context[key]; } - throw new Error(`${String(key)} not existed in ContextService`); + throw new Error(`${key} not existed in ContextService`); } public async isOnline(): Promise { diff --git a/src/services/context/interface.ts b/src/services/context/interface.ts index 002f8f74..843802e3 100644 --- a/src/services/context/interface.ts +++ b/src/services/context/interface.ts @@ -18,12 +18,6 @@ export interface IPaths { V8_CACHE_FOLDER: string; } -export interface IAuthConstants { - GITHUB_LOGIN_REDIRECT_PATH: string; - GITHUB_OAUTH_APP_CLIENT_ID: string; - GITHUB_OAUTH_APP_CLIENT_SECRET: string; - GITHUB_OAUTH_PATH: string; -} /** * Available values about running environment */ @@ -38,7 +32,7 @@ export interface IConstants { tiddlywikiLanguagesMap: Record; } -export interface IContext extends IPaths, IConstants, IAuthConstants {} +export interface IContext extends IPaths, IConstants {} /** * Manage constant value like `isDevelopment` and many else, so you can know about about running environment in main and renderer process easily. diff --git a/src/services/database/index.ts b/src/services/database/index.ts index d5100cb2..b30c79ac 100644 --- a/src/services/database/index.ts +++ b/src/services/database/index.ts @@ -459,7 +459,6 @@ export class DatabaseService implements IDatabaseService { return; } try { - logger.debug('Saving settings to file start', { function: 'immediatelyStoreSettingsToFile', storeSettingsToFileLock: this.storeSettingsToFileLock }); if (this.storeSettingsToFileLock) return; this.storeSettingsToFileLock = true; await settings.set(this.settingFileContent as any); @@ -470,7 +469,6 @@ export class DatabaseService implements IDatabaseService { fs.writeJSONSync(settings.file(), this.settingFileContent); } finally { this.storeSettingsToFileLock = false; - logger.debug('Saving settings to file done', { function: 'immediatelyStoreSettingsToFile' }); } } } diff --git a/src/services/externalAPI/__tests__/externalAPI.logging.test.ts b/src/services/externalAPI/__tests__/externalAPI.logging.test.ts index d1b941f5..907c5eed 100644 --- a/src/services/externalAPI/__tests__/externalAPI.logging.test.ts +++ b/src/services/externalAPI/__tests__/externalAPI.logging.test.ts @@ -6,7 +6,7 @@ import { AgentDefinitionEntity } from '@services/database/schema/agent'; import type { AIGlobalSettings, AIStreamResponse } from '@services/externalAPI/interface'; import type { IPreferenceService } from '@services/preferences/interface'; import serviceIdentifier from '@services/serviceIdentifier'; -import { CoreMessage } from 'ai'; +import { ModelMessage } from 'ai'; import { beforeEach, describe, expect, it, vi } from 'vitest'; describe('ExternalAPIService logging', () => { @@ -52,7 +52,7 @@ describe('ExternalAPIService logging', () => { // Mock getSetting to return our test AI settings vi.spyOn(db, 'getSetting').mockImplementation((k: string) => (k === 'aiSettings' ? aiSettings : undefined)); - const messages: CoreMessage[] = [{ role: 'user', content: 'hi' }]; + const messages: ModelMessage[] = [{ role: 'user', content: 'hi' }]; const config = await externalAPI.getAIConfig(); const events: AIStreamResponse[] = []; @@ -85,7 +85,7 @@ describe('ExternalAPIService logging', () => { // Mock getSetting to return our test AI settings vi.spyOn(db, 'getSetting').mockImplementation((k: string) => (k === 'aiSettings' ? aiSettings : undefined)); - const messages: CoreMessage[] = [{ role: 'user', content: 'hi' }]; + const messages: ModelMessage[] = [{ role: 'user', content: 'hi' }]; const config = await svc.getAIConfig(); const events: AIStreamResponse[] = []; diff --git a/src/services/externalAPI/callProviderAPI.ts b/src/services/externalAPI/callProviderAPI.ts index 024aeb63..8ca03cfc 100644 --- a/src/services/externalAPI/callProviderAPI.ts +++ b/src/services/externalAPI/callProviderAPI.ts @@ -3,9 +3,10 @@ import { createDeepSeek } from '@ai-sdk/deepseek'; import { createOpenAI } from '@ai-sdk/openai'; import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; import { logger } from '@services/libs/log'; -import { CoreMessage, Message, streamText } from 'ai'; -import { createOllama } from 'ollama-ai-provider'; +import { ModelMessage, streamText } from 'ai'; +import { createOllama } from 'ollama-ai-provider-v2'; +import { getFormattedContent } from '@/pages/ChatTabContent/components/types'; import { AiAPIConfig } from '@services/agentInstance/promptConcat/promptConcatSchema'; import { AuthenticationError, MissingAPIKeyError, MissingBaseURLError, parseProviderError } from './errors'; import type { AIProviderConfig } from './interface'; @@ -46,7 +47,7 @@ export function createProviderClient(providerConfig: { provider: string; provide export function streamFromProvider( config: AiAPIConfig, - messages: Array | Array>, + messages: Array, signal: AbortSignal, providerConfig?: AIProviderConfig, ): AIStreamResult { @@ -76,16 +77,17 @@ export function streamFromProvider( // Extract system message from messages if present, otherwise use fallback const systemMessage = messages.find(message => message.role === 'system'); - const systemPrompt = (typeof systemMessage?.content === 'string' ? systemMessage.content : undefined) || fallbackSystemPrompt; + const systemPrompt = (systemMessage ? getFormattedContent(systemMessage.content) : undefined) || fallbackSystemPrompt; // Filter out system messages from the messages array since we're handling them separately - const nonSystemMessages = messages.filter(message => message.role !== 'system') as typeof messages; + const nonSystemMessages = messages.filter(message => message.role !== 'system'); // Ensure we have at least one message to avoid AI library errors - const finalMessages = nonSystemMessages.length > 0 ? nonSystemMessages : [{ role: 'user' as const, content: 'Hi' }]; + const finalMessages: Array = nonSystemMessages.length > 0 ? nonSystemMessages : [{ role: 'user' as const, content: 'Hi' }]; + const providerModel = client(model); return streamText({ - model: client(model), + model: providerModel, system: systemPrompt, messages: finalMessages, temperature, diff --git a/src/services/externalAPI/index.ts b/src/services/externalAPI/index.ts index 1515544c..06a5cf48 100644 --- a/src/services/externalAPI/index.ts +++ b/src/services/externalAPI/index.ts @@ -10,7 +10,7 @@ import { ExternalAPICallType, ExternalAPILogEntity, RequestMetadata, ResponseMet import { logger } from '@services/libs/log'; import type { IPreferenceService } from '@services/preferences/interface'; import serviceIdentifier from '@services/serviceIdentifier'; -import { CoreMessage, Message } from 'ai'; +import { ModelMessage } from 'ai'; import { DataSource, Repository } from 'typeorm'; import { generateEmbeddingsFromProvider } from './callEmbeddingAPI'; import { generateImageFromProvider } from './callImageGenerationAPI'; @@ -269,7 +269,7 @@ export class ExternalAPIService implements IExternalAPIService { this.activeRequests.delete(requestId); } - streamFromAI(messages: Array | Array>, config: AiAPIConfig, options?: { agentInstanceId?: string }): Observable { + streamFromAI(messages: Array, config: AiAPIConfig, options?: { agentInstanceId?: string }): Observable { // Use defer to create a new observable stream for each subscription return defer(() => { // Prepare request context @@ -295,7 +295,7 @@ export class ExternalAPIService implements IExternalAPIService { } async *generateFromAI( - messages: Array | Array>, + messages: Array, config: AiAPIConfig, options?: { agentInstanceId?: string; awaitLogs?: boolean }, ): AsyncGenerator { diff --git a/src/services/externalAPI/interface.ts b/src/services/externalAPI/interface.ts index 246f1bbe..32917264 100644 --- a/src/services/externalAPI/interface.ts +++ b/src/services/externalAPI/interface.ts @@ -4,7 +4,7 @@ import { Observable } from 'rxjs'; import { ExternalAPIChannel } from '@/constants/channels'; import { AiAPIConfig } from '@services/agentInstance/promptConcat/promptConcatSchema'; import type { ExternalAPILogEntity } from '@services/database/schema/externalAPILog'; -import { CoreMessage, Message } from 'ai'; +import { ModelMessage } from 'ai'; /** * AI streaming response status interface @@ -210,7 +210,7 @@ export interface IExternalAPIService { * requestId will be automatically generated and returned in the AIStreamResponse */ streamFromAI( - messages: Array | Array>, + messages: Array, config: AiAPIConfig, options?: { agentInstanceId?: string; awaitLogs?: boolean }, ): Observable; @@ -221,7 +221,7 @@ export interface IExternalAPIService { * requestId will be automatically generated and returned in the AIStreamResponse */ generateFromAI( - messages: Array | Array>, + messages: Array, config: AiAPIConfig, options?: { agentInstanceId?: string; awaitLogs?: boolean }, ): AsyncGenerator; diff --git a/src/services/libs/i18n/i18nMainBindings.ts b/src/services/libs/i18n/i18nMainBindings.ts index e464e5f8..8c92e904 100644 --- a/src/services/libs/i18n/i18nMainBindings.ts +++ b/src/services/libs/i18n/i18nMainBindings.ts @@ -18,10 +18,11 @@ export function mainBindings(): void { const localeFilePath = path.join(LOCALIZATION_FOLDER, readFileArguments.filename); const windowService = container.get(serviceIdentifier.Window); fs.readFile(localeFilePath, 'utf8', (error, data) => { + const text = typeof data === 'string' ? data : (data ? String(data) : ''); void windowService.sendToAllWindows(I18NChannels.readFileResponse, { key: readFileArguments.key, error, - data: data !== undefined && data !== null ? data.toString() : '', + data: text, }); }); }); diff --git a/src/services/libs/i18n/i18next-electron-fs-backend.ts b/src/services/libs/i18n/i18next-electron-fs-backend.ts index c5456674..90f12d1f 100644 --- a/src/services/libs/i18n/i18next-electron-fs-backend.ts +++ b/src/services/libs/i18n/i18next-electron-fs-backend.ts @@ -34,7 +34,7 @@ function safeInterpolate(interpolator: unknown, template: string, variables: { [ // naive replacement for common tokens const lngToken = typeof variables.lng === 'string' ? variables.lng : ''; const nsToken = typeof variables.ns === 'string' ? variables.ns : ''; - return String(template ?? '').replace('{{lng}}', lngToken).replace('{{ns}}', nsToken); + return (template ?? '').replace('{{lng}}', lngToken).replace('{{ns}}', nsToken); } // https://stackoverflow.com/a/34890276/1837080 const groupByArray = function>(xs: T[], key: string) { @@ -279,7 +279,7 @@ export class Backend implements BackendModule { // Reads a given translation file read(language: string, namespace: string, callback: ReadCallback) { - const loadPathString = String(this.backendOptions.loadPath ?? defaultOptions.loadPath); + const loadPathString = this.backendOptions.loadPath ?? defaultOptions.loadPath; const filename = safeInterpolate(this.services.interpolator, loadPathString, { lng: language, ns: namespace }); this.requestFileRead(filename, (error?: unknown, data?: unknown) => { type ReadCallbackParameters = Parameters; @@ -304,7 +304,7 @@ export class Backend implements BackendModule { const languageList = Array.isArray(languages) ? languages : [languages]; // Create the missing translation for all languages for (const language of languageList) { - const addPathString = String(addPath ?? defaultOptions.addPath); + const addPathString = addPath ?? defaultOptions.addPath; filename = safeInterpolate(this.services.interpolator, addPathString, { lng: language, ns: namespace }); // If we are currently writing missing translations from writeQueue, // temporarily store the requests in writeQueueOverflow until we are diff --git a/src/services/libs/i18n/requestChangeLanguage.ts b/src/services/libs/i18n/requestChangeLanguage.ts index 40f9c2af..3ae8d519 100644 --- a/src/services/libs/i18n/requestChangeLanguage.ts +++ b/src/services/libs/i18n/requestChangeLanguage.ts @@ -40,6 +40,7 @@ export async function requestChangeLanguage(newLanguage: string): Promise reject(new Error(errorMessage)); } else { if (viewCount === 0) { + resolve(null); return; } const tasks: Array> = []; @@ -50,7 +51,6 @@ export async function requestChangeLanguage(newLanguage: string): Promise } }), // update menu - // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression - await menuService.buildMenu(), + menuService.buildMenu(), ]); } diff --git a/src/services/native/externalApp/app-path/index.ts b/src/services/native/externalApp/app-path/index.ts index d7f1dde6..f59bffd1 100644 --- a/src/services/native/externalApp/app-path/index.ts +++ b/src/services/native/externalApp/app-path/index.ts @@ -22,7 +22,15 @@ export default async function appPath(appName: string): Promise { isDevelopmentOrTest ? path.join(repoFolder, 'node_modules', 'app-path', 'main') : path.join(process.resourcesPath, 'node_modules', 'app-path', 'main'), [appName], ); - return stdout.toString().replace('\n', ''); + let outText: string; + if (Buffer.isBuffer(stdout)) { + outText = stdout.toString('utf8'); + } else if (typeof stdout === 'string') { + outText = stdout; + } else { + outText = String(stdout); + } + return outText.replace('\n', ''); } catch (error) { throw improveError(error as Error); } diff --git a/src/services/native/index.ts b/src/services/native/index.ts index 1ea8f596..bc067b3b 100644 --- a/src/services/native/index.ts +++ b/src/services/native/index.ts @@ -63,7 +63,7 @@ export class NativeService implements INativeService { // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters public async registerKeyboardShortcut(serviceName: keyof typeof serviceIdentifier, methodName: keyof T, shortcut: string): Promise { try { - const key = `${String(serviceName)}.${String(methodName)}`; + const key = `${serviceName as unknown as string}.${methodName as unknown as string}`; logger.info('Starting keyboard shortcut registration', { key, shortcut, serviceName, methodName, function: 'NativeService.registerKeyboardShortcut' }); // Save to preferences @@ -87,7 +87,7 @@ export class NativeService implements INativeService { // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters public async unregisterKeyboardShortcut(serviceName: keyof typeof serviceIdentifier, methodName: keyof T): Promise { try { - const key = `${String(serviceName)}.${String(methodName)}`; + const key = `${serviceName as unknown as string}.${methodName as unknown as string}`; // Get the current shortcut string before removing from preferences const shortcuts = await this.getKeyboardShortcuts(); diff --git a/src/services/types.ts b/src/services/types.ts index 76d7edcb..ae59b305 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -10,7 +10,13 @@ export enum SupportedStorageServices { github = 'github', /** Open source git service */ gitlab = 'gitlab', + /** Self-hosted Git service, lightweight fork of Gogs */ + gitea = 'gitea', + /** Self-hosted Git service, hard fork of Gitea, focused on federation */ + codeberg = 'codeberg', local = 'local', /** SocialLinkedData, a privacy first DApp platform leading by Tim Berners-Lee, you can run a server by you own */ solid = 'solid', + /** Local test OAuth server (for E2E testing only) */ + testOAuth = 'testOAuth', } diff --git a/src/services/view/index.ts b/src/services/view/index.ts index bd80cfb4..b4801c47 100644 --- a/src/services/view/index.ts +++ b/src/services/view/index.ts @@ -247,8 +247,8 @@ export class View implements IViewService { return existedView === undefined; }; const checkNotExistResult = await Promise.all([ - checkNotExist(workspace, WindowNames.main), - this.preferenceService.get('tidgiMiniWindow').then((tidgiMiniWindow) => tidgiMiniWindow && checkNotExist(workspace, WindowNames.tidgiMiniWindow)), + Promise.resolve(checkNotExist(workspace, WindowNames.main)), + this.preferenceService.get('tidgiMiniWindow').then((tidgiMiniWindow) => (tidgiMiniWindow && checkNotExist(workspace, WindowNames.tidgiMiniWindow)) ? true : false), ]); return checkNotExistResult.every((result) => !result); } diff --git a/src/services/view/setupViewFileProtocol.ts b/src/services/view/setupViewFileProtocol.ts index c3c75d70..fb992615 100644 --- a/src/services/view/setupViewFileProtocol.ts +++ b/src/services/view/setupViewFileProtocol.ts @@ -82,7 +82,7 @@ function handleFileLink(details: Electron.OnBeforeRequestListenerDetails, callba ) { logger.debug('open file protocol', { function: 'handleFileLink', - absolutePath: String(absolutePath), + absolutePath: absolutePath ?? '', }); callback({ cancel: false, @@ -90,7 +90,7 @@ function handleFileLink(details: Electron.OnBeforeRequestListenerDetails, callba } else { logger.info('redirecting file protocol', { function: 'handleFileLink', - absolutePath: String(absolutePath), + absolutePath: absolutePath ?? '', }); callback({ cancel: false, diff --git a/src/services/wiki/index.ts b/src/services/wiki/index.ts index 9d7f5762..db746b55 100644 --- a/src/services/wiki/index.ts +++ b/src/services/wiki/index.ts @@ -131,14 +131,14 @@ export class Wiki implements IWikiService { await workspaceService.updateMetaData(workspaceID, { isLoading: true }); if (tokenAuth && authToken) { logger.debug('getOneTimeAdminAuthTokenForWorkspaceSync', { - tokenAuth: String(tokenAuth), + tokenAuth, authToken, function: 'startWiki', }); } const workerData: IStartNodeJSWikiConfigs = { authToken, - constants: { TIDDLYWIKI_PACKAGE_FOLDER: String(TIDDLYWIKI_PACKAGE_FOLDER) }, + constants: { TIDDLYWIKI_PACKAGE_FOLDER }, enableHTTPAPI, excludedPlugins, homePath: wikiFolderLocation, diff --git a/src/services/wiki/plugin/ipcSyncAdaptor/ipc-syncadaptor.ts b/src/services/wiki/plugin/ipcSyncAdaptor/ipc-syncadaptor.ts index bf1b1767..6805155d 100644 --- a/src/services/wiki/plugin/ipcSyncAdaptor/ipc-syncadaptor.ts +++ b/src/services/wiki/plugin/ipcSyncAdaptor/ipc-syncadaptor.ts @@ -169,8 +169,8 @@ class TidGiIPCSyncAdaptor { this.recipe = status.space.recipe; // Check if we're logged in this.isLoggedIn = status.username !== 'GUEST'; - this.isReadOnly = !!status.read_only; - this.isAnonymous = !!status.anonymous; + this.isReadOnly = status.read_only ?? false; + this.isAnonymous = status.anonymous ?? false; // this.logoutIsAvailable = 'logout_is_available' in status ? !!status.logout_is_available : true; callback?.(null, this.isLoggedIn, status.username, this.isReadOnly, this.isAnonymous); diff --git a/src/services/wiki/wikiWorker/startNodeJSWiki.ts b/src/services/wiki/wikiWorker/startNodeJSWiki.ts index 476ee58c..90d7052a 100644 --- a/src/services/wiki/wikiWorker/startNodeJSWiki.ts +++ b/src/services/wiki/wikiWorker/startNodeJSWiki.ts @@ -41,11 +41,15 @@ export function startNodeJSWiki({ void isDev; observer.next({ type: 'control', actions: WikiControlActions.start, argv: fullBootArgv }); intercept( - (newStdOut: string) => { - observer.next({ type: 'stdout', message: newStdOut }); + (newStdOut: string | Uint8Array) => { + const message = typeof newStdOut === 'string' ? newStdOut : new TextDecoder().decode(newStdOut); + observer.next({ type: 'stdout', message }); + return message; }, - (newStdError: string) => { - observer.next({ type: 'control', source: 'intercept', actions: WikiControlActions.error, message: newStdError, argv: fullBootArgv }); + (newStdError: string | Uint8Array) => { + const message = typeof newStdError === 'string' ? newStdError : new TextDecoder().decode(newStdError); + observer.next({ type: 'control', source: 'intercept', actions: WikiControlActions.error, message, argv: fullBootArgv }); + return message; }, ); diff --git a/src/services/wikiEmbedding/index.ts b/src/services/wikiEmbedding/index.ts index e70cfaa1..dbd47b55 100644 --- a/src/services/wikiEmbedding/index.ts +++ b/src/services/wikiEmbedding/index.ts @@ -352,8 +352,8 @@ export class WikiEmbeddingService implements IWikiEmbeddingService { // Process notes using async iterator to avoid memory pressure for await (const note of this.getWikiNotesIterator(workspaceId)) { - const noteTitle = String(note.title || ''); - const noteContent = String(note.text || ''); + const noteTitle = typeof note.title === 'string' ? note.title : (note.title ? JSON.stringify(note.title) : ''); + const noteContent = typeof note.text === 'string' ? note.text : (note.text ? JSON.stringify(note.text) : ''); // const modifiedTime = String(note.modified || ''); // Re-ensure repositories before each note processing diff --git a/src/services/windows/handleCreateBasicWindow.ts b/src/services/windows/handleCreateBasicWindow.ts index 1a8c5ea8..b9dedf41 100644 --- a/src/services/windows/handleCreateBasicWindow.ts +++ b/src/services/windows/handleCreateBasicWindow.ts @@ -1,4 +1,5 @@ import { isTest } from '@/constants/environment'; +import type { IAuthenticationService } from '@services/auth/interface'; import { container } from '@services/container'; import type { IMenuService } from '@services/menu/interface'; import serviceIdentifier from '@services/serviceIdentifier'; @@ -28,6 +29,13 @@ export async function handleCreateBasicWindow( windowService.set(windowName, undefined); unregisterContextMenu(); }); + + // Handle OAuth redirect for preferences/addWorkspace windows + if (windowName === WindowNames.preferences || windowName === WindowNames.addWorkspace) { + const authService = container.get(serviceIdentifier.Authentication); + authService.setupOAuthRedirectHandler(newWindow, getMainWindowEntry, WindowNames.preferences); + } + let webContentLoadingPromise: Promise | undefined; if (windowName === WindowNames.main) { // handle window show and Webview/browserView show diff --git a/src/services/workspacesView/utilities.ts b/src/services/workspacesView/utilities.ts index 2c60222b..fae9e6c5 100644 --- a/src/services/workspacesView/utilities.ts +++ b/src/services/workspacesView/utilities.ts @@ -17,10 +17,10 @@ export async function getTidgiMiniWindowTargetWorkspace(fallbackWorkspaceId?: st preferenceService.get('tidgiMiniWindowSyncWorkspaceWithMainWindow'), preferenceService.get('tidgiMiniWindowFixedWorkspaceId'), ]); - + // Default to sync (undefined means default to true, or explicitly true) const shouldSync = tidgiMiniWindowSyncWorkspaceWithMainWindow === undefined || tidgiMiniWindowSyncWorkspaceWithMainWindow; - + let targetWorkspaceId: string | undefined; if (shouldSync) { // Sync with main window - use fallback or active workspace @@ -29,6 +29,6 @@ export async function getTidgiMiniWindowTargetWorkspace(fallbackWorkspaceId?: st // Use fixed workspace targetWorkspaceId = tidgiMiniWindowFixedWorkspaceId; } - + return { shouldSync, targetWorkspaceId }; } diff --git a/src/windows/Preferences/sections/__tests__/TidGiMiniWindow.test.tsx b/src/windows/Preferences/sections/__tests__/TidGiMiniWindow.test.tsx index 4d090b17..7a859421 100644 --- a/src/windows/Preferences/sections/__tests__/TidGiMiniWindow.test.tsx +++ b/src/windows/Preferences/sections/__tests__/TidGiMiniWindow.test.tsx @@ -223,7 +223,10 @@ describe('TidGiMiniWindow Component', () => { preferenceSubject.next(createMockPreference({ tidgiMiniWindow: false })); await renderComponent(); - const switches = screen.getAllByRole('checkbox'); + await waitFor(() => { + expect(screen.getAllByRole('switch')).toHaveLength(1); + }); + const switches = screen.getAllByRole('switch'); const attachSwitch = switches[0]; expect(attachSwitch).not.toBeChecked(); }); @@ -233,7 +236,10 @@ describe('TidGiMiniWindow Component', () => { preferenceSubject.next(createMockPreference({ tidgiMiniWindow: false })); await renderComponent(); - const switches = screen.getAllByRole('checkbox'); + await waitFor(() => { + expect(screen.getAllByRole('switch')).toHaveLength(1); + }); + const switches = screen.getAllByRole('switch'); const attachSwitch = switches[0]; await user.click(attachSwitch); @@ -248,7 +254,10 @@ describe('TidGiMiniWindow Component', () => { preferenceSubject.next(createMockPreference({ tidgiMiniWindow: false })); await renderComponent(); - const switches = screen.getAllByRole('checkbox'); + await waitFor(() => { + expect(screen.getAllByRole('switch')).toHaveLength(1); + }); + const switches = screen.getAllByRole('switch'); const attachSwitch = switches[0]; await user.click(attachSwitch); @@ -628,8 +637,11 @@ describe('TidGiMiniWindow Component', () => { // Verify additional settings are hidden initially expect(screen.queryByText('Preference.TidgiMiniWindowAlwaysOnTop')).not.toBeInTheDocument(); - // Click the attach to tidgi mini window toggle - const switches = screen.getAllByRole('checkbox'); + // Wait for and click the attach to tidgi mini window toggle + await waitFor(() => { + expect(screen.getAllByRole('switch')).toHaveLength(1); + }); + const switches = screen.getAllByRole('switch'); const attachSwitch = switches[0]; await user.click(attachSwitch); diff --git a/vitest.config.ts b/vitest.config.ts index 7cca10e6..77756b50 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -45,17 +45,17 @@ export default defineConfig({ ], }, - pool: 'threads', + pool: 'forks', poolOptions: { - threads: { - useAtomics: true, + forks: { + maxForks: 6, + minForks: 2, }, isolate: true, }, - // Performance settings - testTimeout: 5000, - hookTimeout: 5000, + testTimeout: 30000, + hookTimeout: 30000, reporters: ['default', 'hanging-process'], },