From a4702546c77e3a8afd118093da4a390e439972d6 Mon Sep 17 00:00:00 2001 From: Jahvon Dockery Date: Fri, 26 Dec 2025 16:00:18 -0500 Subject: [PATCH 1/2] refactor: remove desktop code --- .execs/build.flow | 39 - .execs/desktop.flow | 3 - .execs/test.flow | 11 - .execs/tools.flow | 12 - desktop/.gitignore | 26 - desktop/.nvmrc | 1 - desktop/.storybook/decorators.tsx | 9 - desktop/.storybook/main.ts | 20 - desktop/.storybook/preview.ts | 25 - desktop/.storybook/vitest.setup.ts | 7 - desktop/README.md | 40 - desktop/eslint.config.js | 18 - desktop/index.html | 13 - desktop/package-lock.json | 10110 ---------------- desktop/package.json | 65 - desktop/public/logo-dark.png | Bin 133935 -> 0 bytes desktop/public/logo-light.png | Bin 143318 -> 0 bytes desktop/scripts/generate-rust-types.sh | 64 - desktop/scripts/generate-ts-types.ts | 50 - desktop/src-tauri/.gitignore | 9 - desktop/src-tauri/Cargo.lock | 5500 --------- desktop/src-tauri/Cargo.toml | 31 - desktop/src-tauri/build.rs | 3 - desktop/src-tauri/capabilities/default.json | 22 - desktop/src-tauri/icons/128x128.png | Bin 6215 -> 0 bytes desktop/src-tauri/icons/128x128@2x.png | Bin 13092 -> 0 bytes desktop/src-tauri/icons/32x32.png | Bin 1546 -> 0 bytes desktop/src-tauri/icons/64x64.png | Bin 3114 -> 0 bytes desktop/src-tauri/icons/icon.icns | Bin 154200 -> 0 bytes desktop/src-tauri/icons/icon.ico | Bin 22462 -> 0 bytes desktop/src-tauri/icons/icon.png | Bin 27309 -> 0 bytes desktop/src-tauri/src/cli.rs | 41 - desktop/src-tauri/src/commands/cache.rs | 34 - .../src/commands/command_executor.rs | 17 - desktop/src-tauri/src/commands/config.rs | 61 - desktop/src-tauri/src/commands/core.rs | 401 - desktop/src-tauri/src/commands/executable.rs | 78 - desktop/src-tauri/src/commands/mod.rs | 28 - desktop/src-tauri/src/commands/shell.rs | 69 - desktop/src-tauri/src/commands/vault.rs | 38 - desktop/src-tauri/src/commands/workspace.rs | 55 - desktop/src-tauri/src/lib.rs | 174 - desktop/src-tauri/src/main.rs | 6 - desktop/src-tauri/src/types/enriched.rs | 92 - .../src-tauri/src/types/generated/config.rs | 1138 -- .../src-tauri/src/types/generated/flowfile.rs | 4396 ------- desktop/src-tauri/src/types/generated/mod.rs | 5 - .../src-tauri/src/types/generated/template.rs | 944 -- .../src/types/generated/workspace.rs | 479 - desktop/src-tauri/src/types/mod.rs | 4 - desktop/src-tauri/tauri.conf.json | 37 - desktop/src/App.css | 136 - desktop/src/App.tsx | 62 - desktop/src/assets/icon.png | Bin 42756 -> 0 bytes .../CodeHighlighter.stories.tsx | 127 - .../CodeHighlighter/CodeHighlighter.tsx | 110 - .../src/components/CodeHighlighter/config.ts | 105 - .../src/components/CodeHighlighter/index.ts | 1 - .../MarkdownRenderer.module.css | 155 - .../MarkdownRenderer.stories.tsx | 63 - .../MarkdownRenderer/MarkdownRenderer.tsx | 62 - .../src/components/MarkdownRenderer/index.ts | 1 - desktop/src/components/PageWrapper.tsx | 16 - desktop/src/components/Settings.tsx | 51 - desktop/src/components/Theme.stories.tsx | 143 - desktop/src/hooks/useAppContext.tsx | 165 - desktop/src/hooks/useConfig.ts | 90 - desktop/src/hooks/useExecutable.ts | 84 - desktop/src/hooks/useNotifier.tsx | 36 - desktop/src/hooks/useSettings.tsx | 68 - desktop/src/hooks/useWorkspace.ts | 61 - .../src/layout/AppShell/AppShell.module.css | 26 - desktop/src/layout/AppShell/AppShell.tsx | 105 - .../ActionButtons/ActionButtons.stories.tsx | 28 - .../Header/ActionButtons/ActionButtons.tsx | 33 - desktop/src/layout/Header/Header.module.css | 26 - desktop/src/layout/Header/Header.stories.tsx | 41 - desktop/src/layout/Header/Header.tsx | 44 - desktop/src/layout/Layout.tsx | 15 - .../ExecutableTree/ExecutableTree.stories.tsx | 82 - .../Sidebar/ExecutableTree/ExecutableTree.tsx | 198 - desktop/src/layout/Sidebar/Sidebar.module.css | 177 - desktop/src/layout/Sidebar/Sidebar.tsx | 98 - .../WorkspaceSelector.stories.tsx | 55 - .../WorkspaceSelector/WorkspaceSelector.tsx | 93 - desktop/src/layout/index.ts | 3 - desktop/src/pages/Data/Data.tsx | 22 - desktop/src/pages/Executable/Executable.tsx | 356 - .../ExecutableEnvironmentDetails.tsx | 169 - .../src/pages/Executable/ExecutableRoute.tsx | 31 - .../Executable/ExecutableTypeDetails.tsx | 56 - .../src/pages/Executable/ExecutionForm.tsx | 194 - .../types/ExecutableExecDetails.tsx | 56 - .../types/ExecutableLaunchDetails.tsx | 45 - .../types/ExecutableParallelDetails.tsx | 92 - .../types/ExecutableRenderDetails.tsx | 44 - .../types/ExecutableRequestDetails.tsx | 122 - .../types/ExecutableSerialDetails.tsx | 91 - desktop/src/pages/Logs/LogViewer.tsx | 114 - .../src/pages/Settings/Settings.module.css | 71 - desktop/src/pages/Settings/Settings.tsx | 355 - desktop/src/pages/Welcome/Welcome.module.css | 41 - desktop/src/pages/Welcome/Welcome.tsx | 73 - desktop/src/pages/Workspace/Workspace.tsx | 184 - .../src/pages/Workspace/WorkspaceRoute.tsx | 31 - desktop/src/pages/index.ts | 5 - desktop/src/root.tsx | 9 - desktop/src/theme/HeadScripts.tsx | 20 - desktop/src/theme/ThemeProvider.tsx | 104 - desktop/src/theme/mantineTheme.ts | 7 - desktop/src/theme/themes.ts | 104 - desktop/src/theme/types.ts | 38 - desktop/src/types/executable.ts | 108 - desktop/src/types/generated/config.ts | 128 - desktop/src/types/generated/flowfile.ts | 654 - desktop/src/types/generated/template.ts | 151 - desktop/src/types/generated/workspace.ts | 68 - desktop/src/types/notification.ts | 27 - desktop/src/types/workspace.ts | 7 - desktop/src/vite-env.d.ts | 1 - desktop/tsconfig.json | 25 - desktop/tsconfig.node.json | 10 - desktop/vite.config.ts | 31 - desktop/vitest.shims.d.ts | 1 - desktop/vitest.workspace.ts | 32 - 125 files changed, 30412 deletions(-) delete mode 100644 .execs/desktop.flow delete mode 100644 desktop/.gitignore delete mode 100644 desktop/.nvmrc delete mode 100644 desktop/.storybook/decorators.tsx delete mode 100644 desktop/.storybook/main.ts delete mode 100644 desktop/.storybook/preview.ts delete mode 100644 desktop/.storybook/vitest.setup.ts delete mode 100644 desktop/README.md delete mode 100644 desktop/eslint.config.js delete mode 100644 desktop/index.html delete mode 100644 desktop/package-lock.json delete mode 100644 desktop/package.json delete mode 100644 desktop/public/logo-dark.png delete mode 100644 desktop/public/logo-light.png delete mode 100755 desktop/scripts/generate-rust-types.sh delete mode 100644 desktop/scripts/generate-ts-types.ts delete mode 100644 desktop/src-tauri/.gitignore delete mode 100644 desktop/src-tauri/Cargo.lock delete mode 100644 desktop/src-tauri/Cargo.toml delete mode 100644 desktop/src-tauri/build.rs delete mode 100644 desktop/src-tauri/capabilities/default.json delete mode 100644 desktop/src-tauri/icons/128x128.png delete mode 100644 desktop/src-tauri/icons/128x128@2x.png delete mode 100644 desktop/src-tauri/icons/32x32.png delete mode 100644 desktop/src-tauri/icons/64x64.png delete mode 100644 desktop/src-tauri/icons/icon.icns delete mode 100644 desktop/src-tauri/icons/icon.ico delete mode 100644 desktop/src-tauri/icons/icon.png delete mode 100644 desktop/src-tauri/src/cli.rs delete mode 100644 desktop/src-tauri/src/commands/cache.rs delete mode 100644 desktop/src-tauri/src/commands/command_executor.rs delete mode 100644 desktop/src-tauri/src/commands/config.rs delete mode 100644 desktop/src-tauri/src/commands/core.rs delete mode 100644 desktop/src-tauri/src/commands/executable.rs delete mode 100644 desktop/src-tauri/src/commands/mod.rs delete mode 100644 desktop/src-tauri/src/commands/shell.rs delete mode 100644 desktop/src-tauri/src/commands/vault.rs delete mode 100644 desktop/src-tauri/src/commands/workspace.rs delete mode 100644 desktop/src-tauri/src/lib.rs delete mode 100644 desktop/src-tauri/src/main.rs delete mode 100644 desktop/src-tauri/src/types/enriched.rs delete mode 100644 desktop/src-tauri/src/types/generated/config.rs delete mode 100644 desktop/src-tauri/src/types/generated/flowfile.rs delete mode 100644 desktop/src-tauri/src/types/generated/mod.rs delete mode 100644 desktop/src-tauri/src/types/generated/template.rs delete mode 100644 desktop/src-tauri/src/types/generated/workspace.rs delete mode 100644 desktop/src-tauri/src/types/mod.rs delete mode 100644 desktop/src-tauri/tauri.conf.json delete mode 100644 desktop/src/App.css delete mode 100644 desktop/src/App.tsx delete mode 100644 desktop/src/assets/icon.png delete mode 100644 desktop/src/components/CodeHighlighter/CodeHighlighter.stories.tsx delete mode 100644 desktop/src/components/CodeHighlighter/CodeHighlighter.tsx delete mode 100644 desktop/src/components/CodeHighlighter/config.ts delete mode 100644 desktop/src/components/CodeHighlighter/index.ts delete mode 100644 desktop/src/components/MarkdownRenderer/MarkdownRenderer.module.css delete mode 100644 desktop/src/components/MarkdownRenderer/MarkdownRenderer.stories.tsx delete mode 100644 desktop/src/components/MarkdownRenderer/MarkdownRenderer.tsx delete mode 100644 desktop/src/components/MarkdownRenderer/index.ts delete mode 100644 desktop/src/components/PageWrapper.tsx delete mode 100644 desktop/src/components/Settings.tsx delete mode 100644 desktop/src/components/Theme.stories.tsx delete mode 100644 desktop/src/hooks/useAppContext.tsx delete mode 100644 desktop/src/hooks/useConfig.ts delete mode 100644 desktop/src/hooks/useExecutable.ts delete mode 100644 desktop/src/hooks/useNotifier.tsx delete mode 100644 desktop/src/hooks/useSettings.tsx delete mode 100644 desktop/src/hooks/useWorkspace.ts delete mode 100644 desktop/src/layout/AppShell/AppShell.module.css delete mode 100644 desktop/src/layout/AppShell/AppShell.tsx delete mode 100644 desktop/src/layout/Header/ActionButtons/ActionButtons.stories.tsx delete mode 100644 desktop/src/layout/Header/ActionButtons/ActionButtons.tsx delete mode 100644 desktop/src/layout/Header/Header.module.css delete mode 100644 desktop/src/layout/Header/Header.stories.tsx delete mode 100644 desktop/src/layout/Header/Header.tsx delete mode 100644 desktop/src/layout/Layout.tsx delete mode 100644 desktop/src/layout/Sidebar/ExecutableTree/ExecutableTree.stories.tsx delete mode 100644 desktop/src/layout/Sidebar/ExecutableTree/ExecutableTree.tsx delete mode 100644 desktop/src/layout/Sidebar/Sidebar.module.css delete mode 100644 desktop/src/layout/Sidebar/Sidebar.tsx delete mode 100644 desktop/src/layout/Sidebar/WorkspaceSelector/WorkspaceSelector.stories.tsx delete mode 100644 desktop/src/layout/Sidebar/WorkspaceSelector/WorkspaceSelector.tsx delete mode 100644 desktop/src/layout/index.ts delete mode 100644 desktop/src/pages/Data/Data.tsx delete mode 100644 desktop/src/pages/Executable/Executable.tsx delete mode 100644 desktop/src/pages/Executable/ExecutableEnvironmentDetails.tsx delete mode 100644 desktop/src/pages/Executable/ExecutableRoute.tsx delete mode 100644 desktop/src/pages/Executable/ExecutableTypeDetails.tsx delete mode 100644 desktop/src/pages/Executable/ExecutionForm.tsx delete mode 100644 desktop/src/pages/Executable/types/ExecutableExecDetails.tsx delete mode 100644 desktop/src/pages/Executable/types/ExecutableLaunchDetails.tsx delete mode 100644 desktop/src/pages/Executable/types/ExecutableParallelDetails.tsx delete mode 100644 desktop/src/pages/Executable/types/ExecutableRenderDetails.tsx delete mode 100644 desktop/src/pages/Executable/types/ExecutableRequestDetails.tsx delete mode 100644 desktop/src/pages/Executable/types/ExecutableSerialDetails.tsx delete mode 100644 desktop/src/pages/Logs/LogViewer.tsx delete mode 100644 desktop/src/pages/Settings/Settings.module.css delete mode 100644 desktop/src/pages/Settings/Settings.tsx delete mode 100644 desktop/src/pages/Welcome/Welcome.module.css delete mode 100644 desktop/src/pages/Welcome/Welcome.tsx delete mode 100644 desktop/src/pages/Workspace/Workspace.tsx delete mode 100644 desktop/src/pages/Workspace/WorkspaceRoute.tsx delete mode 100644 desktop/src/pages/index.ts delete mode 100644 desktop/src/root.tsx delete mode 100644 desktop/src/theme/HeadScripts.tsx delete mode 100644 desktop/src/theme/ThemeProvider.tsx delete mode 100644 desktop/src/theme/mantineTheme.ts delete mode 100644 desktop/src/theme/themes.ts delete mode 100644 desktop/src/theme/types.ts delete mode 100644 desktop/src/types/executable.ts delete mode 100644 desktop/src/types/generated/config.ts delete mode 100644 desktop/src/types/generated/flowfile.ts delete mode 100644 desktop/src/types/generated/template.ts delete mode 100644 desktop/src/types/generated/workspace.ts delete mode 100644 desktop/src/types/notification.ts delete mode 100644 desktop/src/types/workspace.ts delete mode 100644 desktop/src/vite-env.d.ts delete mode 100644 desktop/tsconfig.json delete mode 100644 desktop/tsconfig.node.json delete mode 100644 desktop/vite.config.ts delete mode 100644 desktop/vitest.shims.d.ts delete mode 100644 desktop/vitest.workspace.ts diff --git a/.execs/build.flow b/.execs/build.flow index c2dae785..1c5c013c 100644 --- a/.execs/build.flow +++ b/.execs/build.flow @@ -9,7 +9,6 @@ executables: execs: - ref: generate cli - ref: generate docs - - ref: generate tauri - verb: build name: binary @@ -52,44 +51,6 @@ executables: go generate ./... echo "All go code generated successfully" - - verb: generate - name: tauri - aliases: [desktop] - tags: [desktop] - description: Generate code for the Tauri frontend and backend. - parallel: - failFast: false - execs: - - ref: generate frontend - - ref: generate backend - - - verb: generate - name: frontend - aliases: [ts] - description: Generate TypeScript types for the Tauri's frontend. - exec: - dir: //desktop - cmd: | - if ! command -v npm &> /dev/null; then - echo "npm is not installed. Please install Node.js and npm." - exit 1 - fi - if [ ! -d "node_modules" ]; then - echo "Installing npm dependencies..." - npm install - else - echo "npm dependencies already installed" - fi - npm run generate-ts - - - verb: generate - name: backend - aliases: [rust] - description: Generate code for the Tauri desktop app's backend. - exec: - dir: //desktop - cmd: ./scripts/generate-rust-types.sh - - verb: update name: modules description: Update project dependencies diff --git a/.execs/desktop.flow b/.execs/desktop.flow deleted file mode 100644 index 0f928d20..00000000 --- a/.execs/desktop.flow +++ /dev/null @@ -1,3 +0,0 @@ -# yaml-language-server: $schema=https://flowexec.io/schemas/flowfile_schema.json -namespace: desktop -imports: ["../desktop/package.json"] diff --git a/.execs/test.flow b/.execs/test.flow index d8c9992f..b43629dd 100644 --- a/.execs/test.flow +++ b/.execs/test.flow @@ -85,17 +85,6 @@ executables: echo "E2E tests completed" retries: 1 - - verb: test - name: desktop - tags: [desktop] - description: Run desktop application tests - exec: - dir: //desktop - cmd: | - echo "Running Tauri desktop tests..." - npm test - echo "Desktop tests completed" - - verb: transform name: coverage tags: [codecov] diff --git a/.execs/tools.flow b/.execs/tools.flow index 678726a8..06da0127 100644 --- a/.execs/tools.flow +++ b/.execs/tools.flow @@ -40,15 +40,3 @@ executables: echo "mockgen is not installed. Installing..." go install go.uber.org/mock/mockgen@v0.4.0 fi - - - verb: install - name: docsify - aliases: [deps] - tags: [docs, npm] - description: Install the documentation site dependencies with node (globally) - exec: - cmd: | - if ! command -v docsify-cli &> /dev/null; then - echo "docsify-cli is not installed. Installing..." - npm i docsify-cli -g - fi diff --git a/desktop/.gitignore b/desktop/.gitignore deleted file mode 100644 index ed0ba811..00000000 --- a/desktop/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -*storybook.log -storybook-static diff --git a/desktop/.nvmrc b/desktop/.nvmrc deleted file mode 100644 index c6250905..00000000 --- a/desktop/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v23.9.0 \ No newline at end of file diff --git a/desktop/.storybook/decorators.tsx b/desktop/.storybook/decorators.tsx deleted file mode 100644 index 0cd9b583..00000000 --- a/desktop/.storybook/decorators.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import { MantineProvider } from '@mantine/core'; -import { theme } from '../src/theme'; - -export const withMantine = (Story: React.ComponentType) => ( - - - -); \ No newline at end of file diff --git a/desktop/.storybook/main.ts b/desktop/.storybook/main.ts deleted file mode 100644 index 242055f8..00000000 --- a/desktop/.storybook/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { StorybookConfig } from '@storybook/react-vite'; - -const config: StorybookConfig = { - "stories": [ - "../src/**/*.mdx", - "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)" - ], - "addons": [ - "@storybook/addon-onboarding", - "@chromatic-com/storybook", - "@storybook/addon-docs", - "@storybook/addon-a11y", - "@storybook/addon-vitest" - ], - "framework": { - "name": "@storybook/react-vite", - "options": {} - } -}; -export default config; \ No newline at end of file diff --git a/desktop/.storybook/preview.ts b/desktop/.storybook/preview.ts deleted file mode 100644 index 74417765..00000000 --- a/desktop/.storybook/preview.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { Preview } from '@storybook/react-vite' -import '@mantine/core/styles.css' -import { withMantine } from './decorators' - -const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - - a11y: { - // 'todo' - show a11y violations in the test UI only - // 'error' - fail CI on a11y violations - // 'off' - skip a11y checks entirely - test: 'todo' - } - }, - decorators: [withMantine], -}; - -export default preview; - diff --git a/desktop/.storybook/vitest.setup.ts b/desktop/.storybook/vitest.setup.ts deleted file mode 100644 index 44922d55..00000000 --- a/desktop/.storybook/vitest.setup.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as a11yAddonAnnotations from "@storybook/addon-a11y/preview"; -import { setProjectAnnotations } from '@storybook/react-vite'; -import * as projectAnnotations from './preview'; - -// This is an important step to apply the right configuration when testing your stories. -// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations -setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]); \ No newline at end of file diff --git a/desktop/README.md b/desktop/README.md deleted file mode 100644 index 6ab205c2..00000000 --- a/desktop/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# flow Desktop - -A desktop application built with Tauri, React, and Mantine for managing workspaces and flows. - -## Development - -This project uses Tauri v2 with React and TypeScript for the frontend, and Rust for the backend. - -### Prerequisites - -- Node.js (latest stable version) -- Rust (latest stable version) -- Tauri CLI - -### Getting Started - -1. Install dependencies: - ```bash - npm install - ``` - -2. Start the development server: - ```bash - npm run dev - ``` - -3. Build the application: - ```bash - npm run build - ``` - -### Available Scripts - -- `npm run dev` - Start the development server -- `npm run build` - Build the application for production -- `npm run preview` - Preview the built application -- `npm run tauri` - Run Tauri CLI commands -- `npm run generate-types` - Generate TypeScript types from JSON schemas -- `npm run storybook` - Start Storybook for component development -- `npm run build-storybook` - Build Storybook for production diff --git a/desktop/eslint.config.js b/desktop/eslint.config.js deleted file mode 100644 index eb9c339a..00000000 --- a/desktop/eslint.config.js +++ /dev/null @@ -1,18 +0,0 @@ -import js from "@eslint/js"; -import globals from "globals"; -import tseslint from "typescript-eslint"; -import pluginReact from "eslint-plugin-react"; -import { defineConfig } from "eslint/config"; - - -export default defineConfig([ - { files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], plugins: { js }, extends: ["js/recommended"] }, - { files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"], languageOptions: { globals: globals.browser } }, - tseslint.configs.recommended, - pluginReact.configs.flat.recommended, - { - rules: { - "react/react-in-jsx-scope": "off", - }, - }, -]); diff --git a/desktop/index.html b/desktop/index.html deleted file mode 100644 index a8f9c0d6..00000000 --- a/desktop/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - flow Desktop - - - -
- - - diff --git a/desktop/package-lock.json b/desktop/package-lock.json deleted file mode 100644 index e268d5df..00000000 --- a/desktop/package-lock.json +++ /dev/null @@ -1,10110 +0,0 @@ -{ - "name": "flow-desktop", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "flow-desktop", - "version": "0.1.0", - "dependencies": { - "@mantine/core": "^8.0.2", - "@mantine/hooks": "^8.0.2", - "@tabler/icons-react": "^3.34.0", - "@tanstack/react-query": "^5.80.7", - "@tauri-apps/api": "^2", - "@tauri-apps/plugin-log": "^2.6.0", - "@tauri-apps/plugin-opener": "^2.3.0", - "@tauri-apps/plugin-shell": "^2.2.2", - "@types/prismjs": "^1.26.5", - "prismjs": "^1.30.0", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "react-markdown": "^10.1.0", - "wouter": "^3.7.1" - }, - "devDependencies": { - "@chromatic-com/storybook": "^4.0.0", - "@eslint/js": "^9.28.0", - "@storybook/addon-a11y": "^9.0.4", - "@storybook/addon-docs": "^9.0.4", - "@storybook/addon-onboarding": "^9.0.4", - "@storybook/addon-vitest": "^9.0.4", - "@storybook/react-vite": "^9.0.4", - "@tauri-apps/cli": "^2", - "@types/node": "^20.11.24", - "@types/react": "^19.1.0", - "@types/react-dom": "^19.1.0", - "@vitejs/plugin-react": "^4.3.4", - "@vitest/browser": "^3.2.1", - "@vitest/coverage-v8": "^3.2.1", - "eslint": "^9.28.0", - "eslint-plugin-react": "^7.37.5", - "globals": "^16.2.0", - "json-schema-to-typescript": "^13.0.0", - "playwright": "^1.52.0", - "postcss": "^8.5.4", - "postcss-preset-mantine": "^1.17.0", - "postcss-simple-vars": "^7.0.1", - "prettier": "3.5.3", - "storybook": "^9.0.4", - "tsx": "^4.7.1", - "typescript": "~5.6.2", - "typescript-eslint": "^8.34.0", - "vite": "^6.3.6", - "vitest": "^3.2.1" - } - }, - "node_modules/@adobe/css-tools": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz", - "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", - "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.4.tgz", - "integrity": "sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", - "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcherny/json-schema-ref-parser": { - "version": "10.0.5-fork", - "resolved": "https://registry.npmjs.org/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz", - "integrity": "sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw==", - "dev": true, - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@chromatic-com/storybook": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-4.0.0.tgz", - "integrity": "sha512-FfyMHK/lz/dHezWxwNZv4ReFORWVvv+bJx71NT2BSfLhOKOaoZnKJOe4QLyGxWAB7ynnedrM9V9qea3FPFj+rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@neoconfetti/react": "^1.0.0", - "chromatic": "^12.0.0", - "filesize": "^10.0.12", - "jsonfile": "^6.1.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=20.0.0", - "yarn": ">=1.22.18" - }, - "peerDependencies": { - "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", - "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", - "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.14.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", - "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.3", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/react": { - "version": "0.26.28", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", - "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.1.2", - "@floating-ui/utils": "^0.2.8", - "tabbable": "^6.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", - "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.7.4" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.6.0.tgz", - "integrity": "sha512-dPo6SE4dm8UKcgGg4LsV9iw6f5HkIeJwzMA2M2Lb+mhl5vxesbDvb3ENTzNTkGnOxS6PqJig2pfXdtYaW3S9fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "magic-string": "^0.30.0", - "react-docgen-typescript": "^2.2.2" - }, - "peerDependencies": { - "typescript": ">= 4.3.x", - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "dev": true - }, - "node_modules/@mantine/core": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.2.1.tgz", - "integrity": "sha512-KxvydotyFRdrRbqULUX2G35/GddPFju9XQUv/vdDWu1ytIWZViTguc+WSj1aBd0DtfRrSaofU5ezZISEXVrPBA==", - "license": "MIT", - "dependencies": { - "@floating-ui/react": "^0.26.28", - "clsx": "^2.1.1", - "react-number-format": "^5.4.3", - "react-remove-scroll": "^2.6.2", - "react-textarea-autosize": "8.5.9", - "type-fest": "^4.27.0" - }, - "peerDependencies": { - "@mantine/hooks": "8.2.1", - "react": "^18.x || ^19.x", - "react-dom": "^18.x || ^19.x" - } - }, - "node_modules/@mantine/hooks": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.2.1.tgz", - "integrity": "sha512-gnRDk5FXCD9fa0AjlAj9otCsZL9QJzVrpYZk9KjOEoP5XR1TEE2F9/rGbajh1UVjPnD3jUlNLRJMH0YHTlA65A==", - "license": "MIT", - "peerDependencies": { - "react": "^18.x || ^19.x" - } - }, - "node_modules/@mdx-js/react": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", - "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdx": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" - } - }, - "node_modules/@neoconfetti/react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@neoconfetti/react/-/react-1.0.0.tgz", - "integrity": "sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.9", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", - "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", - "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", - "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", - "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", - "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", - "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", - "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", - "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", - "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", - "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", - "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", - "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", - "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", - "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", - "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", - "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", - "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", - "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", - "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", - "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", - "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@storybook/addon-a11y": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.0.4.tgz", - "integrity": "sha512-XZSdO2B4QG8L/lQsw2dG9VcozsstdaZtLwUxXKo2tGkYQTfdnw93BCP9dhPPQCuJIIadkRts4MlmmD3XCwq+7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "axe-core": "^4.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^9.0.4" - } - }, - "node_modules/@storybook/addon-docs": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-9.0.4.tgz", - "integrity": "sha512-g9Cywdicc8iXFwQm3XFLwZgFMel7BF21zTumErLs30tsowTCqE9dTxwPSrqlbvfknhLp7I/lwyzDXGf9SXmERA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdx-js/react": "^3.0.0", - "@storybook/csf-plugin": "9.0.4", - "@storybook/icons": "^1.2.12", - "@storybook/react-dom-shim": "9.0.4", - "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", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^9.0.4" - } - }, - "node_modules/@storybook/addon-onboarding": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-9.0.4.tgz", - "integrity": "sha512-RIQAAh2Dm+N/tmPRFVoeRpJDZpzr98AaKwTw6rNjkI1EXATUUT1x04SaIee5OEXnjyKtbQrWwleY3Fxc9a4LKg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^9.0.4" - } - }, - "node_modules/@storybook/addon-vitest": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-vitest/-/addon-vitest-9.0.4.tgz", - "integrity": "sha512-BLcS7uEmSAVbNeU+LzNY3dBnXw17zGCr+vf/XEu76d69K9Kw1LNIoq6w5PwlY1eh0z90y5S7ukC2VfuH/7IalA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.4.0", - "prompts": "^2.4.0", - "ts-dedent": "^2.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@vitest/browser": "^3.0.0", - "@vitest/runner": "^3.0.0", - "storybook": "^9.0.4", - "vitest": "^3.0.0" - }, - "peerDependenciesMeta": { - "@vitest/browser": { - "optional": true - }, - "@vitest/runner": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/@storybook/builder-vite": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-9.0.8.tgz", - "integrity": "sha512-dbwDfBUwLW8I71h0Y9r+twtEdjKC+oBP1YweS26ET78qc6qXMFsK5Tfh6lzj/vQbmxY0YhnTVrrkXgfR0erLPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf-plugin": "9.0.8", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^9.0.8", - "vite": "^5.0.0 || ^6.0.0" - } - }, - "node_modules/@storybook/builder-vite/node_modules/@storybook/csf-plugin": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.0.8.tgz", - "integrity": "sha512-mNjo4t9liAbQvhE9ni87NU2sz9tqFU4Y54ioSFDlW24wpubsvnhBi5h4z3EkeQJSzIzNMRym9SC7Elbqa3Kf+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "unplugin": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^9.0.8" - } - }, - "node_modules/@storybook/csf-plugin": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.0.4.tgz", - "integrity": "sha512-ctEcOcLVn/fqBLNLIDcmoqz68e1n8zft76xVQK2Czs/tLoH+6plGfOfspcZ+V4jMr9/299gg2DjyqYa8IdYNSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "unplugin": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^9.0.4" - } - }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/icons": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", - "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" - } - }, - "node_modules/@storybook/react": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-9.0.8.tgz", - "integrity": "sha512-in3O+lDmxKRhdcX3Wg6FbLnb2/PuqRL+rUKMz1wr1ndSkw4J1jGsvP909oEEYnDbjHOX0xnNxxbEapO4F9fgBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/react-dom-shim": "9.0.8" - }, - "engines": { - "node": ">=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^9.0.8", - "typescript": ">= 4.9.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/react-dom-shim": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-9.0.4.tgz", - "integrity": "sha512-KZYb0/7VzWfCupiioFyFCITDixSeEpuww95VjanAxlwkjq78ufWZ4MnlXk9vzVDghRQN3+JoNEvTCJXN37KWjQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^9.0.4" - } - }, - "node_modules/@storybook/react-vite": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-9.0.8.tgz", - "integrity": "sha512-nAtT9UeOkKCBJ2kbatC7Hf/TX3Kl+e21wvc1D5xpS86ulPamzjzxLD5nW+vliBKePOo+9ZW/KQZYCLg3snRJtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@joshwooding/vite-plugin-react-docgen-typescript": "0.6.0", - "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "9.0.8", - "@storybook/react": "9.0.8", - "find-up": "^5.0.0", - "magic-string": "^0.30.0", - "react-docgen": "^8.0.0", - "resolve": "^1.22.8", - "tsconfig-paths": "^4.2.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^9.0.8", - "vite": "^5.0.0 || ^6.0.0" - } - }, - "node_modules/@storybook/react/node_modules/@storybook/react-dom-shim": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-9.0.8.tgz", - "integrity": "sha512-SYyjRagHZx724hGEWSZcXRzj82am77OpqeA9ps6ZsCSn4cVY9FORGEeY2bnlQkpLnDUH5yjdV/oh+0fXDbl/8g==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^9.0.8" - } - }, - "node_modules/@tabler/icons": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.34.0.tgz", - "integrity": "sha512-jtVqv0JC1WU2TTEBN32D9+R6mc1iEBuPwLnBsWaR02SIEciu9aq5806AWkCHuObhQ4ERhhXErLEK7Fs+tEZxiA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/codecalm" - } - }, - "node_modules/@tabler/icons-react": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.34.0.tgz", - "integrity": "sha512-OpEIR2iZsIXECtAIMbn1zfKfQ3zKJjXyIZlkgOGUL9UkMCFycEiF2Y8AVfEQsyre/3FnBdlWJvGr0NU47n2TbQ==", - "dependencies": { - "@tabler/icons": "3.34.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/codecalm" - }, - "peerDependencies": { - "react": ">= 16" - } - }, - "node_modules/@tanstack/query-core": { - "version": "5.80.7", - "resolved": "https://registry.npmmirror.com/@tanstack/query-core/-/query-core-5.80.7.tgz", - "integrity": "sha512-s09l5zeUKC8q7DCCCIkVSns8zZrK4ZDT6ryEjxNBFi68G4z2EBobBS7rdOY3r6W1WbUDpc1fe5oY+YO/+2UVUg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-query": { - "version": "5.80.7", - "resolved": "https://registry.npmmirror.com/@tanstack/react-query/-/react-query-5.80.7.tgz", - "integrity": "sha512-u2F0VK6+anItoEvB3+rfvTO9GEh2vb00Je05OwlUe/A0lkJBgW1HckiY3f9YZa+jx6IOe4dHPh10dyp9aY3iRQ==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "5.80.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^18 || ^19" - } - }, - "node_modules/@tauri-apps/api": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.7.0.tgz", - "integrity": "sha512-v7fVE8jqBl8xJFOcBafDzXFc8FnicoH3j8o8DNNs0tHuEBmXUDqrCOAzMRX0UkfpwqZLqvrvK0GNQ45DfnoVDg==", - "license": "Apache-2.0 OR MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - } - }, - "node_modules/@tauri-apps/cli": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.5.0.tgz", - "integrity": "sha512-rAtHqG0Gh/IWLjN2zTf3nZqYqbo81oMbqop56rGTjrlWk9pTTAjkqOjSL9XQLIMZ3RbeVjveCqqCA0s8RnLdMg==", - "dev": true, - "license": "Apache-2.0 OR MIT", - "bin": { - "tauri": "tauri.js" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/tauri" - }, - "optionalDependencies": { - "@tauri-apps/cli-darwin-arm64": "2.5.0", - "@tauri-apps/cli-darwin-x64": "2.5.0", - "@tauri-apps/cli-linux-arm-gnueabihf": "2.5.0", - "@tauri-apps/cli-linux-arm64-gnu": "2.5.0", - "@tauri-apps/cli-linux-arm64-musl": "2.5.0", - "@tauri-apps/cli-linux-riscv64-gnu": "2.5.0", - "@tauri-apps/cli-linux-x64-gnu": "2.5.0", - "@tauri-apps/cli-linux-x64-musl": "2.5.0", - "@tauri-apps/cli-win32-arm64-msvc": "2.5.0", - "@tauri-apps/cli-win32-ia32-msvc": "2.5.0", - "@tauri-apps/cli-win32-x64-msvc": "2.5.0" - } - }, - "node_modules/@tauri-apps/cli-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-VuVAeTFq86dfpoBDNYAdtQVLbP0+2EKCHIIhkaxjeoPARR0sLpFHz2zs0PcFU76e+KAaxtEtAJAXGNUc8E1PzQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.5.0.tgz", - "integrity": "sha512-hUF01sC06cZVa8+I0/VtsHOk9BbO75rd+YdtHJ48xTdcYaQ5QIwL4yZz9OR1AKBTaUYhBam8UX9Pvd5V2/4Dpw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.5.0.tgz", - "integrity": "sha512-LQKqttsK252LlqYyX8R02MinUsfFcy3+NZiJwHFgi5Y3+ZUIAED9cSxJkyNtuY5KMnR4RlpgWyLv4P6akN1xhg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-gnu": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.5.0.tgz", - "integrity": "sha512-mTQufsPcpdHg5RW0zypazMo4L55EfeE5snTzrPqbLX4yCK2qalN7+rnP8O8GT06xhp6ElSP/Ku1M2MR297SByQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-rQO1HhRUQqyEaal5dUVOQruTRda/TD36s9kv1hTxZiFuSq3558lsTjAcUEnMAtBcBkps20sbyTJNMT0AwYIk8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.5.0.tgz", - "integrity": "sha512-7oS18FN46yDxyw1zX/AxhLAd7T3GrLj3Ai6s8hZKd9qFVzrAn36ESL7d3G05s8wEtsJf26qjXnVF4qleS3dYsA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-gnu": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.5.0.tgz", - "integrity": "sha512-SG5sFNL7VMmDBdIg3nO3EzNRT306HsiEQ0N90ILe3ZABYAVoPDO/ttpCO37ApLInTzrq/DLN+gOlC/mgZvLw1w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-QXDM8zp/6v05PNWju5ELsVwF0VH1n6b5pk2E6W/jFbbiwz80Vs1lACl9pv5kEHkrxBj+aWU/03JzGuIj2g3SkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-arm64-msvc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.5.0.tgz", - "integrity": "sha512-pFSHFK6b+o9y4Un8w0gGLwVyFTZaC3P0kQ7umRt/BLDkzD5RnQ4vBM7CF8BCU5nkwmEBUCZd7Wt3TWZxe41o6Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-ia32-msvc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.5.0.tgz", - "integrity": "sha512-EArv1IaRlogdLAQyGlKmEqZqm5RfHCUMhJoedWu7GtdbOMUfSAz6FMX2boE1PtEmNO4An+g188flLeVErrxEKg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/cli-win32-x64-msvc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.5.0.tgz", - "integrity": "sha512-lj43EFYbnAta8pd9JnUq87o+xRUR0odz+4rixBtTUwUgdRdwQ2V9CzFtsMu6FQKpFQ6mujRK6P1IEwhL6ADRsQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 OR MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tauri-apps/plugin-log": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-log/-/plugin-log-2.6.0.tgz", - "integrity": "sha512-gVp3l31akA1Jk2bZsTA0hMFD5/gLe49Nw1btu5lViau0QqgC2XyT79LSwvy7a44ewtQbSexchqIg7oTJKMIbXQ==", - "license": "MIT OR Apache-2.0", - "dependencies": { - "@tauri-apps/api": "^2.6.0" - } - }, - "node_modules/@tauri-apps/plugin-opener": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.3.0.tgz", - "integrity": "sha512-yAbauwp8BCHIhhA48NN8rEf6OtfZBPCgTOCa10gmtoVCpmic5Bq+1Ba7C+NZOjogedkSiV7hAotjYnnbUVmYrw==", - "license": "MIT OR Apache-2.0", - "dependencies": { - "@tauri-apps/api": "^2.0.0" - } - }, - "node_modules/@tauri-apps/plugin-shell": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.2.2.tgz", - "integrity": "sha512-fg9XKWfzRQsN8p+Zrk82WeHvXFvGVnG0/mTlujQdLWNnO5cM6WD9qCrHbFytScVS+WhmRAkuypQPcxeKKl3VBg==", - "license": "MIT OR Apache-2.0", - "dependencies": { - "@tauri-apps/api": "^2.0.0" - } - }, - "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.4.0", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/user-event": { - "version": "14.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", - "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/chai": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", - "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/doctrine": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", - "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz", - "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==", - "dev": true - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" - }, - "node_modules/@types/node": { - "version": "20.17.57", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.57.tgz", - "integrity": "sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ==", - "dev": true, - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/prismjs": { - "version": "1.26.5", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz", - "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==" - }, - "node_modules/@types/react": { - "version": "19.1.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz", - "integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==", - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.1.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.9.tgz", - "integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@types/resolve": { - "version": "1.20.6", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", - "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz", - "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.34.0", - "@typescript-eslint/type-utils": "8.34.0", - "@typescript-eslint/utils": "8.34.0", - "@typescript-eslint/visitor-keys": "8.34.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.34.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz", - "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.34.0", - "@typescript-eslint/types": "8.34.0", - "@typescript-eslint/typescript-estree": "8.34.0", - "@typescript-eslint/visitor-keys": "8.34.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz", - "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.34.0", - "@typescript-eslint/types": "^8.34.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz", - "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.34.0", - "@typescript-eslint/visitor-keys": "8.34.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz", - "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz", - "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.34.0", - "@typescript-eslint/utils": "8.34.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz", - "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz", - "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.34.0", - "@typescript-eslint/tsconfig-utils": "8.34.0", - "@typescript-eslint/types": "8.34.0", - "@typescript-eslint/visitor-keys": "8.34.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz", - "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.34.0", - "@typescript-eslint/types": "8.34.0", - "@typescript-eslint/typescript-estree": "8.34.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz", - "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.34.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz", - "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.26.10", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", - "@rolldown/pluginutils": "1.0.0-beta.9", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/@vitest/browser": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-3.2.3.tgz", - "integrity": "sha512-5HpUb0ixGF8JWSAjb/P1x/VPuTYUkL4pL0+YO6DJiuvQgqJN3PREaUEcXwfXjU4nBc37EahfpRbAwdE9pHs9lQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@testing-library/dom": "^10.4.0", - "@testing-library/user-event": "^14.6.1", - "@vitest/mocker": "3.2.3", - "@vitest/utils": "3.2.3", - "magic-string": "^0.30.17", - "sirv": "^3.0.1", - "tinyrainbow": "^2.0.0", - "ws": "^8.18.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "playwright": "*", - "vitest": "3.2.3", - "webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } - } - }, - "node_modules/@vitest/browser/node_modules/@vitest/pretty-format": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", - "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/browser/node_modules/@vitest/utils": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", - "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.3", - "loupe": "^3.1.3", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/coverage-v8": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.3.tgz", - "integrity": "sha512-D1QKzngg8PcDoCE8FHSZhREDuEy+zcKmMiMafYse41RZpBE5EDJyKOTdqK3RQfsV2S2nyKor5KCs8PyPRFqKPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^1.0.2", - "ast-v8-to-istanbul": "^0.3.3", - "debug": "^4.4.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", - "magicast": "^0.3.5", - "std-env": "^3.9.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@vitest/browser": "3.2.3", - "vitest": "3.2.3" - }, - "peerDependenciesMeta": { - "@vitest/browser": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", - "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.0.9", - "@vitest/utils": "3.0.9", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.3.tgz", - "integrity": "sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.3", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/mocker/node_modules/@vitest/spy": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.3.tgz", - "integrity": "sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/@vitest/mocker/node_modules/tinyspy": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", - "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", - "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.3.tgz", - "integrity": "sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.3", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", - "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner/node_modules/@vitest/utils": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", - "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.3", - "loupe": "^3.1.3", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.3.tgz", - "integrity": "sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.3", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", - "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", - "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", - "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.0.9", - "loupe": "^3.1.3", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ast-v8-to-istanbul": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", - "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "estree-walker": "^3.0.3", - "js-tokens": "^9.0.1" - } - }, - "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", - "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001718", - "electron-to-chromium": "^1.5.160", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001720", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz", - "integrity": "sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/chromatic": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-12.1.0.tgz", - "integrity": "sha512-X45IVEb8mX3J+iDEpb6dY6CUvqWm5jlo8QqzgUGFYlcO7A327Ve3G4dzuu96f/hcXifZ0T1E7BMN6/z0iO4V2A==", - "dev": true, - "license": "MIT", - "bin": { - "chroma": "dist/bin.js", - "chromatic": "dist/bin.js", - "chromatic-cli": "dist/bin.js" - }, - "peerDependencies": { - "@chromatic-com/cypress": "^0.*.* || ^1.0.0", - "@chromatic-com/playwright": "^0.*.* || ^1.0.0" - }, - "peerDependenciesMeta": { - "@chromatic-com/cypress": { - "optional": true - }, - "@chromatic-com/playwright": { - "optional": true - } - } - }, - "node_modules/cli-color": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", - "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.64", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.161", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.161.tgz", - "integrity": "sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "dev": true, - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/esbuild": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", - "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.5", - "@esbuild/android-arm": "0.25.5", - "@esbuild/android-arm64": "0.25.5", - "@esbuild/android-x64": "0.25.5", - "@esbuild/darwin-arm64": "0.25.5", - "@esbuild/darwin-x64": "0.25.5", - "@esbuild/freebsd-arm64": "0.25.5", - "@esbuild/freebsd-x64": "0.25.5", - "@esbuild/linux-arm": "0.25.5", - "@esbuild/linux-arm64": "0.25.5", - "@esbuild/linux-ia32": "0.25.5", - "@esbuild/linux-loong64": "0.25.5", - "@esbuild/linux-mips64el": "0.25.5", - "@esbuild/linux-ppc64": "0.25.5", - "@esbuild/linux-riscv64": "0.25.5", - "@esbuild/linux-s390x": "0.25.5", - "@esbuild/linux-x64": "0.25.5", - "@esbuild/netbsd-arm64": "0.25.5", - "@esbuild/netbsd-x64": "0.25.5", - "@esbuild/openbsd-arm64": "0.25.5", - "@esbuild/openbsd-x64": "0.25.5", - "@esbuild/sunos-x64": "0.25.5", - "@esbuild/win32-arm64": "0.25.5", - "@esbuild/win32-ia32": "0.25.5", - "@esbuild/win32-x64": "0.25.5" - } - }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz", - "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.28.0", - "@eslint/plugin-kit": "^0.3.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/expect-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", - "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/filesize": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", - "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 10.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", - "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", - "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/html-url-attributes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", - "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-to-typescript": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-13.1.2.tgz", - "integrity": "sha512-17G+mjx4nunvOpkPvcz7fdwUwYCEwyH8vR3Ym3rFiQ8uzAL3go+c1306Kk7iGRk8HuXBXqy+JJJmpYl0cvOllw==", - "dev": true, - "dependencies": { - "@bcherny/json-schema-ref-parser": "10.0.5-fork", - "@types/json-schema": "^7.0.11", - "@types/lodash": "^4.14.182", - "@types/prettier": "^2.6.1", - "cli-color": "^2.0.2", - "get-stdin": "^8.0.0", - "glob": "^7.1.6", - "glob-promise": "^4.2.2", - "is-glob": "^4.0.3", - "lodash": "^4.17.21", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "mz": "^2.7.0", - "prettier": "^2.6.2" - }, - "bin": { - "json2ts": "dist/src/cli.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/json-schema-to-typescript/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/json-schema-to-typescript/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/json-schema-to-typescript/node_modules/glob-promise": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", - "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "individual", - "url": "https://github.com/sponsors/ahmadnassri" - }, - "peerDependencies": { - "glob": "^7.1.6" - } - }, - "node_modules/json-schema-to-typescript/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/json-schema-to-typescript/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magicast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.4", - "@babel/types": "^7.25.4", - "source-map-js": "^1.2.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/memoizee": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", - "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", - "dev": true, - "dependencies": { - "d": "^1.0.2", - "es5-ext": "^0.10.64", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT" - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", - "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/playwright": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", - "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.52.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", - "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", - "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-mixins": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/postcss-mixins/-/postcss-mixins-9.0.4.tgz", - "integrity": "sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.11", - "postcss-js": "^4.0.0", - "postcss-simple-vars": "^7.0.0", - "sugarss": "^4.0.1" - }, - "engines": { - "node": ">=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-preset-mantine": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/postcss-preset-mantine/-/postcss-preset-mantine-1.17.0.tgz", - "integrity": "sha512-ji1PMDBUf2Vsx/HE5faMSs1+ff6qE6YRulTr4Ja+6HD3gop8rSMTCYdpN7KrdsEg079kfBKkO/PaKhG9uR0zwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-mixins": "^9.0.4", - "postcss-nested": "^6.0.1" - }, - "peerDependencies": { - "postcss": ">=8.0.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-simple-vars": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz", - "integrity": "sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.1" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/property-information": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", - "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-docgen": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-8.0.0.tgz", - "integrity": "sha512-kmob/FOTwep7DUWf9KjuenKX0vyvChr3oTdvvPt09V60Iz75FJp+T/0ZeHMbAfJj2WaVWqAPP5Hmm3PYzSPPKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.18.9", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "@types/babel__core": "^7.18.0", - "@types/babel__traverse": "^7.18.0", - "@types/doctrine": "^0.0.9", - "@types/resolve": "^1.20.2", - "doctrine": "^3.0.0", - "resolve": "^1.22.1", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": "^20.9.0 || >=22" - } - }, - "node_modules/react-docgen-typescript": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", - "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "typescript": ">= 4.3.x" - } - }, - "node_modules/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.1" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-markdown": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz", - "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "html-url-attributes": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "unified": "^11.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@types/react": ">=18", - "react": ">=18" - } - }, - "node_modules/react-number-format": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.4.tgz", - "integrity": "sha512-wOmoNZoOpvMminhifQYiYSTCLUDOiUbBunrMrMjA+dV52sY+vck1S4UhR6PkgnoCquvvMSeJjErXZ4qSaWCliA==", - "license": "MIT", - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-remove-scroll": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", - "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-textarea-autosize": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", - "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.13", - "use-composed-ref": "^1.3.0", - "use-latest": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/recast": { - "version": "0.23.11", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", - "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redent/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexparam": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", - "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", - "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rollup": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", - "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.1", - "@rollup/rollup-android-arm64": "4.41.1", - "@rollup/rollup-darwin-arm64": "4.41.1", - "@rollup/rollup-darwin-x64": "4.41.1", - "@rollup/rollup-freebsd-arm64": "4.41.1", - "@rollup/rollup-freebsd-x64": "4.41.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", - "@rollup/rollup-linux-arm-musleabihf": "4.41.1", - "@rollup/rollup-linux-arm64-gnu": "4.41.1", - "@rollup/rollup-linux-arm64-musl": "4.41.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-musl": "4.41.1", - "@rollup/rollup-linux-s390x-gnu": "4.41.1", - "@rollup/rollup-linux-x64-gnu": "4.41.1", - "@rollup/rollup-linux-x64-musl": "4.41.1", - "@rollup/rollup-win32-arm64-msvc": "4.41.1", - "@rollup/rollup-win32-ia32-msvc": "4.41.1", - "@rollup/rollup-win32-x64-msvc": "4.41.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sirv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", - "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/storybook": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.0.8.tgz", - "integrity": "sha512-GlOB3HAtzRYc237+o46nnETNkc2Qckh3UrIJ1rJyAzagIlPWau/jTxjSz76sqRODEnt01m8CyIkw3PGv0q1UpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/user-event": "^14.6.1", - "@vitest/expect": "3.0.9", - "@vitest/spy": "3.0.9", - "better-opn": "^3.0.2", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", - "esbuild-register": "^3.5.0", - "recast": "^0.23.5", - "semver": "^7.6.2", - "ws": "^8.18.0" - }, - "bin": { - "storybook": "bin/index.cjs" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/storybook/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", - "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/style-to-js": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", - "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", - "dependencies": { - "style-to-object": "1.0.9" - } - }, - "node_modules/style-to-object": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", - "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", - "dependencies": { - "inline-style-parser": "0.2.4" - } - }, - "node_modules/sugarss": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-4.0.1.tgz", - "integrity": "sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "license": "MIT" - }, - "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/timers-ext": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", - "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.64", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinypool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", - "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.19.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", - "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", - "dev": true, - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz", - "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.34.0", - "@typescript-eslint/parser": "8.34.0", - "@typescript-eslint/utils": "8.34.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unplugin": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", - "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-composed-ref": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", - "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-isomorphic-layout-effect": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", - "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-latest": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", - "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", - "license": "MIT", - "dependencies": { - "use-isomorphic-layout-effect": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sync-external-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.3.tgz", - "integrity": "sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.3.tgz", - "integrity": "sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.3", - "@vitest/mocker": "3.2.3", - "@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", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.0", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.3", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "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", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@vitest/expect": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.3.tgz", - "integrity": "sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.3", - "@vitest/utils": "3.2.3", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/@vitest/pretty-format": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", - "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/@vitest/spy": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.3.tgz", - "integrity": "sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/@vitest/utils": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", - "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.3", - "loupe": "^3.1.3", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/tinyspy": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", - "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wouter": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/wouter/-/wouter-3.7.1.tgz", - "integrity": "sha512-od5LGmndSUzntZkE2R5CHhoiJ7YMuTIbiXsa0Anytc2RATekgv4sfWRAxLEULBrp7ADzinWQw8g470lkT8+fOw==", - "license": "Unlicense", - "dependencies": { - "mitt": "^3.0.1", - "regexparam": "^3.0.0", - "use-sync-external-store": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/desktop/package.json b/desktop/package.json deleted file mode 100644 index 5e5a5bb7..00000000 --- a/desktop/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "flow-desktop", - "private": true, - "version": "0.1.0", - "type": "module", - "scripts": { - "dev": "vite", - "start": "tauri dev", - "build": "tsc && vite build", - "lint": "npx eslint src", - "lint:fix": "npx eslint src --fix", - "prettier": "npx prettier src --check", - "prettier:fix": "npx prettier src --write", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build", - "generate-ts": "tsx scripts/generate-ts-types.ts" - }, - "dependencies": { - "@mantine/core": "^8.0.2", - "@mantine/hooks": "^8.0.2", - "@tabler/icons-react": "^3.34.0", - "@tanstack/react-query": "^5.80.7", - "@tauri-apps/api": "^2", - "@tauri-apps/plugin-log": "^2.6.0", - "@tauri-apps/plugin-opener": "^2.3.0", - "@tauri-apps/plugin-shell": "^2.2.2", - "@types/prismjs": "^1.26.5", - "prismjs": "^1.30.0", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "react-markdown": "^10.1.0", - "wouter": "^3.7.1" - }, - "devDependencies": { - "@chromatic-com/storybook": "^4.0.0", - "@eslint/js": "^9.28.0", - "@storybook/addon-a11y": "^9.0.4", - "@storybook/addon-docs": "^9.0.4", - "@storybook/addon-onboarding": "^9.0.4", - "@storybook/addon-vitest": "^9.0.4", - "@storybook/react-vite": "^9.0.4", - "@tauri-apps/cli": "^2", - "@types/node": "^20.11.24", - "@types/react": "^19.1.0", - "@types/react-dom": "^19.1.0", - "@vitejs/plugin-react": "^4.3.4", - "@vitest/browser": "^3.2.1", - "@vitest/coverage-v8": "^3.2.1", - "eslint": "^9.28.0", - "eslint-plugin-react": "^7.37.5", - "globals": "^16.2.0", - "json-schema-to-typescript": "^13.0.0", - "playwright": "^1.52.0", - "postcss": "^8.5.4", - "postcss-preset-mantine": "^1.17.0", - "postcss-simple-vars": "^7.0.1", - "prettier": "3.5.3", - "storybook": "^9.0.4", - "tsx": "^4.7.1", - "typescript": "~5.6.2", - "typescript-eslint": "^8.34.0", - "vite": "^6.3.6", - "vitest": "^3.2.1" - } -} diff --git a/desktop/public/logo-dark.png b/desktop/public/logo-dark.png deleted file mode 100644 index e61fcf3a9d1104c1209442211e9edad837e3658a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133935 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 B4FYK$x!#p|1A_MgTvns=T5D0__87%8WB@xa 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/dev/null; then - echo -e "Installing cargo-typify..." - cargo install cargo-typify@0.4.3 - fi - - if cargo typify "$schema_path" --output "$output_file"; then - echo -e "Generated rust types for ${schema_name}" - else - echo -e "Failed to generate rust types for ${schema_name}" - return 1 - fi -} - -failed=0 -schema_names=() - -for schema_path in "$SCHEMAS_DIR"/*.json; do - if [ ! -f "$schema_path" ]; then - echo "No JSON schemas found in $SCHEMAS_DIR" - exit 1 - fi - - schema_name=$(basename "$schema_path" .json | sed 's/_schema//') - schema_names+=("$schema_name") - - if ! generate_schema "$schema_path"; then - failed=1 - fi -done - -{ - echo "// Generated module exports" - for name in "${schema_names[@]}"; do - echo "pub mod ${name};" - done -} > "$OUTPUT_DIR/mod.rs" - -echo -e "Generated mod.rs for rust types" - -if [ $failed -eq 1 ]; then - echo -e "Some rust schema generations failed" - exit 1 -else - echo -e "All rust schemas generated successfully" - exit 0 -fi \ No newline at end of file diff --git a/desktop/scripts/generate-ts-types.ts b/desktop/scripts/generate-ts-types.ts deleted file mode 100644 index 4d9ae0ff..00000000 --- a/desktop/scripts/generate-ts-types.ts +++ /dev/null @@ -1,50 +0,0 @@ -// This script generates TypeScript types from JSON schemas. -// The output is written to the src/types/generated directory. - -import fs from "fs/promises"; -import { compile } from "json-schema-to-typescript"; -import path from "path"; - -const SCHEMAS_DIR = path.resolve(process.cwd(), "../docs/public/schemas"); -const OUTPUT_DIR = path.resolve(process.cwd(), "src/types/generated"); - -async function generateTypes() { - try { - await fs.mkdir(OUTPUT_DIR, { recursive: true }); - - const schemaFiles = await fs.readdir(SCHEMAS_DIR); - - for (const file of schemaFiles) { - if (!file.endsWith(".json")) continue; - - const schemaPath = path.join(SCHEMAS_DIR, file); - const schema = JSON.parse(await fs.readFile(schemaPath, "utf-8")); - - const types = await compile(schema, file.replace(".json", ""), { - bannerComment: `/** - * This file was automatically generated from ${file} - * DO NOT MODIFY IT BY HAND - */`, - style: { - singleQuote: true, - semi: true, - }, - }); - - const outputPath = path.join( - OUTPUT_DIR, - `${file.replace(".json", "").replace("_schema", "")}.ts` - ); - await fs.writeFile(outputPath, types); - - console.log(`Generated types for ${file}`); - } - - console.log("All ts types generated successfully"); - } catch (error) { - console.error("Error generating ts types:", error); - process.exit(1); - } -} - -generateTypes(); diff --git a/desktop/src-tauri/.gitignore b/desktop/src-tauri/.gitignore deleted file mode 100644 index 29ff3048..00000000 --- a/desktop/src-tauri/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Generated by Cargo -# will have compiled files and executables -/target/ - -# Generated by -# Includes: Tauri schema files for capabilities auto-completion and typify codegen -/gen/* - - diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock deleted file mode 100644 index cec15f4b..00000000 --- a/desktop/src-tauri/Cargo.lock +++ /dev/null @@ -1,5500 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom 0.2.16", - "once_cell", - "version_check", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_log-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d" - -[[package]] -name = "android_logger" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb4e440d04be07da1f1bf44fb4495ebd58669372fe0cffa6e48595ac5bd88a3" -dependencies = [ - "android_log-sys", - "env_filter", - "log", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-io" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" -dependencies = [ - "async-lock", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix", - "tracing", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "async-signal" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.59.0", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "atk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" -dependencies = [ - "serde", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" -dependencies = [ - "objc2 0.5.2", -] - -[[package]] -name = "block2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" -dependencies = [ - "objc2 0.6.1", -] - -[[package]] -name = "blocking" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "borsh" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" -dependencies = [ - "once_cell", - "proc-macro-crate 3.3.0", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "brotli" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bumpalo" -version = "3.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" - -[[package]] -name = "byte-unit" -version = "5.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cd29c3c585209b0cbc7309bfe3ed7efd8c84c21b7af29c8bfae908f8777174" -dependencies = [ - "rust_decimal", - "serde", - "utf8-width", -] - -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "bytemuck" -version = "1.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" -dependencies = [ - "serde", -] - -[[package]] -name = "cairo-rs" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" -dependencies = [ - "bitflags 2.9.1", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 2.0.12", -] - -[[package]] -name = "cargo_toml" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" -dependencies = [ - "serde", - "toml", -] - -[[package]] -name = "cc" -version = "1.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" -dependencies = [ - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chrono" -version = "0.4.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "windows-link", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "time", - "version_check", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" -dependencies = [ - "bitflags 2.9.1", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.9.1", - "core-foundation", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 0.4.8", - "matches", - "phf 0.8.0", - "proc-macro2", - "quote", - "smallvec", - "syn 1.0.109", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.101", -] - -[[package]] -name = "ctor" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" -dependencies = [ - "quote", - "syn 2.0.101", -] - -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.101", -] - -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "deranged" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" -dependencies = [ - "powerfmt", - "serde", -] - -[[package]] -name = "derive_more" -version = "0.99.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.101", -] - -[[package]] -name = "desktop" -version = "0.1.0" -dependencies = [ - "async-trait", - "log", - "serde", - "serde_json", - "tauri", - "tauri-build", - "tauri-plugin-log", - "tauri-plugin-opener", - "tauri-plugin-shell", - "tokio", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.60.2", -] - -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "dlopen2" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -dependencies = [ - "serde", -] - -[[package]] -name = "dtoa" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" - -[[package]] -name = "dtoa-short" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" - -[[package]] -name = "embed-resource" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8fe7d068ca6b3a5782ca5ec9afc244acd99dd441e4686a83b1c3973aba1d489" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "endi" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" - -[[package]] -name = "enumflags2" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "env_filter" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "erased-serde" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" -dependencies = [ - "serde", - "typeid", -] - -[[package]] -name = "errno" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "fern" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4316185f709b23713e41e3195f90edef7fb00c3ed4adc79769cf09cc762a3b29" -dependencies = [ - "log", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "flate2" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "gdk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps", - "x11", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.9.1", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "http" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.15", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "hyper" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "itoa 1.0.15", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-util" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ico" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" -dependencies = [ - "byteorder", - "png", -] - -[[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" - -[[package]] -name = "icu_provider" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" -dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" -dependencies = [ - "equivalent", - "hashbrown 0.15.3", - "serde", -] - -[[package]] -name = "infer" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" -dependencies = [ - "cfb", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "javascriptcore-rs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" -dependencies = [ - "bitflags 1.3.2", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "js-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" -dependencies = [ - "jsonptr", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "jsonptr" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "keyboard-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" -dependencies = [ - "bitflags 2.9.1", - "serde", - "unicode-segmentation", -] - -[[package]] -name = "kuchikiki" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" -dependencies = [ - "cssparser", - "html5ever", - "indexmap 1.9.3", - "matches", - "selectors", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libappindicator" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] - -[[package]] -name = "libappindicator-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading", - "once_cell", -] - -[[package]] -name = "libc" -version = "0.2.172" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.9.1", - "libc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "litemap" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" - -[[package]] -name = "lock_api" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -dependencies = [ - "value-bag", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "markup5ever" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" -dependencies = [ - "log", - "phf 0.10.1", - "phf_codegen 0.10.0", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.59.0", -] - -[[package]] -name = "muda" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de14a9b5d569ca68d7c891d613b390cf5ab4f851c77aaa2f9e435555d3d9492" -dependencies = [ - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "once_cell", - "png", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.9.1", - "jni-sys", - "log", - "ndk-sys", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "nix" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate 3.3.0", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - -[[package]] -name = "objc-sys" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" - -[[package]] -name = "objc2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" -dependencies = [ - "objc-sys", - "objc2-encode", -] - -[[package]] -name = "objc2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" -dependencies = [ - "objc2-encode", - "objc2-exception-helper", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" -dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "libc", - "objc2 0.6.1", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image", - "objc2-foundation 0.3.1", - "objc2-quartz-core 0.3.1", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-core-data" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" -dependencies = [ - "bitflags 2.9.1", - "dispatch2", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-io-surface", -] - -[[package]] -name = "objc2-core-image" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" -dependencies = [ - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-exception-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" -dependencies = [ - "cc", -] - -[[package]] -name = "objc2-foundation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" -dependencies = [ - "bitflags 2.9.1", - "block2 0.5.1", - "libc", - "objc2 0.5.2", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" -dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "libc", - "objc2 0.6.1", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-io-surface" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-metal" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" -dependencies = [ - "bitflags 2.9.1", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" -dependencies = [ - "bitflags 2.9.1", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-metal", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" -dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", - "objc2-core-foundation", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "objc2-web-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" -dependencies = [ - "bitflags 2.9.1", - "block2 0.6.1", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "open" -version = "5.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" -dependencies = [ - "dunce", - "is-wsl", - "libc", - "pathdiff", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "os_pipe" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_macros 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_shared 0.10.0", -] - -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", -] - -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", -] - -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher 0.3.11", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher 0.3.11", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher 1.0.1", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "plist" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" -dependencies = [ - "base64 0.22.1", - "indexmap 2.9.0", - "quick-xml", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "polling" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "tracing", - "windows-sys 0.59.0", -] - -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit 0.22.26", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - -[[package]] -name = "proc-macro2" -version = "1.0.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "quick-xml" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "redox_syscall" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "redox_users" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 2.0.12", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "reqwest" -version = "0.12.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-util", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", -] - -[[package]] -name = "rkyv" -version = "0.7.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rust_decimal" -version = "1.37.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand 0.8.5", - "rkyv", - "serde", - "serde_json", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustversion" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.101", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "selectors" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" -dependencies = [ - "bitflags 1.3.2", - "cssparser", - "derive_more", - "fxhash", - "log", - "matches", - "phf 0.8.0", - "phf_codegen 0.8.0", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", -] - -[[package]] -name = "semver" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" -dependencies = [ - "serde", -] - -[[package]] -name = "serde" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-untagged" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" -dependencies = [ - "erased-serde", - "serde", - "typeid", -] - -[[package]] -name = "serde_derive" -version = "1.0.219" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "serde_json" -version = "1.0.140" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" -dependencies = [ - "itoa 1.0.15", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa 1.0.15", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.9.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "servo_arc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" -dependencies = [ - "nodrop", - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shared_child" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2778001df1384cf20b6dc5a5a90f48da35539885edaaefd887f8d744e939c0b" -dependencies = [ - "libc", - "sigchld", - "windows-sys 0.60.2", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "sigchld" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1219ef50fc0fdb04fcc243e6aa27f855553434ffafe4fa26554efb78b5b4bf89" -dependencies = [ - "libc", - "os_pipe", - "signal-hook", -] - -[[package]] -name = "signal-hook" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" -dependencies = [ - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "siphasher" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "softbuffer" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" -dependencies = [ - "bytemuck", - "cfg_aliases", - "core-graphics", - "foreign-types", - "js-sys", - "log", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", - "raw-window-handle", - "redox_syscall", - "wasm-bindgen", - "web-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "string_cache" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared 0.11.3", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "swift-rs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml", - "version-compare", -] - -[[package]] -name = "tao" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e59c1f38e657351a2e822eadf40d6a2ad4627b9c25557bc1180ec1b3295ef82" -dependencies = [ - "bitflags 2.9.1", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dispatch", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "jni", - "lazy_static", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "once_cell", - "parking_lot", - "raw-window-handle", - "scopeguard", - "tao-macros", - "unicode-segmentation", - "url", - "windows", - "windows-core", - "windows-version", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - -[[package]] -name = "tauri" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b0bc1aec81bda6bc455ea98fcaed26b3c98c1648c627ad6ff1c704e8bf8cbc" -dependencies = [ - "anyhow", - "bytes", - "dirs", - "dunce", - "embed_plist", - "futures-util", - "getrandom 0.2.16", - "glob", - "gtk", - "heck 0.5.0", - "http", - "jni", - "libc", - "log", - "mime", - "muda", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "objc2-ui-kit", - "percent-encoding", - "plist", - "raw-window-handle", - "reqwest", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "swift-rs", - "tauri-build", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "thiserror 2.0.12", - "tokio", - "tray-icon", - "url", - "urlpattern", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows", -] - -[[package]] -name = "tauri-build" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a0350f0df1db385ca5c02888a83e0e66655c245b7443db8b78a70da7d7f8fc" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs", - "glob", - "heck 0.5.0", - "json-patch", - "schemars", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "toml", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93f035551bf7b11b3f51ad9bc231ebbe5e085565527991c16cf326aa38cdf47" -dependencies = [ - "base64 0.22.1", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.101", - "tauri-utils", - "thiserror 2.0.12", - "time", - "url", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8db4df25e2d9d45de0c4c910da61cd5500190da14ae4830749fee3466dddd112" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.101", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-plugin" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a5ebe6a610d1b78a94650896e6f7c9796323f408800cef436e0fa0539de601" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars", - "serde", - "serde_json", - "tauri-utils", - "toml", - "walkdir", -] - -[[package]] -name = "tauri-plugin-log" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73d224e9bcb44677d56c422c85a2a345518f1df192acb5f7c1fb5a0c5bc791ee" -dependencies = [ - "android_logger", - "byte-unit", - "fern", - "log", - "objc2 0.6.1", - "objc2-foundation 0.3.1", - "serde", - "serde_json", - "serde_repr", - "swift-rs", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", - "time", -] - -[[package]] -name = "tauri-plugin-opener" -version = "2.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66644b71a31ec1a8a52c4a16575edd28cf763c87cf4a7da24c884122b5c77097" -dependencies = [ - "dunce", - "glob", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "open", - "schemars", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", - "url", - "windows", - "zbus", -] - -[[package]] -name = "tauri-plugin-shell" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34e525a448b80ad5d906fcbd93838ac3ba37985b29ac699a045b5da9b0a1a22" -dependencies = [ - "encoding_rs", - "log", - "open", - "os_pipe", - "regex", - "schemars", - "serde", - "serde_json", - "shared_child", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", - "tokio", -] - -[[package]] -name = "tauri-runtime" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f004905d549854069e6774533d742b03cacfd6f03deb08940a8677586cbe39" -dependencies = [ - "cookie", - "dpi", - "gtk", - "http", - "jni", - "objc2 0.6.1", - "objc2-ui-kit", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror 2.0.12", - "url", - "windows", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f85d056f4d4b014fe874814034f3416d57114b617a493a4fe552580851a3f3a2" -dependencies = [ - "gtk", - "http", - "jni", - "log", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-foundation 0.3.1", - "once_cell", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "url", - "webkit2gtk", - "webview2-com", - "windows", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2900399c239a471bcff7f15c4399eb1a8c4fe511ba2853e07c996d771a5e0a4" -dependencies = [ - "anyhow", - "brotli", - "cargo_metadata", - "ctor", - "dunce", - "glob", - "html5ever", - "http", - "infer", - "json-patch", - "kuchikiki", - "log", - "memchr", - "phf 0.11.3", - "proc-macro2", - "quote", - "regex", - "schemars", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror 2.0.12", - "toml", - "url", - "urlpattern", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4" -dependencies = [ - "embed-resource", - "indexmap 2.9.0", - "toml", -] - -[[package]] -name = "tempfile" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" -dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl 2.0.12", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "time" -version = "0.3.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" -dependencies = [ - "deranged", - "itoa 1.0.15", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" - -[[package]] -name = "time-macros" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.45.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "tokio-util" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.22.26", -] - -[[package]] -name = "toml_datetime" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.9.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap 2.9.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" -dependencies = [ - "indexmap 2.9.0", - "serde", - "serde_spanned", - "toml_datetime", - "toml_write", - "winnow 0.7.10", -] - -[[package]] -name = "toml_write" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" - -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc2d9e086a412a451384326f521c8123a99a466b329941a9403696bff9b0da2" -dependencies = [ - "bitflags 2.9.1", - "bytes", - "futures-util", - "http", - "http-body", - "iri-string", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "tracing-core" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tray-icon" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7eee98ec5c90daf179d55c20a49d8c0d043054ce7c26336c09a24d31f14fa0" -dependencies = [ - "crossbeam-channel", - "dirs", - "libappindicator", - "muda", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.1", - "once_cell", - "png", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset", - "tempfile", - "winapi", -] - -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - -[[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "urlpattern" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" -dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf8-width" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" -dependencies = [ - "getrandom 0.3.3", - "js-sys", - "serde", - "wasm-bindgen", -] - -[[package]] -name = "value-bag" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" - -[[package]] -name = "version-compare" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.101", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-streams" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webkit2gtk" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup3", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" -dependencies = [ - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pkg-config", - "soup3-sys", - "system-deps", -] - -[[package]] -name = "webview2-com" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b542b5cfbd9618c46c2784e4d41ba218c336ac70d44c55e47b251033e7d85601" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows", - "windows-core", - "windows-implement", - "windows-interface", -] - -[[package]] -name = "webview2-com-macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "webview2-com-sys" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae2d11c4a686e4409659d7891791254cf9286d3cfe0eef54df1523533d22295" -dependencies = [ - "thiserror 2.0.12", - "windows", - "windows-core", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "window-vibrancy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" -dependencies = [ - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - -[[package]] -name = "windows" -version = "0.61.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" -dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-link", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core", - "windows-link", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.60.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-interface" -version = "0.59.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core", - "windows-link", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.2", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] - -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-version" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] - -[[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - -[[package]] -name = "wry" -version = "0.51.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886a0a9d2a94fd90cfa1d929629b79cfefb1546e2c7430c63a47f0664c0e4e2" -dependencies = [ - "base64 0.22.1", - "block2 0.6.1", - "cookie", - "crossbeam-channel", - "dpi", - "dunce", - "gdkx11", - "gtk", - "html5ever", - "http", - "javascriptcore-rs", - "jni", - "kuchikiki", - "libc", - "ndk", - "objc2 0.6.1", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.1", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror 2.0.12", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows", - "windows-core", - "windows-version", - "x11-dl", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", - "synstructure", -] - -[[package]] -name = "zbus" -version = "5.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68" -dependencies = [ - "async-broadcast", - "async-executor", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "nix", - "ordered-stream", - "serde", - "serde_repr", - "tracing", - "uds_windows", - "windows-sys 0.59.0", - "winnow 0.7.10", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a" -dependencies = [ - "proc-macro-crate 3.3.0", - "proc-macro2", - "quote", - "syn 2.0.101", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" -dependencies = [ - "serde", - "static_assertions", - "winnow 0.7.10", - "zvariant", -] - -[[package]] -name = "zerocopy" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", - "synstructure", -] - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "zvariant" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1" -dependencies = [ - "endi", - "enumflags2", - "serde", - "winnow 0.7.10", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580" -dependencies = [ - "proc-macro-crate 3.3.0", - "proc-macro2", - "quote", - "syn 2.0.101", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "static_assertions", - "syn 2.0.101", - "winnow 0.7.10", -] diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml deleted file mode 100644 index 814faa59..00000000 --- a/desktop/src-tauri/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "desktop" -version = "0.1.0" -description = "A desktop application built with Tauri, providing a UI and backend integration for flow." -authors = ["Jahvon Dockery "] -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -# The `_lib` suffix may seem redundant but it is necessary -# to make the lib name unique and wouldn't conflict with the bin name. -# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 -name = "desktop_lib" -crate-type = ["staticlib", "cdylib", "rlib"] - -[build-dependencies] -serde = "1" -serde_json = "1" -tauri-build = { version = "2", features = [] } - -[dependencies] -tauri = { version = "2", features = [] } -tauri-plugin-opener = "2" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -tauri-plugin-shell = "2" -tokio = { version = "1", features = ["full"] } -async-trait = "0.1" -log = "0.4" -tauri-plugin-log = "2" diff --git a/desktop/src-tauri/build.rs b/desktop/src-tauri/build.rs deleted file mode 100644 index 261851f6..00000000 --- a/desktop/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build(); -} diff --git a/desktop/src-tauri/capabilities/default.json b/desktop/src-tauri/capabilities/default.json deleted file mode 100644 index bfd29a66..00000000 --- a/desktop/src-tauri/capabilities/default.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "Capability for the main window", - "windows": [ - "main" - ], - "permissions": [ - "core:default", - "shell:default", - "opener:allow-open-path", - { - "identifier": "opener:allow-open-path", - "allow": [ - { - "path": "$HOME/**" - } - ] - }, - "log:default" - ] -} \ No newline at end of file diff --git a/desktop/src-tauri/icons/128x128.png b/desktop/src-tauri/icons/128x128.png deleted file mode 100644 index c058a6d936138252fe7eca15520967b5b946d93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6215 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 diff --git a/desktop/src-tauri/icons/128x128@2x.png b/desktop/src-tauri/icons/128x128@2x.png deleted file mode 100644 index bfbaccc11b674aa1a3606d4d0e4ab98d445a8b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13092 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 z 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 diff --git a/desktop/src-tauri/icons/64x64.png b/desktop/src-tauri/icons/64x64.png deleted file mode 100644 index 87f3c8e2775357675c0b4d0abb9e632438412559..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3114 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 qg|0!8pZ&! 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 F{{u_5JYxU= diff --git a/desktop/src-tauri/icons/icon.ico b/desktop/src-tauri/icons/icon.ico deleted file mode 100644 index 4321a7a7d46a253c20a5c4e19c5f813cd2cb109c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22462 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

40!&VOb3N*b* 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 - &self, - args: &[&str], - ) -> crate::commands::core::CommandResult { - let cli = crate::commands::core::CliCommand::new(); - cli.execute(args).await - } - async fn execute_json( - &self, - args: &[&str], - ) -> crate::commands::core::CommandResult { - let cli = crate::commands::core::CliCommand::new(); - cli.execute_json(args).await - } - async fn execute_executable( - &self, - app: tauri::AppHandle, - verb: &str, - executable_id: &str, - args: &[&str], - params: Option>, - ) -> crate::commands::core::CommandResult { - let cli = crate::commands::core::CliCommand::new(); - cli.execute_executable(app, verb, executable_id, args, params) - .await - } -} - -pub fn cli_executor() -> CommandRunner { - let executor = Arc::new(FlowCLI); - CommandRunner::new(executor) -} diff --git a/desktop/src-tauri/src/commands/cache.rs b/desktop/src-tauri/src/commands/cache.rs deleted file mode 100644 index eea2a1bd..00000000 --- a/desktop/src-tauri/src/commands/cache.rs +++ /dev/null @@ -1,34 +0,0 @@ -use super::command_executor::CommandExecutor; -use super::core::CommandResult; - -pub struct CacheCommands { - executor: std::sync::Arc, -} - -impl CacheCommands { - pub fn new(executor: std::sync::Arc) -> Self { - Self { executor } - } - - pub async fn clear(&self) -> CommandResult { - self.executor.execute::<()>(&["cache", "clear"]).await - } - - pub async fn set(&self, key: &str, value: &str) -> CommandResult { - self.executor - .execute::<()>(&["cache", "set", key, value]) - .await - } - - pub async fn get(&self, key: &str) -> CommandResult { - self.executor.execute::<()>(&["cache", "get", key]).await - } - - pub async fn remove(&self, key: &str) -> CommandResult { - self.executor.execute::<()>(&["cache", "remove", key]).await - } - - pub async fn list(&self) -> CommandResult> { - self.executor.execute_json(&["cache", "list"]).await - } -} diff --git a/desktop/src-tauri/src/commands/command_executor.rs b/desktop/src-tauri/src/commands/command_executor.rs deleted file mode 100644 index 754f0f1f..00000000 --- a/desktop/src-tauri/src/commands/command_executor.rs +++ /dev/null @@ -1,17 +0,0 @@ -use crate::commands::core::CommandResult; -use async_trait::async_trait; -use serde::de::DeserializeOwned; - -#[async_trait] -pub trait CommandExecutor: Send + Sync { - async fn execute(&self, args: &[&str]) -> CommandResult; - async fn execute_json(&self, args: &[&str]) -> CommandResult; - async fn execute_executable( - &self, - app: tauri::AppHandle, - verb: &str, - executable_id: &str, - args: &[&str], - params: Option>, - ) -> CommandResult; -} diff --git a/desktop/src-tauri/src/commands/config.rs b/desktop/src-tauri/src/commands/config.rs deleted file mode 100644 index bf62a71a..00000000 --- a/desktop/src-tauri/src/commands/config.rs +++ /dev/null @@ -1,61 +0,0 @@ -use super::command_executor::CommandExecutor; -use super::core::CommandResult; -use crate::types::generated::config::Config; - -pub struct ConfigCommands { - executor: std::sync::Arc, -} - -impl ConfigCommands { - pub fn new(executor: std::sync::Arc) -> Self { - Self { executor } - } - - pub async fn get(&self) -> CommandResult { - self.executor.execute_json(&["config", "get"]).await - } - - pub async fn set_theme(&self, theme: &str) -> CommandResult { - self.executor - .execute::<()>(&["config", "set", "theme", theme]) - .await - } - - pub async fn set_workspace_mode(&self, mode: &str) -> CommandResult { - self.executor - .execute::<()>(&["config", "set", "workspace-mode", mode]) - .await - } - - pub async fn set_log_mode(&self, mode: &str) -> CommandResult { - self.executor - .execute::<()>(&["config", "set", "log-mode", mode]) - .await - } - - pub async fn set_namespace(&self, namespace: &str) -> CommandResult { - let namespace = if namespace.is_empty() { - "\"\"" - } else { - namespace - }; - self.executor - .execute::<()>(&["config", "set", "namespace", namespace]) - .await - } - - pub async fn set_timeout(&self, timeout: &str) -> CommandResult { - let timeout = if timeout.is_empty() { - "0" - } else { - timeout - }; - self.executor - .execute::<()>(&["config", "set", "timeout", timeout]) - .await - } - - pub async fn reset(&self) -> CommandResult { - self.executor.execute::<()>(&["config", "reset"]).await - } -} diff --git a/desktop/src-tauri/src/commands/core.rs b/desktop/src-tauri/src/commands/core.rs deleted file mode 100644 index 30c27f19..00000000 --- a/desktop/src-tauri/src/commands/core.rs +++ /dev/null @@ -1,401 +0,0 @@ -use crate::commands::shell::Shell; -use log::{debug, info}; -use serde::Deserialize; -use std::process::{Command, Stdio}; -use std::{env, fmt}; -use tauri::Emitter; -use tokio::io::{AsyncBufReadExt, BufReader}; -use tokio::process::Command as TokioCommand; - -#[derive(Debug, Clone)] -pub struct CliConfig { - pub flow_binary_path: String, - pub dev_mode: bool, -} - -impl CliConfig { - pub fn new() -> Self { - let dev_mode = Self::is_dev_mode(); - let flow_binary_path = Self::resolve_binary_path(dev_mode); - - Self { - flow_binary_path, - dev_mode, - } - } - - fn is_dev_mode() -> bool { - cfg!(debug_assertions) - || env::var("TAURI_DEV").is_ok() - || env::var("DEV_MODE").map(|v| v == "true").unwrap_or(false) - } - - fn resolve_binary_path(dev_mode: bool) -> String { - if dev_mode { - if let Ok(custom_path) = env::var("FLOW_BINARY_PATH") { - info!("Using custom flow binary path: {}", custom_path); - return custom_path; - } - } - - // Default to system flow binary - "flow".to_string() - } - - pub fn flow_binary(&self) -> &str { - &self.flow_binary_path - } -} - -impl Default for CliConfig { - fn default() -> Self { - Self::new() - } -} - -#[derive(Debug)] -pub enum CommandError { - ExecutionError(String), - ParseError { - message: String, - command: String, - output: String, - }, - NonZeroExit(String, i32, String), -} - -impl fmt::Display for CommandError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - CommandError::ExecutionError(e) => write!(f, "Failed to execute command: {}", e), - CommandError::ParseError { - message, - command, - output, - } => { - write!( - f, - "Failed to parse command output for '{}': {}\nOutput: {}", - command, message, output - ) - } - CommandError::NonZeroExit(command, code, output) => { - write!( - f, - "Command '{}' returned non-zero exit code: {}\nOutput: {}", - command, code, output - ) - } - } - } -} - -impl std::error::Error for CommandError {} - -pub type CommandResult = std::result::Result; - -pub struct CliCommand { - config: CliConfig, - shell: Shell, -} - -impl CliCommand { - pub fn new() -> Self { - Self { - config: CliConfig::new(), - shell: Shell::detect(), - } - } - - pub fn with_config(config: CliConfig) -> Self { - Self { - config, - shell: Shell::detect(), - } - } - - pub async fn check_binary(&self) -> CommandResult<()> { - use tokio::process::Command; - - let flow_binary = self.config.flow_binary(); - let mut cmd = Command::new(flow_binary); - cmd.arg("--version"); - - match cmd.output().await { - Ok(output) => { - if output.status.success() { - if !self.config.dev_mode { - let version = String::from_utf8_lossy(&output.stdout); - info!("Using flow binary version: {}", version); - } - info!( - "flow binary '{}' found and version check passed", - flow_binary - ); - Ok(()) - } else { - info!( - "flow binary '{}' found but failed version check", - flow_binary - ); - Err(CommandError::ExecutionError(format!( - "flow binary '{}' found but failed version check", - flow_binary - ))) - } - } - Err(e) => { - info!( - "flow binary '{}' not found or not executable: {}", - flow_binary, e - ); - Err(CommandError::ExecutionError(format!( - "flow binary '{}' not found or not executable: {}", - flow_binary, e - ))) - } - } - } - - pub fn command_string(&self, flow_args: &[&str]) -> String { - let flow_cmd = format!("{} {}", self.config.flow_binary(), flow_args.join(" ")); - - let full_command = if let Some(profile_cmd) = self.shell.source_profile_command() { - format!("{} && {}", profile_cmd, flow_cmd) - } else { - flow_cmd - }; - - full_command - } - - pub fn build(&self, flow_args: &[&str]) -> Command { - let flow_cmd = self.command_string(&flow_args); - let (shell_executable, shell_args) = self.shell.command_args(&flow_cmd); - - let mut cmd = Command::new(shell_executable); - cmd.args(shell_args); - cmd.stdout(Stdio::piped()).stderr(Stdio::piped()); - - if self.config.dev_mode { - info!("Executing via shell {:?}: {}", self.shell, flow_cmd); - } - - cmd - } - - pub async fn execute(&self, args: &[&str]) -> CommandResult { - let mut cmd = self.build(args); - - let output = cmd - .output() - .map_err(|e| CommandError::ExecutionError(e.to_string()))?; - - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - let stdout = String::from_utf8_lossy(&output.stdout); - return Err(CommandError::NonZeroExit( - format!("{:?}", args), - output.status.code().unwrap_or(-1), - format!("stdout: {}\nstderr: {}", stdout, stderr), - )); - } - - let stdout = String::from_utf8(output.stdout).map_err(|e| CommandError::ParseError { - message: e.to_string(), - command: format!("{:?}", args), - output: String::new(), - })?; - - Ok(stdout) - } - - pub async fn execute_json Deserialize<'de>>( - &self, - args: &[&str], - ) -> CommandResult { - let mut args = args.to_vec(); - if !args.contains(&"--output") { - args.push("--output"); - args.push("json"); - } - - let mut cmd = self.build(args.as_slice()); - - let output = cmd - .output() - .map_err(|e| CommandError::ExecutionError(e.to_string()))?; - - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - let stdout = String::from_utf8_lossy(&output.stdout); - return Err(CommandError::NonZeroExit( - format!("{:?}", args), - output.status.code().unwrap_or(-1), - format!("stdout: {}\nstderr: {}", stdout, stderr), - )); - } - - let stdout = String::from_utf8(output.stdout).map_err(|e| CommandError::ParseError { - message: e.to_string(), - command: format!("{:?}", args), - output: String::new(), - })?; - - serde_json::from_str(&stdout).map_err(|e| CommandError::ParseError { - message: e.to_string(), - command: format!("{:?}", args), - output: stdout.clone(), - }) - } - - pub async fn execute_executable Deserialize<'de>>( - &self, - app: tauri::AppHandle, - verb: &str, - executable_id: &str, - args: &[&str], - params: Option>, - ) -> CommandResult { - let mut cmd_args: Vec = vec![verb.to_string(), executable_id.to_string()]; - cmd_args.extend(args.iter().map(|&s| s.to_string())); - - // Add parameters - if let Some(params) = params { - for (key, value) in params { - cmd_args.push("--param".to_string()); - cmd_args.push(format!("{}={}", key, value)); - } - } - - let cmd_args_str: Vec<&str> = cmd_args.iter().map(|s| s.as_str()).collect(); - let flow_cmd = self.command_string(&cmd_args_str); - - let mut cmd = if flow_cmd.contains(" && ") { - // Handle shell sourcing case: "source ~/.bashrc && flow exec ..." - let mut shell_cmd = TokioCommand::new("sh"); - shell_cmd.arg("-c").arg(&flow_cmd); - shell_cmd - } else { - // Handle simple case: "flow exec ..." - let parts: Vec<&str> = flow_cmd.split_whitespace().collect(); - if parts.is_empty() { - return Err(CommandError::ExecutionError("Empty command".to_string())); - } - let mut cmd = TokioCommand::new(parts[0]); - if parts.len() > 1 { - cmd.args(&parts[1..]); - } - cmd - }; - cmd.stdout(Stdio::piped()).stderr(Stdio::piped()); - - let dev_mode = self.config.dev_mode; - let flow_cmd_clone = flow_cmd.clone(); - if dev_mode { - info!("Executing with {:?}", &flow_cmd_clone); - } - - let mut child = cmd - .spawn() - .map_err(|e| CommandError::ExecutionError(format!("Failed to spawn command: {}", e)))?; - - let stdout = child - .stdout - .take() - .ok_or_else(|| CommandError::ExecutionError("Failed to capture stdout".to_string()))?; - let stderr = child - .stderr - .take() - .ok_or_else(|| CommandError::ExecutionError("Failed to capture stderr".to_string()))?; - - let app_stdout = app.clone(); - let app_stderr = app.clone(); - - // Handle stdout - let stdout_handle = tokio::spawn(async move { - let reader = BufReader::new(stdout); - let mut lines = reader.lines(); - - while let Some(line) = lines.next_line().await.unwrap_or(None) { - if dev_mode { - debug!("stdout: {}", line); - } - - let _ = app_stdout.emit( - "command-output", - serde_json::json!({ - "type": "stdout", - "line": line, - "timestamp": std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_millis() - }), - ); - } - }); - - // Handle stderr - let stderr_handle = tokio::spawn(async move { - let reader = BufReader::new(stderr); - let mut lines = reader.lines(); - - while let Some(line) = lines.next_line().await.unwrap_or(None) { - if dev_mode { - debug!("stderr: {}", line); - } - - let _ = app_stderr.emit( - "command-output", - serde_json::json!({ - "type": "stderr", - "line": line, - "timestamp": std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_millis() - }), - ); - } - }); - - let (stdout_result, stderr_result) = tokio::join!(stdout_handle, stderr_handle); - stdout_result.map_err(|e| CommandError::ExecutionError(format!("Stdout error: {}", e)))?; - stderr_result.map_err(|e| CommandError::ExecutionError(format!("Stderr error: {}", e)))?; - - // Wait for the process to complete - let status = child - .wait() - .await - .map_err(|e| CommandError::ExecutionError(e.to_string()))?; - - let success = status.success(); - let exit_code = status.code(); - - if dev_mode { - debug!("Command completed with exit code: {:?}", exit_code); - } - - // Emit completion event - let _ = app.emit( - "command-complete", - serde_json::json!({ - "success": success, - "exit_code": exit_code, - "command": flow_cmd_clone - }), - ); - - if !success { - return Err(CommandError::NonZeroExit( - flow_cmd_clone, - exit_code.unwrap_or(-1), - "Command failed - check output for details".to_string(), - )); - } - - Ok(serde_json::from_str::("null") - .map_err(|e| CommandError::ExecutionError(e.to_string()))?) - } -} diff --git a/desktop/src-tauri/src/commands/executable.rs b/desktop/src-tauri/src/commands/executable.rs deleted file mode 100644 index be6e1697..00000000 --- a/desktop/src-tauri/src/commands/executable.rs +++ /dev/null @@ -1,78 +0,0 @@ -use crate::commands::command_executor::CommandExecutor; -use crate::commands::core::{CommandError, CommandResult}; -use crate::types::enriched::Executable; -use serde::Deserialize; - -#[derive(Deserialize, Debug)] -struct ExecutableResponse { - executables: Vec, -} - -pub struct ExecutableCommands { - executor: std::sync::Arc, -} - -impl ExecutableCommands { - pub fn new(executor: std::sync::Arc) -> Self { - Self { executor } - } - - pub async fn sync(&self) -> CommandResult { - self.executor.execute::<()>(&["sync"]).await - } - - pub async fn list( - &self, - workspace: Option<&str>, - namespace: Option<&str>, - ) -> CommandResult> { - let mut args = vec!["browse", "--list"]; - - if let Some(ws) = workspace { - args.extend_from_slice(&["--workspace", ws]); - } - - if let Some(ns) = namespace { - args.extend_from_slice(&["--namespace", ns]); - } else { - args.push("--all"); - } - - let response: ExecutableResponse = self.executor.execute_json(&args).await?; - Ok(response.executables) - } - - pub async fn get(&self, exec_ref: &str) -> CommandResult { - let split_ref: Vec<&str> = exec_ref.split(" ").collect(); - match split_ref.len() { - 1 => { - // Just a verb - self.executor.execute_json(&["browse", split_ref[0]]).await - } - 2 => { - // Verb and ID - self.executor - .execute_json(&["browse", split_ref[0], split_ref[1]]) - .await - } - _ => Err(CommandError::ParseError { - message: format!("Invalid executable reference format: {}", exec_ref), - command: format!("{:?}", exec_ref), - output: String::new(), - }), - } - } - - pub async fn execute Deserialize<'de> + Send>( - &self, - app: tauri::AppHandle, - verb: &str, - executable_id: &str, - args: &[&str], - params: Option>, - ) -> CommandResult { - self.executor - .execute_executable(app, verb, executable_id, args, params) - .await - } -} diff --git a/desktop/src-tauri/src/commands/mod.rs b/desktop/src-tauri/src/commands/mod.rs deleted file mode 100644 index 8e2bc0ad..00000000 --- a/desktop/src-tauri/src/commands/mod.rs +++ /dev/null @@ -1,28 +0,0 @@ -pub mod cache; -pub mod command_executor; -pub mod config; -pub mod core; -pub mod executable; -pub mod shell; -pub mod vault; -pub mod workspace; - -pub struct CommandRunner { - pub config: config::ConfigCommands, - pub workspace: workspace::WorkspaceCommands, - pub vault: vault::VaultCommands, - pub cache: cache::CacheCommands, - pub executable: executable::ExecutableCommands, -} - -impl CommandRunner { - pub fn new(executor: std::sync::Arc) -> Self { - Self { - config: config::ConfigCommands::new(executor.clone()), - workspace: workspace::WorkspaceCommands::new(executor.clone()), - vault: vault::VaultCommands::new(executor.clone()), - cache: cache::CacheCommands::new(executor.clone()), - executable: executable::ExecutableCommands::new(executor.clone()), - } - } -} diff --git a/desktop/src-tauri/src/commands/shell.rs b/desktop/src-tauri/src/commands/shell.rs deleted file mode 100644 index 72c59fea..00000000 --- a/desktop/src-tauri/src/commands/shell.rs +++ /dev/null @@ -1,69 +0,0 @@ -use std::env; - -#[derive(Debug, Clone)] -pub enum Shell { - Bash, - Zsh, - Fish, - Unknown(String), -} - -impl Shell { - pub fn detect() -> Self { - if let Ok(shell_path) = env::var("SHELL") { - return Self::from_path(&shell_path); - } - - Shell::Bash - } - - fn from_path(path: &str) -> Self { - let shell_name = std::path::Path::new(path) - .file_name() - .and_then(|name| name.to_str()) - .unwrap_or(path); - - match shell_name { - "bash" => Shell::Bash, - "zsh" => Shell::Zsh, - "fish" => Shell::Fish, - _ => Shell::Unknown(path.to_string()), - } - } - - pub fn command_args(&self, command: &str) -> (String, Vec) { - match self { - Shell::Bash | Shell::Zsh | Shell::Fish => ( - self.executable(), - vec!["-c".to_string(), command.to_string()], - ), - Shell::Unknown(path) => { - // Assume POSIX-like behavior - (path.clone(), vec!["-c".to_string(), command.to_string()]) - } - } - } - - pub fn executable(&self) -> String { - match self { - Shell::Bash => "bash".to_string(), - Shell::Zsh => "zsh".to_string(), - Shell::Fish => "fish".to_string(), - Shell::Unknown(path) => path.clone(), - } - } - - pub fn source_profile_command(&self) -> Option { - match self { - Shell::Bash => Some( - "source ~/.bashrc 2>/dev/null || source ~/.bash_profile 2>/dev/null || true" - .to_string(), - ), - Shell::Zsh => Some("source ~/.zshrc 2>/dev/null || true".to_string()), - Shell::Fish => { - Some("source ~/.config/fish/config.fish 2>/dev/null || true".to_string()) - } - Shell::Unknown(_) => None, - } - } -} diff --git a/desktop/src-tauri/src/commands/vault.rs b/desktop/src-tauri/src/commands/vault.rs deleted file mode 100644 index 124b00ad..00000000 --- a/desktop/src-tauri/src/commands/vault.rs +++ /dev/null @@ -1,38 +0,0 @@ -use super::command_executor::CommandExecutor; -use super::core::CommandResult; - -pub struct VaultCommands { - executor: std::sync::Arc, -} - -impl VaultCommands { - pub fn new(executor: std::sync::Arc) -> Self { - Self { executor } - } - - pub async fn create(&self, name: &str) -> CommandResult { - self.executor - .execute::<()>(&["vault", "create", name]) - .await - } - - pub async fn list(&self) -> CommandResult> { - self.executor.execute_json(&["vault", "list"]).await - } - - pub async fn get(&self, name: &str) -> CommandResult { - self.executor.execute::<()>(&["vault", "get", name]).await - } - - pub async fn switch(&self, name: &str) -> CommandResult { - self.executor - .execute::<()>(&["vault", "switch", name]) - .await - } - - pub async fn remove(&self, name: &str) -> CommandResult { - self.executor - .execute::<()>(&["vault", "remove", name]) - .await - } -} diff --git a/desktop/src-tauri/src/commands/workspace.rs b/desktop/src-tauri/src/commands/workspace.rs deleted file mode 100644 index 9c298ba5..00000000 --- a/desktop/src-tauri/src/commands/workspace.rs +++ /dev/null @@ -1,55 +0,0 @@ -use super::command_executor::CommandExecutor; -use super::core::CommandResult; -use crate::types::enriched::Workspace; -use serde::Deserialize; - -#[derive(Deserialize, Debug)] -struct WorkspaceResponse { - workspaces: Vec, -} - -pub struct WorkspaceCommands { - executor: std::sync::Arc, -} - -impl WorkspaceCommands { - pub fn new(executor: std::sync::Arc) -> Self { - Self { executor } - } - - pub async fn list(&self) -> CommandResult> { - let response: WorkspaceResponse = - self.executor.execute_json(&["workspace", "list"]).await?; - Ok(response.workspaces) - } - - pub async fn get(&self, workspace: &str) -> CommandResult { - self.executor - .execute_json(&["workspace", "get", workspace]) - .await - } - - pub async fn add(&self, name: &str, path: &str, set_current: bool) -> CommandResult { - let mut args = vec!["workspace", "add", name, path]; - if set_current { - args.push("--set"); - } - let args_ref: Vec<&str> = args.iter().map(|s| *s).collect(); - self.executor.execute::<()>(&args_ref).await - } - - pub async fn switch(&self, name: &str, fixed: bool) -> CommandResult { - let mut args = vec!["workspace", "switch", name]; - if fixed { - args.push("--fixed"); - } - let args_ref: Vec<&str> = args.iter().map(|s| *s).collect(); - self.executor.execute::<()>(&args_ref).await - } - - pub async fn remove(&self, name: &str) -> CommandResult { - self.executor - .execute::<()>(&["workspace", "remove", name]) - .await - } -} diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs deleted file mode 100644 index 2983439f..00000000 --- a/desktop/src-tauri/src/lib.rs +++ /dev/null @@ -1,174 +0,0 @@ -use std::result::Result; -use tauri::Manager; - -pub mod cli; -pub mod commands; -pub mod types; - -pub use types::{enriched, generated}; - -#[tauri::command] -async fn check_flow_binary() -> Result<(), String> { - let cli = commands::core::CliCommand::new(); - cli.check_binary().await.map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn get_config() -> Result { - let runner = cli::cli_executor(); - runner.config.get().await.map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn set_config_theme(theme: String) -> Result { - let runner = cli::cli_executor(); - runner - .config - .set_theme(&theme) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn set_config_workspace_mode(mode: String) -> Result { - let runner = cli::cli_executor(); - runner - .config - .set_workspace_mode(&mode) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn set_config_log_mode(mode: String) -> Result { - let runner = cli::cli_executor(); - runner - .config - .set_log_mode(&mode) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn set_config_namespace(namespace: String) -> Result { - let runner = cli::cli_executor(); - runner - .config - .set_namespace(&namespace) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn set_config_timeout(timeout: String) -> Result { - let runner = cli::cli_executor(); - runner - .config - .set_timeout(&timeout) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn get_workspace(name: String) -> Result { - let runner = cli::cli_executor(); - runner.workspace.get(&name).await.map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn set_workspace(name: String, fixed: bool) -> Result { - let runner = cli::cli_executor(); - runner - .workspace - .switch(&name, fixed) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn list_workspaces() -> Result, String> { - let runner = cli::cli_executor(); - runner.workspace.list().await.map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn get_executable(executable_ref: String) -> Result { - let runner = cli::cli_executor(); - runner - .executable - .get(&executable_ref) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn list_executables( - workspace: Option, - namespace: Option, -) -> Result, String> { - let runner = cli::cli_executor(); - runner - .executable - .list(workspace.as_deref(), namespace.as_deref()) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn sync() -> Result { - let runner = cli::cli_executor(); - runner.executable.sync().await.map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn execute( - app: tauri::AppHandle, - verb: String, - executable_id: String, - args: Vec, - params: Option>, -) -> Result<(), String> { - let runner = cli::cli_executor(); - let args: Vec<&str> = args.iter().map(|s| s.as_str()).collect(); - runner - .executable - .execute::<()>(app, &verb, &executable_id, &args, params) - .await - .map_err(|e| e.to_string()) -} - -#[tauri::command] -async fn reload_window(app: tauri::AppHandle) -> Result<(), String> { - app.get_webview_window("main") - .ok_or_else(|| "Main window not found".to_string())? - .reload() - .map_err(|e| e.to_string()) -} - -#[cfg_attr(mobile, tauri::mobile_entry_point)] -pub fn run() { - tauri::Builder::default() - .plugin(tauri_plugin_log::Builder::new().build()) - .plugin(tauri_plugin_shell::init()) - .plugin(tauri_plugin_opener::init()) - .setup(|_app| Ok(())) - .invoke_handler(tauri::generate_handler![ - check_flow_binary, - sync, - execute, - list_executables, - get_executable, - get_workspace, - set_workspace, - list_workspaces, - get_config, - reload_window, - set_config_theme, - set_config_workspace_mode, - set_config_log_mode, - set_config_namespace, - set_config_timeout, - ]) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs deleted file mode 100644 index bea3c230..00000000 --- a/desktop/src-tauri/src/main.rs +++ /dev/null @@ -1,6 +0,0 @@ -// Prevents additional console window on Windows in release, DO NOT REMOVE!! -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -fn main() { - desktop_lib::run() -} diff --git a/desktop/src-tauri/src/types/enriched.rs b/desktop/src-tauri/src/types/enriched.rs deleted file mode 100644 index 1850c749..00000000 --- a/desktop/src-tauri/src/types/enriched.rs +++ /dev/null @@ -1,92 +0,0 @@ -use crate::types::generated::flowfile::Executable as GeneratedExecutable; -use crate::types::generated::workspace::Workspace as GeneratedWorkspace; - -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] -pub struct Workspace { - #[serde(flatten)] - pub base: GeneratedWorkspace, - pub name: String, - pub path: String, - #[serde(rename = "fullDescription")] - pub full_description: String, -} - -impl Workspace { - pub fn new( - base: GeneratedWorkspace, - name: String, - path: String, - full_description: String, - ) -> Self { - Self { - base, - name, - path, - full_description, - } - } -} - -impl std::ops::Deref for Workspace { - type Target = GeneratedWorkspace; - - fn deref(&self) -> &Self::Target { - &self.base - } -} - -impl std::ops::DerefMut for Workspace { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.base - } -} - -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] -pub struct Executable { - #[serde(flatten)] - pub base: GeneratedExecutable, - pub id: String, - #[serde(rename = "ref")] - pub ref_: String, - pub namespace: Option, - pub workspace: String, - pub flowfile: String, - #[serde(rename = "fullDescription")] - pub full_description: String, -} - -impl Executable { - pub fn new( - base: GeneratedExecutable, - id: String, - ref_: String, - namespace: Option, - workspace: String, - flowfile: String, - full_description: String, - ) -> Self { - Self { - base, - id, - ref_, - namespace, - workspace, - flowfile, - full_description, - } - } -} - -impl std::ops::Deref for Executable { - type Target = GeneratedExecutable; - - fn deref(&self) -> &Self::Target { - &self.base - } -} - -impl std::ops::DerefMut for Executable { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.base - } -} diff --git a/desktop/src-tauri/src/types/generated/config.rs b/desktop/src-tauri/src/types/generated/config.rs deleted file mode 100644 index 820c79b1..00000000 --- a/desktop/src-tauri/src/types/generated/config.rs +++ /dev/null @@ -1,1138 +0,0 @@ -#![allow(clippy::redundant_closure_call)] -#![allow(clippy::needless_lifetimes)] -#![allow(clippy::match_single_binding)] -#![allow(clippy::clone_on_copy)] - -#[doc = r" Error types."] -pub mod error { - #[doc = r" Error from a `TryFrom` or `FromStr` implementation."] - pub struct ConversionError(::std::borrow::Cow<'static, str>); - impl ::std::error::Error for ConversionError {} - impl ::std::fmt::Display for ConversionError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { - ::std::fmt::Display::fmt(&self.0, f) - } - } - impl ::std::fmt::Debug for ConversionError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { - ::std::fmt::Debug::fmt(&self.0, f) - } - } - impl From<&'static str> for ConversionError { - fn from(value: &'static str) -> Self { - Self(value.into()) - } - } - impl From for ConversionError { - fn from(value: String) -> Self { - Self(value.into()) - } - } -} -#[doc = "The color palette for the interactive UI.\nThe colors can be either an ANSI 16, ANSI 256, or TrueColor (hex) value.\nIf unset, the default color for the current theme will be used.\n"] -#[doc = r""] -#[doc = r"

JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The color palette for the interactive UI.\\nThe colors can be either an ANSI 16, ANSI 256, or TrueColor (hex) value.\\nIf unset, the default color for the current theme will be used.\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"black\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"body\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"border\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"codeStyle\": {"] -#[doc = " \"description\": \"The style of the code block. For example, `monokai`, `dracula`, `github`, etc.\\nSee [chroma styles](https://github.com/alecthomas/chroma/tree/master/styles) for available style names.\\n\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"emphasis\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"error\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"gray\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"info\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"primary\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"secondary\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"success\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"tertiary\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"warning\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"white\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ColorPalette { - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub black: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub body: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub border: ::std::option::Option<::std::string::String>, - #[doc = "The style of the code block. For example, `monokai`, `dracula`, `github`, etc.\nSee [chroma styles](https://github.com/alecthomas/chroma/tree/master/styles) for available style names.\n"] - #[serde( - rename = "codeStyle", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub code_style: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub emphasis: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub error: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub gray: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub info: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub primary: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub secondary: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub success: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub tertiary: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub warning: ::std::option::Option<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub white: ::std::option::Option<::std::string::String>, -} -impl ::std::convert::From<&ColorPalette> for ColorPalette { - fn from(value: &ColorPalette) -> Self { - value.clone() - } -} -impl ::std::default::Default for ColorPalette { - fn default() -> Self { - Self { - black: Default::default(), - body: Default::default(), - border: Default::default(), - code_style: Default::default(), - emphasis: Default::default(), - error: Default::default(), - gray: Default::default(), - info: Default::default(), - primary: Default::default(), - secondary: Default::default(), - success: Default::default(), - tertiary: Default::default(), - warning: Default::default(), - white: Default::default(), - } - } -} -impl ColorPalette { - pub fn builder() -> builder::ColorPalette { - Default::default() - } -} -#[doc = "User Configuration for the Flow CLI.\nIncludes configurations for workspaces, templates, I/O, and other settings for the CLI.\n\nIt is read from the user's flow config directory:\n- **MacOS**: `$HOME/Library/Application Support/flow`\n- **Linux**: `$HOME/.config/flow`\n- **Windows**: `%APPDATA%\\flow`\n\nAlternatively, a custom path can be set using the `FLOW_CONFIG_PATH` environment variable.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"$id\": \"https://flowexec.io/schemas/config_schema.json\","] -#[doc = " \"title\": \"Config\","] -#[doc = " \"description\": \"User Configuration for the Flow CLI.\\nIncludes configurations for workspaces, templates, I/O, and other settings for the CLI.\\n\\nIt is read from the user's flow config directory:\\n- **MacOS**: `$HOME/Library/Application Support/flow`\\n- **Linux**: `$HOME/.config/flow`\\n- **Windows**: `%APPDATA%\\\\flow`\\n\\nAlternatively, a custom path can be set using the `FLOW_CONFIG_PATH` environment variable.\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"currentWorkspace\","] -#[doc = " \"workspaces\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"colorOverride\": {"] -#[doc = " \"description\": \"Override the default color palette for the interactive UI.\\nThis can be used to customize the colors of the UI.\\n\","] -#[doc = " \"$ref\": \"#/definitions/ColorPalette\""] -#[doc = " },"] -#[doc = " \"currentNamespace\": {"] -#[doc = " \"description\": \"The name of the current namespace.\\n\\nNamespaces are used to reference executables in the CLI using the format `workspace:namespace/name`.\\nIf the namespace is not set, only executables defined without a namespace will be discovered.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"currentVault\": {"] -#[doc = " \"description\": \"The name of the current vault. This should match a key in the `vaults` map.\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"currentWorkspace\": {"] -#[doc = " \"description\": \"The name of the current workspace. This should match a key in the `workspaces` or `remoteWorkspaces` map.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"defaultLogMode\": {"] -#[doc = " \"description\": \"The default log mode to use when running executables.\\nThis can either be `hidden`, `json`, `logfmt` or `text`\\n\\n`hidden` will not display any logs.\\n`json` will display logs in JSON format.\\n`logfmt` will display logs with a log level, timestamp, and message.\\n`text` will just display the log message.\\n\","] -#[doc = " \"default\": \"logfmt\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"defaultTimeout\": {"] -#[doc = " \"description\": \"The default timeout to use when running executables.\\nThis should be a valid duration string.\\n\","] -#[doc = " \"default\": \"30m\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"interactive\": {"] -#[doc = " \"$ref\": \"#/definitions/Interactive\""] -#[doc = " },"] -#[doc = " \"templates\": {"] -#[doc = " \"description\": \"A map of flowfile template names to their paths.\","] -#[doc = " \"default\": {},"] -#[doc = " \"type\": \"object\","] -#[doc = " \"additionalProperties\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"theme\": {"] -#[doc = " \"description\": \"The theme of the interactive UI.\","] -#[doc = " \"default\": \"default\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"default\","] -#[doc = " \"everforest\","] -#[doc = " \"dark\","] -#[doc = " \"light\","] -#[doc = " \"dracula\","] -#[doc = " \"tokyo-night\""] -#[doc = " ]"] -#[doc = " },"] -#[doc = " \"vaults\": {"] -#[doc = " \"description\": \"A map of vault names to their paths. The path should be a valid absolute path to the vault file created by flow.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"additionalProperties\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"workspaceMode\": {"] -#[doc = " \"description\": \"The mode of the workspace. This can be either `fixed` or `dynamic`.\\nIn `fixed` mode, the current workspace used at runtime is always the one set in the currentWorkspace config field.\\nIn `dynamic` mode, the current workspace used at runtime is determined by the current directory.\\nIf the current directory is within a workspace, that workspace is used.\\n\","] -#[doc = " \"default\": \"dynamic\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"fixed\","] -#[doc = " \"dynamic\""] -#[doc = " ]"] -#[doc = " },"] -#[doc = " \"workspaces\": {"] -#[doc = " \"description\": \"Map of workspace names to their paths. The path should be a valid absolute path to the workspace directory.\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"additionalProperties\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct Config { - #[doc = "Override the default color palette for the interactive UI.\nThis can be used to customize the colors of the UI.\n"] - #[serde( - rename = "colorOverride", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub color_override: ::std::option::Option, - #[doc = "The name of the current namespace.\n\nNamespaces are used to reference executables in the CLI using the format `workspace:namespace/name`.\nIf the namespace is not set, only executables defined without a namespace will be discovered.\n"] - #[serde(rename = "currentNamespace", default)] - pub current_namespace: ::std::string::String, - #[doc = "The name of the current vault. This should match a key in the `vaults` map."] - #[serde( - rename = "currentVault", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub current_vault: ::std::option::Option<::std::string::String>, - #[doc = "The name of the current workspace. This should match a key in the `workspaces` or `remoteWorkspaces` map."] - #[serde(rename = "currentWorkspace")] - pub current_workspace: ::std::string::String, - #[doc = "The default log mode to use when running executables.\nThis can either be `hidden`, `json`, `logfmt` or `text`\n\n`hidden` will not display any logs.\n`json` will display logs in JSON format.\n`logfmt` will display logs with a log level, timestamp, and message.\n`text` will just display the log message.\n"] - #[serde( - rename = "defaultLogMode", - default = "defaults::config_default_log_mode" - )] - pub default_log_mode: ::std::string::String, - #[doc = "The default timeout to use when running executables.\nThis should be a valid duration string.\n"] - #[serde( - rename = "defaultTimeout", - default = "defaults::config_default_timeout" - )] - pub default_timeout: ::std::string::String, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub interactive: ::std::option::Option, - #[doc = "A map of flowfile template names to their paths."] - #[serde( - default, - skip_serializing_if = ":: std :: collections :: HashMap::is_empty" - )] - pub templates: ::std::collections::HashMap<::std::string::String, ::std::string::String>, - #[doc = "The theme of the interactive UI."] - #[serde(default = "defaults::config_theme")] - pub theme: ConfigTheme, - #[doc = "A map of vault names to their paths. The path should be a valid absolute path to the vault file created by flow."] - #[serde( - default, - skip_serializing_if = ":: std :: collections :: HashMap::is_empty" - )] - pub vaults: ::std::collections::HashMap<::std::string::String, ::std::string::String>, - #[doc = "The mode of the workspace. This can be either `fixed` or `dynamic`.\nIn `fixed` mode, the current workspace used at runtime is always the one set in the currentWorkspace config field.\nIn `dynamic` mode, the current workspace used at runtime is determined by the current directory.\nIf the current directory is within a workspace, that workspace is used.\n"] - #[serde(rename = "workspaceMode", default = "defaults::config_workspace_mode")] - pub workspace_mode: ConfigWorkspaceMode, - #[doc = "Map of workspace names to their paths. The path should be a valid absolute path to the workspace directory.\n"] - pub workspaces: ::std::collections::HashMap<::std::string::String, ::std::string::String>, -} -impl ::std::convert::From<&Config> for Config { - fn from(value: &Config) -> Self { - value.clone() - } -} -impl Config { - pub fn builder() -> builder::Config { - Default::default() - } -} -#[doc = "The theme of the interactive UI."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The theme of the interactive UI.\","] -#[doc = " \"default\": \"default\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"default\","] -#[doc = " \"everforest\","] -#[doc = " \"dark\","] -#[doc = " \"light\","] -#[doc = " \"dracula\","] -#[doc = " \"tokyo-night\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum ConfigTheme { - #[serde(rename = "default")] - Default, - #[serde(rename = "everforest")] - Everforest, - #[serde(rename = "dark")] - Dark, - #[serde(rename = "light")] - Light, - #[serde(rename = "dracula")] - Dracula, - #[serde(rename = "tokyo-night")] - TokyoNight, -} -impl ::std::convert::From<&Self> for ConfigTheme { - fn from(value: &ConfigTheme) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for ConfigTheme { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Default => f.write_str("default"), - Self::Everforest => f.write_str("everforest"), - Self::Dark => f.write_str("dark"), - Self::Light => f.write_str("light"), - Self::Dracula => f.write_str("dracula"), - Self::TokyoNight => f.write_str("tokyo-night"), - } - } -} -impl ::std::str::FromStr for ConfigTheme { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "default" => Ok(Self::Default), - "everforest" => Ok(Self::Everforest), - "dark" => Ok(Self::Dark), - "light" => Ok(Self::Light), - "dracula" => Ok(Self::Dracula), - "tokyo-night" => Ok(Self::TokyoNight), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for ConfigTheme { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for ConfigTheme { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for ConfigTheme { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for ConfigTheme { - fn default() -> Self { - ConfigTheme::Default - } -} -#[doc = "The mode of the workspace. This can be either `fixed` or `dynamic`.\nIn `fixed` mode, the current workspace used at runtime is always the one set in the currentWorkspace config field.\nIn `dynamic` mode, the current workspace used at runtime is determined by the current directory.\nIf the current directory is within a workspace, that workspace is used.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The mode of the workspace. This can be either `fixed` or `dynamic`.\\nIn `fixed` mode, the current workspace used at runtime is always the one set in the currentWorkspace config field.\\nIn `dynamic` mode, the current workspace used at runtime is determined by the current directory.\\nIf the current directory is within a workspace, that workspace is used.\\n\","] -#[doc = " \"default\": \"dynamic\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"fixed\","] -#[doc = " \"dynamic\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum ConfigWorkspaceMode { - #[serde(rename = "fixed")] - Fixed, - #[serde(rename = "dynamic")] - Dynamic, -} -impl ::std::convert::From<&Self> for ConfigWorkspaceMode { - fn from(value: &ConfigWorkspaceMode) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for ConfigWorkspaceMode { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Fixed => f.write_str("fixed"), - Self::Dynamic => f.write_str("dynamic"), - } - } -} -impl ::std::str::FromStr for ConfigWorkspaceMode { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "fixed" => Ok(Self::Fixed), - "dynamic" => Ok(Self::Dynamic), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for ConfigWorkspaceMode { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for ConfigWorkspaceMode { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for ConfigWorkspaceMode { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for ConfigWorkspaceMode { - fn default() -> Self { - ConfigWorkspaceMode::Dynamic - } -} -#[doc = "Configurations for the interactive UI."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Configurations for the interactive UI.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"enabled\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"enabled\": {"] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"notifyOnCompletion\": {"] -#[doc = " \"description\": \"Whether to send a desktop notification when a command completes.\","] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"soundOnCompletion\": {"] -#[doc = " \"description\": \"Whether to play a sound when a command completes.\","] -#[doc = " \"type\": \"boolean\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct Interactive { - pub enabled: bool, - #[doc = "Whether to send a desktop notification when a command completes."] - #[serde( - rename = "notifyOnCompletion", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub notify_on_completion: ::std::option::Option, - #[doc = "Whether to play a sound when a command completes."] - #[serde( - rename = "soundOnCompletion", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub sound_on_completion: ::std::option::Option, -} -impl ::std::convert::From<&Interactive> for Interactive { - fn from(value: &Interactive) -> Self { - value.clone() - } -} -impl Interactive { - pub fn builder() -> builder::Interactive { - Default::default() - } -} -#[doc = r" Types for composing complex structures."] -pub mod builder { - #[derive(Clone, Debug)] - pub struct ColorPalette { - black: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - body: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - border: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - code_style: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - emphasis: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - error: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - gray: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - info: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - primary: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - secondary: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - success: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - tertiary: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - warning: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - white: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - } - impl ::std::default::Default for ColorPalette { - fn default() -> Self { - Self { - black: Ok(Default::default()), - body: Ok(Default::default()), - border: Ok(Default::default()), - code_style: Ok(Default::default()), - emphasis: Ok(Default::default()), - error: Ok(Default::default()), - gray: Ok(Default::default()), - info: Ok(Default::default()), - primary: Ok(Default::default()), - secondary: Ok(Default::default()), - success: Ok(Default::default()), - tertiary: Ok(Default::default()), - warning: Ok(Default::default()), - white: Ok(Default::default()), - } - } - } - impl ColorPalette { - pub fn black(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.black = value - .try_into() - .map_err(|e| format!("error converting supplied value for black: {}", e)); - self - } - pub fn body(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.body = value - .try_into() - .map_err(|e| format!("error converting supplied value for body: {}", e)); - self - } - pub fn border(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.border = value - .try_into() - .map_err(|e| format!("error converting supplied value for border: {}", e)); - self - } - pub fn code_style(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.code_style = value - .try_into() - .map_err(|e| format!("error converting supplied value for code_style: {}", e)); - self - } - pub fn emphasis(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.emphasis = value - .try_into() - .map_err(|e| format!("error converting supplied value for emphasis: {}", e)); - self - } - pub fn error(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.error = value - .try_into() - .map_err(|e| format!("error converting supplied value for error: {}", e)); - self - } - pub fn gray(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.gray = value - .try_into() - .map_err(|e| format!("error converting supplied value for gray: {}", e)); - self - } - pub fn info(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.info = value - .try_into() - .map_err(|e| format!("error converting supplied value for info: {}", e)); - self - } - pub fn primary(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.primary = value - .try_into() - .map_err(|e| format!("error converting supplied value for primary: {}", e)); - self - } - pub fn secondary(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.secondary = value - .try_into() - .map_err(|e| format!("error converting supplied value for secondary: {}", e)); - self - } - pub fn success(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.success = value - .try_into() - .map_err(|e| format!("error converting supplied value for success: {}", e)); - self - } - pub fn tertiary(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.tertiary = value - .try_into() - .map_err(|e| format!("error converting supplied value for tertiary: {}", e)); - self - } - pub fn warning(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.warning = value - .try_into() - .map_err(|e| format!("error converting supplied value for warning: {}", e)); - self - } - pub fn white(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.white = value - .try_into() - .map_err(|e| format!("error converting supplied value for white: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::ColorPalette { - type Error = super::error::ConversionError; - fn try_from( - value: ColorPalette, - ) -> ::std::result::Result { - Ok(Self { - black: value.black?, - body: value.body?, - border: value.border?, - code_style: value.code_style?, - emphasis: value.emphasis?, - error: value.error?, - gray: value.gray?, - info: value.info?, - primary: value.primary?, - secondary: value.secondary?, - success: value.success?, - tertiary: value.tertiary?, - warning: value.warning?, - white: value.white?, - }) - } - } - impl ::std::convert::From for ColorPalette { - fn from(value: super::ColorPalette) -> Self { - Self { - black: Ok(value.black), - body: Ok(value.body), - border: Ok(value.border), - code_style: Ok(value.code_style), - emphasis: Ok(value.emphasis), - error: Ok(value.error), - gray: Ok(value.gray), - info: Ok(value.info), - primary: Ok(value.primary), - secondary: Ok(value.secondary), - success: Ok(value.success), - tertiary: Ok(value.tertiary), - warning: Ok(value.warning), - white: Ok(value.white), - } - } - } - #[derive(Clone, Debug)] - pub struct Config { - color_override: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - current_namespace: ::std::result::Result<::std::string::String, ::std::string::String>, - current_vault: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - current_workspace: ::std::result::Result<::std::string::String, ::std::string::String>, - default_log_mode: ::std::result::Result<::std::string::String, ::std::string::String>, - default_timeout: ::std::result::Result<::std::string::String, ::std::string::String>, - interactive: - ::std::result::Result<::std::option::Option, ::std::string::String>, - templates: ::std::result::Result< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - ::std::string::String, - >, - theme: ::std::result::Result, - vaults: ::std::result::Result< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - ::std::string::String, - >, - workspace_mode: ::std::result::Result, - workspaces: ::std::result::Result< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - ::std::string::String, - >, - } - impl ::std::default::Default for Config { - fn default() -> Self { - Self { - color_override: Ok(Default::default()), - current_namespace: Ok(Default::default()), - current_vault: Ok(Default::default()), - current_workspace: Err("no value supplied for current_workspace".to_string()), - default_log_mode: Ok(super::defaults::config_default_log_mode()), - default_timeout: Ok(super::defaults::config_default_timeout()), - interactive: Ok(Default::default()), - templates: Ok(Default::default()), - theme: Ok(super::defaults::config_theme()), - vaults: Ok(Default::default()), - workspace_mode: Ok(super::defaults::config_workspace_mode()), - workspaces: Err("no value supplied for workspaces".to_string()), - } - } - } - impl Config { - pub fn color_override(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.color_override = value - .try_into() - .map_err(|e| format!("error converting supplied value for color_override: {}", e)); - self - } - pub fn current_namespace(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.current_namespace = value.try_into().map_err(|e| { - format!( - "error converting supplied value for current_namespace: {}", - e - ) - }); - self - } - pub fn current_vault(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.current_vault = value - .try_into() - .map_err(|e| format!("error converting supplied value for current_vault: {}", e)); - self - } - pub fn current_workspace(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.current_workspace = value.try_into().map_err(|e| { - format!( - "error converting supplied value for current_workspace: {}", - e - ) - }); - self - } - pub fn default_log_mode(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.default_log_mode = value.try_into().map_err(|e| { - format!( - "error converting supplied value for default_log_mode: {}", - e - ) - }); - self - } - pub fn default_timeout(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.default_timeout = value - .try_into() - .map_err(|e| format!("error converting supplied value for default_timeout: {}", e)); - self - } - pub fn interactive(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.interactive = value - .try_into() - .map_err(|e| format!("error converting supplied value for interactive: {}", e)); - self - } - pub fn templates(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - >, - T::Error: ::std::fmt::Display, - { - self.templates = value - .try_into() - .map_err(|e| format!("error converting supplied value for templates: {}", e)); - self - } - pub fn theme(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.theme = value - .try_into() - .map_err(|e| format!("error converting supplied value for theme: {}", e)); - self - } - pub fn vaults(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - >, - T::Error: ::std::fmt::Display, - { - self.vaults = value - .try_into() - .map_err(|e| format!("error converting supplied value for vaults: {}", e)); - self - } - pub fn workspace_mode(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.workspace_mode = value - .try_into() - .map_err(|e| format!("error converting supplied value for workspace_mode: {}", e)); - self - } - pub fn workspaces(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - >, - T::Error: ::std::fmt::Display, - { - self.workspaces = value - .try_into() - .map_err(|e| format!("error converting supplied value for workspaces: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::Config { - type Error = super::error::ConversionError; - fn try_from(value: Config) -> ::std::result::Result { - Ok(Self { - color_override: value.color_override?, - current_namespace: value.current_namespace?, - current_vault: value.current_vault?, - current_workspace: value.current_workspace?, - default_log_mode: value.default_log_mode?, - default_timeout: value.default_timeout?, - interactive: value.interactive?, - templates: value.templates?, - theme: value.theme?, - vaults: value.vaults?, - workspace_mode: value.workspace_mode?, - workspaces: value.workspaces?, - }) - } - } - impl ::std::convert::From for Config { - fn from(value: super::Config) -> Self { - Self { - color_override: Ok(value.color_override), - current_namespace: Ok(value.current_namespace), - current_vault: Ok(value.current_vault), - current_workspace: Ok(value.current_workspace), - default_log_mode: Ok(value.default_log_mode), - default_timeout: Ok(value.default_timeout), - interactive: Ok(value.interactive), - templates: Ok(value.templates), - theme: Ok(value.theme), - vaults: Ok(value.vaults), - workspace_mode: Ok(value.workspace_mode), - workspaces: Ok(value.workspaces), - } - } - } - #[derive(Clone, Debug)] - pub struct Interactive { - enabled: ::std::result::Result, - notify_on_completion: - ::std::result::Result<::std::option::Option, ::std::string::String>, - sound_on_completion: - ::std::result::Result<::std::option::Option, ::std::string::String>, - } - impl ::std::default::Default for Interactive { - fn default() -> Self { - Self { - enabled: Err("no value supplied for enabled".to_string()), - notify_on_completion: Ok(Default::default()), - sound_on_completion: Ok(Default::default()), - } - } - } - impl Interactive { - pub fn enabled(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.enabled = value - .try_into() - .map_err(|e| format!("error converting supplied value for enabled: {}", e)); - self - } - pub fn notify_on_completion(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.notify_on_completion = value.try_into().map_err(|e| { - format!( - "error converting supplied value for notify_on_completion: {}", - e - ) - }); - self - } - pub fn sound_on_completion(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.sound_on_completion = value.try_into().map_err(|e| { - format!( - "error converting supplied value for sound_on_completion: {}", - e - ) - }); - self - } - } - impl ::std::convert::TryFrom for super::Interactive { - type Error = super::error::ConversionError; - fn try_from( - value: Interactive, - ) -> ::std::result::Result { - Ok(Self { - enabled: value.enabled?, - notify_on_completion: value.notify_on_completion?, - sound_on_completion: value.sound_on_completion?, - }) - } - } - impl ::std::convert::From for Interactive { - fn from(value: super::Interactive) -> Self { - Self { - enabled: Ok(value.enabled), - notify_on_completion: Ok(value.notify_on_completion), - sound_on_completion: Ok(value.sound_on_completion), - } - } - } -} -#[doc = r" Generation of default values for serde."] -pub mod defaults { - pub(super) fn config_default_log_mode() -> ::std::string::String { - "logfmt".to_string() - } - pub(super) fn config_default_timeout() -> ::std::string::String { - "30m".to_string() - } - pub(super) fn config_theme() -> super::ConfigTheme { - super::ConfigTheme::Default - } - pub(super) fn config_workspace_mode() -> super::ConfigWorkspaceMode { - super::ConfigWorkspaceMode::Dynamic - } -} diff --git a/desktop/src-tauri/src/types/generated/flowfile.rs b/desktop/src-tauri/src/types/generated/flowfile.rs deleted file mode 100644 index c8f14b74..00000000 --- a/desktop/src-tauri/src/types/generated/flowfile.rs +++ /dev/null @@ -1,4396 +0,0 @@ -#![allow(clippy::redundant_closure_call)] -#![allow(clippy::needless_lifetimes)] -#![allow(clippy::match_single_binding)] -#![allow(clippy::clone_on_copy)] - -#[doc = r" Error types."] -pub mod error { - #[doc = r" Error from a `TryFrom` or `FromStr` implementation."] - pub struct ConversionError(::std::borrow::Cow<'static, str>); - impl ::std::error::Error for ConversionError {} - impl ::std::fmt::Display for ConversionError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { - ::std::fmt::Display::fmt(&self.0, f) - } - } - impl ::std::fmt::Debug for ConversionError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { - ::std::fmt::Debug::fmt(&self.0, f) - } - } - impl From<&'static str> for ConversionError { - fn from(value: &'static str) -> Self { - Self(value.into()) - } - } - impl From for ConversionError { - fn from(value: String) -> Self { - Self(value.into()) - } - } -} -#[doc = "Alternate names that can be used to reference the executable in the CLI."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Alternate names that can be used to reference the executable in the CLI.\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct CommonAliases(pub ::std::vec::Vec<::std::string::String>); -impl ::std::ops::Deref for CommonAliases { - type Target = ::std::vec::Vec<::std::string::String>; - fn deref(&self) -> &::std::vec::Vec<::std::string::String> { - &self.0 - } -} -impl ::std::convert::From for ::std::vec::Vec<::std::string::String> { - fn from(value: CommonAliases) -> Self { - value.0 - } -} -impl ::std::convert::From<&CommonAliases> for CommonAliases { - fn from(value: &CommonAliases) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec<::std::string::String>> for CommonAliases { - fn from(value: ::std::vec::Vec<::std::string::String>) -> Self { - Self(value) - } -} -#[doc = "A list of tags.\nTags can be used with list commands to filter returned data.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A list of tags.\\nTags can be used with list commands to filter returned data.\\n\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct CommonTags(pub ::std::vec::Vec<::std::string::String>); -impl ::std::ops::Deref for CommonTags { - type Target = ::std::vec::Vec<::std::string::String>; - fn deref(&self) -> &::std::vec::Vec<::std::string::String> { - &self.0 - } -} -impl ::std::convert::From for ::std::vec::Vec<::std::string::String> { - fn from(value: CommonTags) -> Self { - value.0 - } -} -impl ::std::convert::From<&CommonTags> for CommonTags { - fn from(value: &CommonTags) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec<::std::string::String>> for CommonTags { - fn from(value: ::std::vec::Vec<::std::string::String>) -> Self { - Self(value) - } -} -#[doc = "The visibility of the executables to Flow.\nIf not set, the visibility will default to `public`.\n\n`public` executables can be executed and listed from anywhere.\n`private` executables can be executed and listed only within their own workspace.\n`internal` executables can be executed within their own workspace but are not listed.\n`hidden` executables cannot be executed or listed.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The visibility of the executables to Flow.\\nIf not set, the visibility will default to `public`.\\n\\n`public` executables can be executed and listed from anywhere.\\n`private` executables can be executed and listed only within their own workspace.\\n`internal` executables can be executed within their own workspace but are not listed.\\n`hidden` executables cannot be executed or listed.\\n\","] -#[doc = " \"default\": \"public\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"public\","] -#[doc = " \"private\","] -#[doc = " \"internal\","] -#[doc = " \"hidden\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum CommonVisibility { - #[serde(rename = "public")] - Public, - #[serde(rename = "private")] - Private, - #[serde(rename = "internal")] - Internal, - #[serde(rename = "hidden")] - Hidden, -} -impl ::std::convert::From<&Self> for CommonVisibility { - fn from(value: &CommonVisibility) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for CommonVisibility { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Public => f.write_str("public"), - Self::Private => f.write_str("private"), - Self::Internal => f.write_str("internal"), - Self::Hidden => f.write_str("hidden"), - } - } -} -impl ::std::str::FromStr for CommonVisibility { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "public" => Ok(Self::Public), - "private" => Ok(Self::Private), - "internal" => Ok(Self::Internal), - "hidden" => Ok(Self::Hidden), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for CommonVisibility { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for CommonVisibility { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for CommonVisibility { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for CommonVisibility { - fn default() -> Self { - CommonVisibility::Public - } -} -#[doc = "The executable schema defines the structure of an executable in the Flow CLI.\nExecutables are the building blocks of workflows and are used to define the actions that can be performed in a workspace.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"title\": \"Executable\","] -#[doc = " \"description\": \"The executable schema defines the structure of an executable in the Flow CLI.\\nExecutables are the building blocks of workflows and are used to define the actions that can be performed in a workspace.\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"verb\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"aliases\": {"] -#[doc = " \"default\": [],"] -#[doc = " \"$ref\": \"#/definitions/CommonAliases\""] -#[doc = " },"] -#[doc = " \"description\": {"] -#[doc = " \"description\": \"A description of the executable.\\nThis description is rendered as markdown in the interactive UI.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"exec\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableExecExecutableType\""] -#[doc = " },"] -#[doc = " \"launch\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableLaunchExecutableType\""] -#[doc = " },"] -#[doc = " \"name\": {"] -#[doc = " \"description\": \"An optional name for the executable.\\n\\nName is used to reference the executable in the CLI using the format `workspace/namespace:name`.\\n[Verb group + Name] must be unique within the namespace of the workspace.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"parallel\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParallelExecutableType\""] -#[doc = " },"] -#[doc = " \"render\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableRenderExecutableType\""] -#[doc = " },"] -#[doc = " \"request\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableRequestExecutableType\""] -#[doc = " },"] -#[doc = " \"serial\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableSerialExecutableType\""] -#[doc = " },"] -#[doc = " \"tags\": {"] -#[doc = " \"default\": [],"] -#[doc = " \"$ref\": \"#/definitions/CommonTags\""] -#[doc = " },"] -#[doc = " \"timeout\": {"] -#[doc = " \"description\": \"The maximum amount of time the executable is allowed to run before being terminated.\\nThe timeout is specified in Go duration format (e.g. 30s, 5m, 1h).\\n\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"verb\": {"] -#[doc = " \"default\": \"exec\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableVerb\""] -#[doc = " },"] -#[doc = " \"verbAliases\": {"] -#[doc = " \"description\": \"A list of aliases for the verb. This allows the executable to be referenced with multiple verbs.\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/Verb\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"visibility\": {"] -#[doc = " \"$ref\": \"#/definitions/CommonVisibility\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct Executable { - #[serde(default = "defaults::executable_aliases")] - pub aliases: CommonAliases, - #[doc = "A description of the executable.\nThis description is rendered as markdown in the interactive UI.\n"] - #[serde(default)] - pub description: ::std::string::String, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub exec: ::std::option::Option, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub launch: ::std::option::Option, - #[doc = "An optional name for the executable.\n\nName is used to reference the executable in the CLI using the format `workspace/namespace:name`.\n[Verb group + Name] must be unique within the namespace of the workspace.\n"] - #[serde(default)] - pub name: ::std::string::String, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub parallel: ::std::option::Option, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub render: ::std::option::Option, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub request: ::std::option::Option, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub serial: ::std::option::Option, - #[serde(default = "defaults::executable_tags")] - pub tags: CommonTags, - #[doc = "The maximum amount of time the executable is allowed to run before being terminated.\nThe timeout is specified in Go duration format (e.g. 30s, 5m, 1h).\n"] - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub timeout: ::std::option::Option<::std::string::String>, - pub verb: ExecutableVerb, - #[doc = "A list of aliases for the verb. This allows the executable to be referenced with multiple verbs."] - #[serde( - rename = "verbAliases", - default, - skip_serializing_if = "::std::vec::Vec::is_empty" - )] - pub verb_aliases: ::std::vec::Vec, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub visibility: ::std::option::Option, -} -impl ::std::convert::From<&Executable> for Executable { - fn from(value: &Executable) -> Self { - value.clone() - } -} -impl Executable { - pub fn builder() -> builder::Executable { - Default::default() - } -} -#[doc = "`ExecutableArgument`"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"default\": {"] -#[doc = " \"description\": \"The default value to use if the argument is not provided.\\nIf the argument is required and no default is provided, the executable will fail.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"envKey\": {"] -#[doc = " \"description\": \"The name of the environment variable that will be assigned the value.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"flag\": {"] -#[doc = " \"description\": \"The flag to use when setting the argument from the command line.\\nEither `flag` or `pos` must be set, but not both.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"outputFile\": {"] -#[doc = " \"description\": \"A path where the argument value will be temporarily written to disk.\\nThe file will be created before execution and cleaned up afterwards.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"pos\": {"] -#[doc = " \"description\": \"The position of the argument in the command line ArgumentList. Values start at 1.\\nEither `flag` or `pos` must be set, but not both.\\n\","] -#[doc = " \"type\": \"integer\""] -#[doc = " },"] -#[doc = " \"required\": {"] -#[doc = " \"description\": \"If the argument is required, the executable will fail if the argument is not provided.\\nIf the argument is not required, the default value will be used if the argument is not provided.\\n\","] -#[doc = " \"default\": false,"] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"type\": {"] -#[doc = " \"description\": \"The type of the argument. This is used to determine how to parse the value of the argument.\","] -#[doc = " \"default\": \"string\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"string\","] -#[doc = " \"int\","] -#[doc = " \"float\","] -#[doc = " \"bool\""] -#[doc = " ]"] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableArgument { - #[doc = "The default value to use if the argument is not provided.\nIf the argument is required and no default is provided, the executable will fail.\n"] - #[serde(default)] - pub default: ::std::string::String, - #[doc = "The name of the environment variable that will be assigned the value."] - #[serde(rename = "envKey", default)] - pub env_key: ::std::string::String, - #[doc = "The flag to use when setting the argument from the command line.\nEither `flag` or `pos` must be set, but not both.\n"] - #[serde(default)] - pub flag: ::std::string::String, - #[doc = "A path where the argument value will be temporarily written to disk.\nThe file will be created before execution and cleaned up afterwards.\n"] - #[serde(rename = "outputFile", default)] - pub output_file: ::std::string::String, - #[doc = "The position of the argument in the command line ArgumentList. Values start at 1.\nEither `flag` or `pos` must be set, but not both.\n"] - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub pos: ::std::option::Option, - #[doc = "If the argument is required, the executable will fail if the argument is not provided.\nIf the argument is not required, the default value will be used if the argument is not provided.\n"] - #[serde(default)] - pub required: bool, - #[doc = "The type of the argument. This is used to determine how to parse the value of the argument."] - #[serde(rename = "type", default = "defaults::executable_argument_type")] - pub type_: ExecutableArgumentType, -} -impl ::std::convert::From<&ExecutableArgument> for ExecutableArgument { - fn from(value: &ExecutableArgument) -> Self { - value.clone() - } -} -impl ::std::default::Default for ExecutableArgument { - fn default() -> Self { - Self { - default: Default::default(), - env_key: Default::default(), - flag: Default::default(), - output_file: Default::default(), - pos: Default::default(), - required: Default::default(), - type_: defaults::executable_argument_type(), - } - } -} -impl ExecutableArgument { - pub fn builder() -> builder::ExecutableArgument { - Default::default() - } -} -#[doc = "`ExecutableArgumentList`"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgument\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct ExecutableArgumentList(pub ::std::vec::Vec); -impl ::std::ops::Deref for ExecutableArgumentList { - type Target = ::std::vec::Vec; - fn deref(&self) -> &::std::vec::Vec { - &self.0 - } -} -impl ::std::convert::From for ::std::vec::Vec { - fn from(value: ExecutableArgumentList) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableArgumentList> for ExecutableArgumentList { - fn from(value: &ExecutableArgumentList) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec> for ExecutableArgumentList { - fn from(value: ::std::vec::Vec) -> Self { - Self(value) - } -} -#[doc = "The type of the argument. This is used to determine how to parse the value of the argument."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The type of the argument. This is used to determine how to parse the value of the argument.\","] -#[doc = " \"default\": \"string\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"string\","] -#[doc = " \"int\","] -#[doc = " \"float\","] -#[doc = " \"bool\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum ExecutableArgumentType { - #[serde(rename = "string")] - String, - #[serde(rename = "int")] - Int, - #[serde(rename = "float")] - Float, - #[serde(rename = "bool")] - Bool, -} -impl ::std::convert::From<&Self> for ExecutableArgumentType { - fn from(value: &ExecutableArgumentType) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for ExecutableArgumentType { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::String => f.write_str("string"), - Self::Int => f.write_str("int"), - Self::Float => f.write_str("float"), - Self::Bool => f.write_str("bool"), - } - } -} -impl ::std::str::FromStr for ExecutableArgumentType { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "string" => Ok(Self::String), - "int" => Ok(Self::Int), - "float" => Ok(Self::Float), - "bool" => Ok(Self::Bool), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for ExecutableArgumentType { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for ExecutableArgumentType { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for ExecutableArgumentType { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for ExecutableArgumentType { - fn default() -> Self { - ExecutableArgumentType::String - } -} -#[doc = "The directory to execute the command in.\nIf unset, the directory of the flow file will be used.\nIf set to `f:tmp`, a temporary directory will be created for the process.\nIf prefixed with `./`, the path will be relative to the current working directory.\nIf prefixed with `//`, the path will be relative to the workspace root.\nEnvironment variables in the path will be expended at runtime.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The directory to execute the command in.\\nIf unset, the directory of the flow file will be used.\\nIf set to `f:tmp`, a temporary directory will be created for the process.\\nIf prefixed with `./`, the path will be relative to the current working directory.\\nIf prefixed with `//`, the path will be relative to the workspace root.\\nEnvironment variables in the path will be expended at runtime.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -#[serde(transparent)] -pub struct ExecutableDirectory(pub ::std::string::String); -impl ::std::ops::Deref for ExecutableDirectory { - type Target = ::std::string::String; - fn deref(&self) -> &::std::string::String { - &self.0 - } -} -impl ::std::convert::From for ::std::string::String { - fn from(value: ExecutableDirectory) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableDirectory> for ExecutableDirectory { - fn from(value: &ExecutableDirectory) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::string::String> for ExecutableDirectory { - fn from(value: ::std::string::String) -> Self { - Self(value) - } -} -impl ::std::str::FromStr for ExecutableDirectory { - type Err = ::std::convert::Infallible; - fn from_str(value: &str) -> ::std::result::Result { - Ok(Self(value.to_string())) - } -} -impl ::std::fmt::Display for ExecutableDirectory { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - self.0.fmt(f) - } -} -#[doc = "Standard executable type. Runs a command/file in a subprocess."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Standard executable type. Runs a command/file in a subprocess.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgumentList\""] -#[doc = " },"] -#[doc = " \"cmd\": {"] -#[doc = " \"description\": \"The command to execute.\\nOnly one of `cmd` or `file` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"dir\": {"] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableDirectory\""] -#[doc = " },"] -#[doc = " \"file\": {"] -#[doc = " \"description\": \"The file to execute.\\nOnly one of `cmd` or `file` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"logMode\": {"] -#[doc = " \"description\": \"The log mode to use when running the executable.\\nThis can either be `hidden`, `json`, `logfmt` or `text`\\n\","] -#[doc = " \"default\": \"logfmt\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"params\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameterList\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableExecExecutableType { - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub args: ::std::option::Option, - #[doc = "The command to execute.\nOnly one of `cmd` or `file` must be set.\n"] - #[serde(default)] - pub cmd: ::std::string::String, - #[serde(default = "defaults::executable_exec_executable_type_dir")] - pub dir: ExecutableDirectory, - #[doc = "The file to execute.\nOnly one of `cmd` or `file` must be set.\n"] - #[serde(default)] - pub file: ::std::string::String, - #[doc = "The log mode to use when running the executable.\nThis can either be `hidden`, `json`, `logfmt` or `text`\n"] - #[serde( - rename = "logMode", - default = "defaults::executable_exec_executable_type_log_mode" - )] - pub log_mode: ::std::string::String, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub params: ::std::option::Option, -} -impl ::std::convert::From<&ExecutableExecExecutableType> for ExecutableExecExecutableType { - fn from(value: &ExecutableExecExecutableType) -> Self { - value.clone() - } -} -impl ::std::default::Default for ExecutableExecExecutableType { - fn default() -> Self { - Self { - args: Default::default(), - cmd: Default::default(), - dir: defaults::executable_exec_executable_type_dir(), - file: Default::default(), - log_mode: defaults::executable_exec_executable_type_log_mode(), - params: Default::default(), - } - } -} -impl ExecutableExecExecutableType { - pub fn builder() -> builder::ExecutableExecExecutableType { - Default::default() - } -} -#[doc = "Launches an application or opens a URI."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Launches an application or opens a URI.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"uri\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"app\": {"] -#[doc = " \"description\": \"The application to launch the URI with.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"args\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgumentList\""] -#[doc = " },"] -#[doc = " \"params\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameterList\""] -#[doc = " },"] -#[doc = " \"uri\": {"] -#[doc = " \"description\": \"The URI to launch. This can be a file path or a web URL.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableLaunchExecutableType { - #[doc = "The application to launch the URI with."] - #[serde(default)] - pub app: ::std::string::String, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub args: ::std::option::Option, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub params: ::std::option::Option, - #[doc = "The URI to launch. This can be a file path or a web URL."] - pub uri: ::std::string::String, -} -impl ::std::convert::From<&ExecutableLaunchExecutableType> for ExecutableLaunchExecutableType { - fn from(value: &ExecutableLaunchExecutableType) -> Self { - value.clone() - } -} -impl ExecutableLaunchExecutableType { - pub fn builder() -> builder::ExecutableLaunchExecutableType { - Default::default() - } -} -#[doc = "`ExecutableParallelExecutableType`"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"execs\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgumentList\""] -#[doc = " },"] -#[doc = " \"dir\": {"] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableDirectory\""] -#[doc = " },"] -#[doc = " \"execs\": {"] -#[doc = " \"description\": \"A list of executables to run in parallel.\\nEach executable can be a command or a reference to another executable.\\n\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableParallelRefConfigList\""] -#[doc = " },"] -#[doc = " \"failFast\": {"] -#[doc = " \"description\": \"End the parallel execution as soon as an exec exits with a non-zero status. This is the default behavior.\\nWhen set to false, all execs will be run regardless of the exit status of parallel execs.\\n\","] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"maxThreads\": {"] -#[doc = " \"description\": \"The maximum number of threads to use when executing the parallel executables.\","] -#[doc = " \"default\": 5,"] -#[doc = " \"type\": \"integer\""] -#[doc = " },"] -#[doc = " \"params\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameterList\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableParallelExecutableType { - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub args: ::std::option::Option, - #[serde(default = "defaults::executable_parallel_executable_type_dir")] - pub dir: ExecutableDirectory, - #[doc = "A list of executables to run in parallel.\nEach executable can be a command or a reference to another executable.\n"] - pub execs: ExecutableParallelRefConfigList, - #[doc = "End the parallel execution as soon as an exec exits with a non-zero status. This is the default behavior.\nWhen set to false, all execs will be run regardless of the exit status of parallel execs.\n"] - #[serde( - rename = "failFast", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub fail_fast: ::std::option::Option, - #[doc = "The maximum number of threads to use when executing the parallel executables."] - #[serde(rename = "maxThreads", default = "defaults::default_u64::")] - pub max_threads: i64, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub params: ::std::option::Option, -} -impl ::std::convert::From<&ExecutableParallelExecutableType> for ExecutableParallelExecutableType { - fn from(value: &ExecutableParallelExecutableType) -> Self { - value.clone() - } -} -impl ExecutableParallelExecutableType { - pub fn builder() -> builder::ExecutableParallelExecutableType { - Default::default() - } -} -#[doc = "Configuration for a parallel executable."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Configuration for a parallel executable.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"description\": \"Arguments to pass to the executable.\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"cmd\": {"] -#[doc = " \"description\": \"The command to execute.\\nOne of `cmd` or `ref` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"if\": {"] -#[doc = " \"description\": \"An expression that determines whether the executable should run, using the Expr language syntax.\\nThe expression is evaluated at runtime and must resolve to a boolean value.\\n\\nThe expression has access to OS/architecture information (os, arch), environment variables (env), stored data\\n(store), and context information (ctx) like workspace and paths.\\n\\nFor example, `os == \\\"darwin\\\"` will only run on macOS, `len(store[\\\"feature\\\"]) > 0` will run if a value exists\\nin the store, and `env[\\\"CI\\\"] == \\\"true\\\"` will run in CI environments.\\nSee the [Expr documentation](https://expr-lang.org/docs/language-definition) for more information.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"ref\": {"] -#[doc = " \"description\": \"A reference to another executable to run in serial.\\nOne of `cmd` or `ref` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableRef\""] -#[doc = " },"] -#[doc = " \"retries\": {"] -#[doc = " \"description\": \"The number of times to retry the executable if it fails.\","] -#[doc = " \"default\": 0,"] -#[doc = " \"type\": \"integer\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableParallelRefConfig { - #[doc = "Arguments to pass to the executable."] - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub args: ::std::vec::Vec<::std::string::String>, - #[doc = "The command to execute.\nOne of `cmd` or `ref` must be set.\n"] - #[serde(default)] - pub cmd: ::std::string::String, - #[doc = "An expression that determines whether the executable should run, using the Expr language syntax.\nThe expression is evaluated at runtime and must resolve to a boolean value.\n\nThe expression has access to OS/architecture information (os, arch), environment variables (env), stored data\n(store), and context information (ctx) like workspace and paths.\n\nFor example, `os == \"darwin\"` will only run on macOS, `len(store[\"feature\"]) > 0` will run if a value exists\nin the store, and `env[\"CI\"] == \"true\"` will run in CI environments.\nSee the [Expr documentation](https://expr-lang.org/docs/language-definition) for more information.\n"] - #[serde(rename = "if", default)] - pub if_: ::std::string::String, - #[doc = "A reference to another executable to run in serial.\nOne of `cmd` or `ref` must be set.\n"] - #[serde( - rename = "ref", - default = "defaults::executable_parallel_ref_config_ref" - )] - pub ref_: ExecutableRef, - #[doc = "The number of times to retry the executable if it fails."] - #[serde(default)] - pub retries: i64, -} -impl ::std::convert::From<&ExecutableParallelRefConfig> for ExecutableParallelRefConfig { - fn from(value: &ExecutableParallelRefConfig) -> Self { - value.clone() - } -} -impl ::std::default::Default for ExecutableParallelRefConfig { - fn default() -> Self { - Self { - args: Default::default(), - cmd: Default::default(), - if_: Default::default(), - ref_: defaults::executable_parallel_ref_config_ref(), - retries: Default::default(), - } - } -} -impl ExecutableParallelRefConfig { - pub fn builder() -> builder::ExecutableParallelRefConfig { - Default::default() - } -} -#[doc = "A list of executables to run in parallel. The executables can be defined by it's exec `cmd` or `ref`.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A list of executables to run in parallel. The executables can be defined by it's exec `cmd` or `ref`.\\n\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParallelRefConfig\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct ExecutableParallelRefConfigList(pub ::std::vec::Vec); -impl ::std::ops::Deref for ExecutableParallelRefConfigList { - type Target = ::std::vec::Vec; - fn deref(&self) -> &::std::vec::Vec { - &self.0 - } -} -impl ::std::convert::From - for ::std::vec::Vec -{ - fn from(value: ExecutableParallelRefConfigList) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableParallelRefConfigList> for ExecutableParallelRefConfigList { - fn from(value: &ExecutableParallelRefConfigList) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec> - for ExecutableParallelRefConfigList -{ - fn from(value: ::std::vec::Vec) -> Self { - Self(value) - } -} -#[doc = "A parameter is a value that can be passed to an executable and all of its sub-executables.\nOnly one of `text`, `secretRef`, `prompt`, or `file` must be set. Specifying more than one will result in an error.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A parameter is a value that can be passed to an executable and all of its sub-executables.\\nOnly one of `text`, `secretRef`, `prompt`, or `file` must be set. Specifying more than one will result in an error.\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"envFile\": {"] -#[doc = " \"description\": \"A path to a file containing environment variables to be passed to the executable.\\nThe file should contain one variable per line in the format `KEY=VALUE`.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"envKey\": {"] -#[doc = " \"description\": \"The name of the environment variable that will be assigned the value.\\n\\nWhen specified with `envFile`, only the environment variable with this name will be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"outputFile\": {"] -#[doc = " \"description\": \"A path where the parameter value will be temporarily written to disk.\\nThe file will be created before execution and cleaned up afterwards.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"prompt\": {"] -#[doc = " \"description\": \"A prompt to be displayed to the user when collecting an input value.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"secretRef\": {"] -#[doc = " \"description\": \"A reference to a secret to be passed to the executable.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"text\": {"] -#[doc = " \"description\": \"A static value to be passed to the executable.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableParameter { - #[doc = "A path to a file containing environment variables to be passed to the executable.\nThe file should contain one variable per line in the format `KEY=VALUE`.\n"] - #[serde(rename = "envFile", default)] - pub env_file: ::std::string::String, - #[doc = "The name of the environment variable that will be assigned the value.\n\nWhen specified with `envFile`, only the environment variable with this name will be set.\n"] - #[serde(rename = "envKey", default)] - pub env_key: ::std::string::String, - #[doc = "A path where the parameter value will be temporarily written to disk.\nThe file will be created before execution and cleaned up afterwards.\n"] - #[serde(rename = "outputFile", default)] - pub output_file: ::std::string::String, - #[doc = "A prompt to be displayed to the user when collecting an input value."] - #[serde(default)] - pub prompt: ::std::string::String, - #[doc = "A reference to a secret to be passed to the executable."] - #[serde(rename = "secretRef", default)] - pub secret_ref: ::std::string::String, - #[doc = "A static value to be passed to the executable."] - #[serde(default)] - pub text: ::std::string::String, -} -impl ::std::convert::From<&ExecutableParameter> for ExecutableParameter { - fn from(value: &ExecutableParameter) -> Self { - value.clone() - } -} -impl ::std::default::Default for ExecutableParameter { - fn default() -> Self { - Self { - env_file: Default::default(), - env_key: Default::default(), - output_file: Default::default(), - prompt: Default::default(), - secret_ref: Default::default(), - text: Default::default(), - } - } -} -impl ExecutableParameter { - pub fn builder() -> builder::ExecutableParameter { - Default::default() - } -} -#[doc = "`ExecutableParameterList`"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameter\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct ExecutableParameterList(pub ::std::vec::Vec); -impl ::std::ops::Deref for ExecutableParameterList { - type Target = ::std::vec::Vec; - fn deref(&self) -> &::std::vec::Vec { - &self.0 - } -} -impl ::std::convert::From for ::std::vec::Vec { - fn from(value: ExecutableParameterList) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableParameterList> for ExecutableParameterList { - fn from(value: &ExecutableParameterList) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec> for ExecutableParameterList { - fn from(value: ::std::vec::Vec) -> Self { - Self(value) - } -} -#[doc = "A reference to an executable.\nThe format is ` /:`.\nFor example, `exec ws/ns:my-workflow`.\n\n- If the workspace is not specified, the current workspace will be used.\n- If the namespace is not specified, the current namespace will be used.\n- Excluding the name will reference the executable with a matching verb but an unspecified name and namespace (e.g. `exec ws` or simply `exec`).\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A reference to an executable.\\nThe format is ` /:`.\\nFor example, `exec ws/ns:my-workflow`.\\n\\n- If the workspace is not specified, the current workspace will be used.\\n- If the namespace is not specified, the current namespace will be used.\\n- Excluding the name will reference the executable with a matching verb but an unspecified name and namespace (e.g. `exec ws` or simply `exec`).\\n\","] -#[doc = " \"type\": \"string\""] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -#[serde(transparent)] -pub struct ExecutableRef(pub ::std::string::String); -impl ::std::ops::Deref for ExecutableRef { - type Target = ::std::string::String; - fn deref(&self) -> &::std::string::String { - &self.0 - } -} -impl ::std::convert::From for ::std::string::String { - fn from(value: ExecutableRef) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableRef> for ExecutableRef { - fn from(value: &ExecutableRef) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::string::String> for ExecutableRef { - fn from(value: ::std::string::String) -> Self { - Self(value) - } -} -impl ::std::str::FromStr for ExecutableRef { - type Err = ::std::convert::Infallible; - fn from_str(value: &str) -> ::std::result::Result { - Ok(Self(value.to_string())) - } -} -impl ::std::fmt::Display for ExecutableRef { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - self.0.fmt(f) - } -} -#[doc = "Renders a markdown template file with data."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Renders a markdown template file with data.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"templateFile\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgumentList\""] -#[doc = " },"] -#[doc = " \"dir\": {"] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableDirectory\""] -#[doc = " },"] -#[doc = " \"params\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameterList\""] -#[doc = " },"] -#[doc = " \"templateDataFile\": {"] -#[doc = " \"description\": \"The path to the JSON or YAML file containing the template data.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"templateFile\": {"] -#[doc = " \"description\": \"The path to the markdown template file to render.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableRenderExecutableType { - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub args: ::std::option::Option, - #[serde(default = "defaults::executable_render_executable_type_dir")] - pub dir: ExecutableDirectory, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub params: ::std::option::Option, - #[doc = "The path to the JSON or YAML file containing the template data."] - #[serde(rename = "templateDataFile", default)] - pub template_data_file: ::std::string::String, - #[doc = "The path to the markdown template file to render."] - #[serde(rename = "templateFile")] - pub template_file: ::std::string::String, -} -impl ::std::convert::From<&ExecutableRenderExecutableType> for ExecutableRenderExecutableType { - fn from(value: &ExecutableRenderExecutableType) -> Self { - value.clone() - } -} -impl ExecutableRenderExecutableType { - pub fn builder() -> builder::ExecutableRenderExecutableType { - Default::default() - } -} -#[doc = "Makes an HTTP request."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Makes an HTTP request.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"url\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgumentList\""] -#[doc = " },"] -#[doc = " \"body\": {"] -#[doc = " \"description\": \"The body of the request.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"headers\": {"] -#[doc = " \"description\": \"A map of headers to include in the request.\","] -#[doc = " \"default\": {},"] -#[doc = " \"type\": \"object\","] -#[doc = " \"additionalProperties\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"logResponse\": {"] -#[doc = " \"description\": \"If set to true, the response will be logged as program output.\","] -#[doc = " \"default\": false,"] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"method\": {"] -#[doc = " \"description\": \"The HTTP method to use when making the request.\","] -#[doc = " \"default\": \"GET\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"GET\","] -#[doc = " \"POST\","] -#[doc = " \"PUT\","] -#[doc = " \"PATCH\","] -#[doc = " \"DELETE\""] -#[doc = " ]"] -#[doc = " },"] -#[doc = " \"params\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameterList\""] -#[doc = " },"] -#[doc = " \"responseFile\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableRequestResponseFile\""] -#[doc = " },"] -#[doc = " \"timeout\": {"] -#[doc = " \"description\": \"The timeout for the request in Go duration format (e.g. 30s, 5m, 1h).\","] -#[doc = " \"default\": \"30m0s\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"transformResponse\": {"] -#[doc = " \"description\": \"[Expr](https://expr-lang.org/docs/language-definition) expression used to transform the response before\\nsaving it to a file or outputting it.\\n\\nThe following variables are available in the expression:\\n - `status`: The response status string.\\n - `code`: The response status code.\\n - `body`: The response body.\\n - `headers`: The response headers.\\n\\nFor example, to capitalize a JSON body field's value, you can use `upper(fromJSON(body)[\\\"field\\\"])`.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"url\": {"] -#[doc = " \"description\": \"The URL to make the request to.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"validStatusCodes\": {"] -#[doc = " \"description\": \"A list of valid status codes. If the response status code is not in this list, the executable will fail.\\nIf not set, the response status code will not be checked.\\n\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"integer\""] -#[doc = " }"] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableRequestExecutableType { - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub args: ::std::option::Option, - #[doc = "The body of the request."] - #[serde(default)] - pub body: ::std::string::String, - #[doc = "A map of headers to include in the request."] - #[serde( - default, - skip_serializing_if = ":: std :: collections :: HashMap::is_empty" - )] - pub headers: ::std::collections::HashMap<::std::string::String, ::std::string::String>, - #[doc = "If set to true, the response will be logged as program output."] - #[serde(rename = "logResponse", default)] - pub log_response: bool, - #[doc = "The HTTP method to use when making the request."] - #[serde(default = "defaults::executable_request_executable_type_method")] - pub method: ExecutableRequestExecutableTypeMethod, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub params: ::std::option::Option, - #[serde( - rename = "responseFile", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub response_file: ::std::option::Option, - #[doc = "The timeout for the request in Go duration format (e.g. 30s, 5m, 1h)."] - #[serde(default = "defaults::executable_request_executable_type_timeout")] - pub timeout: ::std::string::String, - #[doc = "[Expr](https://expr-lang.org/docs/language-definition) expression used to transform the response before\nsaving it to a file or outputting it.\n\nThe following variables are available in the expression:\n - `status`: The response status string.\n - `code`: The response status code.\n - `body`: The response body.\n - `headers`: The response headers.\n\nFor example, to capitalize a JSON body field's value, you can use `upper(fromJSON(body)[\"field\"])`.\n"] - #[serde(rename = "transformResponse", default)] - pub transform_response: ::std::string::String, - #[doc = "The URL to make the request to."] - pub url: ::std::string::String, - #[doc = "A list of valid status codes. If the response status code is not in this list, the executable will fail.\nIf not set, the response status code will not be checked.\n"] - #[serde( - rename = "validStatusCodes", - default, - skip_serializing_if = "::std::vec::Vec::is_empty" - )] - pub valid_status_codes: ::std::vec::Vec, -} -impl ::std::convert::From<&ExecutableRequestExecutableType> for ExecutableRequestExecutableType { - fn from(value: &ExecutableRequestExecutableType) -> Self { - value.clone() - } -} -impl ExecutableRequestExecutableType { - pub fn builder() -> builder::ExecutableRequestExecutableType { - Default::default() - } -} -#[doc = "The HTTP method to use when making the request."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The HTTP method to use when making the request.\","] -#[doc = " \"default\": \"GET\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"GET\","] -#[doc = " \"POST\","] -#[doc = " \"PUT\","] -#[doc = " \"PATCH\","] -#[doc = " \"DELETE\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum ExecutableRequestExecutableTypeMethod { - #[serde(rename = "GET")] - Get, - #[serde(rename = "POST")] - Post, - #[serde(rename = "PUT")] - Put, - #[serde(rename = "PATCH")] - Patch, - #[serde(rename = "DELETE")] - Delete, -} -impl ::std::convert::From<&Self> for ExecutableRequestExecutableTypeMethod { - fn from(value: &ExecutableRequestExecutableTypeMethod) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for ExecutableRequestExecutableTypeMethod { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Get => f.write_str("GET"), - Self::Post => f.write_str("POST"), - Self::Put => f.write_str("PUT"), - Self::Patch => f.write_str("PATCH"), - Self::Delete => f.write_str("DELETE"), - } - } -} -impl ::std::str::FromStr for ExecutableRequestExecutableTypeMethod { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "GET" => Ok(Self::Get), - "POST" => Ok(Self::Post), - "PUT" => Ok(Self::Put), - "PATCH" => Ok(Self::Patch), - "DELETE" => Ok(Self::Delete), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for ExecutableRequestExecutableTypeMethod { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for ExecutableRequestExecutableTypeMethod { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for ExecutableRequestExecutableTypeMethod { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for ExecutableRequestExecutableTypeMethod { - fn default() -> Self { - ExecutableRequestExecutableTypeMethod::Get - } -} -#[doc = "Configuration for saving the response of a request to a file."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Configuration for saving the response of a request to a file.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"filename\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"dir\": {"] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableDirectory\""] -#[doc = " },"] -#[doc = " \"filename\": {"] -#[doc = " \"description\": \"The name of the file to save the response to.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"saveAs\": {"] -#[doc = " \"description\": \"The format to save the response as.\","] -#[doc = " \"default\": \"raw\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"raw\","] -#[doc = " \"json\","] -#[doc = " \"indented-json\","] -#[doc = " \"yaml\","] -#[doc = " \"yml\""] -#[doc = " ]"] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableRequestResponseFile { - #[serde(default = "defaults::executable_request_response_file_dir")] - pub dir: ExecutableDirectory, - #[doc = "The name of the file to save the response to."] - pub filename: ::std::string::String, - #[doc = "The format to save the response as."] - #[serde( - rename = "saveAs", - default = "defaults::executable_request_response_file_save_as" - )] - pub save_as: ExecutableRequestResponseFileSaveAs, -} -impl ::std::convert::From<&ExecutableRequestResponseFile> for ExecutableRequestResponseFile { - fn from(value: &ExecutableRequestResponseFile) -> Self { - value.clone() - } -} -impl ExecutableRequestResponseFile { - pub fn builder() -> builder::ExecutableRequestResponseFile { - Default::default() - } -} -#[doc = "The format to save the response as."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The format to save the response as.\","] -#[doc = " \"default\": \"raw\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"raw\","] -#[doc = " \"json\","] -#[doc = " \"indented-json\","] -#[doc = " \"yaml\","] -#[doc = " \"yml\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum ExecutableRequestResponseFileSaveAs { - #[serde(rename = "raw")] - Raw, - #[serde(rename = "json")] - Json, - #[serde(rename = "indented-json")] - IndentedJson, - #[serde(rename = "yaml")] - Yaml, - #[serde(rename = "yml")] - Yml, -} -impl ::std::convert::From<&Self> for ExecutableRequestResponseFileSaveAs { - fn from(value: &ExecutableRequestResponseFileSaveAs) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for ExecutableRequestResponseFileSaveAs { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Raw => f.write_str("raw"), - Self::Json => f.write_str("json"), - Self::IndentedJson => f.write_str("indented-json"), - Self::Yaml => f.write_str("yaml"), - Self::Yml => f.write_str("yml"), - } - } -} -impl ::std::str::FromStr for ExecutableRequestResponseFileSaveAs { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "raw" => Ok(Self::Raw), - "json" => Ok(Self::Json), - "indented-json" => Ok(Self::IndentedJson), - "yaml" => Ok(Self::Yaml), - "yml" => Ok(Self::Yml), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for ExecutableRequestResponseFileSaveAs { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for ExecutableRequestResponseFileSaveAs { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for ExecutableRequestResponseFileSaveAs { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for ExecutableRequestResponseFileSaveAs { - fn default() -> Self { - ExecutableRequestResponseFileSaveAs::Raw - } -} -#[doc = "Executes a list of executables in serial."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Executes a list of executables in serial.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"execs\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableArgumentList\""] -#[doc = " },"] -#[doc = " \"dir\": {"] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableDirectory\""] -#[doc = " },"] -#[doc = " \"execs\": {"] -#[doc = " \"description\": \"A list of executables to run in serial.\\nEach executable can be a command or a reference to another executable.\\n\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableSerialRefConfigList\""] -#[doc = " },"] -#[doc = " \"failFast\": {"] -#[doc = " \"description\": \"End the serial execution as soon as an exec exits with a non-zero status. This is the default behavior.\\nWhen set to false, all execs will be run regardless of the exit status of the previous exec.\\n\","] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"params\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableParameterList\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableSerialExecutableType { - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub args: ::std::option::Option, - #[serde(default = "defaults::executable_serial_executable_type_dir")] - pub dir: ExecutableDirectory, - #[doc = "A list of executables to run in serial.\nEach executable can be a command or a reference to another executable.\n"] - pub execs: ExecutableSerialRefConfigList, - #[doc = "End the serial execution as soon as an exec exits with a non-zero status. This is the default behavior.\nWhen set to false, all execs will be run regardless of the exit status of the previous exec.\n"] - #[serde( - rename = "failFast", - default, - skip_serializing_if = "::std::option::Option::is_none" - )] - pub fail_fast: ::std::option::Option, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub params: ::std::option::Option, -} -impl ::std::convert::From<&ExecutableSerialExecutableType> for ExecutableSerialExecutableType { - fn from(value: &ExecutableSerialExecutableType) -> Self { - value.clone() - } -} -impl ExecutableSerialExecutableType { - pub fn builder() -> builder::ExecutableSerialExecutableType { - Default::default() - } -} -#[doc = "Configuration for a serial executable."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Configuration for a serial executable.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"description\": \"Arguments to pass to the executable.\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"cmd\": {"] -#[doc = " \"description\": \"The command to execute.\\nOne of `cmd` or `ref` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"if\": {"] -#[doc = " \"description\": \"An expression that determines whether the executable should run, using the Expr language syntax.\\nThe expression is evaluated at runtime and must resolve to a boolean value.\\n\\nThe expression has access to OS/architecture information (os, arch), environment variables (env), stored data\\n(store), and context information (ctx) like workspace and paths.\\n\\nFor example, `os == \\\"darwin\\\"` will only run on macOS, `len(store[\\\"feature\\\"]) > 0` will run if a value exists\\nin the store, and `env[\\\"CI\\\"] == \\\"true\\\"` will run in CI environments.\\nSee the [Expr documentation](https://expr-lang.org/docs/language-definition) for more information.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"ref\": {"] -#[doc = " \"description\": \"A reference to another executable to run in serial.\\nOne of `cmd` or `ref` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableRef\""] -#[doc = " },"] -#[doc = " \"retries\": {"] -#[doc = " \"description\": \"The number of times to retry the executable if it fails.\","] -#[doc = " \"default\": 0,"] -#[doc = " \"type\": \"integer\""] -#[doc = " },"] -#[doc = " \"reviewRequired\": {"] -#[doc = " \"description\": \"If set to true, the user will be prompted to review the output of the executable before continuing.\","] -#[doc = " \"default\": false,"] -#[doc = " \"type\": \"boolean\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct ExecutableSerialRefConfig { - #[doc = "Arguments to pass to the executable."] - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub args: ::std::vec::Vec<::std::string::String>, - #[doc = "The command to execute.\nOne of `cmd` or `ref` must be set.\n"] - #[serde(default)] - pub cmd: ::std::string::String, - #[doc = "An expression that determines whether the executable should run, using the Expr language syntax.\nThe expression is evaluated at runtime and must resolve to a boolean value.\n\nThe expression has access to OS/architecture information (os, arch), environment variables (env), stored data\n(store), and context information (ctx) like workspace and paths.\n\nFor example, `os == \"darwin\"` will only run on macOS, `len(store[\"feature\"]) > 0` will run if a value exists\nin the store, and `env[\"CI\"] == \"true\"` will run in CI environments.\nSee the [Expr documentation](https://expr-lang.org/docs/language-definition) for more information.\n"] - #[serde(rename = "if", default)] - pub if_: ::std::string::String, - #[doc = "A reference to another executable to run in serial.\nOne of `cmd` or `ref` must be set.\n"] - #[serde(rename = "ref", default = "defaults::executable_serial_ref_config_ref")] - pub ref_: ExecutableRef, - #[doc = "The number of times to retry the executable if it fails."] - #[serde(default)] - pub retries: i64, - #[doc = "If set to true, the user will be prompted to review the output of the executable before continuing."] - #[serde(rename = "reviewRequired", default)] - pub review_required: bool, -} -impl ::std::convert::From<&ExecutableSerialRefConfig> for ExecutableSerialRefConfig { - fn from(value: &ExecutableSerialRefConfig) -> Self { - value.clone() - } -} -impl ::std::default::Default for ExecutableSerialRefConfig { - fn default() -> Self { - Self { - args: Default::default(), - cmd: Default::default(), - if_: Default::default(), - ref_: defaults::executable_serial_ref_config_ref(), - retries: Default::default(), - review_required: Default::default(), - } - } -} -impl ExecutableSerialRefConfig { - pub fn builder() -> builder::ExecutableSerialRefConfig { - Default::default() - } -} -#[doc = "A list of executables to run in serial. The executables can be defined by it's exec `cmd` or `ref`.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A list of executables to run in serial. The executables can be defined by it's exec `cmd` or `ref`.\\n\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/ExecutableSerialRefConfig\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct ExecutableSerialRefConfigList(pub ::std::vec::Vec); -impl ::std::ops::Deref for ExecutableSerialRefConfigList { - type Target = ::std::vec::Vec; - fn deref(&self) -> &::std::vec::Vec { - &self.0 - } -} -impl ::std::convert::From - for ::std::vec::Vec -{ - fn from(value: ExecutableSerialRefConfigList) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableSerialRefConfigList> for ExecutableSerialRefConfigList { - fn from(value: &ExecutableSerialRefConfigList) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec> - for ExecutableSerialRefConfigList -{ - fn from(value: ::std::vec::Vec) -> Self { - Self(value) - } -} -#[doc = "Keywords that describe the action an executable performs. Executables are configured with a single verb,\nbut core verbs have aliases that can be used interchangeably when referencing executables. This allows users \nto use the verb that best describes the action they are performing.\n\n### Default Verb Aliases\n\n- **Execution Group**: `exec`, `run`, `execute`\n- **Retrieval Group**: `get`, `fetch`, `retrieve`\n- **Display Group**: `show`, `view`, `list`\n- **Configuration Group**: `configure`, `setup`\n- **Update Group**: `update`, `upgrade`\n\n### Usage Notes\n\n1. [Verb + Name] must be unique within the namespace of the workspace.\n2. When referencing an executable, users can use any verb from the default or configured alias group.\n3. All other verbs are standalone and self-descriptive.\n\n### Examples\n\n- An executable configured with the `exec` verb can also be referenced using \"run\" or \"execute\".\n- An executable configured with `get` can also be called with \"list\", \"show\", or \"view\".\n- Operations like `backup`, `migrate`, `flush` are standalone verbs without aliases.\n- Use domain-specific verbs like `deploy`, `scale`, `tunnel` for clear operational intent.\n\nBy providing minimal aliasing with comprehensive verb coverage, flow enables natural language operations\nwhile maintaining simplicity and flexibility for diverse development and operations workflows.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Keywords that describe the action an executable performs. Executables are configured with a single verb,\\nbut core verbs have aliases that can be used interchangeably when referencing executables. This allows users \\nto use the verb that best describes the action they are performing.\\n\\n### Default Verb Aliases\\n\\n- **Execution Group**: `exec`, `run`, `execute`\\n- **Retrieval Group**: `get`, `fetch`, `retrieve`\\n- **Display Group**: `show`, `view`, `list`\\n- **Configuration Group**: `configure`, `setup`\\n- **Update Group**: `update`, `upgrade`\\n\\n### Usage Notes\\n\\n1. [Verb + Name] must be unique within the namespace of the workspace.\\n2. When referencing an executable, users can use any verb from the default or configured alias group.\\n3. All other verbs are standalone and self-descriptive.\\n\\n### Examples\\n\\n- An executable configured with the `exec` verb can also be referenced using \\\"run\\\" or \\\"execute\\\".\\n- An executable configured with `get` can also be called with \\\"list\\\", \\\"show\\\", or \\\"view\\\".\\n- Operations like `backup`, `migrate`, `flush` are standalone verbs without aliases.\\n- Use domain-specific verbs like `deploy`, `scale`, `tunnel` for clear operational intent.\\n\\nBy providing minimal aliasing with comprehensive verb coverage, flow enables natural language operations\\nwhile maintaining simplicity and flexibility for diverse development and operations workflows.\\n\","] -#[doc = " \"default\": \"exec\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"abort\","] -#[doc = " \"activate\","] -#[doc = " \"add\","] -#[doc = " \"analyze\","] -#[doc = " \"apply\","] -#[doc = " \"archive\","] -#[doc = " \"audit\","] -#[doc = " \"backup\","] -#[doc = " \"benchmark\","] -#[doc = " \"build\","] -#[doc = " \"bundle\","] -#[doc = " \"check\","] -#[doc = " \"clean\","] -#[doc = " \"clear\","] -#[doc = " \"commit\","] -#[doc = " \"compile\","] -#[doc = " \"compress\","] -#[doc = " \"configure\","] -#[doc = " \"connect\","] -#[doc = " \"copy\","] -#[doc = " \"create\","] -#[doc = " \"deactivate\","] -#[doc = " \"debug\","] -#[doc = " \"decompress\","] -#[doc = " \"decrypt\","] -#[doc = " \"delete\","] -#[doc = " \"deploy\","] -#[doc = " \"destroy\","] -#[doc = " \"disable\","] -#[doc = " \"disconnect\","] -#[doc = " \"edit\","] -#[doc = " \"enable\","] -#[doc = " \"encrypt\","] -#[doc = " \"erase\","] -#[doc = " \"exec\","] -#[doc = " \"execute\","] -#[doc = " \"export\","] -#[doc = " \"expose\","] -#[doc = " \"fetch\","] -#[doc = " \"fix\","] -#[doc = " \"flush\","] -#[doc = " \"format\","] -#[doc = " \"generate\","] -#[doc = " \"get\","] -#[doc = " \"import\","] -#[doc = " \"index\","] -#[doc = " \"init\","] -#[doc = " \"inspect\","] -#[doc = " \"install\","] -#[doc = " \"join\","] -#[doc = " \"kill\","] -#[doc = " \"launch\","] -#[doc = " \"lint\","] -#[doc = " \"list\","] -#[doc = " \"load\","] -#[doc = " \"lock\","] -#[doc = " \"login\","] -#[doc = " \"logout\","] -#[doc = " \"manage\","] -#[doc = " \"merge\","] -#[doc = " \"migrate\","] -#[doc = " \"modify\","] -#[doc = " \"monitor\","] -#[doc = " \"mount\","] -#[doc = " \"new\","] -#[doc = " \"notify\","] -#[doc = " \"open\","] -#[doc = " \"package\","] -#[doc = " \"partition\","] -#[doc = " \"patch\","] -#[doc = " \"pause\","] -#[doc = " \"ping\","] -#[doc = " \"preload\","] -#[doc = " \"prefetch\","] -#[doc = " \"profile\","] -#[doc = " \"provision\","] -#[doc = " \"publish\","] -#[doc = " \"purge\","] -#[doc = " \"push\","] -#[doc = " \"queue\","] -#[doc = " \"reboot\","] -#[doc = " \"recover\","] -#[doc = " \"refresh\","] -#[doc = " \"release\","] -#[doc = " \"reload\","] -#[doc = " \"remove\","] -#[doc = " \"request\","] -#[doc = " \"reset\","] -#[doc = " \"restart\","] -#[doc = " \"restore\","] -#[doc = " \"retrieve\","] -#[doc = " \"rollback\","] -#[doc = " \"run\","] -#[doc = " \"save\","] -#[doc = " \"scale\","] -#[doc = " \"scan\","] -#[doc = " \"schedule\","] -#[doc = " \"seed\","] -#[doc = " \"send\","] -#[doc = " \"serve\","] -#[doc = " \"set\","] -#[doc = " \"setup\","] -#[doc = " \"show\","] -#[doc = " \"snapshot\","] -#[doc = " \"start\","] -#[doc = " \"stash\","] -#[doc = " \"stop\","] -#[doc = " \"tag\","] -#[doc = " \"teardown\","] -#[doc = " \"terminate\","] -#[doc = " \"test\","] -#[doc = " \"tidy\","] -#[doc = " \"trace\","] -#[doc = " \"transform\","] -#[doc = " \"trigger\","] -#[doc = " \"tunnel\","] -#[doc = " \"undeploy\","] -#[doc = " \"uninstall\","] -#[doc = " \"unmount\","] -#[doc = " \"unset\","] -#[doc = " \"update\","] -#[doc = " \"upgrade\","] -#[doc = " \"validate\","] -#[doc = " \"verify\","] -#[doc = " \"view\","] -#[doc = " \"watch\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum ExecutableVerb { - #[serde(rename = "abort")] - Abort, - #[serde(rename = "activate")] - Activate, - #[serde(rename = "add")] - Add, - #[serde(rename = "analyze")] - Analyze, - #[serde(rename = "apply")] - Apply, - #[serde(rename = "archive")] - Archive, - #[serde(rename = "audit")] - Audit, - #[serde(rename = "backup")] - Backup, - #[serde(rename = "benchmark")] - Benchmark, - #[serde(rename = "build")] - Build, - #[serde(rename = "bundle")] - Bundle, - #[serde(rename = "check")] - Check, - #[serde(rename = "clean")] - Clean, - #[serde(rename = "clear")] - Clear, - #[serde(rename = "commit")] - Commit, - #[serde(rename = "compile")] - Compile, - #[serde(rename = "compress")] - Compress, - #[serde(rename = "configure")] - Configure, - #[serde(rename = "connect")] - Connect, - #[serde(rename = "copy")] - Copy, - #[serde(rename = "create")] - Create, - #[serde(rename = "deactivate")] - Deactivate, - #[serde(rename = "debug")] - Debug, - #[serde(rename = "decompress")] - Decompress, - #[serde(rename = "decrypt")] - Decrypt, - #[serde(rename = "delete")] - Delete, - #[serde(rename = "deploy")] - Deploy, - #[serde(rename = "destroy")] - Destroy, - #[serde(rename = "disable")] - Disable, - #[serde(rename = "disconnect")] - Disconnect, - #[serde(rename = "edit")] - Edit, - #[serde(rename = "enable")] - Enable, - #[serde(rename = "encrypt")] - Encrypt, - #[serde(rename = "erase")] - Erase, - #[serde(rename = "exec")] - Exec, - #[serde(rename = "execute")] - Execute, - #[serde(rename = "export")] - Export, - #[serde(rename = "expose")] - Expose, - #[serde(rename = "fetch")] - Fetch, - #[serde(rename = "fix")] - Fix, - #[serde(rename = "flush")] - Flush, - #[serde(rename = "format")] - Format, - #[serde(rename = "generate")] - Generate, - #[serde(rename = "get")] - Get, - #[serde(rename = "import")] - Import, - #[serde(rename = "index")] - Index, - #[serde(rename = "init")] - Init, - #[serde(rename = "inspect")] - Inspect, - #[serde(rename = "install")] - Install, - #[serde(rename = "join")] - Join, - #[serde(rename = "kill")] - Kill, - #[serde(rename = "launch")] - Launch, - #[serde(rename = "lint")] - Lint, - #[serde(rename = "list")] - List, - #[serde(rename = "load")] - Load, - #[serde(rename = "lock")] - Lock, - #[serde(rename = "login")] - Login, - #[serde(rename = "logout")] - Logout, - #[serde(rename = "manage")] - Manage, - #[serde(rename = "merge")] - Merge, - #[serde(rename = "migrate")] - Migrate, - #[serde(rename = "modify")] - Modify, - #[serde(rename = "monitor")] - Monitor, - #[serde(rename = "mount")] - Mount, - #[serde(rename = "new")] - New, - #[serde(rename = "notify")] - Notify, - #[serde(rename = "open")] - Open, - #[serde(rename = "package")] - Package, - #[serde(rename = "partition")] - Partition, - #[serde(rename = "patch")] - Patch, - #[serde(rename = "pause")] - Pause, - #[serde(rename = "ping")] - Ping, - #[serde(rename = "preload")] - Preload, - #[serde(rename = "prefetch")] - Prefetch, - #[serde(rename = "profile")] - Profile, - #[serde(rename = "provision")] - Provision, - #[serde(rename = "publish")] - Publish, - #[serde(rename = "purge")] - Purge, - #[serde(rename = "push")] - Push, - #[serde(rename = "queue")] - Queue, - #[serde(rename = "reboot")] - Reboot, - #[serde(rename = "recover")] - Recover, - #[serde(rename = "refresh")] - Refresh, - #[serde(rename = "release")] - Release, - #[serde(rename = "reload")] - Reload, - #[serde(rename = "remove")] - Remove, - #[serde(rename = "request")] - Request, - #[serde(rename = "reset")] - Reset, - #[serde(rename = "restart")] - Restart, - #[serde(rename = "restore")] - Restore, - #[serde(rename = "retrieve")] - Retrieve, - #[serde(rename = "rollback")] - Rollback, - #[serde(rename = "run")] - Run, - #[serde(rename = "save")] - Save, - #[serde(rename = "scale")] - Scale, - #[serde(rename = "scan")] - Scan, - #[serde(rename = "schedule")] - Schedule, - #[serde(rename = "seed")] - Seed, - #[serde(rename = "send")] - Send, - #[serde(rename = "serve")] - Serve, - #[serde(rename = "set")] - Set, - #[serde(rename = "setup")] - Setup, - #[serde(rename = "show")] - Show, - #[serde(rename = "snapshot")] - Snapshot, - #[serde(rename = "start")] - Start, - #[serde(rename = "stash")] - Stash, - #[serde(rename = "stop")] - Stop, - #[serde(rename = "tag")] - Tag, - #[serde(rename = "teardown")] - Teardown, - #[serde(rename = "terminate")] - Terminate, - #[serde(rename = "test")] - Test, - #[serde(rename = "tidy")] - Tidy, - #[serde(rename = "trace")] - Trace, - #[serde(rename = "transform")] - Transform, - #[serde(rename = "trigger")] - Trigger, - #[serde(rename = "tunnel")] - Tunnel, - #[serde(rename = "undeploy")] - Undeploy, - #[serde(rename = "uninstall")] - Uninstall, - #[serde(rename = "unmount")] - Unmount, - #[serde(rename = "unset")] - Unset, - #[serde(rename = "update")] - Update, - #[serde(rename = "upgrade")] - Upgrade, - #[serde(rename = "validate")] - Validate, - #[serde(rename = "verify")] - Verify, - #[serde(rename = "view")] - View, - #[serde(rename = "watch")] - Watch, -} -impl ::std::convert::From<&Self> for ExecutableVerb { - fn from(value: &ExecutableVerb) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for ExecutableVerb { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Abort => f.write_str("abort"), - Self::Activate => f.write_str("activate"), - Self::Add => f.write_str("add"), - Self::Analyze => f.write_str("analyze"), - Self::Apply => f.write_str("apply"), - Self::Archive => f.write_str("archive"), - Self::Audit => f.write_str("audit"), - Self::Backup => f.write_str("backup"), - Self::Benchmark => f.write_str("benchmark"), - Self::Build => f.write_str("build"), - Self::Bundle => f.write_str("bundle"), - Self::Check => f.write_str("check"), - Self::Clean => f.write_str("clean"), - Self::Clear => f.write_str("clear"), - Self::Commit => f.write_str("commit"), - Self::Compile => f.write_str("compile"), - Self::Compress => f.write_str("compress"), - Self::Configure => f.write_str("configure"), - Self::Connect => f.write_str("connect"), - Self::Copy => f.write_str("copy"), - Self::Create => f.write_str("create"), - Self::Deactivate => f.write_str("deactivate"), - Self::Debug => f.write_str("debug"), - Self::Decompress => f.write_str("decompress"), - Self::Decrypt => f.write_str("decrypt"), - Self::Delete => f.write_str("delete"), - Self::Deploy => f.write_str("deploy"), - Self::Destroy => f.write_str("destroy"), - Self::Disable => f.write_str("disable"), - Self::Disconnect => f.write_str("disconnect"), - Self::Edit => f.write_str("edit"), - Self::Enable => f.write_str("enable"), - Self::Encrypt => f.write_str("encrypt"), - Self::Erase => f.write_str("erase"), - Self::Exec => f.write_str("exec"), - Self::Execute => f.write_str("execute"), - Self::Export => f.write_str("export"), - Self::Expose => f.write_str("expose"), - Self::Fetch => f.write_str("fetch"), - Self::Fix => f.write_str("fix"), - Self::Flush => f.write_str("flush"), - Self::Format => f.write_str("format"), - Self::Generate => f.write_str("generate"), - Self::Get => f.write_str("get"), - Self::Import => f.write_str("import"), - Self::Index => f.write_str("index"), - Self::Init => f.write_str("init"), - Self::Inspect => f.write_str("inspect"), - Self::Install => f.write_str("install"), - Self::Join => f.write_str("join"), - Self::Kill => f.write_str("kill"), - Self::Launch => f.write_str("launch"), - Self::Lint => f.write_str("lint"), - Self::List => f.write_str("list"), - Self::Load => f.write_str("load"), - Self::Lock => f.write_str("lock"), - Self::Login => f.write_str("login"), - Self::Logout => f.write_str("logout"), - Self::Manage => f.write_str("manage"), - Self::Merge => f.write_str("merge"), - Self::Migrate => f.write_str("migrate"), - Self::Modify => f.write_str("modify"), - Self::Monitor => f.write_str("monitor"), - Self::Mount => f.write_str("mount"), - Self::New => f.write_str("new"), - Self::Notify => f.write_str("notify"), - Self::Open => f.write_str("open"), - Self::Package => f.write_str("package"), - Self::Partition => f.write_str("partition"), - Self::Patch => f.write_str("patch"), - Self::Pause => f.write_str("pause"), - Self::Ping => f.write_str("ping"), - Self::Preload => f.write_str("preload"), - Self::Prefetch => f.write_str("prefetch"), - Self::Profile => f.write_str("profile"), - Self::Provision => f.write_str("provision"), - Self::Publish => f.write_str("publish"), - Self::Purge => f.write_str("purge"), - Self::Push => f.write_str("push"), - Self::Queue => f.write_str("queue"), - Self::Reboot => f.write_str("reboot"), - Self::Recover => f.write_str("recover"), - Self::Refresh => f.write_str("refresh"), - Self::Release => f.write_str("release"), - Self::Reload => f.write_str("reload"), - Self::Remove => f.write_str("remove"), - Self::Request => f.write_str("request"), - Self::Reset => f.write_str("reset"), - Self::Restart => f.write_str("restart"), - Self::Restore => f.write_str("restore"), - Self::Retrieve => f.write_str("retrieve"), - Self::Rollback => f.write_str("rollback"), - Self::Run => f.write_str("run"), - Self::Save => f.write_str("save"), - Self::Scale => f.write_str("scale"), - Self::Scan => f.write_str("scan"), - Self::Schedule => f.write_str("schedule"), - Self::Seed => f.write_str("seed"), - Self::Send => f.write_str("send"), - Self::Serve => f.write_str("serve"), - Self::Set => f.write_str("set"), - Self::Setup => f.write_str("setup"), - Self::Show => f.write_str("show"), - Self::Snapshot => f.write_str("snapshot"), - Self::Start => f.write_str("start"), - Self::Stash => f.write_str("stash"), - Self::Stop => f.write_str("stop"), - Self::Tag => f.write_str("tag"), - Self::Teardown => f.write_str("teardown"), - Self::Terminate => f.write_str("terminate"), - Self::Test => f.write_str("test"), - Self::Tidy => f.write_str("tidy"), - Self::Trace => f.write_str("trace"), - Self::Transform => f.write_str("transform"), - Self::Trigger => f.write_str("trigger"), - Self::Tunnel => f.write_str("tunnel"), - Self::Undeploy => f.write_str("undeploy"), - Self::Uninstall => f.write_str("uninstall"), - Self::Unmount => f.write_str("unmount"), - Self::Unset => f.write_str("unset"), - Self::Update => f.write_str("update"), - Self::Upgrade => f.write_str("upgrade"), - Self::Validate => f.write_str("validate"), - Self::Verify => f.write_str("verify"), - Self::View => f.write_str("view"), - Self::Watch => f.write_str("watch"), - } - } -} -impl ::std::str::FromStr for ExecutableVerb { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "abort" => Ok(Self::Abort), - "activate" => Ok(Self::Activate), - "add" => Ok(Self::Add), - "analyze" => Ok(Self::Analyze), - "apply" => Ok(Self::Apply), - "archive" => Ok(Self::Archive), - "audit" => Ok(Self::Audit), - "backup" => Ok(Self::Backup), - "benchmark" => Ok(Self::Benchmark), - "build" => Ok(Self::Build), - "bundle" => Ok(Self::Bundle), - "check" => Ok(Self::Check), - "clean" => Ok(Self::Clean), - "clear" => Ok(Self::Clear), - "commit" => Ok(Self::Commit), - "compile" => Ok(Self::Compile), - "compress" => Ok(Self::Compress), - "configure" => Ok(Self::Configure), - "connect" => Ok(Self::Connect), - "copy" => Ok(Self::Copy), - "create" => Ok(Self::Create), - "deactivate" => Ok(Self::Deactivate), - "debug" => Ok(Self::Debug), - "decompress" => Ok(Self::Decompress), - "decrypt" => Ok(Self::Decrypt), - "delete" => Ok(Self::Delete), - "deploy" => Ok(Self::Deploy), - "destroy" => Ok(Self::Destroy), - "disable" => Ok(Self::Disable), - "disconnect" => Ok(Self::Disconnect), - "edit" => Ok(Self::Edit), - "enable" => Ok(Self::Enable), - "encrypt" => Ok(Self::Encrypt), - "erase" => Ok(Self::Erase), - "exec" => Ok(Self::Exec), - "execute" => Ok(Self::Execute), - "export" => Ok(Self::Export), - "expose" => Ok(Self::Expose), - "fetch" => Ok(Self::Fetch), - "fix" => Ok(Self::Fix), - "flush" => Ok(Self::Flush), - "format" => Ok(Self::Format), - "generate" => Ok(Self::Generate), - "get" => Ok(Self::Get), - "import" => Ok(Self::Import), - "index" => Ok(Self::Index), - "init" => Ok(Self::Init), - "inspect" => Ok(Self::Inspect), - "install" => Ok(Self::Install), - "join" => Ok(Self::Join), - "kill" => Ok(Self::Kill), - "launch" => Ok(Self::Launch), - "lint" => Ok(Self::Lint), - "list" => Ok(Self::List), - "load" => Ok(Self::Load), - "lock" => Ok(Self::Lock), - "login" => Ok(Self::Login), - "logout" => Ok(Self::Logout), - "manage" => Ok(Self::Manage), - "merge" => Ok(Self::Merge), - "migrate" => Ok(Self::Migrate), - "modify" => Ok(Self::Modify), - "monitor" => Ok(Self::Monitor), - "mount" => Ok(Self::Mount), - "new" => Ok(Self::New), - "notify" => Ok(Self::Notify), - "open" => Ok(Self::Open), - "package" => Ok(Self::Package), - "partition" => Ok(Self::Partition), - "patch" => Ok(Self::Patch), - "pause" => Ok(Self::Pause), - "ping" => Ok(Self::Ping), - "preload" => Ok(Self::Preload), - "prefetch" => Ok(Self::Prefetch), - "profile" => Ok(Self::Profile), - "provision" => Ok(Self::Provision), - "publish" => Ok(Self::Publish), - "purge" => Ok(Self::Purge), - "push" => Ok(Self::Push), - "queue" => Ok(Self::Queue), - "reboot" => Ok(Self::Reboot), - "recover" => Ok(Self::Recover), - "refresh" => Ok(Self::Refresh), - "release" => Ok(Self::Release), - "reload" => Ok(Self::Reload), - "remove" => Ok(Self::Remove), - "request" => Ok(Self::Request), - "reset" => Ok(Self::Reset), - "restart" => Ok(Self::Restart), - "restore" => Ok(Self::Restore), - "retrieve" => Ok(Self::Retrieve), - "rollback" => Ok(Self::Rollback), - "run" => Ok(Self::Run), - "save" => Ok(Self::Save), - "scale" => Ok(Self::Scale), - "scan" => Ok(Self::Scan), - "schedule" => Ok(Self::Schedule), - "seed" => Ok(Self::Seed), - "send" => Ok(Self::Send), - "serve" => Ok(Self::Serve), - "set" => Ok(Self::Set), - "setup" => Ok(Self::Setup), - "show" => Ok(Self::Show), - "snapshot" => Ok(Self::Snapshot), - "start" => Ok(Self::Start), - "stash" => Ok(Self::Stash), - "stop" => Ok(Self::Stop), - "tag" => Ok(Self::Tag), - "teardown" => Ok(Self::Teardown), - "terminate" => Ok(Self::Terminate), - "test" => Ok(Self::Test), - "tidy" => Ok(Self::Tidy), - "trace" => Ok(Self::Trace), - "transform" => Ok(Self::Transform), - "trigger" => Ok(Self::Trigger), - "tunnel" => Ok(Self::Tunnel), - "undeploy" => Ok(Self::Undeploy), - "uninstall" => Ok(Self::Uninstall), - "unmount" => Ok(Self::Unmount), - "unset" => Ok(Self::Unset), - "update" => Ok(Self::Update), - "upgrade" => Ok(Self::Upgrade), - "validate" => Ok(Self::Validate), - "verify" => Ok(Self::Verify), - "view" => Ok(Self::View), - "watch" => Ok(Self::Watch), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for ExecutableVerb { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for ExecutableVerb { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for ExecutableVerb { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for ExecutableVerb { - fn default() -> Self { - ExecutableVerb::Exec - } -} -#[doc = "Configuration for a group of Flow CLI executables. The file must have the extension `.flow`, `.flow.yaml`, or `.flow.yml` \nin order to be discovered by the CLI. It's configuration is used to define a group of executables with shared metadata \n(namespace, tags, etc). A workspace can have multiple flow files located anywhere in the workspace directory\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"$id\": \"https://flowexec.io/schemas/flowfile_schema.json\","] -#[doc = " \"title\": \"FlowFile\","] -#[doc = " \"description\": \"Configuration for a group of Flow CLI executables. The file must have the extension `.flow`, `.flow.yaml`, or `.flow.yml` \\nin order to be discovered by the CLI. It's configuration is used to define a group of executables with shared metadata \\n(namespace, tags, etc). A workspace can have multiple flow files located anywhere in the workspace directory\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"description\": {"] -#[doc = " \"description\": \"A description of the executables defined within the flow file. This description will used as a shared description\\nfor all executables in the flow file.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"descriptionFile\": {"] -#[doc = " \"description\": \"A path to a markdown file that contains the description of the executables defined within the flow file.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"executables\": {"] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/Executable\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"fromFile\": {"] -#[doc = " \"description\": \"DEPRECATED: Use `imports` instead\","] -#[doc = " \"default\": [],"] -#[doc = " \"$ref\": \"#/definitions/FromFile\""] -#[doc = " },"] -#[doc = " \"imports\": {"] -#[doc = " \"default\": [],"] -#[doc = " \"$ref\": \"#/definitions/FromFile\""] -#[doc = " },"] -#[doc = " \"namespace\": {"] -#[doc = " \"description\": \"The namespace to be given to all executables in the flow file.\\nIf not set, the executables in the file will be grouped into the root (*) namespace. \\nNamespaces can be reused across multiple flow files.\\n\\nNamespaces are used to reference executables in the CLI using the format `workspace:namespace/name`.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"tags\": {"] -#[doc = " \"description\": \"Tags to be applied to all executables defined within the flow file.\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"visibility\": {"] -#[doc = " \"$ref\": \"#/definitions/CommonVisibility\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct FlowFile { - #[doc = "A description of the executables defined within the flow file. This description will used as a shared description\nfor all executables in the flow file.\n"] - #[serde(default)] - pub description: ::std::string::String, - #[doc = "A path to a markdown file that contains the description of the executables defined within the flow file."] - #[serde(rename = "descriptionFile", default)] - pub description_file: ::std::string::String, - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub executables: ::std::vec::Vec, - #[doc = "DEPRECATED: Use `imports` instead"] - #[serde(rename = "fromFile", default = "defaults::flow_file_from_file")] - pub from_file: FromFile, - #[serde(default = "defaults::flow_file_imports")] - pub imports: FromFile, - #[doc = "The namespace to be given to all executables in the flow file.\nIf not set, the executables in the file will be grouped into the root (*) namespace. \nNamespaces can be reused across multiple flow files.\n\nNamespaces are used to reference executables in the CLI using the format `workspace:namespace/name`.\n"] - #[serde(default)] - pub namespace: ::std::string::String, - #[doc = "Tags to be applied to all executables defined within the flow file."] - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub tags: ::std::vec::Vec<::std::string::String>, - #[serde(default, skip_serializing_if = "::std::option::Option::is_none")] - pub visibility: ::std::option::Option, -} -impl ::std::convert::From<&FlowFile> for FlowFile { - fn from(value: &FlowFile) -> Self { - value.clone() - } -} -impl ::std::default::Default for FlowFile { - fn default() -> Self { - Self { - description: Default::default(), - description_file: Default::default(), - executables: Default::default(), - from_file: defaults::flow_file_from_file(), - imports: defaults::flow_file_imports(), - namespace: Default::default(), - tags: Default::default(), - visibility: Default::default(), - } - } -} -impl FlowFile { - pub fn builder() -> builder::FlowFile { - Default::default() - } -} -#[doc = "A list of `.sh` files to convert into generated executables in the file's executable group."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A list of `.sh` files to convert into generated executables in the file's executable group.\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct FromFile(pub ::std::vec::Vec<::std::string::String>); -impl ::std::ops::Deref for FromFile { - type Target = ::std::vec::Vec<::std::string::String>; - fn deref(&self) -> &::std::vec::Vec<::std::string::String> { - &self.0 - } -} -impl ::std::convert::From for ::std::vec::Vec<::std::string::String> { - fn from(value: FromFile) -> Self { - value.0 - } -} -impl ::std::convert::From<&FromFile> for FromFile { - fn from(value: &FromFile) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::vec::Vec<::std::string::String>> for FromFile { - fn from(value: ::std::vec::Vec<::std::string::String>) -> Self { - Self(value) - } -} -#[doc = "`Ref`"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct Ref(pub ::serde_json::Value); -impl ::std::ops::Deref for Ref { - type Target = ::serde_json::Value; - fn deref(&self) -> &::serde_json::Value { - &self.0 - } -} -impl ::std::convert::From for ::serde_json::Value { - fn from(value: Ref) -> Self { - value.0 - } -} -impl ::std::convert::From<&Ref> for Ref { - fn from(value: &Ref) -> Self { - value.clone() - } -} -impl ::std::convert::From<::serde_json::Value> for Ref { - fn from(value: ::serde_json::Value) -> Self { - Self(value) - } -} -#[doc = "`Verb`"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -#[serde(transparent)] -pub struct Verb(pub ::serde_json::Value); -impl ::std::ops::Deref for Verb { - type Target = ::serde_json::Value; - fn deref(&self) -> &::serde_json::Value { - &self.0 - } -} -impl ::std::convert::From for ::serde_json::Value { - fn from(value: Verb) -> Self { - value.0 - } -} -impl ::std::convert::From<&Verb> for Verb { - fn from(value: &Verb) -> Self { - value.clone() - } -} -impl ::std::convert::From<::serde_json::Value> for Verb { - fn from(value: ::serde_json::Value) -> Self { - Self(value) - } -} -#[doc = r" Types for composing complex structures."] -pub mod builder { - #[derive(Clone, Debug)] - pub struct Executable { - aliases: ::std::result::Result, - description: ::std::result::Result<::std::string::String, ::std::string::String>, - exec: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - launch: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - name: ::std::result::Result<::std::string::String, ::std::string::String>, - parallel: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - render: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - request: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - serial: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - tags: ::std::result::Result, - timeout: ::std::result::Result< - ::std::option::Option<::std::string::String>, - ::std::string::String, - >, - verb: ::std::result::Result, - verb_aliases: ::std::result::Result<::std::vec::Vec, ::std::string::String>, - visibility: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - } - impl ::std::default::Default for Executable { - fn default() -> Self { - Self { - aliases: Ok(super::defaults::executable_aliases()), - description: Ok(Default::default()), - exec: Ok(Default::default()), - launch: Ok(Default::default()), - name: Ok(Default::default()), - parallel: Ok(Default::default()), - render: Ok(Default::default()), - request: Ok(Default::default()), - serial: Ok(Default::default()), - tags: Ok(super::defaults::executable_tags()), - timeout: Ok(Default::default()), - verb: Err("no value supplied for verb".to_string()), - verb_aliases: Ok(Default::default()), - visibility: Ok(Default::default()), - } - } - } - impl Executable { - pub fn aliases(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.aliases = value - .try_into() - .map_err(|e| format!("error converting supplied value for aliases: {}", e)); - self - } - pub fn description(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.description = value - .try_into() - .map_err(|e| format!("error converting supplied value for description: {}", e)); - self - } - pub fn exec(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.exec = value - .try_into() - .map_err(|e| format!("error converting supplied value for exec: {}", e)); - self - } - pub fn launch(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::option::Option, - >, - T::Error: ::std::fmt::Display, - { - self.launch = value - .try_into() - .map_err(|e| format!("error converting supplied value for launch: {}", e)); - self - } - pub fn name(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.name = value - .try_into() - .map_err(|e| format!("error converting supplied value for name: {}", e)); - self - } - pub fn parallel(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::option::Option, - >, - T::Error: ::std::fmt::Display, - { - self.parallel = value - .try_into() - .map_err(|e| format!("error converting supplied value for parallel: {}", e)); - self - } - pub fn render(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::option::Option, - >, - T::Error: ::std::fmt::Display, - { - self.render = value - .try_into() - .map_err(|e| format!("error converting supplied value for render: {}", e)); - self - } - pub fn request(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::option::Option, - >, - T::Error: ::std::fmt::Display, - { - self.request = value - .try_into() - .map_err(|e| format!("error converting supplied value for request: {}", e)); - self - } - pub fn serial(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::option::Option, - >, - T::Error: ::std::fmt::Display, - { - self.serial = value - .try_into() - .map_err(|e| format!("error converting supplied value for serial: {}", e)); - self - } - pub fn tags(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.tags = value - .try_into() - .map_err(|e| format!("error converting supplied value for tags: {}", e)); - self - } - pub fn timeout(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.timeout = value - .try_into() - .map_err(|e| format!("error converting supplied value for timeout: {}", e)); - self - } - pub fn verb(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.verb = value - .try_into() - .map_err(|e| format!("error converting supplied value for verb: {}", e)); - self - } - pub fn verb_aliases(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.verb_aliases = value - .try_into() - .map_err(|e| format!("error converting supplied value for verb_aliases: {}", e)); - self - } - pub fn visibility(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.visibility = value - .try_into() - .map_err(|e| format!("error converting supplied value for visibility: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::Executable { - type Error = super::error::ConversionError; - fn try_from( - value: Executable, - ) -> ::std::result::Result { - Ok(Self { - aliases: value.aliases?, - description: value.description?, - exec: value.exec?, - launch: value.launch?, - name: value.name?, - parallel: value.parallel?, - render: value.render?, - request: value.request?, - serial: value.serial?, - tags: value.tags?, - timeout: value.timeout?, - verb: value.verb?, - verb_aliases: value.verb_aliases?, - visibility: value.visibility?, - }) - } - } - impl ::std::convert::From for Executable { - fn from(value: super::Executable) -> Self { - Self { - aliases: Ok(value.aliases), - description: Ok(value.description), - exec: Ok(value.exec), - launch: Ok(value.launch), - name: Ok(value.name), - parallel: Ok(value.parallel), - render: Ok(value.render), - request: Ok(value.request), - serial: Ok(value.serial), - tags: Ok(value.tags), - timeout: Ok(value.timeout), - verb: Ok(value.verb), - verb_aliases: Ok(value.verb_aliases), - visibility: Ok(value.visibility), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableArgument { - default: ::std::result::Result<::std::string::String, ::std::string::String>, - env_key: ::std::result::Result<::std::string::String, ::std::string::String>, - flag: ::std::result::Result<::std::string::String, ::std::string::String>, - output_file: ::std::result::Result<::std::string::String, ::std::string::String>, - pos: ::std::result::Result<::std::option::Option, ::std::string::String>, - required: ::std::result::Result, - type_: ::std::result::Result, - } - impl ::std::default::Default for ExecutableArgument { - fn default() -> Self { - Self { - default: Ok(Default::default()), - env_key: Ok(Default::default()), - flag: Ok(Default::default()), - output_file: Ok(Default::default()), - pos: Ok(Default::default()), - required: Ok(Default::default()), - type_: Ok(super::defaults::executable_argument_type()), - } - } - } - impl ExecutableArgument { - pub fn default(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.default = value - .try_into() - .map_err(|e| format!("error converting supplied value for default: {}", e)); - self - } - pub fn env_key(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.env_key = value - .try_into() - .map_err(|e| format!("error converting supplied value for env_key: {}", e)); - self - } - pub fn flag(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.flag = value - .try_into() - .map_err(|e| format!("error converting supplied value for flag: {}", e)); - self - } - pub fn output_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.output_file = value - .try_into() - .map_err(|e| format!("error converting supplied value for output_file: {}", e)); - self - } - pub fn pos(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.pos = value - .try_into() - .map_err(|e| format!("error converting supplied value for pos: {}", e)); - self - } - pub fn required(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.required = value - .try_into() - .map_err(|e| format!("error converting supplied value for required: {}", e)); - self - } - pub fn type_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.type_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for type_: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::ExecutableArgument { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableArgument, - ) -> ::std::result::Result { - Ok(Self { - default: value.default?, - env_key: value.env_key?, - flag: value.flag?, - output_file: value.output_file?, - pos: value.pos?, - required: value.required?, - type_: value.type_?, - }) - } - } - impl ::std::convert::From for ExecutableArgument { - fn from(value: super::ExecutableArgument) -> Self { - Self { - default: Ok(value.default), - env_key: Ok(value.env_key), - flag: Ok(value.flag), - output_file: Ok(value.output_file), - pos: Ok(value.pos), - required: Ok(value.required), - type_: Ok(value.type_), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableExecExecutableType { - args: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - cmd: ::std::result::Result<::std::string::String, ::std::string::String>, - dir: ::std::result::Result, - file: ::std::result::Result<::std::string::String, ::std::string::String>, - log_mode: ::std::result::Result<::std::string::String, ::std::string::String>, - params: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - } - impl ::std::default::Default for ExecutableExecExecutableType { - fn default() -> Self { - Self { - args: Ok(Default::default()), - cmd: Ok(Default::default()), - dir: Ok(super::defaults::executable_exec_executable_type_dir()), - file: Ok(Default::default()), - log_mode: Ok(super::defaults::executable_exec_executable_type_log_mode()), - params: Ok(Default::default()), - } - } - } - impl ExecutableExecExecutableType { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn cmd(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.cmd = value - .try_into() - .map_err(|e| format!("error converting supplied value for cmd: {}", e)); - self - } - pub fn dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for dir: {}", e)); - self - } - pub fn file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.file = value - .try_into() - .map_err(|e| format!("error converting supplied value for file: {}", e)); - self - } - pub fn log_mode(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.log_mode = value - .try_into() - .map_err(|e| format!("error converting supplied value for log_mode: {}", e)); - self - } - pub fn params(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.params = value - .try_into() - .map_err(|e| format!("error converting supplied value for params: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::ExecutableExecExecutableType { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableExecExecutableType, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - cmd: value.cmd?, - dir: value.dir?, - file: value.file?, - log_mode: value.log_mode?, - params: value.params?, - }) - } - } - impl ::std::convert::From for ExecutableExecExecutableType { - fn from(value: super::ExecutableExecExecutableType) -> Self { - Self { - args: Ok(value.args), - cmd: Ok(value.cmd), - dir: Ok(value.dir), - file: Ok(value.file), - log_mode: Ok(value.log_mode), - params: Ok(value.params), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableLaunchExecutableType { - app: ::std::result::Result<::std::string::String, ::std::string::String>, - args: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - params: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - uri: ::std::result::Result<::std::string::String, ::std::string::String>, - } - impl ::std::default::Default for ExecutableLaunchExecutableType { - fn default() -> Self { - Self { - app: Ok(Default::default()), - args: Ok(Default::default()), - params: Ok(Default::default()), - uri: Err("no value supplied for uri".to_string()), - } - } - } - impl ExecutableLaunchExecutableType { - pub fn app(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.app = value - .try_into() - .map_err(|e| format!("error converting supplied value for app: {}", e)); - self - } - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn params(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.params = value - .try_into() - .map_err(|e| format!("error converting supplied value for params: {}", e)); - self - } - pub fn uri(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.uri = value - .try_into() - .map_err(|e| format!("error converting supplied value for uri: {}", e)); - self - } - } - impl ::std::convert::TryFrom - for super::ExecutableLaunchExecutableType - { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableLaunchExecutableType, - ) -> ::std::result::Result { - Ok(Self { - app: value.app?, - args: value.args?, - params: value.params?, - uri: value.uri?, - }) - } - } - impl ::std::convert::From - for ExecutableLaunchExecutableType - { - fn from(value: super::ExecutableLaunchExecutableType) -> Self { - Self { - app: Ok(value.app), - args: Ok(value.args), - params: Ok(value.params), - uri: Ok(value.uri), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableParallelExecutableType { - args: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - dir: ::std::result::Result, - execs: ::std::result::Result, - fail_fast: ::std::result::Result<::std::option::Option, ::std::string::String>, - max_threads: ::std::result::Result, - params: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - } - impl ::std::default::Default for ExecutableParallelExecutableType { - fn default() -> Self { - Self { - args: Ok(Default::default()), - dir: Ok(super::defaults::executable_parallel_executable_type_dir()), - execs: Err("no value supplied for execs".to_string()), - fail_fast: Ok(Default::default()), - max_threads: Ok(super::defaults::default_u64::()), - params: Ok(Default::default()), - } - } - } - impl ExecutableParallelExecutableType { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for dir: {}", e)); - self - } - pub fn execs(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.execs = value - .try_into() - .map_err(|e| format!("error converting supplied value for execs: {}", e)); - self - } - pub fn fail_fast(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.fail_fast = value - .try_into() - .map_err(|e| format!("error converting supplied value for fail_fast: {}", e)); - self - } - pub fn max_threads(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.max_threads = value - .try_into() - .map_err(|e| format!("error converting supplied value for max_threads: {}", e)); - self - } - pub fn params(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.params = value - .try_into() - .map_err(|e| format!("error converting supplied value for params: {}", e)); - self - } - } - impl ::std::convert::TryFrom - for super::ExecutableParallelExecutableType - { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableParallelExecutableType, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - dir: value.dir?, - execs: value.execs?, - fail_fast: value.fail_fast?, - max_threads: value.max_threads?, - params: value.params?, - }) - } - } - impl ::std::convert::From - for ExecutableParallelExecutableType - { - fn from(value: super::ExecutableParallelExecutableType) -> Self { - Self { - args: Ok(value.args), - dir: Ok(value.dir), - execs: Ok(value.execs), - fail_fast: Ok(value.fail_fast), - max_threads: Ok(value.max_threads), - params: Ok(value.params), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableParallelRefConfig { - args: ::std::result::Result<::std::vec::Vec<::std::string::String>, ::std::string::String>, - cmd: ::std::result::Result<::std::string::String, ::std::string::String>, - if_: ::std::result::Result<::std::string::String, ::std::string::String>, - ref_: ::std::result::Result, - retries: ::std::result::Result, - } - impl ::std::default::Default for ExecutableParallelRefConfig { - fn default() -> Self { - Self { - args: Ok(Default::default()), - cmd: Ok(Default::default()), - if_: Ok(Default::default()), - ref_: Ok(super::defaults::executable_parallel_ref_config_ref()), - retries: Ok(Default::default()), - } - } - } - impl ExecutableParallelRefConfig { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn cmd(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.cmd = value - .try_into() - .map_err(|e| format!("error converting supplied value for cmd: {}", e)); - self - } - pub fn if_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.if_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for if_: {}", e)); - self - } - pub fn ref_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.ref_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for ref_: {}", e)); - self - } - pub fn retries(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.retries = value - .try_into() - .map_err(|e| format!("error converting supplied value for retries: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::ExecutableParallelRefConfig { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableParallelRefConfig, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - cmd: value.cmd?, - if_: value.if_?, - ref_: value.ref_?, - retries: value.retries?, - }) - } - } - impl ::std::convert::From for ExecutableParallelRefConfig { - fn from(value: super::ExecutableParallelRefConfig) -> Self { - Self { - args: Ok(value.args), - cmd: Ok(value.cmd), - if_: Ok(value.if_), - ref_: Ok(value.ref_), - retries: Ok(value.retries), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableParameter { - env_file: ::std::result::Result<::std::string::String, ::std::string::String>, - env_key: ::std::result::Result<::std::string::String, ::std::string::String>, - output_file: ::std::result::Result<::std::string::String, ::std::string::String>, - prompt: ::std::result::Result<::std::string::String, ::std::string::String>, - secret_ref: ::std::result::Result<::std::string::String, ::std::string::String>, - text: ::std::result::Result<::std::string::String, ::std::string::String>, - } - impl ::std::default::Default for ExecutableParameter { - fn default() -> Self { - Self { - env_file: Ok(Default::default()), - env_key: Ok(Default::default()), - output_file: Ok(Default::default()), - prompt: Ok(Default::default()), - secret_ref: Ok(Default::default()), - text: Ok(Default::default()), - } - } - } - impl ExecutableParameter { - pub fn env_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.env_file = value - .try_into() - .map_err(|e| format!("error converting supplied value for env_file: {}", e)); - self - } - pub fn env_key(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.env_key = value - .try_into() - .map_err(|e| format!("error converting supplied value for env_key: {}", e)); - self - } - pub fn output_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.output_file = value - .try_into() - .map_err(|e| format!("error converting supplied value for output_file: {}", e)); - self - } - pub fn prompt(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.prompt = value - .try_into() - .map_err(|e| format!("error converting supplied value for prompt: {}", e)); - self - } - pub fn secret_ref(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.secret_ref = value - .try_into() - .map_err(|e| format!("error converting supplied value for secret_ref: {}", e)); - self - } - pub fn text(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.text = value - .try_into() - .map_err(|e| format!("error converting supplied value for text: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::ExecutableParameter { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableParameter, - ) -> ::std::result::Result { - Ok(Self { - env_file: value.env_file?, - env_key: value.env_key?, - output_file: value.output_file?, - prompt: value.prompt?, - secret_ref: value.secret_ref?, - text: value.text?, - }) - } - } - impl ::std::convert::From for ExecutableParameter { - fn from(value: super::ExecutableParameter) -> Self { - Self { - env_file: Ok(value.env_file), - env_key: Ok(value.env_key), - output_file: Ok(value.output_file), - prompt: Ok(value.prompt), - secret_ref: Ok(value.secret_ref), - text: Ok(value.text), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableRenderExecutableType { - args: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - dir: ::std::result::Result, - params: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - template_data_file: ::std::result::Result<::std::string::String, ::std::string::String>, - template_file: ::std::result::Result<::std::string::String, ::std::string::String>, - } - impl ::std::default::Default for ExecutableRenderExecutableType { - fn default() -> Self { - Self { - args: Ok(Default::default()), - dir: Ok(super::defaults::executable_render_executable_type_dir()), - params: Ok(Default::default()), - template_data_file: Ok(Default::default()), - template_file: Err("no value supplied for template_file".to_string()), - } - } - } - impl ExecutableRenderExecutableType { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for dir: {}", e)); - self - } - pub fn params(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.params = value - .try_into() - .map_err(|e| format!("error converting supplied value for params: {}", e)); - self - } - pub fn template_data_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.template_data_file = value.try_into().map_err(|e| { - format!( - "error converting supplied value for template_data_file: {}", - e - ) - }); - self - } - pub fn template_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.template_file = value - .try_into() - .map_err(|e| format!("error converting supplied value for template_file: {}", e)); - self - } - } - impl ::std::convert::TryFrom - for super::ExecutableRenderExecutableType - { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableRenderExecutableType, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - dir: value.dir?, - params: value.params?, - template_data_file: value.template_data_file?, - template_file: value.template_file?, - }) - } - } - impl ::std::convert::From - for ExecutableRenderExecutableType - { - fn from(value: super::ExecutableRenderExecutableType) -> Self { - Self { - args: Ok(value.args), - dir: Ok(value.dir), - params: Ok(value.params), - template_data_file: Ok(value.template_data_file), - template_file: Ok(value.template_file), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableRequestExecutableType { - args: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - body: ::std::result::Result<::std::string::String, ::std::string::String>, - headers: ::std::result::Result< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - ::std::string::String, - >, - log_response: ::std::result::Result, - method: ::std::result::Result< - super::ExecutableRequestExecutableTypeMethod, - ::std::string::String, - >, - params: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - response_file: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - timeout: ::std::result::Result<::std::string::String, ::std::string::String>, - transform_response: ::std::result::Result<::std::string::String, ::std::string::String>, - url: ::std::result::Result<::std::string::String, ::std::string::String>, - valid_status_codes: ::std::result::Result<::std::vec::Vec, ::std::string::String>, - } - impl ::std::default::Default for ExecutableRequestExecutableType { - fn default() -> Self { - Self { - args: Ok(Default::default()), - body: Ok(Default::default()), - headers: Ok(Default::default()), - log_response: Ok(Default::default()), - method: Ok(super::defaults::executable_request_executable_type_method()), - params: Ok(Default::default()), - response_file: Ok(Default::default()), - timeout: Ok(super::defaults::executable_request_executable_type_timeout()), - transform_response: Ok(Default::default()), - url: Err("no value supplied for url".to_string()), - valid_status_codes: Ok(Default::default()), - } - } - } - impl ExecutableRequestExecutableType { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn body(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.body = value - .try_into() - .map_err(|e| format!("error converting supplied value for body: {}", e)); - self - } - pub fn headers(mut self, value: T) -> Self - where - T: ::std::convert::TryInto< - ::std::collections::HashMap<::std::string::String, ::std::string::String>, - >, - T::Error: ::std::fmt::Display, - { - self.headers = value - .try_into() - .map_err(|e| format!("error converting supplied value for headers: {}", e)); - self - } - pub fn log_response(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.log_response = value - .try_into() - .map_err(|e| format!("error converting supplied value for log_response: {}", e)); - self - } - pub fn method(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.method = value - .try_into() - .map_err(|e| format!("error converting supplied value for method: {}", e)); - self - } - pub fn params(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.params = value - .try_into() - .map_err(|e| format!("error converting supplied value for params: {}", e)); - self - } - pub fn response_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.response_file = value - .try_into() - .map_err(|e| format!("error converting supplied value for response_file: {}", e)); - self - } - pub fn timeout(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.timeout = value - .try_into() - .map_err(|e| format!("error converting supplied value for timeout: {}", e)); - self - } - pub fn transform_response(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.transform_response = value.try_into().map_err(|e| { - format!( - "error converting supplied value for transform_response: {}", - e - ) - }); - self - } - pub fn url(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.url = value - .try_into() - .map_err(|e| format!("error converting supplied value for url: {}", e)); - self - } - pub fn valid_status_codes(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.valid_status_codes = value.try_into().map_err(|e| { - format!( - "error converting supplied value for valid_status_codes: {}", - e - ) - }); - self - } - } - impl ::std::convert::TryFrom - for super::ExecutableRequestExecutableType - { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableRequestExecutableType, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - body: value.body?, - headers: value.headers?, - log_response: value.log_response?, - method: value.method?, - params: value.params?, - response_file: value.response_file?, - timeout: value.timeout?, - transform_response: value.transform_response?, - url: value.url?, - valid_status_codes: value.valid_status_codes?, - }) - } - } - impl ::std::convert::From - for ExecutableRequestExecutableType - { - fn from(value: super::ExecutableRequestExecutableType) -> Self { - Self { - args: Ok(value.args), - body: Ok(value.body), - headers: Ok(value.headers), - log_response: Ok(value.log_response), - method: Ok(value.method), - params: Ok(value.params), - response_file: Ok(value.response_file), - timeout: Ok(value.timeout), - transform_response: Ok(value.transform_response), - url: Ok(value.url), - valid_status_codes: Ok(value.valid_status_codes), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableRequestResponseFile { - dir: ::std::result::Result, - filename: ::std::result::Result<::std::string::String, ::std::string::String>, - save_as: ::std::result::Result< - super::ExecutableRequestResponseFileSaveAs, - ::std::string::String, - >, - } - impl ::std::default::Default for ExecutableRequestResponseFile { - fn default() -> Self { - Self { - dir: Ok(super::defaults::executable_request_response_file_dir()), - filename: Err("no value supplied for filename".to_string()), - save_as: Ok(super::defaults::executable_request_response_file_save_as()), - } - } - } - impl ExecutableRequestResponseFile { - pub fn dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for dir: {}", e)); - self - } - pub fn filename(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.filename = value - .try_into() - .map_err(|e| format!("error converting supplied value for filename: {}", e)); - self - } - pub fn save_as(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.save_as = value - .try_into() - .map_err(|e| format!("error converting supplied value for save_as: {}", e)); - self - } - } - impl ::std::convert::TryFrom - for super::ExecutableRequestResponseFile - { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableRequestResponseFile, - ) -> ::std::result::Result { - Ok(Self { - dir: value.dir?, - filename: value.filename?, - save_as: value.save_as?, - }) - } - } - impl ::std::convert::From for ExecutableRequestResponseFile { - fn from(value: super::ExecutableRequestResponseFile) -> Self { - Self { - dir: Ok(value.dir), - filename: Ok(value.filename), - save_as: Ok(value.save_as), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableSerialExecutableType { - args: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - dir: ::std::result::Result, - execs: ::std::result::Result, - fail_fast: ::std::result::Result<::std::option::Option, ::std::string::String>, - params: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - } - impl ::std::default::Default for ExecutableSerialExecutableType { - fn default() -> Self { - Self { - args: Ok(Default::default()), - dir: Ok(super::defaults::executable_serial_executable_type_dir()), - execs: Err("no value supplied for execs".to_string()), - fail_fast: Ok(Default::default()), - params: Ok(Default::default()), - } - } - } - impl ExecutableSerialExecutableType { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for dir: {}", e)); - self - } - pub fn execs(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.execs = value - .try_into() - .map_err(|e| format!("error converting supplied value for execs: {}", e)); - self - } - pub fn fail_fast(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.fail_fast = value - .try_into() - .map_err(|e| format!("error converting supplied value for fail_fast: {}", e)); - self - } - pub fn params(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.params = value - .try_into() - .map_err(|e| format!("error converting supplied value for params: {}", e)); - self - } - } - impl ::std::convert::TryFrom - for super::ExecutableSerialExecutableType - { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableSerialExecutableType, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - dir: value.dir?, - execs: value.execs?, - fail_fast: value.fail_fast?, - params: value.params?, - }) - } - } - impl ::std::convert::From - for ExecutableSerialExecutableType - { - fn from(value: super::ExecutableSerialExecutableType) -> Self { - Self { - args: Ok(value.args), - dir: Ok(value.dir), - execs: Ok(value.execs), - fail_fast: Ok(value.fail_fast), - params: Ok(value.params), - } - } - } - #[derive(Clone, Debug)] - pub struct ExecutableSerialRefConfig { - args: ::std::result::Result<::std::vec::Vec<::std::string::String>, ::std::string::String>, - cmd: ::std::result::Result<::std::string::String, ::std::string::String>, - if_: ::std::result::Result<::std::string::String, ::std::string::String>, - ref_: ::std::result::Result, - retries: ::std::result::Result, - review_required: ::std::result::Result, - } - impl ::std::default::Default for ExecutableSerialRefConfig { - fn default() -> Self { - Self { - args: Ok(Default::default()), - cmd: Ok(Default::default()), - if_: Ok(Default::default()), - ref_: Ok(super::defaults::executable_serial_ref_config_ref()), - retries: Ok(Default::default()), - review_required: Ok(Default::default()), - } - } - } - impl ExecutableSerialRefConfig { - pub fn args(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.args = value - .try_into() - .map_err(|e| format!("error converting supplied value for args: {}", e)); - self - } - pub fn cmd(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.cmd = value - .try_into() - .map_err(|e| format!("error converting supplied value for cmd: {}", e)); - self - } - pub fn if_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.if_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for if_: {}", e)); - self - } - pub fn ref_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.ref_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for ref_: {}", e)); - self - } - pub fn retries(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.retries = value - .try_into() - .map_err(|e| format!("error converting supplied value for retries: {}", e)); - self - } - pub fn review_required(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.review_required = value - .try_into() - .map_err(|e| format!("error converting supplied value for review_required: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::ExecutableSerialRefConfig { - type Error = super::error::ConversionError; - fn try_from( - value: ExecutableSerialRefConfig, - ) -> ::std::result::Result { - Ok(Self { - args: value.args?, - cmd: value.cmd?, - if_: value.if_?, - ref_: value.ref_?, - retries: value.retries?, - review_required: value.review_required?, - }) - } - } - impl ::std::convert::From for ExecutableSerialRefConfig { - fn from(value: super::ExecutableSerialRefConfig) -> Self { - Self { - args: Ok(value.args), - cmd: Ok(value.cmd), - if_: Ok(value.if_), - ref_: Ok(value.ref_), - retries: Ok(value.retries), - review_required: Ok(value.review_required), - } - } - } - #[derive(Clone, Debug)] - pub struct FlowFile { - description: ::std::result::Result<::std::string::String, ::std::string::String>, - description_file: ::std::result::Result<::std::string::String, ::std::string::String>, - executables: - ::std::result::Result<::std::vec::Vec, ::std::string::String>, - from_file: ::std::result::Result, - imports: ::std::result::Result, - namespace: ::std::result::Result<::std::string::String, ::std::string::String>, - tags: ::std::result::Result<::std::vec::Vec<::std::string::String>, ::std::string::String>, - visibility: ::std::result::Result< - ::std::option::Option, - ::std::string::String, - >, - } - impl ::std::default::Default for FlowFile { - fn default() -> Self { - Self { - description: Ok(Default::default()), - description_file: Ok(Default::default()), - executables: Ok(Default::default()), - from_file: Ok(super::defaults::flow_file_from_file()), - imports: Ok(super::defaults::flow_file_imports()), - namespace: Ok(Default::default()), - tags: Ok(Default::default()), - visibility: Ok(Default::default()), - } - } - } - impl FlowFile { - pub fn description(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.description = value - .try_into() - .map_err(|e| format!("error converting supplied value for description: {}", e)); - self - } - pub fn description_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.description_file = value.try_into().map_err(|e| { - format!( - "error converting supplied value for description_file: {}", - e - ) - }); - self - } - pub fn executables(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.executables = value - .try_into() - .map_err(|e| format!("error converting supplied value for executables: {}", e)); - self - } - pub fn from_file(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.from_file = value - .try_into() - .map_err(|e| format!("error converting supplied value for from_file: {}", e)); - self - } - pub fn imports(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.imports = value - .try_into() - .map_err(|e| format!("error converting supplied value for imports: {}", e)); - self - } - pub fn namespace(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.namespace = value - .try_into() - .map_err(|e| format!("error converting supplied value for namespace: {}", e)); - self - } - pub fn tags(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec<::std::string::String>>, - T::Error: ::std::fmt::Display, - { - self.tags = value - .try_into() - .map_err(|e| format!("error converting supplied value for tags: {}", e)); - self - } - pub fn visibility(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::option::Option>, - T::Error: ::std::fmt::Display, - { - self.visibility = value - .try_into() - .map_err(|e| format!("error converting supplied value for visibility: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::FlowFile { - type Error = super::error::ConversionError; - fn try_from(value: FlowFile) -> ::std::result::Result { - Ok(Self { - description: value.description?, - description_file: value.description_file?, - executables: value.executables?, - from_file: value.from_file?, - imports: value.imports?, - namespace: value.namespace?, - tags: value.tags?, - visibility: value.visibility?, - }) - } - } - impl ::std::convert::From for FlowFile { - fn from(value: super::FlowFile) -> Self { - Self { - description: Ok(value.description), - description_file: Ok(value.description_file), - executables: Ok(value.executables), - from_file: Ok(value.from_file), - imports: Ok(value.imports), - namespace: Ok(value.namespace), - tags: Ok(value.tags), - visibility: Ok(value.visibility), - } - } - } -} -#[doc = r" Generation of default values for serde."] -pub mod defaults { - pub(super) fn default_u64() -> T - where - T: ::std::convert::TryFrom, - >::Error: ::std::fmt::Debug, - { - T::try_from(V).unwrap() - } - pub(super) fn executable_aliases() -> super::CommonAliases { - super::CommonAliases(vec![]) - } - pub(super) fn executable_tags() -> super::CommonTags { - super::CommonTags(vec![]) - } - pub(super) fn executable_argument_type() -> super::ExecutableArgumentType { - super::ExecutableArgumentType::String - } - pub(super) fn executable_exec_executable_type_dir() -> super::ExecutableDirectory { - super::ExecutableDirectory("".to_string()) - } - pub(super) fn executable_exec_executable_type_log_mode() -> ::std::string::String { - "logfmt".to_string() - } - pub(super) fn executable_parallel_executable_type_dir() -> super::ExecutableDirectory { - super::ExecutableDirectory("".to_string()) - } - pub(super) fn executable_parallel_ref_config_ref() -> super::ExecutableRef { - super::ExecutableRef("".to_string()) - } - pub(super) fn executable_render_executable_type_dir() -> super::ExecutableDirectory { - super::ExecutableDirectory("".to_string()) - } - pub(super) fn executable_request_executable_type_method( - ) -> super::ExecutableRequestExecutableTypeMethod { - super::ExecutableRequestExecutableTypeMethod::Get - } - pub(super) fn executable_request_executable_type_timeout() -> ::std::string::String { - "30m0s".to_string() - } - pub(super) fn executable_request_response_file_dir() -> super::ExecutableDirectory { - super::ExecutableDirectory("".to_string()) - } - pub(super) fn executable_request_response_file_save_as( - ) -> super::ExecutableRequestResponseFileSaveAs { - super::ExecutableRequestResponseFileSaveAs::Raw - } - pub(super) fn executable_serial_executable_type_dir() -> super::ExecutableDirectory { - super::ExecutableDirectory("".to_string()) - } - pub(super) fn executable_serial_ref_config_ref() -> super::ExecutableRef { - super::ExecutableRef("".to_string()) - } - pub(super) fn flow_file_from_file() -> super::FromFile { - super::FromFile(vec![]) - } - pub(super) fn flow_file_imports() -> super::FromFile { - super::FromFile(vec![]) - } -} diff --git a/desktop/src-tauri/src/types/generated/mod.rs b/desktop/src-tauri/src/types/generated/mod.rs deleted file mode 100644 index 73139ea4..00000000 --- a/desktop/src-tauri/src/types/generated/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -// Generated module exports -pub mod config; -pub mod flowfile; -pub mod template; -pub mod workspace; diff --git a/desktop/src-tauri/src/types/generated/template.rs b/desktop/src-tauri/src/types/generated/template.rs deleted file mode 100644 index dc8dae0f..00000000 --- a/desktop/src-tauri/src/types/generated/template.rs +++ /dev/null @@ -1,944 +0,0 @@ -#![allow(clippy::redundant_closure_call)] -#![allow(clippy::needless_lifetimes)] -#![allow(clippy::match_single_binding)] -#![allow(clippy::clone_on_copy)] - -#[doc = r" Error types."] -pub mod error { - #[doc = r" Error from a `TryFrom` or `FromStr` implementation."] - pub struct ConversionError(::std::borrow::Cow<'static, str>); - impl ::std::error::Error for ConversionError {} - impl ::std::fmt::Display for ConversionError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { - ::std::fmt::Display::fmt(&self.0, f) - } - } - impl ::std::fmt::Debug for ConversionError { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> Result<(), ::std::fmt::Error> { - ::std::fmt::Debug::fmt(&self.0, f) - } - } - impl From<&'static str> for ConversionError { - fn from(value: &'static str) -> Self { - Self(value.into()) - } - } - impl From for ConversionError { - fn from(value: String) -> Self { - Self(value.into()) - } - } -} -#[doc = "File source and destination configuration.\nGo templating from form data is supported in all fields.\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"File source and destination configuration.\\nGo templating from form data is supported in all fields.\\n\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"srcName\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"asTemplate\": {"] -#[doc = " \"description\": \"If true, the artifact will be copied as a template file. The file will be rendered using Go templating from \\nthe form data. [Expr language functions](https://expr-lang.org/docs/language-definition) are available for use in the template.\\n\","] -#[doc = " \"default\": false,"] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"dstDir\": {"] -#[doc = " \"description\": \"The directory to copy the file to. If not set, the file will be copied to the root of the flow file directory.\\nThe directory will be created if it does not exist.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"dstName\": {"] -#[doc = " \"description\": \"The name of the file to copy to. If not set, the file will be copied with the same name.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"if\": {"] -#[doc = " \"description\": \"An expression that determines whether the the artifact should be copied, using the Expr language syntax. \\nThe expression is evaluated at runtime and must resolve to a boolean value. If the condition is not met, \\nthe artifact will not be copied.\\n\\nThe expression has access to OS/architecture information (os, arch), environment variables (env), form input \\n(form), and context information (name, workspace, directory, etc.).\\n\\nSee the [flow documentation](https://flowexec.io/guide/templating) for more information.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"srcDir\": {"] -#[doc = " \"description\": \"The directory to copy the file from. \\nIf not set, the file will be copied from the directory of the template file.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"srcName\": {"] -#[doc = " \"description\": \"The name of the file to copy.\","] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct Artifact { - #[doc = "If true, the artifact will be copied as a template file. The file will be rendered using Go templating from \nthe form data. [Expr language functions](https://expr-lang.org/docs/language-definition) are available for use in the template.\n"] - #[serde(rename = "asTemplate", default)] - pub as_template: bool, - #[doc = "The directory to copy the file to. If not set, the file will be copied to the root of the flow file directory.\nThe directory will be created if it does not exist.\n"] - #[serde(rename = "dstDir", default)] - pub dst_dir: ::std::string::String, - #[doc = "The name of the file to copy to. If not set, the file will be copied with the same name."] - #[serde(rename = "dstName", default)] - pub dst_name: ::std::string::String, - #[doc = "An expression that determines whether the the artifact should be copied, using the Expr language syntax. \nThe expression is evaluated at runtime and must resolve to a boolean value. If the condition is not met, \nthe artifact will not be copied.\n\nThe expression has access to OS/architecture information (os, arch), environment variables (env), form input \n(form), and context information (name, workspace, directory, etc.).\n\nSee the [flow documentation](https://flowexec.io/guide/templating) for more information.\n"] - #[serde(rename = "if", default)] - pub if_: ::std::string::String, - #[doc = "The directory to copy the file from. \nIf not set, the file will be copied from the directory of the template file.\n"] - #[serde(rename = "srcDir", default)] - pub src_dir: ::std::string::String, - #[doc = "The name of the file to copy."] - #[serde(rename = "srcName")] - pub src_name: ::std::string::String, -} -impl ::std::convert::From<&Artifact> for Artifact { - fn from(value: &Artifact) -> Self { - value.clone() - } -} -impl Artifact { - pub fn builder() -> builder::Artifact { - Default::default() - } -} -#[doc = "A reference to an executable.\nThe format is ` /:`.\nFor example, `exec ws/ns:my-workflow`.\n\n- If the workspace is not specified, the current workspace will be used.\n- If the namespace is not specified, the current namespace will be used.\n- Excluding the name will reference the executable with a matching verb but an unspecified name and namespace (e.g. `exec ws` or simply `exec`).\n"] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A reference to an executable.\\nThe format is ` /:`.\\nFor example, `exec ws/ns:my-workflow`.\\n\\n- If the workspace is not specified, the current workspace will be used.\\n- If the namespace is not specified, the current namespace will be used.\\n- Excluding the name will reference the executable with a matching verb but an unspecified name and namespace (e.g. `exec ws` or simply `exec`).\\n\","] -#[doc = " \"type\": \"string\""] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -#[serde(transparent)] -pub struct ExecutableRef(pub ::std::string::String); -impl ::std::ops::Deref for ExecutableRef { - type Target = ::std::string::String; - fn deref(&self) -> &::std::string::String { - &self.0 - } -} -impl ::std::convert::From for ::std::string::String { - fn from(value: ExecutableRef) -> Self { - value.0 - } -} -impl ::std::convert::From<&ExecutableRef> for ExecutableRef { - fn from(value: &ExecutableRef) -> Self { - value.clone() - } -} -impl ::std::convert::From<::std::string::String> for ExecutableRef { - fn from(value: ::std::string::String) -> Self { - Self(value) - } -} -impl ::std::str::FromStr for ExecutableRef { - type Err = ::std::convert::Infallible; - fn from_str(value: &str) -> ::std::result::Result { - Ok(Self(value.to_string())) - } -} -impl ::std::fmt::Display for ExecutableRef { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - self.0.fmt(f) - } -} -#[doc = "A field to be displayed to the user when generating a flow file from a template."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"A field to be displayed to the user when generating a flow file from a template.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"key\","] -#[doc = " \"prompt\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"default\": {"] -#[doc = " \"description\": \"The default value to use if a value is not set.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"description\": {"] -#[doc = " \"description\": \"A description of the field.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"group\": {"] -#[doc = " \"description\": \"The group to display the field in. Fields with the same group will be displayed together.\","] -#[doc = " \"default\": 0,"] -#[doc = " \"type\": \"integer\""] -#[doc = " },"] -#[doc = " \"key\": {"] -#[doc = " \"description\": \"The key to associate the data with. This is used as the key in the template data map.\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"prompt\": {"] -#[doc = " \"description\": \"A prompt to be displayed to the user when collecting an input value.\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"required\": {"] -#[doc = " \"description\": \"If true, a value must be set. If false, the default value will be used if a value is not set.\","] -#[doc = " \"default\": false,"] -#[doc = " \"type\": \"boolean\""] -#[doc = " },"] -#[doc = " \"type\": {"] -#[doc = " \"description\": \"The type of input field to display.\","] -#[doc = " \"default\": \"text\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"text\","] -#[doc = " \"masked\","] -#[doc = " \"multiline\","] -#[doc = " \"confirm\""] -#[doc = " ]"] -#[doc = " },"] -#[doc = " \"validate\": {"] -#[doc = " \"description\": \"A regular expression to validate the input value against.\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct Field { - #[doc = "The default value to use if a value is not set."] - #[serde(default)] - pub default: ::std::string::String, - #[doc = "A description of the field."] - #[serde(default)] - pub description: ::std::string::String, - #[doc = "The group to display the field in. Fields with the same group will be displayed together."] - #[serde(default)] - pub group: i64, - #[doc = "The key to associate the data with. This is used as the key in the template data map."] - pub key: ::std::string::String, - #[doc = "A prompt to be displayed to the user when collecting an input value."] - pub prompt: ::std::string::String, - #[doc = "If true, a value must be set. If false, the default value will be used if a value is not set."] - #[serde(default)] - pub required: bool, - #[doc = "The type of input field to display."] - #[serde(rename = "type", default = "defaults::field_type")] - pub type_: FieldType, - #[doc = "A regular expression to validate the input value against."] - #[serde(default)] - pub validate: ::std::string::String, -} -impl ::std::convert::From<&Field> for Field { - fn from(value: &Field) -> Self { - value.clone() - } -} -impl Field { - pub fn builder() -> builder::Field { - Default::default() - } -} -#[doc = "The type of input field to display."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"The type of input field to display.\","] -#[doc = " \"default\": \"text\","] -#[doc = " \"type\": \"string\","] -#[doc = " \"enum\": ["] -#[doc = " \"text\","] -#[doc = " \"masked\","] -#[doc = " \"multiline\","] -#[doc = " \"confirm\""] -#[doc = " ]"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive( - :: serde :: Deserialize, - :: serde :: Serialize, - Clone, - Copy, - Debug, - Eq, - Hash, - Ord, - PartialEq, - PartialOrd, -)] -pub enum FieldType { - #[serde(rename = "text")] - Text, - #[serde(rename = "masked")] - Masked, - #[serde(rename = "multiline")] - Multiline, - #[serde(rename = "confirm")] - Confirm, -} -impl ::std::convert::From<&Self> for FieldType { - fn from(value: &FieldType) -> Self { - value.clone() - } -} -impl ::std::fmt::Display for FieldType { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - match *self { - Self::Text => f.write_str("text"), - Self::Masked => f.write_str("masked"), - Self::Multiline => f.write_str("multiline"), - Self::Confirm => f.write_str("confirm"), - } - } -} -impl ::std::str::FromStr for FieldType { - type Err = self::error::ConversionError; - fn from_str(value: &str) -> ::std::result::Result { - match value { - "text" => Ok(Self::Text), - "masked" => Ok(Self::Masked), - "multiline" => Ok(Self::Multiline), - "confirm" => Ok(Self::Confirm), - _ => Err("invalid value".into()), - } - } -} -impl ::std::convert::TryFrom<&str> for FieldType { - type Error = self::error::ConversionError; - fn try_from(value: &str) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<&::std::string::String> for FieldType { - type Error = self::error::ConversionError; - fn try_from( - value: &::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::convert::TryFrom<::std::string::String> for FieldType { - type Error = self::error::ConversionError; - fn try_from( - value: ::std::string::String, - ) -> ::std::result::Result { - value.parse() - } -} -impl ::std::default::Default for FieldType { - fn default() -> Self { - FieldType::Text - } -} -#[doc = "Configuration for a flowfile template; templates can be used to generate flow files."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"$id\": \"https://flowexec.io/schemas/template_schema.json\","] -#[doc = " \"title\": \"Template\","] -#[doc = " \"description\": \"Configuration for a flowfile template; templates can be used to generate flow files.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"required\": ["] -#[doc = " \"template\""] -#[doc = " ],"] -#[doc = " \"properties\": {"] -#[doc = " \"artifacts\": {"] -#[doc = " \"description\": \"A list of artifacts to be copied after generating the flow file.\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/Artifact\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"form\": {"] -#[doc = " \"description\": \"Form fields to be displayed to the user when generating a flow file from a template. \\nThe form will be rendered first, and the user's input can be used to render the template.\\n\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/Field\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"postRun\": {"] -#[doc = " \"description\": \"A list of exec executables to run after generating the flow file.\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/TemplateRefConfig\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"preRun\": {"] -#[doc = " \"description\": \"A list of exec executables to run before generating the flow file.\","] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"$ref\": \"#/definitions/TemplateRefConfig\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"template\": {"] -#[doc = " \"description\": \"The flow file template to generate. The template must be a valid flow file after rendering.\","] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct Template { - #[doc = "A list of artifacts to be copied after generating the flow file."] - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub artifacts: ::std::vec::Vec, - #[doc = "Form fields to be displayed to the user when generating a flow file from a template. \nThe form will be rendered first, and the user's input can be used to render the template.\n"] - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub form: ::std::vec::Vec, - #[doc = "A list of exec executables to run after generating the flow file."] - #[serde( - rename = "postRun", - default, - skip_serializing_if = "::std::vec::Vec::is_empty" - )] - pub post_run: ::std::vec::Vec, - #[doc = "A list of exec executables to run before generating the flow file."] - #[serde( - rename = "preRun", - default, - skip_serializing_if = "::std::vec::Vec::is_empty" - )] - pub pre_run: ::std::vec::Vec, - #[doc = "The flow file template to generate. The template must be a valid flow file after rendering."] - pub template: ::std::string::String, -} -impl ::std::convert::From<&Template> for Template { - fn from(value: &Template) -> Self { - value.clone() - } -} -impl Template { - pub fn builder() -> builder::Template { - Default::default() - } -} -#[doc = "Configuration for a template executable."] -#[doc = r""] -#[doc = r"
JSON schema"] -#[doc = r""] -#[doc = r" ```json"] -#[doc = "{"] -#[doc = " \"description\": \"Configuration for a template executable.\","] -#[doc = " \"type\": \"object\","] -#[doc = " \"properties\": {"] -#[doc = " \"args\": {"] -#[doc = " \"description\": \"Arguments to pass to the executable.\","] -#[doc = " \"default\": [],"] -#[doc = " \"type\": \"array\","] -#[doc = " \"items\": {"] -#[doc = " \"type\": \"string\""] -#[doc = " }"] -#[doc = " },"] -#[doc = " \"cmd\": {"] -#[doc = " \"description\": \"The command to execute.\\nOne of `cmd` or `ref` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"if\": {"] -#[doc = " \"description\": \"An expression that determines whether the executable should be run, using the Expr language syntax. \\nThe expression is evaluated at runtime and must resolve to a boolean value. If the condition is not met, \\nthe executable will be skipped.\\n\\nThe expression has access to OS/architecture information (os, arch), environment variables (env), form input \\n(form), and context information (name, workspace, directory, etc.).\\n\\nSee the [flow documentation](https://flowexec.io/guide/templating) for more information.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"type\": \"string\""] -#[doc = " },"] -#[doc = " \"ref\": {"] -#[doc = " \"description\": \"A reference to another executable to run in serial.\\nOne of `cmd` or `ref` must be set.\\n\","] -#[doc = " \"default\": \"\","] -#[doc = " \"$ref\": \"#/definitions/ExecutableRef\""] -#[doc = " }"] -#[doc = " }"] -#[doc = "}"] -#[doc = r" ```"] -#[doc = r"
"] -#[derive(:: serde :: Deserialize, :: serde :: Serialize, Clone, Debug)] -pub struct TemplateRefConfig { - #[doc = "Arguments to pass to the executable."] - #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")] - pub args: ::std::vec::Vec<::std::string::String>, - #[doc = "The command to execute.\nOne of `cmd` or `ref` must be set.\n"] - #[serde(default)] - pub cmd: ::std::string::String, - #[doc = "An expression that determines whether the executable should be run, using the Expr language syntax. \nThe expression is evaluated at runtime and must resolve to a boolean value. If the condition is not met, \nthe executable will be skipped.\n\nThe expression has access to OS/architecture information (os, arch), environment variables (env), form input \n(form), and context information (name, workspace, directory, etc.).\n\nSee the [flow documentation](https://flowexec.io/guide/templating) for more information.\n"] - #[serde(rename = "if", default)] - pub if_: ::std::string::String, - #[doc = "A reference to another executable to run in serial.\nOne of `cmd` or `ref` must be set.\n"] - #[serde(rename = "ref", default = "defaults::template_ref_config_ref")] - pub ref_: ExecutableRef, -} -impl ::std::convert::From<&TemplateRefConfig> for TemplateRefConfig { - fn from(value: &TemplateRefConfig) -> Self { - value.clone() - } -} -impl ::std::default::Default for TemplateRefConfig { - fn default() -> Self { - Self { - args: Default::default(), - cmd: Default::default(), - if_: Default::default(), - ref_: defaults::template_ref_config_ref(), - } - } -} -impl TemplateRefConfig { - pub fn builder() -> builder::TemplateRefConfig { - Default::default() - } -} -#[doc = r" Types for composing complex structures."] -pub mod builder { - #[derive(Clone, Debug)] - pub struct Artifact { - as_template: ::std::result::Result, - dst_dir: ::std::result::Result<::std::string::String, ::std::string::String>, - dst_name: ::std::result::Result<::std::string::String, ::std::string::String>, - if_: ::std::result::Result<::std::string::String, ::std::string::String>, - src_dir: ::std::result::Result<::std::string::String, ::std::string::String>, - src_name: ::std::result::Result<::std::string::String, ::std::string::String>, - } - impl ::std::default::Default for Artifact { - fn default() -> Self { - Self { - as_template: Ok(Default::default()), - dst_dir: Ok(Default::default()), - dst_name: Ok(Default::default()), - if_: Ok(Default::default()), - src_dir: Ok(Default::default()), - src_name: Err("no value supplied for src_name".to_string()), - } - } - } - impl Artifact { - pub fn as_template(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.as_template = value - .try_into() - .map_err(|e| format!("error converting supplied value for as_template: {}", e)); - self - } - pub fn dst_dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.dst_dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for dst_dir: {}", e)); - self - } - pub fn dst_name(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.dst_name = value - .try_into() - .map_err(|e| format!("error converting supplied value for dst_name: {}", e)); - self - } - pub fn if_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.if_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for if_: {}", e)); - self - } - pub fn src_dir(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.src_dir = value - .try_into() - .map_err(|e| format!("error converting supplied value for src_dir: {}", e)); - self - } - pub fn src_name(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.src_name = value - .try_into() - .map_err(|e| format!("error converting supplied value for src_name: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::Artifact { - type Error = super::error::ConversionError; - fn try_from(value: Artifact) -> ::std::result::Result { - Ok(Self { - as_template: value.as_template?, - dst_dir: value.dst_dir?, - dst_name: value.dst_name?, - if_: value.if_?, - src_dir: value.src_dir?, - src_name: value.src_name?, - }) - } - } - impl ::std::convert::From for Artifact { - fn from(value: super::Artifact) -> Self { - Self { - as_template: Ok(value.as_template), - dst_dir: Ok(value.dst_dir), - dst_name: Ok(value.dst_name), - if_: Ok(value.if_), - src_dir: Ok(value.src_dir), - src_name: Ok(value.src_name), - } - } - } - #[derive(Clone, Debug)] - pub struct Field { - default: ::std::result::Result<::std::string::String, ::std::string::String>, - description: ::std::result::Result<::std::string::String, ::std::string::String>, - group: ::std::result::Result, - key: ::std::result::Result<::std::string::String, ::std::string::String>, - prompt: ::std::result::Result<::std::string::String, ::std::string::String>, - required: ::std::result::Result, - type_: ::std::result::Result, - validate: ::std::result::Result<::std::string::String, ::std::string::String>, - } - impl ::std::default::Default for Field { - fn default() -> Self { - Self { - default: Ok(Default::default()), - description: Ok(Default::default()), - group: Ok(Default::default()), - key: Err("no value supplied for key".to_string()), - prompt: Err("no value supplied for prompt".to_string()), - required: Ok(Default::default()), - type_: Ok(super::defaults::field_type()), - validate: Ok(Default::default()), - } - } - } - impl Field { - pub fn default(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.default = value - .try_into() - .map_err(|e| format!("error converting supplied value for default: {}", e)); - self - } - pub fn description(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.description = value - .try_into() - .map_err(|e| format!("error converting supplied value for description: {}", e)); - self - } - pub fn group(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.group = value - .try_into() - .map_err(|e| format!("error converting supplied value for group: {}", e)); - self - } - pub fn key(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.key = value - .try_into() - .map_err(|e| format!("error converting supplied value for key: {}", e)); - self - } - pub fn prompt(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.prompt = value - .try_into() - .map_err(|e| format!("error converting supplied value for prompt: {}", e)); - self - } - pub fn required(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.required = value - .try_into() - .map_err(|e| format!("error converting supplied value for required: {}", e)); - self - } - pub fn type_(mut self, value: T) -> Self - where - T: ::std::convert::TryInto, - T::Error: ::std::fmt::Display, - { - self.type_ = value - .try_into() - .map_err(|e| format!("error converting supplied value for type_: {}", e)); - self - } - pub fn validate(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.validate = value - .try_into() - .map_err(|e| format!("error converting supplied value for validate: {}", e)); - self - } - } - impl ::std::convert::TryFrom for super::Field { - type Error = super::error::ConversionError; - fn try_from(value: Field) -> ::std::result::Result { - Ok(Self { - default: value.default?, - description: value.description?, - group: value.group?, - key: value.key?, - prompt: value.prompt?, - required: value.required?, - type_: value.type_?, - validate: value.validate?, - }) - } - } - impl ::std::convert::From for Field { - fn from(value: super::Field) -> Self { - Self { - default: Ok(value.default), - description: Ok(value.description), - group: Ok(value.group), - key: Ok(value.key), - prompt: Ok(value.prompt), - required: Ok(value.required), - type_: Ok(value.type_), - validate: Ok(value.validate), - } - } - } - #[derive(Clone, Debug)] - pub struct Template { - artifacts: ::std::result::Result<::std::vec::Vec, ::std::string::String>, - form: ::std::result::Result<::std::vec::Vec, ::std::string::String>, - post_run: - ::std::result::Result<::std::vec::Vec, ::std::string::String>, - pre_run: - ::std::result::Result<::std::vec::Vec, ::std::string::String>, - template: ::std::result::Result<::std::string::String, ::std::string::String>, - } - impl ::std::default::Default for Template { - fn default() -> Self { - Self { - artifacts: Ok(Default::default()), - form: Ok(Default::default()), - post_run: Ok(Default::default()), - pre_run: Ok(Default::default()), - template: Err("no value supplied for template".to_string()), - } - } - } - impl Template { - pub fn artifacts(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.artifacts = value - .try_into() - .map_err(|e| format!("error converting supplied value for artifacts: {}", e)); - self - } - pub fn form(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.form = value - .try_into() - .map_err(|e| format!("error converting supplied value for form: {}", e)); - self - } - pub fn post_run(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.post_run = value - .try_into() - .map_err(|e| format!("error converting supplied value for post_run: {}", e)); - self - } - pub fn pre_run(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::vec::Vec>, - T::Error: ::std::fmt::Display, - { - self.pre_run = value - .try_into() - .map_err(|e| format!("error converting supplied value for pre_run: {}", e)); - self - } - pub fn template(mut self, value: T) -> Self - where - T: ::std::convert::TryInto<::std::string::String>, - T::Error: ::std::fmt::Display, - { - self.template = value - .try_into() - .map_err(|e| format!("error converting supplied value for template: {}", e)); - self - } - } - impl ::std::convert::TryFrom