diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml
index 08e8b4042ab..261bbf85630 100644
--- a/.github/workflows/build_pull_request.yml
+++ b/.github/workflows/build_pull_request.yml
@@ -17,7 +17,7 @@ permissions:
jobs:
# JOB to run change detection
changes:
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
# Required permissions
permissions:
pull-requests: read
@@ -42,7 +42,7 @@ jobs:
cli:
needs: changes
if: ${{ needs.changes.outputs.cli == 'true' }}
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@@ -76,7 +76,7 @@ jobs:
client:
needs: changes
if: ${{ needs.changes.outputs.client == 'true' }}
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
@@ -105,7 +105,7 @@ jobs:
server:
needs: changes
if: ${{ needs.changes.outputs.server == 'true' }}
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/build_push.yml b/.github/workflows/build_push.yml
index 9bfa04b2e73..eaf95cf2992 100644
--- a/.github/workflows/build_push.yml
+++ b/.github/workflows/build_push.yml
@@ -16,7 +16,7 @@ permissions:
jobs:
cli:
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
@@ -48,7 +48,7 @@ jobs:
run: ../gradlew build jacocoTestReport sonar --quiet
client:
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
@@ -75,7 +75,7 @@ jobs:
projectBaseDir: client/
server:
- runs-on: blacksmith-4vcpu-ubuntu-2404
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
diff --git a/.junie/guidelines.md b/.junie/guidelines.md
index d313888642e..789c4e20540 100644
--- a/.junie/guidelines.md
+++ b/.junie/guidelines.md
@@ -366,14 +366,4 @@ Access the application at http://localhost:8080
- Formatting rules:
- Break each chained step onto its own line when there are 3+ operations or line length would exceed limits
- Keep declarative chains (queries, reactive pipelines) as one logical block; prefer one operation per line
-- Avoid chaining when side effects are involved or intermediate values deserve names for clarity/debugging
-
-## Working with Tasks
-
-Follow these guidelines when working with the `docs/tasks.md` checklist:
-
-1. **Mark Completion**: Mark tasks as `[x]` as soon as they are completed.
-2. **Task Modification**: Keep existing phases intact. If additional steps are identified during development, add them as new tasks within the appropriate phase.
-3. **Traceability**: Ensure every new or modified task remains linked to both a requirement in `docs/requirements.md` and a plan item in `docs/plan.md`.
-4. **Consistency**: Maintain the existing formatting style for tasks, including headings, indentation, and linking format.
-5. **Periodic Review**: Regularly sync the task list with the actual progress of the development to ensure it remains an accurate source of truth.
+ - Avoid chaining when side effects are involved or intermediate values deserve names for clarity/debugging
diff --git a/AGENTS.md b/AGENTS.md
index 7413c79301a..e4b06b495a9 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -357,86 +357,20 @@ it('should render button', () => {
### E2E Tests (Playwright)
-- Location: `test/playwright/`
-- **Fixtures Pattern**: Use independent fixtures combined with `mergeTests` (following Liferay pattern)
-- **Fixtures Location**: `test/playwright/fixtures/`
-- **Available Fixtures**:
- - `loginTest()` - Provides `authenticatedPage` (function, call with `()`)
- - `projectTest` - Provides `project` (auto-creates and cleans up)
- - `workflowTest` - Provides `workflow` (requires `project` when merged)
-
-#### Fixtures Pattern
-
-**The `use` Hook**: Playwright fixtures use a `use` callback that:
-1. **Setup** (before `use`) - Creates resources
-2. **Test Execution** (during `use`) - Your test runs
-3. **Cleanup** (after `use`) - Automatically cleans up resources
+- Location: `tests/e2e/`
+- Use helpers from `tests/e2e/helpers/auth.ts` for authentication
+- Pattern:
```typescript
-// Example fixture structure
-export const projectTest = base.extend({
- project: async ({page}, use) => {
- // SETUP: Create project
- const project = await createProject(page);
-
- // GIVE TO TEST: Your test runs here
- await use(project);
-
- // CLEANUP: Delete project (runs after test)
- await projectsPage.deleteProject(project.id);
- },
-});
-```
+import {test, expect} from '@playwright/test';
+import {login} from './helpers/auth';
-**Using Fixtures with `mergeTests`**:
-
-```typescript
-import {expect, mergeTests} from '@playwright/test';
-import {loginTest, projectTest, workflowTest} from '../../fixtures';
-
-// Combine fixtures at the top of your test file
-export const test = mergeTests(loginTest(), projectTest, workflowTest);
-
-test.describe('My Tests', () => {
- test('my test', async ({authenticatedPage, project, workflow}) => {
- // All fixtures are available:
- // - authenticatedPage (from loginTest)
- // - project (from projectTest)
- // - workflow (from workflowTest)
-
- await authenticatedPage.goto(`/projects/${project.id}/workflows/${workflow.workflowId}`);
- // Test logic here
- // Fixtures automatically clean up after test
- });
+test('should login', async ({page}) => {
+ await login(page, 'user@example.com', 'password');
+ await expect(page).toHaveURL('/');
});
```
-**Common Patterns**:
-
-```typescript
-// Test needs only authentication
-export const test = mergeTests(loginTest());
-
-// Test needs project
-export const test = mergeTests(loginTest(), projectTest);
-
-// Test needs everything
-export const test = mergeTests(loginTest(), projectTest, workflowTest);
-```
-
-**Key Principles**:
-- Fixtures are **independent** - don't extend each other
-- Use `mergeTests` in test files to combine fixtures
-- `loginTest()` is a function - call it with `()`
-- Fixtures automatically clean up resources after tests
-- Each fixture provides specific fixtures (see table below)
-
-| Fixture | Provides | Requires |
-|---------|-----------|----------|
-| `loginTest()` | `authenticatedPage` | Nothing |
-| `projectTest` | `project` | `page` (auto-authenticated) |
-| `workflowTest` | `workflow` | `page` + `project` (when merged) |
-
## Common Utilities
### `twMerge()` - Class Name Utility
diff --git a/CLAUDE.md b/CLAUDE.md
index bcc88e709f1..184cae4fbaa 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -75,15 +75,15 @@ docker compose -f docker-compose.dev.server.yml up -d
## Architecture Overview
### Core Technology Stack
-- **Backend**: Java 25 with Spring Boot 4.0.2
-- **Frontend**: React 19.2 with TypeScript 5.9, Vite 7.3, TailwindCSS 3.4
+- **Backend**: Java 25 with Spring Boot 3.5.7
+- **Frontend**: React 19.2 with TypeScript 5.9, Vite 7.2, TailwindCSS 3.4
- **Database**: PostgreSQL 15+ with Liquibase migrations
- **Message Broker**: Memory(default), Redis, RabbitMQ, Kafka, JMS, AMQP, AWS SQS
- **Build System**: Gradle 8+ with Kotlin DSL
- **Code Execution**: GraalVM Polyglot 25.0.1 (Java, JavaScript, Python, Ruby)
- **Testing**: JUnit 5, Vitest 4, Testcontainers
- **Node.js**: Version 20.19+ required for client development
-- **Additional Tools**: MapStruct 1.6.3, Jackson 2.19.2, SpringDoc OpenAPI 3.0.0
+- **Additional Tools**: MapStruct 1.6.3, Jackson 2.19.2, SpringDoc OpenAPI 2.8.14
### Main Server Module Structure
@@ -95,14 +95,10 @@ docker compose -f docker-compose.dev.server.yml up -d
- `atlas-configuration/` - Workflow configuration management
- **`automation/`** - iPaaS automation implementation
- - `automation-ai/` - AI-powered automation features
- `automation-configuration/` - Project and workflow configuration
- - `automation-data-table/` - Data table management
- - `automation-execution/` - Workflow execution services
- - `automation-knowledge-base/` - Knowledge base integration
- - `automation-mcp/` - MCP (Model Context Protocol) integration
- - `automation-task/` - Task management services
+ - `automation-connection/` - Connection management
- `automation-workflow/` - Workflow coordination and execution
+ - `automation-task/` - Task management services
- **`platform/`** - Core infrastructure services
- `platform-component/` - Component definition and management
@@ -194,12 +190,6 @@ public class ExampleComponentHandler implements ComponentHandler {
## Code Style and Best Practices
-### Client ESLint sort-keys Rule
-- Object keys must be in natural ascending (alphabetical) order in client code
-- Applies to mock objects, hoisted state, test data, and component props
-- ESLint `--fix` does NOT auto-fix sort-keys - must be fixed manually
-- Example: `{content: 'x', id: 'y'}` not `{id: 'y', content: 'x'}`
-
### Variable Naming
- Do not use short or cryptic variable names on both the server and client sides; prefer clear, descriptive names that communicate intent.
- This applies everywhere, including arrow function parameters and loop variables.
@@ -219,28 +209,6 @@ public class ExampleComponentHandler implements ComponentHandler {
for (Order order : orders) { ... }
```
-### Lucide Icon Imports (Client)
-- Always import icons with the `Icon` suffix: `SearchIcon`, `DatabaseIcon`, `Loader2Icon`
-- Not: `Search`, `Database`, `Loader2`
-
-### CSS Class Merging (Client)
-- Use `twMerge` from `tailwind-merge` for conditional class merging
-- Do not use `cn()` utility
-
-### React Patterns (Client)
-- Use `fieldset` (with `border-0`) for semantic form grouping instead of `div`
-- Replace nested ternary operators with render functions (e.g., `renderTrigger()`)
-- Use `useMemo` for computed values instead of IIFEs in JSX
-- Prefer `||` over `??` for JSX fallbacks (e.g., `trigger || defaultTrigger`)
-
-### GraphQL Conventions
-- Enum values must use SCREAMING_SNAKE_CASE (e.g., `DELETE`, `GET`, `QUERY`, `PATH`)
-- Consistent with HttpMethod and other enums in `*.graphqls` files
-
-### ID Generation
-- Avoid `hashCode()` for generating unique identifiers (collision risk)
-- Prefer SHA-256 with first 8 bytes for deterministic long IDs, or UUID for true uniqueness
-
### Blank Line Before Control Statements (Java)
- Insert exactly one empty line before control statements to improve visual separation of logic:
- Applies to: `if`, `else if`, `else`, `for`, enhanced `for`, `while`, `do { ... } while (...)`, `switch`, `try`/`catch`/`finally`.
@@ -269,21 +237,6 @@ public class ExampleComponentHandler implements ComponentHandler {
}
```
-### Blank Line After Variable Modification (Java)
-- Insert exactly one empty line between a variable modification and a subsequent statement that uses that variable
-- This improves readability by visually separating the setup from the usage
-- Example:
- ```java
- // Bad
- document.setStatus(KnowledgeBaseDocument.STATUS_PROCESSING);
- knowledgeBaseDocumentService.saveKnowledgeBaseDocument(document);
-
- // Good
- document.setStatus(KnowledgeBaseDocument.STATUS_PROCESSING);
-
- knowledgeBaseDocumentService.saveKnowledgeBaseDocument(document);
- ```
-
### Method Chaining
- Do not chain method calls except where this is natural and idiomatic
- Allowed exceptions (non-exhaustive):
@@ -306,21 +259,6 @@ public class ExampleComponentHandler implements ComponentHandler {
- Keep declarative chains (queries, reactive pipelines) as one logical block; prefer one operation per line
- Avoid chaining when side effects are involved or intermediate values deserve names for clarity/debugging
-### Code Quality Tool Patterns
-
-**SpotBugs**:
-- Don't use rough approximations of known constants (e.g., use `Math.PI` instead of `3.14`)
-- Always check return values of methods like `CountDownLatch.await(long, TimeUnit)` - returns boolean
-- Use try-with-resources for `Connection` objects to avoid resource leaks
-- Catch specific exceptions (`SQLException`) instead of generic `Exception` when possible
-
-**PMD**:
-- Use `@SuppressWarnings("PMD.UnusedFormalParameter")` for interface-required but unused parameters
-- Don't qualify static method calls with the class name when already inside that class (e.g., `builder()` not `ClassName.builder()`)
-
-**Checkstyle**:
-- Test method names must be camelCase without underscores (e.g., `testExecuteSuccess` not `testExecute_Success`)
-
### Spring Boot Best Practices
1. **Prefer Constructor Injection over Field/Setter Injection**
@@ -492,10 +430,6 @@ cd cli
./gradlew :cli-app:bootRun --args="component init openapi --name=my-component --openapi-path=/path/to/openapi.yaml"
```
-### Resolving PR Review Comments
-- Use `gh api graphql` with `resolveReviewThread` mutation to close threads programmatically
-- Get thread IDs via: `gh api graphql -f query='{ repository(owner: "X", name: "Y") { pullRequest(number: N) { reviewThreads(first: 20) { nodes { id isResolved path } } } }'`
-
## Build and Deployment
### Docker
@@ -775,8 +709,8 @@ tail -f server/apps/server-app/build/logs/application.log
**Gradle Build Optimization**
- Gradle JVM is configured with 4GB heap in `gradle.properties`
-- Parallel builds are enabled by default
-- Build cache is enabled by default
+- Parallel builds are disabled by default but can be enabled
+- Use build cache: `./gradlew --build-cache build`
- Use configuration cache: `./gradlew --configuration-cache build`
- Gradle daemon runs by default for faster subsequent builds
diff --git a/build.gradle.kts b/build.gradle.kts
index 2e95a05c53d..21c56428ec5 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -20,7 +20,7 @@ dependencyManagement {
versionCatalogUpdate {
keep {
- versions.addAll("checkstyle", "findsecbugs", "gradle-git-properties", "jackson", "jacoco", "java", "jib-gradle-plugin", "pmd", "spotbugs", "spring-ai", "spring-boot", "spring-cloud-aws", "spring-cloud-dependencies", "spring-shell", "testcontainers")
+ versions.addAll("checkstyle", "gradle-git-properties", "jackson", "jacoco", "java", "jib-gradle-plugin", "pmd", "spotbugs", "spring-ai", "spring-boot", "spring-cloud-aws", "spring-cloud-dependencies", "spring-shell", "testcontainers")
}
}
@@ -31,7 +31,7 @@ subprojects {
dependencyManagement {
dependencies {
- dependency("com.github.spotbugs:spotbugs-annotations:[${rootProject.libs.versions.spotbugs.get()},)")
+ dependency("com.github.spotbugs:spotbugs-annotations:[4.9.3,)")
}
}
@@ -41,8 +41,6 @@ subprojects {
implementation("org.jspecify:jspecify")
implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
- spotbugsPlugins("com.h3xstream.findsecbugs:findsecbugs-plugin:${rootProject.libs.versions.findsecbugs.get()}")
-
testCompileOnly(rootProject.libs.com.github.spotbugs.spotbugs.annotations)
testImplementation("org.springframework.boot:spring-boot-starter-test")
diff --git a/buildSrc/src/main/kotlin/com.bytechef.documentation-generator.gradle.kts b/buildSrc/src/main/kotlin/com.bytechef.documentation-generator.gradle.kts
index 6570599a7b7..ce52a910fe0 100644
--- a/buildSrc/src/main/kotlin/com.bytechef.documentation-generator.gradle.kts
+++ b/buildSrc/src/main/kotlin/com.bytechef.documentation-generator.gradle.kts
@@ -16,8 +16,6 @@ open class FindJsonFilesTask : DefaultTask() {
@JsonIgnoreProperties(ignoreUnknown = true)
class Properties {
- var resourcesPath: String? = null
-
var controlType: String? = null
var name: String? = null
var description: String? = null
@@ -339,7 +337,6 @@ The output for this action is dynamic and may vary depending on the input parame
var title: String? = null
var componentName: String? = null
var componentVersion: Int? = null
- var resourcesPath: String? = null
private fun getOutputDefinitionString(): String {
if (outputDefinition == null) {
@@ -357,7 +354,6 @@ This action does not produce any output.
val propertiesSection = createPropertiesSection()
val jsonExample = createJsonExample()
val formattedJson = formatJson(jsonExample)
- val mdxContent = getMdxContent()
return """
### $title
@@ -371,21 +367,9 @@ $formattedJson
```
${getOutputDefinitionString()}
${createOutputJson()}
-
-$mdxContent
"""
}
- private fun getMdxContent(): String {
- val mdxFile = File(resourcesPath, "$name.mdx")
-
- return if (mdxFile.exists()) {
- mdxFile.readText()
- } else {
- ""
- }
- }
-
private fun createJsonExample(): String {
return if (properties.isNullOrEmpty()) {
""" {
@@ -448,7 +432,6 @@ ${properties?.joinToString("\n")}
var type: String? = null
var componentName: String? = null
var componentVersion: Int? = null
- var resourcesPath: String? = null
private fun getOutputResponseString(): String {
if (outputDefinition == null) {
@@ -466,7 +449,6 @@ This trigger does not produce any output.
val jsonExample = createJsonExample()
val formattedJson = formatJson(jsonExample)
val propertiesSection = createPropertiesSection()
- val mdxContent = getMdxContent()
return """
### $title
@@ -481,20 +463,9 @@ ${getOutputResponseString()}
```json
$formattedJson
```
-$mdxContent
"""
}
- private fun getMdxContent(): String {
- val mdxFile = File(resourcesPath, "$name.mdx")
-
- return if (mdxFile.exists()) {
- mdxFile.readText()
- } else {
- ""
- }
- }
-
private fun createJsonExample(): String {
return if (properties.isNullOrEmpty()) {
""" {
@@ -558,10 +529,8 @@ ${properties?.joinToString("\n")}
class Connection {
var authorizations: Array? = null
var version: Int? = null
- var resourcesPath: String? = null
override fun toString(): String {
- val mdxContent = getMdxContent()
return """
## Connections
@@ -569,19 +538,8 @@ Version: $version
${authorizations?.joinToString("\n")}
-$mdxContent
"""
}
-
- private fun getMdxContent(): String {
- val mdxFile = File(resourcesPath, "connection.mdx")
-
- return if (mdxFile.exists()) {
- mdxFile.readText()
- } else {
- ""
- }
- }
}
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -608,7 +566,6 @@ $mdxContent
var triggers: Array? = null
var version: Int? = null
var properties: Array? = null
- var resourcesPath: String? = null
private fun getCategoriesString(): String {
if (componentCategories == null) {
@@ -720,7 +677,6 @@ ${getCustomActionString()}
val componentsPath = "$rootPath/docs/content/docs/reference/components"
val taskDispatchersPath = "$rootPath/docs/content/docs/reference/flow-controls"
val currentPath = project.projectDir.path
- val resourcesPath = "$currentPath/src/main/resources"
if (currentPath.contains(Regex("/modules/.+/"))) {
val definitionDir = File("$currentPath/src/test/resources/definition")
@@ -745,21 +701,8 @@ ${getCustomActionString()}
}?.toList().orEmpty()
definitionJsonFiles.forEach { jsonFile ->
- val component = mapper.readValue(jsonFile.readText(), Component::class.java)
-
- component.resourcesPath = resourcesPath
- component.connection?.resourcesPath = resourcesPath
- component.actions?.forEach {
- it.resourcesPath = resourcesPath
- it.properties?.forEach { it2 -> setResourcesPath(it2, resourcesPath) }
- }
- component.triggers?.forEach {
- it.resourcesPath = resourcesPath
- it.properties?.forEach { it2 -> setResourcesPath(it2, resourcesPath) }
- }
- component.properties?.forEach { setResourcesPath(it, resourcesPath) }
-
- val json = component.toString()
+ val jsonObject = mapper.readValue(jsonFile.readText(), Component::class.java)
+ val json = jsonObject.toString()
val path = when (isComponentsDir) {
true -> componentsPath
@@ -810,12 +753,6 @@ ${getCustomActionString()}
}
}
}
-
- private fun setResourcesPath(properties: Properties, resourcesPath: String) {
- properties.resourcesPath = resourcesPath
- properties.properties?.forEach { setResourcesPath(it, resourcesPath) }
- properties.items?.forEach { setResourcesPath(it, resourcesPath) }
- }
}
// Register the custom task with Gradle
diff --git a/buildSrc/src/main/kotlin/com.bytechef.java-common-conventions.gradle.kts b/buildSrc/src/main/kotlin/com.bytechef.java-common-conventions.gradle.kts
index 15e2ad7baea..165c2d53def 100644
--- a/buildSrc/src/main/kotlin/com.bytechef.java-common-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/com.bytechef.java-common-conventions.gradle.kts
@@ -31,7 +31,7 @@ val cleanResources by tasks.registering(Delete::class) {
delete("build/resources")
}
-tasks.withType(JavaCompile::class) {
+val compileJava by tasks.existing(JavaCompile::class) {
options.compilerArgs.add("-parameters")
}
diff --git a/cli/cli-app/generate_connector.sh b/cli/cli-app/generate_connector.sh
index a48b1dcb414..2791de0e20a 100755
--- a/cli/cli-app/generate_connector.sh
+++ b/cli/cli-app/generate_connector.sh
@@ -3,4 +3,4 @@
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
echo "Generate $1 OpenAPI Connector"
-"$SCRIPTPATH/bytechef.sh" component init --open-api-path "$SCRIPTPATH/../../server/libs/modules/components/$1/openapi.yaml" --output-path "$SCRIPTPATH/../../server/libs/modules/components" --name "$1"
+$SCRIPTPATH/bytechef.sh component init --open-api-path $SCRIPTPATH/../../server/libs/modules/components/$1/openapi.yaml -o $SCRIPTPATH/../../server/libs/modules/components -n $1
diff --git a/cli/cli-app/libs/component-api-1.0.jar b/cli/cli-app/libs/component-api-1.0.jar
index 92c29a304a4..3569cdd6180 100644
Binary files a/cli/cli-app/libs/component-api-1.0.jar and b/cli/cli-app/libs/component-api-1.0.jar differ
diff --git a/cli/cli-app/libs/definition-api-1.0.jar b/cli/cli-app/libs/definition-api-1.0.jar
index af1a01b0964..87bb532012c 100644
Binary files a/cli/cli-app/libs/definition-api-1.0.jar and b/cli/cli-app/libs/definition-api-1.0.jar differ
diff --git a/cli/cli-app/src/main/java/com/bytechef/cli/CliApplication.java b/cli/cli-app/src/main/java/com/bytechef/cli/CliApplication.java
index 1723aa94518..a8ed4d221af 100644
--- a/cli/cli-app/src/main/java/com/bytechef/cli/CliApplication.java
+++ b/cli/cli-app/src/main/java/com/bytechef/cli/CliApplication.java
@@ -17,14 +17,8 @@
package com.bytechef.cli;
import com.bytechef.cli.command.component.ComponentCommand;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-import org.springframework.shell.core.NonInteractiveShellRunner;
-import org.springframework.shell.core.command.CommandRegistry;
-import org.springframework.shell.core.command.DefaultCommandParser;
import org.springframework.shell.core.command.annotation.EnableCommand;
/**
@@ -37,14 +31,4 @@ public class CliApplication {
public static void main(String... args) {
SpringApplication.run(CliApplication.class, args);
}
-
- @Bean
- ApplicationRunner shellRunner(CommandRegistry commandRegistry, ApplicationArguments applicationArguments) {
- return args -> {
- DefaultCommandParser commandParser = new DefaultCommandParser(commandRegistry);
- NonInteractiveShellRunner runner = new NonInteractiveShellRunner(commandParser, commandRegistry);
-
- runner.run(applicationArguments.getSourceArgs());
- };
- }
}
diff --git a/cli/cli-app/src/main/resources/application.yml b/cli/cli-app/src/main/resources/application.yml
deleted file mode 100644
index 773960b2d62..00000000000
--- a/cli/cli-app/src/main/resources/application.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-spring:
- main:
- banner-mode: off
diff --git a/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java b/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java
index 8b5b926afd7..3eaaf7368ee 100644
--- a/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java
+++ b/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java
@@ -96,7 +96,6 @@
/**
* @author Ivica Cardic
*/
-@SuppressFBWarnings("PATH_TRAVERSAL_IN")
public class ComponentInitOpenApiGenerator {
private static final Logger logger = LoggerFactory.getLogger(ComponentInitOpenApiGenerator.class);
diff --git a/cli/commands/component/src/main/java/com/bytechef/cli/command/component/ComponentCommand.java b/cli/commands/component/src/main/java/com/bytechef/cli/command/component/ComponentCommand.java
index a3b5ee9318c..ba8c52988cf 100644
--- a/cli/commands/component/src/main/java/com/bytechef/cli/command/component/ComponentCommand.java
+++ b/cli/commands/component/src/main/java/com/bytechef/cli/command/component/ComponentCommand.java
@@ -17,7 +17,6 @@
package com.bytechef.cli.command.component;
import com.bytechef.cli.command.component.init.openapi.ComponentInitOpenApiGenerator;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import org.springframework.shell.core.command.annotation.Command;
import org.springframework.shell.core.command.annotation.Option;
@@ -25,9 +24,11 @@
@org.springframework.stereotype.Component
public class ComponentCommand {
- private static final String COMMAND_PREFIX = "component";
+ @Command
+ public void component() {
+ }
- @Command(name = COMMAND_PREFIX + " init", description = "Generates project for a new component.")
+ @Command(name = "init", description = "Generates project for a new component.")
public void init(
@Option(
longName = "base-package-name", description = "package for generated classes",
@@ -52,7 +53,6 @@ public void init(
}
}
- @SuppressFBWarnings("PATH_TRAVERSAL_IN")
private void generateOpenApiComponent(
String basePackageName, boolean internalComponent, String name, String openApiPath, String outputPath,
int version) throws Exception {
diff --git a/cli/commands/component/src/test/java/com/bytechef/cli/command/component/init/ComponentInitCommandTest.java b/cli/commands/component/src/test/java/com/bytechef/cli/command/component/init/ComponentInitCommandTest.java
index 926acf71a6f..42bd70a1b3d 100644
--- a/cli/commands/component/src/test/java/com/bytechef/cli/command/component/init/ComponentInitCommandTest.java
+++ b/cli/commands/component/src/test/java/com/bytechef/cli/command/component/init/ComponentInitCommandTest.java
@@ -16,89 +16,35 @@
package com.bytechef.cli.command.component.init;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import com.bytechef.cli.CliApplication;
import java.io.File;
-import java.io.IOException;
import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Comparator;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.io.TempDir;
/**
* @author Ivica Cardic
*/
-class ComponentInitCommandTest {
-
- @TempDir
- Path tempDir;
-
- @BeforeEach
- void setUp() throws IOException {
- Path outputPath = tempDir.resolve("petstore");
-
- if (Files.exists(outputPath)) {
- Files.walk(outputPath)
- .sorted(Comparator.reverseOrder())
- .map(Path::toFile)
- .forEach(File::delete);
- }
- }
+public class ComponentInitCommandTest {
@Test
- void testComponentInitGeneratesExpectedFiles() {
+ public void testComponentInit() {
URL url = ComponentInitCommandTest.class.getResource("/dependencies/petstore.yaml");
- String outputPath = tempDir.toAbsolutePath()
- .toString();
CliApplication.main(
- "component", "init", "--open-api-path", url.getFile(), "--output-path", outputPath, "--name", "petstore");
-
- Path componentDir = tempDir.resolve("petstore");
-
- assertTrue(Files.exists(componentDir), "Component directory should be created");
+ "component", "init", "--open-api-path", url.getFile(), "--output-path",
+ new File("build/test/generated").getAbsolutePath(), "-n", "petstore");
- Path mainJavaDir = componentDir.resolve("src/main/java/com/bytechef/component/petstore");
-
- assertTrue(
- Files.exists(mainJavaDir.resolve("PetstoreComponentHandler.java")),
- "ComponentHandler should be generated");
- assertTrue(
- Files.exists(mainJavaDir.resolve("AbstractPetstoreComponentHandler.java")),
- "AbstractComponentHandler should be generated");
- assertTrue(
- Files.exists(mainJavaDir.resolve("connection/PetstoreConnection.java")),
- "Connection class should be generated");
-
- Path actionDir = mainJavaDir.resolve("action");
-
- assertTrue(Files.exists(actionDir), "Action directory should be created");
- assertTrue(
- Files.exists(actionDir.resolve("PetstoreListPetsAction.java")),
- "ListPets action should be generated");
+ // TODO Add asserts
}
@Test
- void testComponentInitWithDifferentOpenApiSpec() {
+ public void testComponentInit2() {
URL url = ComponentInitCommandTest.class.getResource("/dependencies/petstore2.yaml");
- String outputPath = tempDir.toAbsolutePath()
- .toString();
CliApplication.main(
- "component", "init", "--open-api-path", url.getFile(), "--output-path", outputPath, "--name", "petstore");
-
- Path componentDir = tempDir.resolve("petstore");
-
- assertTrue(Files.exists(componentDir), "Component directory should be created");
-
- Path mainJavaDir = componentDir.resolve("src/main/java/com/bytechef/component/petstore");
+ "component", "init", "--open-api-path", url.getFile(), "--output-path",
+ new File("build/test/generated").getAbsolutePath(), "-n", "petstore");
- assertTrue(
- Files.exists(mainJavaDir.resolve("PetstoreComponentHandler.java")),
- "ComponentHandler should be generated");
+ // TODO Add asserts
}
}
diff --git a/client/codegen.ts b/client/codegen.ts
index cac453d6ff4..f46f94f4d04 100644
--- a/client/codegen.ts
+++ b/client/codegen.ts
@@ -1,16 +1,20 @@
import type {CodegenConfig} from '@graphql-codegen/cli';
+import {getCookie} from './src/shared/util/cookie-utils';
const config: CodegenConfig = {
+ schema: [
+ {
+ 'http://localhost:9555/graphql': {
+ headers: {
+ Authorization: 'Basic YWRtaW5AbG9jYWxob3N0LmNvbTphZG1pbg==',
+ 'Content-Type': 'application/json',
+ },
+ },
+ },
+ ],
documents: ['src/graphql/**/*.graphql'],
generates: {
'src/shared/middleware/graphql.ts': {
- config: {
- fetcher: {
- endpoint: 'endpointUrl',
- fetchParams: 'fetchParams',
- },
- reactQueryVersion: 5,
- },
plugins: [
{
add: {
@@ -21,29 +25,18 @@ const config: CodegenConfig = {
'typescript-operations',
'typescript-react-query',
],
+ config: {
+ fetcher: {
+ endpoint: 'endpointUrl',
+ fetchParams: 'fetchParams',
+ },
+ reactQueryVersion: 5,
+ },
},
},
hooks: {
afterAllFileWrite: ['prettier --write'],
},
- schema: [
- '../server/libs/platform/platform-configuration/platform-configuration-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/automation/automation-data-table/**/src/main/resources/graphql/*.graphqls',
- '../server/libs/automation/automation-knowledge-base/automation-knowledge-base-graphql/src/main/resources/graphql/**/*.graphqls',
- '../server/libs/platform/platform-mcp/platform-mcp-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/automation/automation-mcp/automation-mcp-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/automation/automation-configuration/automation-configuration-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/automation/automation-search/automation-search-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/automation/automation-task/automation-task-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/platform/platform-security/platform-security-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/platform/platform-component/platform-component-log/platform-component-log-graphql/src/main/resources/graphql/*.graphqls',
- '../server/libs/ai/mcp/mcp-server-configuration/mcp-server-configuration-graphql/src/main/resources/graphql/*.graphqls',
- '../server/ee/libs/platform/platform-user/platform-user-graphql/src/main/resources/graphql/*.graphqls',
- '../server/ee/libs/platform/platform-api-connector/platform-api-connector-configuration/platform-api-connector-configuration-graphql/src/main/resources/graphql/*.graphqls',
- '../server/ee/libs/platform/platform-custom-component/platform-custom-component-configuration/platform-custom-component-configuration-graphql/src/main/resources/graphql/*.graphqls',
- '../server/ee/libs/embedded/embedded-configuration/embedded-configuration-graphql/src/main/resources/graphql/*.graphqls',
- '../server/ee/libs/embedded/embedded-connected-user/embedded-connected-user-graphql/src/main/resources/graphql/*.graphqls',
- ],
};
export default config;
diff --git a/client/eslint-restricted-imports.mjs b/client/eslint-restricted-imports.mjs
deleted file mode 100644
index cbaa10a0f57..00000000000
--- a/client/eslint-restricted-imports.mjs
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Restricted imports configuration for @typescript-eslint/no-restricted-imports
- *
- * This file defines which imports should be restricted and what alternatives
- * should be used instead. Add new restrictions here as needed.
- */
-
-export const restrictedImports = {
- paths: [
- {
- name: '@/components/ui/button',
- importNames: ['Button'],
- message: "Import Button from '@/components/Button/Button' instead.",
- allowTypeImports: true,
- },
- {
- name: '@/components/ui/badge',
- importNames: ['Badge'],
- message: "Import Badge from '@/components/Badge/Badge' instead.",
- allowTypeImports: true,
- },
- ],
-};
diff --git a/client/eslint.config.mjs b/client/eslint.config.mjs
index c464d486672..a1be2065ac1 100644
--- a/client/eslint.config.mjs
+++ b/client/eslint.config.mjs
@@ -16,255 +16,242 @@ import pluginLingui from 'eslint-plugin-lingui';
// TypeScript flat configs (provides parser + recommended rules)
import tseslint from 'typescript-eslint';
-import {restrictedImports} from './eslint-restricted-imports.mjs';
-
// Note: We avoid auto-including plugin "recommended" presets to prevent mixing legacy and flat configs.
export default [
- // Ignores (migrated from .eslintignore)
- {
- ignores: [
- 'node_modules',
- 'dist',
- 'src/components/assistant-ui',
- 'src/components/ui',
- 'src/hooks/use-toast.ts',
- 'src/**/graphql.ts',
- 'src/locales/**',
- 'src/**/middleware/**',
- ],
- },
- // Base JS recommended rules
- js.configs.recommended,
- // TypeScript recommended rules and parser setup
- ...tseslint.configs.recommended,
- // Lingui plugin recommended rules
- pluginLingui.configs['flat/recommended'],
- // Project-specific rules and plugin configuration
- {
- files: ['**/*.{js,jsx,ts,tsx}'],
- languageOptions: {
- ecmaVersion: 'latest',
- sourceType: 'module',
- parser: tseslint.parser,
- globals: {
- ...globals.browser,
- ...globals.node,
- ...globals.jest,
- },
- },
- settings: {
- react: {version: 'detect'},
- },
- plugins: {
- '@typescript-eslint': tseslint.plugin,
- react,
- 'react-hooks': reactHooks,
- tailwindcss,
- 'sort-destructure-keys': sortDestructureKeys,
- bytechef,
- storybook,
- },
- rules: {
- // TypeScript
- '@typescript-eslint/explicit-module-boundary-types': 'off',
- '@typescript-eslint/no-non-null-assertion': 'off',
- '@typescript-eslint/naming-convention': [
- 'error',
- {
- selector: 'typeAlias',
- format: ['PascalCase'],
- suffix: ['Type'],
- },
- {
- selector: 'interface',
- format: ['PascalCase'],
- suffix: ['Props', 'I'],
- },
- ],
- '@typescript-eslint/no-restricted-imports': ['warn', restrictedImports],
+ // Ignores (migrated from .eslintignore)
+ {
+ ignores: [
+ 'node_modules',
+ 'dist',
+ 'src/components/assistant-ui',
+ 'src/components/ui',
+ 'src/hooks/use-toast.ts',
+ 'src/**/graphql.ts',
+ 'src/locales/**',
+ 'src/**/middleware/**',
+ ],
+ },
- // Custom ByteChef plugin rules
- 'bytechef/empty-line-between-elements': 'error',
- 'bytechef/group-imports': 'error',
- 'bytechef/no-conditional-object-keys': 'error',
- 'bytechef/no-duplicate-imports': 'error',
- 'bytechef/no-length-jsx-expression': 'error',
- 'bytechef/ref-name-suffix': 'error',
- 'bytechef/require-await-test-step': 'error',
- 'bytechef/sort-import-destructures': 'error',
- 'bytechef/sort-imports': 'error',
- 'bytechef/use-state-naming-pattern': 'error',
+ // Base JS recommended rules
+ js.configs.recommended,
- // React
- 'react/jsx-sort-props': 'error',
- 'react/prop-types': 'off',
- 'react/react-in-jsx-scope': 'off',
+ // TypeScript recommended rules and parser setup
+ ...tseslint.configs.recommended,
- // React Hooks
- 'react-hooks/rules-of-hooks': 'error',
- 'react-hooks/exhaustive-deps': 'warn',
+ // Lingui plugin recommended rules
+ pluginLingui.configs['flat/recommended'],
- // Sorting
- 'sort-destructure-keys/sort-destructure-keys': 2,
- 'sort-keys': ['error', 'asc', {caseSensitive: true, natural: true}],
+ // Plugin presets intentionally not auto-included; rules are set explicitly below.
- // Tailwind CSS
- 'tailwindcss/classnames-order': 'warn',
- 'tailwindcss/no-custom-classname': [
- 'warn',
- {
- whitelist: [
- 'animate-slide-down',
- 'animate-slide-up',
- 'animate-slide-up-fade',
- 'animate-slide-down-fade',
- 'animate-slide-left-fade',
- 'animate-slide-right-fade',
- 'bg-accent',
- 'bg-background',
- 'bg-content-brand-primary',
- 'bg-destructive-foreground',
- 'bg-input',
- 'bg-muted',
- 'bg-popover',
- 'bg-success',
- 'bg-surface-brand-primary',
- 'bg-surface-brand-primary-hover',
- 'bg-surface-brand-primary-active',
- 'bg-surface-brand-secondary',
- 'bg-surface-brand-secondary-hover',
- 'bg-surface-destructive-primary',
- 'bg-surface-destructive-primary-hover',
- 'bg-surface-destructive-primary-active',
- 'bg-surface-destructive-secondary',
- 'bg-surface-main',
- 'bg-surface-neutral-primary',
- 'bg-surface-neutral-primary-hover',
- 'bg-surface-neutral-secondary',
- 'bg-surface-neutral-secondary-hover',
- 'bg-surface-neutral-tertiary',
- 'bg-surface-popover-canvas',
- 'bg-surface-warning-primary',
- 'bg-surface-warning-secondary',
- 'border-accent',
- 'border-content-neutral-tertiary',
- 'border-input',
- 'border-l-border/50',
- 'border-muted',
- 'border-primary',
- 'border-stroke-brand-primary',
- 'border-stroke-brand-primary-pressed',
- 'border-stroke-brand-secondary',
- 'border-stroke-brand-secondary-hover',
- 'border-stroke-destructive-secondary',
- 'border-stroke-neutral-primary',
- 'border-stroke-neutral-primary-hover',
- 'border-stroke-neutral-secondary',
- 'border-stroke-neutral-tertiary',
- 'divide-muted',
- 'fill-content-neutral-secondary',
- 'h-connection-list-item-taglist-height',
- 'h-footer-height',
- 'h-header-height',
- 'h-template-height',
- 'heading-tertiary',
- 'left-node-handle-placement',
- 'left-task-dispatcher-node-handle-placement',
- 'left-workflow-node-popover-hover',
- 'line-clamp-0',
- 'line-clamp-2',
- 'max-h-dialog-height',
- 'max-h-select-content-available-height',
- 'max-h-select-content-available-height-1/2',
- 'max-h-workflow-execution-content-height',
- 'max-h-workflow-test-configuration-dialog-height',
- 'max-w-data-pill-panel-width',
- 'max-w-integration-connect-portal-dialog-width',
- 'max-w-output-tab-sample-data-dialog-width',
- 'max-w-select-trigger-width',
- 'max-w-tooltip-lg',
- 'max-w-tooltip-sm',
- 'max-w-workflow-execution-sheet-width',
- 'max-w-workflow-execution-content-width',
- 'max-w-workflow-inputs-sheet-width',
- 'max-w-workflow-integration-portal-configuration-workflow-sheet-width',
- 'max-w-workflow-node-details-panel-width',
- 'max-w-workflow-outputs-sheet-width',
- 'max-w-workflow-read-only-project-deployment-workflow-sheet-width',
- 'max-w-workflow-sidebar-project-version-history-sheet-width',
- 'max-w-workflow-test-configuration-dialog-width',
- 'min-h-output-tab-sample-data-dialog-height',
- 'min-w-api-key-dialog-width',
- 'min-w-combo-box-popper-anchor-width',
- 'min-w-property-code-editor-sheet-connections-sheet-width',
- 'min-w-select-trigger-width',
- 'min-w-signing-key-dialog-width',
- 'min-w-sub-property-popover-width',
- 'min-w-workflow-execution-sheet-width',
- 'mx-placeholder-node-position',
- 'nodrag',
- 'nopan',
- 'nowheel',
- 'outline-ring',
- 'pl-property-input-position',
- 'right-data-pill-panel-placement',
- 'right-minimap-placement',
- 'rounded-xs',
- 'size-18',
- 'sm:max-w-workflow-inputs-sheet-width',
- 'stroke-destructive',
- 'text-accent-foreground',
- 'text-content-brand-primary',
- 'text-content-neutral-primary',
- 'text-content-neutral-secondary',
- 'text-content-neutral-tertiary',
- 'text-destructive',
- 'text-content-destructive-primary',
- 'text-muted-foreground',
- 'text-success',
- 'text-success-foreground',
- 'text-surface-brand-primary',
- 'text-content-warning',
- 'w-112',
- 'w-appearance-theme-choice-skeleton-large-width',
- 'w-appearance-theme-choice-skeleton-small-width',
- 'w-node-popover-width',
- 'w-sidebar-width',
- 'w-workflow-nodes-popover-actions-menu-width',
- 'w-workflow-nodes-popover-menu-width',
- 'w-workflow-outputs-sheet-dialog-width',
- 'w-task-filter-dropdown-menu-width',
- ],
- },
- ],
- 'tailwindcss/no-contradicting-classname': 'error',
- },
+ // Project-specific rules and plugin configuration
+ {
+ files: ['**/*.{js,jsx,ts,tsx}'],
+ languageOptions: {
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ parser: tseslint.parser,
+ globals: {
+ ...globals.browser,
+ ...globals.node,
+ ...globals.jest,
+ },
},
-
- // Vitest globals for test files
- {
- files: ['**/*.{test,spec}.{js,jsx,ts,tsx}'],
- languageOptions: {
- globals: {
- ...globals.vitest,
- },
- },
+ settings: {
+ react: {version: 'detect'},
},
+ plugins: {
+ '@typescript-eslint': tseslint.plugin,
+ react,
+ 'react-hooks': reactHooks,
+ tailwindcss,
+ 'sort-destructure-keys': sortDestructureKeys,
+ bytechef,
+ storybook,
+ },
+ rules: {
+ // TypeScript
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/naming-convention': [
+ 'error',
+ {
+ selector: 'typeAlias',
+ format: ['PascalCase'],
+ suffix: ['Type'],
+ },
+ {
+ selector: 'interface',
+ format: ['PascalCase'],
+ suffix: ['Props', 'I'],
+ },
+ ],
+
+ // Custom ByteChef plugin rules
+ 'bytechef/empty-line-between-elements': 'error',
+ 'bytechef/group-imports': 'error',
+ 'bytechef/no-conditional-object-keys': 'error',
+ 'bytechef/no-duplicate-imports': 'error',
+ 'bytechef/no-length-jsx-expression': 'error',
+ 'bytechef/ref-name-suffix': 'error',
+ 'bytechef/require-await-test-step': 'error',
+ 'bytechef/sort-import-destructures': 'error',
+ 'bytechef/sort-imports': 'error',
+ 'bytechef/use-state-naming-pattern': 'error',
- // Allow custom component wrapper imports
- {
- files: ['src/components/Badge/Badge.tsx', 'src/components/Button/Button.tsx'],
- rules: {
- '@typescript-eslint/no-restricted-imports': 'off',
+ // React
+ 'react/jsx-sort-props': 'error',
+ 'react/prop-types': 'off',
+ 'react/react-in-jsx-scope': 'off',
+
+ // React Hooks
+ 'react-hooks/rules-of-hooks': 'error',
+ 'react-hooks/exhaustive-deps': 'warn',
+
+ // Sorting
+ 'sort-destructure-keys/sort-destructure-keys': 2,
+ 'sort-keys': ['error', 'asc', {caseSensitive: true, natural: true}],
+
+ // Tailwind CSS
+ 'tailwindcss/classnames-order': 'warn',
+ 'tailwindcss/no-custom-classname': [
+ 'warn',
+ {
+ whitelist: [
+ 'animate-slide-down',
+ 'animate-slide-up',
+ 'animate-slide-up-fade',
+ 'animate-slide-down-fade',
+ 'animate-slide-left-fade',
+ 'animate-slide-right-fade',
+ 'bg-accent',
+ 'bg-background',
+ 'bg-content-brand-primary',
+ 'bg-destructive-foreground',
+ 'bg-input',
+ 'bg-muted',
+ 'bg-popover',
+ 'bg-success',
+ 'bg-surface-brand-primary',
+ 'bg-surface-brand-primary-hover',
+ 'bg-surface-brand-primary-active',
+ 'bg-surface-brand-secondary',
+ 'bg-surface-brand-secondary-hover',
+ 'bg-surface-destructive-primary',
+ 'bg-surface-destructive-primary-hover',
+ 'bg-surface-destructive-primary-active',
+ 'bg-surface-destructive-secondary',
+ 'bg-surface-main',
+ 'bg-surface-neutral-primary',
+ 'bg-surface-neutral-primary-hover',
+ 'bg-surface-neutral-secondary',
+ 'bg-surface-neutral-secondary-hover',
+ 'bg-surface-neutral-tertiary',
+ 'bg-surface-popover-canvas',
+ 'bg-surface-warning-primary',
+ 'bg-surface-warning-secondary',
+ 'border-accent',
+ 'border-content-neutral-tertiary',
+ 'border-input',
+ 'border-l-border/50',
+ 'border-muted',
+ 'border-primary',
+ 'border-stroke-brand-primary',
+ 'border-stroke-brand-primary-pressed',
+ 'border-stroke-brand-secondary',
+ 'border-stroke-brand-secondary-hover',
+ 'border-stroke-destructive-secondary',
+ 'border-stroke-neutral-primary',
+ 'border-stroke-neutral-primary-hover',
+ 'border-stroke-neutral-secondary',
+ 'border-stroke-neutral-tertiary',
+ 'divide-muted',
+ 'fill-content-neutral-secondary',
+ 'h-connection-list-item-taglist-height',
+ 'h-footer-height',
+ 'h-header-height',
+ 'h-template-height',
+ 'heading-tertiary',
+ 'left-node-handle-placement',
+ 'left-task-dispatcher-node-handle-placement',
+ 'left-workflow-node-popover-hover',
+ 'line-clamp-0',
+ 'line-clamp-2',
+ 'max-h-dialog-height',
+ 'max-h-select-content-available-height',
+ 'max-h-select-content-available-height-1/2',
+ 'max-h-workflow-execution-content-height',
+ 'max-h-workflow-test-configuration-dialog-height',
+ 'max-w-data-pill-panel-width',
+ 'max-w-integration-connect-portal-dialog-width',
+ 'max-w-output-tab-sample-data-dialog-width',
+ 'max-w-select-trigger-width',
+ 'max-w-tooltip-lg',
+ 'max-w-tooltip-sm',
+ 'max-w-workflow-execution-sheet-width',
+ 'max-w-workflow-execution-content-width',
+ 'max-w-workflow-inputs-sheet-width',
+ 'max-w-workflow-integration-portal-configuration-workflow-sheet-width',
+ 'max-w-workflow-node-details-panel-width',
+ 'max-w-workflow-outputs-sheet-width',
+ 'max-w-workflow-read-only-project-deployment-workflow-sheet-width',
+ 'max-w-workflow-sidebar-project-version-history-sheet-width',
+ 'max-w-workflow-test-configuration-dialog-width',
+ 'min-h-output-tab-sample-data-dialog-height',
+ 'min-w-api-key-dialog-width',
+ 'min-w-combo-box-popper-anchor-width',
+ 'min-w-property-code-editor-sheet-connections-sheet-width',
+ 'min-w-select-trigger-width',
+ 'min-w-signing-key-dialog-width',
+ 'min-w-sub-property-popover-width',
+ 'min-w-workflow-execution-sheet-width',
+ 'mx-placeholder-node-position',
+ 'nodrag',
+ 'nopan',
+ 'nowheel',
+ 'outline-ring',
+ 'pl-property-input-position',
+ 'right-data-pill-panel-placement',
+ 'right-minimap-placement',
+ 'rounded-xs',
+ 'size-18',
+ 'sm:max-w-workflow-inputs-sheet-width',
+ 'stroke-destructive',
+ 'text-accent-foreground',
+ 'text-content-brand-primary',
+ 'text-content-neutral-primary',
+ 'text-content-neutral-secondary',
+ 'text-content-neutral-tertiary',
+ 'text-destructive',
+ 'text-content-destructive-primary',
+ 'text-muted-foreground',
+ 'text-success',
+ 'text-success-foreground',
+ 'text-surface-brand-primary',
+ 'text-content-warning',
+ 'w-112',
+ 'w-appearance-theme-choice-skeleton-large-width',
+ 'w-appearance-theme-choice-skeleton-small-width',
+ 'w-node-popover-width',
+ 'w-sidebar-width',
+ 'w-workflow-nodes-popover-actions-menu-width',
+ 'w-workflow-nodes-popover-menu-width',
+ 'w-workflow-outputs-sheet-dialog-width',
+ 'w-task-filter-dropdown-menu-width',
+ ],
},
+ ],
+ 'tailwindcss/no-contradicting-classname': 'error',
},
+ },
- // Exclude `ee/` folder from no-restricted-imports rule
- {
- files: ['src/ee/**/*.{js,jsx,ts,tsx}'],
- rules: {
- '@typescript-eslint/no-restricted-imports': 'off',
- },
+ // Vitest globals for test files
+ {
+ files: ['**/*.{test,spec}.{js,jsx,ts,tsx}'],
+ languageOptions: {
+ globals: {
+ ...globals.vitest,
+ },
},
+ },
];
diff --git a/client/package-lock.json b/client/package-lock.json
index 34e79512f91..e718410aaa8 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -8,18 +8,17 @@
"name": "bytechef-client",
"version": "0.1.0",
"dependencies": {
- "@ag-ui/client": "^0.0.44",
- "@ag-ui/core": "^0.0.44",
- "@assistant-ui/react": "^0.12.9",
- "@assistant-ui/react-markdown": "^0.12.3",
+ "@ag-ui/client": "^0.0.42",
+ "@ag-ui/core": "^0.0.42",
+ "@assistant-ui/react": "^0.11.53",
+ "@assistant-ui/react-markdown": "^0.11.9",
"@hookform/resolvers": "^5.2.2",
- "@lingui/core": "^5.9.0",
- "@lingui/react": "^5.9.0",
+ "@lingui/core": "^5.7.0",
+ "@lingui/react": "^5.7.0",
"@monaco-editor/react": "^4.7.0",
"@radix-ui/colors": "^3.0.0",
"@radix-ui/react-aspect-ratio": "^1.1.8",
"@radix-ui/react-context-menu": "^2.2.16",
- "@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-menubar": "^1.1.16",
"@radix-ui/react-navigation-menu": "^1.2.14",
@@ -27,22 +26,21 @@
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slider": "^1.3.6",
"@radix-ui/react-slot": "^1.2.4",
- "@radix-ui/react-toggle": "^1.1.10",
- "@radix-ui/react-visually-hidden": "^1.2.4",
- "@tanstack/react-query": "^5.90.20",
- "@tanstack/react-query-devtools": "^5.91.3",
+ "@radix-ui/react-toggle-group": "^1.1.11",
+ "@tanstack/react-query": "^5.90.16",
+ "@tanstack/react-query-devtools": "^5.91.2",
"@tanstack/react-table": "^8.21.3",
"@testing-library/dom": "^10.4.1",
"@testing-library/user-event": "^14.6.1",
- "@tiptap/extension-document": "3.19.0",
- "@tiptap/extension-mention": "3.19.0",
- "@tiptap/extension-paragraph": "3.19.0",
- "@tiptap/extension-placeholder": "3.19.0",
- "@tiptap/extension-text": "3.19.0",
- "@tiptap/pm": "3.19.0",
- "@tiptap/react": "3.19.0",
- "@tiptap/starter-kit": "3.19.0",
- "@tiptap/suggestion": "3.19.0",
+ "@tiptap/extension-document": "3.15.3",
+ "@tiptap/extension-mention": "3.15.3",
+ "@tiptap/extension-paragraph": "3.15.3",
+ "@tiptap/extension-placeholder": "3.15.3",
+ "@tiptap/extension-text": "3.15.3",
+ "@tiptap/pm": "3.15.3",
+ "@tiptap/react": "3.15.3",
+ "@tiptap/starter-kit": "3.15.3",
+ "@tiptap/suggestion": "3.15.3",
"@types/d3": "^7.4.3",
"@types/sanitize-html": "^2.16.0",
"@uidotdev/usehooks": "^2.4.1",
@@ -56,22 +54,22 @@
"date-fns": "^4.1.0",
"fetch-intercept": "^2.4.0",
"html-entities": "^2.6.0",
- "lucide-react": "^0.563.0",
+ "lucide-react": "^0.562.0",
"monaco-editor": "^0.55.1",
"monaco-yaml": "^5.4.0",
- "motion": "^12.33.0",
- "posthog-js": "^1.342.1",
+ "motion": "^12.25.0",
+ "posthog-js": "^1.316.1",
"radix-ui": "^1.4.3",
- "react": "^19.2.4",
+ "react": "^19.2.3",
"react-data-grid": "^7.0.0-beta.59",
- "react-day-picker": "^9.13.1",
- "react-dom": "^19.2.4",
+ "react-day-picker": "^9.13.0",
+ "react-dom": "^19.2.3",
"react-helmet-async": "^2.0.5",
- "react-hook-form": "^7.71.1",
+ "react-hook-form": "^7.70.0",
"react-inlinesvg": "^4.2.0",
"react-json-view": "^1.21.3",
"react-resizable-panels": "^3.0.6",
- "react-router-dom": "^7.13.0",
+ "react-router-dom": "^7.12.0",
"react-select": "^5.10.2",
"react-shiki": "^0.9.1",
"react-textarea-autosize": "^8.5.9",
@@ -84,69 +82,69 @@
"use-debounce": "^10.1.0",
"vite-plugin-svgr": "^4.5.0",
"whatwg-fetch": "^3.6.20",
- "zod": "^4.3.6",
- "zustand": "^5.0.11"
+ "zod": "^4.3.5",
+ "zustand": "^5.0.9"
},
"devDependencies": {
- "@chromatic-com/storybook": "^5.0.0",
+ "@chromatic-com/storybook": "^4.1.3",
"@dagrejs/dagre": "^1.1.8",
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "9.39.2",
- "@graphql-codegen/cli": "^6.1.1",
+ "@graphql-codegen/cli": "^6.1.0",
"@graphql-codegen/typescript-react-query": "^6.1.1",
- "@lingui/babel-plugin-lingui-macro": "^5.9.0",
- "@lingui/cli": "^5.9.0",
- "@lingui/macro": "^5.9.0",
- "@lingui/vite-plugin": "^5.9.0",
- "@playwright/test": "^1.58.2",
- "@storybook/addon-docs": "^10.2.7",
- "@storybook/addon-links": "^10.2.7",
- "@storybook/addon-onboarding": "^10.2.7",
- "@storybook/react-vite": "^10.2.7",
+ "@lingui/babel-plugin-lingui-macro": "^5.7.0",
+ "@lingui/cli": "^5.7.0",
+ "@lingui/macro": "^5.7.0",
+ "@lingui/vite-plugin": "^5.7.0",
+ "@playwright/test": "^1.57.0",
+ "@storybook/addon-docs": "^10.1.11",
+ "@storybook/addon-links": "^10.1.11",
+ "@storybook/addon-onboarding": "^10.1.11",
+ "@storybook/react-vite": "^10.1.11",
"@tailwindcss/forms": "^0.5.11",
"@tailwindcss/line-clamp": "^0.4.4",
"@tailwindcss/typography": "^0.5.19",
- "@tanstack/eslint-plugin-query": "^5.91.4",
+ "@tanstack/eslint-plugin-query": "^5.91.2",
"@testing-library/jest-dom": "^6.9.1",
- "@testing-library/react": "^16.3.2",
+ "@testing-library/react": "^16.3.1",
"@testing-library/react-hooks": "^8.0.1",
"@types/node": "^22.19.1",
"@types/react-dom": "^19.2.3",
"@types/sanitize-html": "^2.16.0",
- "@typescript-eslint/eslint-plugin": "^8.54.0",
- "@typescript-eslint/parser": "^8.54.0",
- "@vitejs/plugin-basic-ssl": "^2.1.4",
- "@vitejs/plugin-react": "^5.1.3",
- "@vitest/coverage-v8": "^4.0.18",
- "autoprefixer": "^10.4.24",
+ "@typescript-eslint/eslint-plugin": "^8.52.0",
+ "@typescript-eslint/parser": "^8.52.0",
+ "@vitejs/plugin-basic-ssl": "^2.1.3",
+ "@vitejs/plugin-react": "^5.1.2",
+ "@vitest/coverage-v8": "^4.0.16",
+ "autoprefixer": "^10.4.23",
"eslint": "9.39.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-bytechef": "file:eslint",
"eslint-plugin-lingui": "^0.11.0",
- "eslint-plugin-prettier": "^5.5.5",
+ "eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-sort-destructure-keys": "^2.0.0",
- "eslint-plugin-storybook": "^10.2.7",
+ "eslint-plugin-storybook": "^10.1.11",
"eslint-plugin-tailwindcss": "^3.18.2",
- "globals": "^17.3.0",
+ "globals": "^17.0.0",
"identity-obj-proxy": "^3.0.0",
"isobject": "^4.0.0",
- "jsdom": "^28.0.0",
- "msw": "^2.12.9",
+ "jsdom": "^27.4.0",
+ "msw": "^2.12.7",
"object-resolve-path": "^1.1.1",
"postcss": "^8.5.6",
- "prettier": "3.8.1",
+ "prettier": "3.7.4",
"prettier-plugin-tailwindcss": "^0.7.2",
"react-fast-compare": "^3.2.2",
- "storybook": "^10.2.7",
+ "storybook": "^10.1.11",
"tailwindcss": "^3.4.17",
"typescript": "^5.9.3",
- "typescript-eslint": "^8.54.0",
+ "typescript-eslint": "^8.52.0",
"vite": "^7.3.1",
- "vite-bundle-analyzer": "^1.3.6",
- "vite-tsconfig-paths": "^6.1.0",
- "vitest": "^4.0.18"
+ "vite-bundle-analyzer": "^1.3.2",
+ "vite-tsconfig-paths": "^6.0.3",
+ "vitest": "^4.0.16"
},
"engines": {
"node": ">=20.19"
@@ -274,9 +272,9 @@
}
},
"node_modules/@acemir/cssom": {
- "version": "0.9.31",
- "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz",
- "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==",
+ "version": "0.9.28",
+ "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.28.tgz",
+ "integrity": "sha512-LuS6IVEivI75vKN8S04qRD+YySP0RmU/cV8UNukhQZvprxF+76Z43TNo/a08eCodaGhT1Us8etqS1ZRY9/Or0A==",
"dev": true,
"license": "MIT"
},
@@ -287,13 +285,13 @@
"dev": true
},
"node_modules/@ag-ui/client": {
- "version": "0.0.44",
- "resolved": "https://registry.npmjs.org/@ag-ui/client/-/client-0.0.44.tgz",
- "integrity": "sha512-lYOdVSD/PSzVqY6CuWmQxUFoMEF6mo3CYvy22P/Wgs6bROjc6JDs3N0Lu46ZADJPiS1hcoDPtfMwSF2XisftFg==",
+ "version": "0.0.42",
+ "resolved": "https://registry.npmjs.org/@ag-ui/client/-/client-0.0.42.tgz",
+ "integrity": "sha512-zAbP+sZJImR5bUpR2ni7RtuuNZMuesaxviynyIgzKlr1k2VCM49mFpbDUKU4TH4Cneu+Xe7OEnO8qCOCIzBAww==",
"dependencies": {
- "@ag-ui/core": "0.0.44",
- "@ag-ui/encoder": "0.0.44",
- "@ag-ui/proto": "0.0.44",
+ "@ag-ui/core": "0.0.42",
+ "@ag-ui/encoder": "0.0.42",
+ "@ag-ui/proto": "0.0.42",
"@types/uuid": "^10.0.0",
"compare-versions": "^6.1.1",
"fast-json-patch": "^3.1.1",
@@ -313,9 +311,9 @@
}
},
"node_modules/@ag-ui/core": {
- "version": "0.0.44",
- "resolved": "https://registry.npmjs.org/@ag-ui/core/-/core-0.0.44.tgz",
- "integrity": "sha512-xX6oSGZ+yqG/qIhzfbGRcenIKoSzWhrYerRZIFwYqa1keN55Zybbp29/zuauWNy0OwffVnWQ5bhR2mRVqgsk/w==",
+ "version": "0.0.42",
+ "resolved": "https://registry.npmjs.org/@ag-ui/core/-/core-0.0.42.tgz",
+ "integrity": "sha512-C2hMg4Gs5oiUDgK9cA2RsTwSSmFZdIsqPklDrFw/Ue+quH6EU3vKp5YoOq7nuaQYO4pO8Em+Z+l5/M5PpcvP1g==",
"dependencies": {
"rxjs": "7.8.1",
"zod": "^3.22.4"
@@ -331,20 +329,20 @@
}
},
"node_modules/@ag-ui/encoder": {
- "version": "0.0.44",
- "resolved": "https://registry.npmjs.org/@ag-ui/encoder/-/encoder-0.0.44.tgz",
- "integrity": "sha512-5jXmWv02ONy7BViMNdx1U9UJAnecAPPefq+Tjva2bXQSZ7NnKmnqLlg/m+d0UFm1Jt5JhIgdgSx2YGg0p8QDxA==",
+ "version": "0.0.42",
+ "resolved": "https://registry.npmjs.org/@ag-ui/encoder/-/encoder-0.0.42.tgz",
+ "integrity": "sha512-97B5MMCSs82t/y41uk2NrLBYFhbvn4kYsKQHMCfy8tjSWubyxh3zP7N9yHo8zJeSPe3WvzTvclyXNiGxSOsorg==",
"dependencies": {
- "@ag-ui/core": "0.0.44",
- "@ag-ui/proto": "0.0.44"
+ "@ag-ui/core": "0.0.42",
+ "@ag-ui/proto": "0.0.42"
}
},
"node_modules/@ag-ui/proto": {
- "version": "0.0.44",
- "resolved": "https://registry.npmjs.org/@ag-ui/proto/-/proto-0.0.44.tgz",
- "integrity": "sha512-bp01eCvuq7OOTP+W/gvbllYxhhoHG0X7RLvFonn0sh181O8iD49plnD1v50gr0yiq4Y9N8Hgcue+ia10tiQ1oQ==",
+ "version": "0.0.42",
+ "resolved": "https://registry.npmjs.org/@ag-ui/proto/-/proto-0.0.42.tgz",
+ "integrity": "sha512-NDUwSgMnGEqxZGkWIJ1ge5t3Q7Kiddj360x2JAWaIfv9w+7tDJ0pmgyzf3/SXp605aY2wZiDLBtJ6jKZeg1lFg==",
"dependencies": {
- "@ag-ui/core": "0.0.44",
+ "@ag-ui/core": "0.0.42",
"@bufbuild/protobuf": "^2.2.5",
"@protobuf-ts/protoc": "^2.11.1"
}
@@ -387,9 +385,9 @@
}
},
"node_modules/@asamuzakjp/css-color": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.1.tgz",
- "integrity": "sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.0.tgz",
+ "integrity": "sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -397,13 +395,13 @@
"@csstools/css-color-parser": "^3.1.0",
"@csstools/css-parser-algorithms": "^3.0.5",
"@csstools/css-tokenizer": "^3.0.4",
- "lru-cache": "^11.2.4"
+ "lru-cache": "^11.2.2"
}
},
"node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
- "version": "11.2.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz",
- "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==",
+ "version": "11.2.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
+ "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
@@ -442,28 +440,26 @@
"license": "MIT"
},
"node_modules/@assistant-ui/react": {
- "version": "0.12.9",
- "resolved": "https://registry.npmjs.org/@assistant-ui/react/-/react-0.12.9.tgz",
- "integrity": "sha512-yz5a40Gadfsd0Klo6kGXFSC6KGbVODjqs4w2YBrz5BPj+IutATEXmYr0FZokmz5z5IgPztHGs58hXgDUErx3zg==",
+ "version": "0.11.53",
+ "resolved": "https://registry.npmjs.org/@assistant-ui/react/-/react-0.11.53.tgz",
+ "integrity": "sha512-G5VB752Somw2Xv4JkGqnloZTxXRu2laHufOROs2H9yOE9Pu+o9aCjW/rn9p8FIev4gWh/ltDouX8T+z9Fh8dJw==",
"license": "MIT",
"dependencies": {
- "@assistant-ui/store": "^0.1.6",
- "@assistant-ui/tap": "^0.4.5",
+ "@assistant-ui/tap": "^0.3.5",
"@radix-ui/primitive": "^1.1.3",
"@radix-ui/react-compose-refs": "^1.1.2",
"@radix-ui/react-context": "^1.1.3",
- "@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-primitive": "^2.1.4",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-use-callback-ref": "^1.1.1",
"@radix-ui/react-use-escape-keydown": "^1.1.1",
- "assistant-cloud": "^0.1.17",
- "assistant-stream": "^0.3.2",
- "nanoid": "^5.1.6",
+ "assistant-cloud": "^0.1.12",
+ "assistant-stream": "^0.2.46",
+ "nanoid": "5.1.6",
"react-textarea-autosize": "^8.5.9",
- "zod": "^4.3.6",
- "zustand": "^5.0.11"
+ "zod": "^4.2.1",
+ "zustand": "^5.0.9"
},
"peerDependencies": {
"@types/react": "*",
@@ -481,9 +477,9 @@
}
},
"node_modules/@assistant-ui/react-markdown": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/@assistant-ui/react-markdown/-/react-markdown-0.12.3.tgz",
- "integrity": "sha512-H2OPDj7Iw8S/Ro9VXB5JaaEbOYoKguUSRAyAldiLv+bZDyuv4wGVswh81wKN0poZ79omf6c7udOxo9NAj/gVpw==",
+ "version": "0.11.9",
+ "resolved": "https://registry.npmjs.org/@assistant-ui/react-markdown/-/react-markdown-0.11.9.tgz",
+ "integrity": "sha512-zR0Ty4ID5htJgm4g1TVAbTsyfJZ8XHccDQ0sMODsq/PWAM75l7EmAbxdSKPbvCqny1A/FxvAB4dz1LA17ZgoWg==",
"license": "MIT",
"dependencies": {
"@radix-ui/react-primitive": "^2.1.4",
@@ -492,7 +488,7 @@
"react-markdown": "^10.1.0"
},
"peerDependencies": {
- "@assistant-ui/react": "^0.12.9",
+ "@assistant-ui/react": "^0.11.53",
"@types/react": "*",
"react": "^18 || ^19"
},
@@ -563,29 +559,10 @@
}
}
},
- "node_modules/@assistant-ui/store": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@assistant-ui/store/-/store-0.1.6.tgz",
- "integrity": "sha512-FdKfuY04bsxGQFTkP+35wF7RLGoZ1HrSDEbjN1J7Qr5TsdbeVjrgX0dU2pG+M6ezY6Zh7wIhZCEa5srX0UrT+A==",
- "license": "MIT",
- "dependencies": {
- "@assistant-ui/tap": "^0.4.5",
- "use-effect-event": "^2.0.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^18 || ^19"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@assistant-ui/tap": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/@assistant-ui/tap/-/tap-0.4.5.tgz",
- "integrity": "sha512-qqBQ2GxxUeh6ksCbMSNmUFCC1ISFeJ/U9hhlX00v+dHeYaLNuFryuBC5UJjibi4U05VGgfX+u6HWfArKqskbSw==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@assistant-ui/tap/-/tap-0.3.5.tgz",
+ "integrity": "sha512-aI7lOKglkVYy17GrS9EdjSrOmEBmofWPBZ4F5wb96yqEynXflXY3qUAFCgmUwaP/TVkog72+o1ePyvsGphSmJQ==",
"license": "MIT",
"peerDependencies": {
"@types/react": "*",
@@ -601,12 +578,12 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
- "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/helper-validator-identifier": "^7.27.1",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -615,29 +592,29 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
- "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "version": "7.27.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz",
+ "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
- "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helpers": "^7.28.6",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/traverse": "^7.29.0",
- "@babel/types": "^7.29.0",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
+ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.28.3",
+ "@babel/helpers": "^7.28.4",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -659,13 +636,13 @@
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
},
"node_modules/@babel/generator": {
- "version": "7.29.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
- "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
+ "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.29.0",
- "@babel/types": "^7.29.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/types": "^7.28.5",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -688,12 +665,12 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
- "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.28.6",
+ "@babel/compat-data": "^7.27.2",
"@babel/helper-validator-option": "^7.27.1",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -749,27 +726,27 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
- "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
- "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.28.6",
- "@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.28.6"
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.28.3"
},
"engines": {
"node": ">=6.9.0"
@@ -861,25 +838,25 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
- "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.4"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
- "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
+ "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.29.0"
+ "@babel/types": "^7.28.5"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1390,31 +1367,31 @@
}
},
"node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@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.29.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
- "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
+ "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.28.5",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0",
+ "@babel/parser": "^7.28.5",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.28.5",
"debug": "^4.3.1"
},
"engines": {
@@ -1422,9 +1399,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
- "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
+ "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
@@ -1445,20 +1422,20 @@
}
},
"node_modules/@bufbuild/protobuf": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz",
- "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==",
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.10.1.tgz",
+ "integrity": "sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==",
"license": "(Apache-2.0 AND BSD-3-Clause)"
},
"node_modules/@chromatic-com/storybook": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-5.0.0.tgz",
- "integrity": "sha512-8wUsqL8kg6R5ue8XNE7Jv/iD1SuE4+6EXMIGIuE+T2loBITEACLfC3V8W44NJviCLusZRMWbzICddz0nU0bFaw==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-4.1.3.tgz",
+ "integrity": "sha512-hc0HO9GAV9pxqDE6fTVOV5KeLpTiCfV8Jrpk5ogKLiIgeq2C+NPjpt74YnrZTjiK8E19fYcMP+2WY9ZtX7zHmw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@neoconfetti/react": "^1.0.0",
- "chromatic": "^13.3.4",
+ "chromatic": "^13.3.3",
"filesize": "^10.0.12",
"jsonfile": "^6.1.0",
"strip-ansi": "^7.1.0"
@@ -1468,7 +1445,7 @@
"yarn": ">=1.22.18"
},
"peerDependencies": {
- "storybook": "^0.0.0-0 || ^10.1.0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0"
+ "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0"
}
},
"node_modules/@chromatic-com/storybook/node_modules/ansi-regex": {
@@ -1596,9 +1573,9 @@
}
},
"node_modules/@csstools/css-syntax-patches-for-csstree": {
- "version": "1.0.26",
- "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz",
- "integrity": "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==",
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz",
+ "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==",
"dev": true,
"funding": [
{
@@ -1610,7 +1587,13 @@
"url": "https://opencollective.com/csstools"
}
],
- "license": "MIT-0"
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
+ }
},
"node_modules/@csstools/css-tokenizer": {
"version": "3.0.4",
@@ -2400,19 +2383,19 @@
}
},
"node_modules/@exodus/bytes": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.11.0.tgz",
- "integrity": "sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.7.0.tgz",
+ "integrity": "sha512-5i+BtvujK/vM07YCGDyz4C4AyDzLmhxHMtM5HpUyPRtJPBdFPsj290ffXW+UXY21/G7GtXeHD2nRmq0T1ShyQQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
- "@noble/hashes": "^1.8.0 || ^2.0.0"
+ "@exodus/crypto": "^1.0.0-rc.4"
},
"peerDependenciesMeta": {
- "@noble/hashes": {
+ "@exodus/crypto": {
"optional": true
}
}
@@ -2487,9 +2470,9 @@
"license": "0BSD"
},
"node_modules/@graphql-codegen/cli": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-6.1.1.tgz",
- "integrity": "sha512-Ni8UdZ6D/UTvLvDtPb6PzshI0lTqtLDnmv/2t1w2SYP92H0MMEdAzxB/ujDWwIXm2LzVPvvrGvzzCTMsyXa+mA==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-6.1.0.tgz",
+ "integrity": "sha512-7w3Zq5IFONVOBcyOiP01Nv9WRxGS/TEaBCAb/ALYA3xHq95dqKCpoGnxt/Ut9R18jiS+aMgT0gc8Tr8sHy44jA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4321,9 +4304,9 @@
}
},
"node_modules/@isaacs/brace-expansion": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz",
- "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
+ "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4608,9 +4591,9 @@
}
},
"node_modules/@lingui/babel-plugin-extract-messages": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-5.9.0.tgz",
- "integrity": "sha512-1uLhq9u6zUoTMsNzaoHKi+PnySdeLMaxOHC9L5dbXotJim7eiUH5d3OiuXajN4sDW+xKSMg0/KE9Oo8ge6gzpA==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-5.7.0.tgz",
+ "integrity": "sha512-kTRw/cr4crwKim2mAd4f5dHUQtIWK1ydN3Ga5FHb5hYgPhfK9egzykVCIEb/N10TfwwLUjSzNZXmTlCiLrgTLw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4618,18 +4601,18 @@
}
},
"node_modules/@lingui/babel-plugin-lingui-macro": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-lingui-macro/-/babel-plugin-lingui-macro-5.9.0.tgz",
- "integrity": "sha512-TWpxsoG5R4km/5//mjT90a1cGXlljt9hLP6VJGDsO+31uYr8qQ4PN92DvXKrKicBDZTDxtH5K+TkaBTZhPNqzQ==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/babel-plugin-lingui-macro/-/babel-plugin-lingui-macro-5.7.0.tgz",
+ "integrity": "sha512-LoyRpvcocdKfkfill3VOYtyDYclnrB+c/IOS0D0i+xmBvNDjtG28gOVU81brg2w07Hzi6TKhNf3+YSi2UXsILQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.20.12",
"@babel/runtime": "^7.20.13",
"@babel/types": "^7.20.7",
- "@lingui/conf": "5.9.0",
- "@lingui/core": "5.9.0",
- "@lingui/message-utils": "5.9.0"
+ "@lingui/conf": "5.7.0",
+ "@lingui/core": "5.7.0",
+ "@lingui/message-utils": "5.7.0"
},
"engines": {
"node": ">=20.0.0"
@@ -4644,9 +4627,9 @@
}
},
"node_modules/@lingui/cli": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-5.9.0.tgz",
- "integrity": "sha512-c4fle6xGZAFxEWADE1rN22PbVRbNFiNK0LBtxbtGN4G6ziO/AVhXua+liMy/fFkRCyooSbM3J5hU35xih0jMMg==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/cli/-/cli-5.7.0.tgz",
+ "integrity": "sha512-606EuwTvenumOfNRF9JoV1G3JIZyWQldQV+rgkUozmaiEQT+3xuTr6K2IOSBfJZoICG2jwrnMT8ifWr08BAICg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4655,12 +4638,12 @@
"@babel/parser": "^7.22.0",
"@babel/runtime": "^7.21.0",
"@babel/types": "^7.21.2",
- "@lingui/babel-plugin-extract-messages": "5.9.0",
- "@lingui/babel-plugin-lingui-macro": "5.9.0",
- "@lingui/conf": "5.9.0",
- "@lingui/core": "5.9.0",
- "@lingui/format-po": "5.9.0",
- "@lingui/message-utils": "5.9.0",
+ "@lingui/babel-plugin-extract-messages": "5.7.0",
+ "@lingui/babel-plugin-lingui-macro": "5.7.0",
+ "@lingui/conf": "5.7.0",
+ "@lingui/core": "5.7.0",
+ "@lingui/format-po": "5.7.0",
+ "@lingui/message-utils": "5.7.0",
"chokidar": "3.5.1",
"cli-table": "^0.3.11",
"commander": "^10.0.0",
@@ -4855,9 +4838,9 @@
}
},
"node_modules/@lingui/conf": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-5.9.0.tgz",
- "integrity": "sha512-dtRUlz3IyG+XwFRDzA45vllJwiY5zY92Skb3GE1QtZxV28B3oP/8G16Z9vQvDn1WpupQbf8EsqfOvaPAraa2cw==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/conf/-/conf-5.7.0.tgz",
+ "integrity": "sha512-O0TWVfR99H+7SUI4pYGNkCUU1t2WcIwgDTTX3VKq6wH3A+P90QyAJLOXj+/s0JVkc1I37EL23Wtca5QkFBLtOg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4909,19 +4892,19 @@
}
},
"node_modules/@lingui/core": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/core/-/core-5.9.0.tgz",
- "integrity": "sha512-TJFhRttwHdWpcYRT3KVXh4nT+Qc4yxvrpalV5Vrs/sQTyrQWbT1/Lc9qXNYSALb5BAglZq0XU46oRpJdt+PVMQ==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/core/-/core-5.7.0.tgz",
+ "integrity": "sha512-eEQCFqjcwCn2lEHsH/I0koMKfwCJFTKG3Bnx6tkVuYmpfmgagbSMKIMot0WFY9gzafKHGsrvZrNDNT4OwdxDIQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.20.13",
- "@lingui/message-utils": "5.9.0"
+ "@lingui/message-utils": "5.7.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@lingui/babel-plugin-lingui-macro": "5.9.0",
+ "@lingui/babel-plugin-lingui-macro": "5.7.0",
"babel-plugin-macros": "2 || 3"
},
"peerDependenciesMeta": {
@@ -4934,14 +4917,14 @@
}
},
"node_modules/@lingui/format-po": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/format-po/-/format-po-5.9.0.tgz",
- "integrity": "sha512-Umm2dt2TjiWl2kLSXk7+t5V3V/p9AaUUtRA7Ky3XHMYanKuxp0/Km/MTJfdSdCH6Rftefk/aQ3hJKuQORP8Bsw==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/format-po/-/format-po-5.7.0.tgz",
+ "integrity": "sha512-n2UX7T7N58O8HhcmM6RAVgxM3egloF0AM16VQdMPEKpZiTm8CDN5O3ovJu7ophsbfLp9iKZcbGd+QypZY671+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@lingui/conf": "5.9.0",
- "@lingui/message-utils": "5.9.0",
+ "@lingui/conf": "5.7.0",
+ "@lingui/message-utils": "5.7.0",
"date-fns": "^3.6.0",
"pofile": "^1.1.4"
},
@@ -4961,20 +4944,20 @@
}
},
"node_modules/@lingui/macro": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-5.9.0.tgz",
- "integrity": "sha512-sewECacYl+VKUTyd/XqV5zd4zo0/YpSEKPJhB8fhzVeu/wObK2PtMcOhir0vW/nTjWWXpUdH8BZ202OKtOqymQ==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/macro/-/macro-5.7.0.tgz",
+ "integrity": "sha512-XDB3obEo/R+HXXCxkEvDyvz7u/m5VlkbyHiXeq2eTFXfzLMXI7wLUyVDbxKysXkqmYcBgzmRUYDTRcA+mUoIKg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@lingui/core": "5.9.0",
- "@lingui/react": "5.9.0"
+ "@lingui/core": "5.7.0",
+ "@lingui/react": "5.7.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@lingui/babel-plugin-lingui-macro": "5.9.0",
+ "@lingui/babel-plugin-lingui-macro": "5.7.0",
"babel-plugin-macros": "2 || 3"
},
"peerDependenciesMeta": {
@@ -4987,9 +4970,9 @@
}
},
"node_modules/@lingui/message-utils": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-5.9.0.tgz",
- "integrity": "sha512-BL5MZt7yCLuyEbuIm+w0TZIZ/ctQOX5IO3yVOrWpM8L3rh2uP/MPDUKhGy8e/XPNMgBVFhlpos/tSzvdh03ErQ==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/message-utils/-/message-utils-5.7.0.tgz",
+ "integrity": "sha512-yJKzPjJCLz8EkjqExxEBrioiKZtgxgLubOwzjSiZ8n1omuoyeRAqdKkmeOP/fPW2QpkQv33qLqfLtBhrIVJkeg==",
"license": "MIT",
"dependencies": {
"@messageformat/parser": "^5.0.0",
@@ -5000,21 +4983,21 @@
}
},
"node_modules/@lingui/react": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/react/-/react-5.9.0.tgz",
- "integrity": "sha512-3887EeVNwXZXWIMBpdziuNiSWtA1g2Kb8XLWOrIEJorAXOds3Oo+0NrTKWlBmIsUMmgw9SeK1e6RPZxeQk+B+g==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/react/-/react-5.7.0.tgz",
+ "integrity": "sha512-pz9Gh3JYe4KQTmgebjqUCwEYEsl4V0cwVXFo1jxXCESDc40cuOwGIkdHxj7kfBtfJBdsFSzAPs9UVDDd/Ovpzg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.20.13",
- "@lingui/core": "5.9.0"
+ "@lingui/core": "5.7.0"
},
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@lingui/babel-plugin-lingui-macro": "5.9.0",
+ "@lingui/babel-plugin-lingui-macro": "5.7.0",
"babel-plugin-macros": "2 || 3",
- "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@lingui/babel-plugin-lingui-macro": {
@@ -5026,14 +5009,14 @@
}
},
"node_modules/@lingui/vite-plugin": {
- "version": "5.9.0",
- "resolved": "https://registry.npmjs.org/@lingui/vite-plugin/-/vite-plugin-5.9.0.tgz",
- "integrity": "sha512-qNr4UE/QZ36mo5+XVQ0hTWoQSIULoVQ2b1G+aNbGk6Z7olc8yYAtdytJyOCTEk9gCBeyMBTK7zonlxVngNsCfA==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/@lingui/vite-plugin/-/vite-plugin-5.7.0.tgz",
+ "integrity": "sha512-Mdmq/WfhTzQ8Q5oL7cYoP2Nu7bBWlZmGlQL0+6Oeb2bgFbabWixcXuqVwGElPvR8PGwGwnZ2gXVs0Y9KdzBDaQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@lingui/cli": "5.9.0",
- "@lingui/conf": "5.9.0"
+ "@lingui/cli": "5.7.0",
+ "@lingui/conf": "5.7.0"
},
"engines": {
"node": ">=20.0.0"
@@ -5093,9 +5076,9 @@
}
},
"node_modules/@mswjs/interceptors": {
- "version": "0.41.2",
- "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.2.tgz",
- "integrity": "sha512-7G0Uf0yK3f2bjElBLGHIQzgRgMESczOMyYVasq1XK8P5HaXtlW4eQhz9MBL+TQILZLaruq+ClGId+hH0w4jvWw==",
+ "version": "0.40.0",
+ "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.40.0.tgz",
+ "integrity": "sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5177,252 +5160,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@opentelemetry/api": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
- "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@opentelemetry/api-logs": {
- "version": "0.208.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz",
- "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/api": "^1.3.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@opentelemetry/core": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz",
- "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/exporter-logs-otlp-http": {
- "version": "0.208.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz",
- "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/api-logs": "0.208.0",
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/otlp-exporter-base": "0.208.0",
- "@opentelemetry/otlp-transformer": "0.208.0",
- "@opentelemetry/sdk-logs": "0.208.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/otlp-exporter-base": {
- "version": "0.208.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz",
- "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/otlp-transformer": "0.208.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/otlp-transformer": {
- "version": "0.208.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz",
- "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/api-logs": "0.208.0",
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/resources": "2.2.0",
- "@opentelemetry/sdk-logs": "0.208.0",
- "@opentelemetry/sdk-metrics": "2.2.0",
- "@opentelemetry/sdk-trace-base": "2.2.0",
- "protobufjs": "^7.3.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
- "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/resources": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.4.0.tgz",
- "integrity": "sha512-RWvGLj2lMDZd7M/5tjkI/2VHMpXebLgPKvBUd9LRasEWR2xAynDwEYZuLvY9P2NGG73HF07jbbgWX2C9oavcQg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.4.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.4.0.tgz",
- "integrity": "sha512-KtcyFHssTn5ZgDu6SXmUznS80OFs/wN7y6MyFRRcKU6TOw8hNcGxKvt8hsdaLJfhzUszNSjURetq5Qpkad14Gw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-logs": {
- "version": "0.208.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz",
- "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/api-logs": "0.208.0",
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/resources": "2.2.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.4.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
- "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-metrics": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz",
- "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/resources": "2.2.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.9.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
- "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-trace-base": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz",
- "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/resources": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
- "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
- "license": "Apache-2.0",
- "dependencies": {
- "@opentelemetry/core": "2.2.0",
- "@opentelemetry/semantic-conventions": "^1.29.0"
- },
- "engines": {
- "node": "^18.19.0 || >=20.6.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.3.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.38.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz",
- "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=14"
- }
- },
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -5434,9 +5171,9 @@
}
},
"node_modules/@pkgr/core": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
- "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz",
+ "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5447,13 +5184,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz",
- "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==",
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz",
+ "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.58.2"
+ "playwright": "1.57.0"
},
"bin": {
"playwright": "cli.js"
@@ -5473,18 +5210,18 @@
}
},
"node_modules/@posthog/core": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.20.1.tgz",
- "integrity": "sha512-uoTmWkYCtLYFpiK37/JCq+BuCA/OZn1qQZn5cPv1EEKt3ni3Zgg48xWCnSEyGFl5KKSXlfCruiRTwnbAtCgrBA==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-kRb1ch2dhQjsAapZmu6V66551IF2LnCbc1rnrQqnR7ArooVyJN9KOPXre16AJ3ObJz2eTfuP7x25BMyS2Y5Exw==",
"license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.6"
}
},
"node_modules/@posthog/types": {
- "version": "1.342.1",
- "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.342.1.tgz",
- "integrity": "sha512-bcyBdO88FWTkd5AVTa4Nu8T7RfY0WJrG7WMCXum/rcvNjYhS3DmOfKf8o/Bt56vA3J3yeU0vbgrmltYVoTAfaA==",
+ "version": "1.316.1",
+ "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.316.1.tgz",
+ "integrity": "sha512-rh8GSOnmnwd0fUIBYzQcXt4WYXMg9QPkY0tE46K0eneWYVyqNYXFXzcdf2U37g+ZYNiBq9ubLeCD7h0C0MDJgw==",
"license": "MIT"
},
"node_modules/@protobuf-ts/protoc": {
@@ -5496,70 +5233,6 @@
"protoc": "protoc.js"
}
},
- "node_modules/@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
- }
- },
- "node_modules/@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
- "license": "BSD-3-Clause"
- },
"node_modules/@radix-ui/colors": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz",
@@ -5600,29 +5273,6 @@
}
}
},
- "node_modules/@radix-ui/react-accessible-icon/node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-accordion": {
"version": "1.2.12",
"resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz",
@@ -6357,29 +6007,6 @@
}
}
},
- "node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-one-time-password-field": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz",
@@ -6825,38 +6452,15 @@
"integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
"license": "MIT",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
+ "@radix-ui/react-compose-refs": "1.1.2"
},
"peerDependencies": {
"@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
- },
- "@types/react-dom": {
- "optional": true
}
}
},
@@ -7050,29 +6654,6 @@
}
}
},
- "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-toggle": {
"version": "1.1.10",
"resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz",
@@ -7231,29 +6812,6 @@
}
}
},
- "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-use-callback-ref": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz",
@@ -7409,35 +6967,12 @@
}
},
"node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.4.tgz",
- "integrity": "sha512-kaeiyGCe844dkb9AVF+rb4yTyb1LiLN/e3es3nLiRyN4dC8AduBYPMnnNlDjX2VDOcvDEiPnRNMJeWCfsX0txg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.4"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz",
- "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
+ "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
"license": "MIT",
"dependencies": {
- "@radix-ui/react-slot": "1.2.4"
+ "@radix-ui/react-primitive": "2.1.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -7474,9 +7009,9 @@
"license": "MIT"
},
"node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-rc.2",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz",
- "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==",
+ "version": "1.0.0-beta.53",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz",
+ "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==",
"dev": true,
"license": "MIT"
},
@@ -7880,16 +7415,16 @@
"license": "MIT"
},
"node_modules/@storybook/addon-docs": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.2.7.tgz",
- "integrity": "sha512-RHw+uHA05A7t48OtVu6gvNOueSGK8P/5NCmVRl3Vx/Kg3mxCyU2nGOHwWBt3C3CsWOLioZPsa7f5UdjOkhJ35Q==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.1.11.tgz",
+ "integrity": "sha512-Jwm291Fhim2eVcZIVlkG1B2skb0ZI9oru6nqMbJxceQZlvZmcIa4oxvS1oaMTKw2DJnCv97gLm57P/YvRZ8eUg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@mdx-js/react": "^3.0.0",
- "@storybook/csf-plugin": "10.2.7",
- "@storybook/icons": "^2.0.1",
- "@storybook/react-dom-shim": "10.2.7",
+ "@storybook/csf-plugin": "10.1.11",
+ "@storybook/icons": "^2.0.0",
+ "@storybook/react-dom-shim": "10.1.11",
"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"
@@ -7899,13 +7434,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^10.2.7"
+ "storybook": "^10.1.11"
}
},
"node_modules/@storybook/addon-links": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.2.7.tgz",
- "integrity": "sha512-j2LUFUraQg3/ovDQU8BRhdwE3bKqC1frmn0E8kg9STM63wMgXMZ+6rz+HhGU64f2jvb2AQCgAgHs6FB1mufzhg==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.1.11.tgz",
+ "integrity": "sha512-PEC+Fn3fyBOlMlCcLX+AUunrQMcH7MEfiFtPkp7QnjfMGwBIyzCjgVxM2OyKyIslQnB1So1pY98uTI26fXz/yg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7917,7 +7452,7 @@
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^10.2.7"
+ "storybook": "^10.1.11"
},
"peerDependenciesMeta": {
"react": {
@@ -7926,9 +7461,9 @@
}
},
"node_modules/@storybook/addon-onboarding": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-10.2.7.tgz",
- "integrity": "sha512-itf4l/ctdGBwAtKWHd35tPt/VFBefGZTVpccbV4c5yhe1RV364v+UeGCgtHkA0G5R3R2Y/gdSZ+edOZXbGFKRw==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-10.1.11.tgz",
+ "integrity": "sha512-DNJv0IDl5XBrY+PPgwnMXLyp3omPkMOS6xe8ejG3csT71B6+3VueL6m7Qivh6739SnAV0QBU5SQlpMA0gQUcSA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -7936,17 +7471,18 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^10.2.7"
+ "storybook": "^10.1.11"
}
},
"node_modules/@storybook/builder-vite": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.2.7.tgz",
- "integrity": "sha512-dh/Oqvwob12oYJoaUkMgXxCGFxR8B+Hb/nACttxSuAZ1InTtXIMBM9GDpBs8QjaT23X/yHJz3dPYyUBbsn/SNA==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.1.11.tgz",
+ "integrity": "sha512-MMD09Ap7FyzDfWG961pkIMv/w684XXe1bBEi+wCEpHxvrgAd3j3A9w/Rqp9Am2uRDPCEdi1QgSzS3SGW3aGThQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/csf-plugin": "10.2.7",
+ "@storybook/csf-plugin": "10.1.11",
+ "@vitest/mocker": "3.2.4",
"ts-dedent": "^2.0.0"
},
"funding": {
@@ -7954,14 +7490,14 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^10.2.7",
+ "storybook": "^10.1.11",
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
"node_modules/@storybook/csf-plugin": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.2.7.tgz",
- "integrity": "sha512-10JblhVYXYmz+XjU86kvAV6pdqCLdkgGcARS6ehhR6W98lKGskWhLNgu4KM9BEKa/2roH8je+DmrlX3ugkMEgw==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.1.11.tgz",
+ "integrity": "sha512-Ant0NhgqHKzQsseeVTSetZCuDHHs0W2HRkHt51Kg/sUl0T/sDtfVA+fWZT8nGzGZqYSFkxqYPWjauPmIhPtaRw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7974,7 +7510,7 @@
"peerDependencies": {
"esbuild": "*",
"rollup": "*",
- "storybook": "^10.2.7",
+ "storybook": "^10.1.11",
"vite": "*",
"webpack": "*"
},
@@ -8011,14 +7547,14 @@
}
},
"node_modules/@storybook/react": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-10.2.7.tgz",
- "integrity": "sha512-SuWzFLNprNNWUWC7o0p1gVNAK1QoDTVdymDo4jeKIUfcMdmzEMzj8zqkCxeStaVLQxqBIvmca3uJHlym8GsVrQ==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-10.1.11.tgz",
+ "integrity": "sha512-rmMGmEwBaM2YpB8oDk2moM0MNjNMqtwyoPPZxjyruY9WVhYca8EDPGKEdRzUlb4qZJsTgLi7VU4eqg6LD/mL3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
- "@storybook/react-dom-shim": "10.2.7",
+ "@storybook/react-dom-shim": "10.1.11",
"react-docgen": "^8.0.2"
},
"funding": {
@@ -8028,7 +7564,7 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^10.2.7",
+ "storybook": "^10.1.11",
"typescript": ">= 4.9.x"
},
"peerDependenciesMeta": {
@@ -8038,9 +7574,9 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.2.7.tgz",
- "integrity": "sha512-TCD46eKy0JlqUU3DZDaJNecen09HjT74NpJjmgpwOyMXrm+Wl/HfshMyn4GZj/rVQfFN90udNp0NzfbBAPbJAQ==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.1.11.tgz",
+ "integrity": "sha512-o8WPhRlZbORUWG9lAgDgJP0pi905VHJUFJr1Kp8980gHqtlemtnzjPxKy5vFwj6glNhAlK8SS8OOYzWP7hloTQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -8050,20 +7586,20 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^10.2.7"
+ "storybook": "^10.1.11"
}
},
"node_modules/@storybook/react-vite": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-10.2.7.tgz",
- "integrity": "sha512-R8Xwh3RaCsTyr55xv0rYrT4ve+Kw8vGGTzE6IWkHAXjRYXLdETH8JJoAuI75ESbCeUOl7Lj9jvtD9jS3TCoboA==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-10.1.11.tgz",
+ "integrity": "sha512-qh1BCD25nIoiDfqwha+qBkl7pcG4WuzM+c8tsE63YEm8AFIbNKg5K8lVUoclF+4CpFz7IwBpWe61YUTDfp+91w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@joshwooding/vite-plugin-react-docgen-typescript": "^0.6.3",
"@rollup/pluginutils": "^5.0.2",
- "@storybook/builder-vite": "10.2.7",
- "@storybook/react": "10.2.7",
+ "@storybook/builder-vite": "10.1.11",
+ "@storybook/react": "10.1.11",
"empathic": "^2.0.0",
"magic-string": "^0.30.0",
"react-docgen": "^8.0.0",
@@ -8077,7 +7613,7 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^10.2.7",
+ "storybook": "^10.1.11",
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
@@ -8368,32 +7904,26 @@
}
},
"node_modules/@tanstack/eslint-plugin-query": {
- "version": "5.91.4",
- "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.4.tgz",
- "integrity": "sha512-8a+GAeR7oxJ5laNyYBQ6miPK09Hi18o5Oie/jx8zioXODv/AUFLZQecKabPdpQSLmuDXEBPKFh+W5DKbWlahjQ==",
+ "version": "5.91.2",
+ "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.2.tgz",
+ "integrity": "sha512-UPeWKl/Acu1IuuHJlsN+eITUHqAaa9/04geHHPedY8siVarSaWprY0SVMKrkpKfk5ehRT7+/MZ5QwWuEtkWrFw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/utils": "^8.48.0"
+ "@typescript-eslint/utils": "^8.44.1"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0"
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.90.20",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz",
- "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==",
+ "version": "5.90.16",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.16.tgz",
+ "integrity": "sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==",
"license": "MIT",
"funding": {
"type": "github",
@@ -8401,9 +7931,9 @@
}
},
"node_modules/@tanstack/query-devtools": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.93.0.tgz",
- "integrity": "sha512-+kpsx1NQnOFTZsw6HAFCW3HkKg0+2cepGtAWXjiiSOJJ1CtQpt72EE2nyZb+AjAbLRPoeRmPJ8MtQd8r8gsPdg==",
+ "version": "5.92.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.92.0.tgz",
+ "integrity": "sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -8411,12 +7941,12 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.90.20",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz",
- "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==",
+ "version": "5.90.16",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.16.tgz",
+ "integrity": "sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.90.20"
+ "@tanstack/query-core": "5.90.16"
},
"funding": {
"type": "github",
@@ -8427,19 +7957,19 @@
}
},
"node_modules/@tanstack/react-query-devtools": {
- "version": "5.91.3",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.91.3.tgz",
- "integrity": "sha512-nlahjMtd/J1h7IzOOfqeyDh5LNfG0eULwlltPEonYy0QL+nqrBB+nyzJfULV+moL7sZyxc2sHdNJki+vLA9BSA==",
+ "version": "5.91.2",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.91.2.tgz",
+ "integrity": "sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-devtools": "5.93.0"
+ "@tanstack/query-devtools": "5.92.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "@tanstack/react-query": "^5.90.20",
+ "@tanstack/react-query": "^5.90.14",
"react": "^18 || ^19"
}
},
@@ -8522,9 +8052,9 @@
"dev": true
},
"node_modules/@testing-library/react": {
- "version": "16.3.2",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz",
- "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==",
+ "version": "16.3.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.1.tgz",
+ "integrity": "sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8593,48 +8123,48 @@
}
},
"node_modules/@tiptap/core": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.19.0.tgz",
- "integrity": "sha512-bpqELwPW+DG8gWiD8iiFtSl4vIBooG5uVJod92Qxn3rA9nFatyXRr4kNbMJmOZ66ezUvmCjXVe/5/G4i5cyzKA==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.15.3.tgz",
+ "integrity": "sha512-bmXydIHfm2rEtGju39FiQNfzkFx9CDvJe+xem1dgEZ2P6Dj7nQX9LnA1ZscW7TuzbBRkL5p3dwuBIi3f62A66A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-blockquote": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.19.0.tgz",
- "integrity": "sha512-y3UfqY9KD5XwWz3ndiiJ089Ij2QKeiXy/g1/tlAN/F1AaWsnkHEHMLxCP1BIqmMpwsX7rZjMLN7G5Lp7c9682A==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.15.3.tgz",
+ "integrity": "sha512-13x5UsQXtttFpoS/n1q173OeurNxppsdWgP3JfsshzyxIghhC141uL3H6SGYQLPU31AizgDs2OEzt6cSUevaZg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-bold": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.19.0.tgz",
- "integrity": "sha512-UZgb1d0XK4J/JRIZ7jW+s4S6KjuEDT2z1PPM6ugcgofgJkWQvRZelCPbmtSFd3kwsD+zr9UPVgTh9YIuGQ8t+Q==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.15.3.tgz",
+ "integrity": "sha512-I8JYbkkUTNUXbHd/wCse2bR0QhQtJD7+0/lgrKOmGfv5ioLxcki079Nzuqqay3PjgYoJLIJQvm3RAGxT+4X91w==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-bubble-menu": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.19.0.tgz",
- "integrity": "sha512-klNVIYGCdznhFkrRokzGd6cwzoi8J7E5KbuOfZBwFwhMKZhlz/gJfKmYg9TJopeUhrr2Z9yHgWTk8dh/YIJCdQ==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-3.15.3.tgz",
+ "integrity": "sha512-e88DG1bTy6hKxrt7iPVQhJnH5/EOrnKpIyp09dfRDgWrrW88fE0Qjys7a/eT8W+sXyXM3z10Ye7zpERWsrLZDg==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -8645,80 +8175,80 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-bullet-list": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.19.0.tgz",
- "integrity": "sha512-F9uNnqd0xkJbMmRxVI5RuVxwB9JaCH/xtRqOUNQZnRBt7IdAElCY+Dvb4hMCtiNv+enGM/RFGJuFHR9TxmI7rw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.15.3.tgz",
+ "integrity": "sha512-MGwEkNT7ltst6XaWf0ObNgpKQ4PvuuV3igkBrdYnQS+qaAx9IF4isygVPqUc9DvjYC306jpyKsNqNrENIXcosA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.19.0"
+ "@tiptap/extension-list": "^3.15.3"
}
},
"node_modules/@tiptap/extension-code": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.19.0.tgz",
- "integrity": "sha512-2kqqQIXBXj2Or+4qeY3WoE7msK+XaHKL6EKOcKlOP2BW8eYqNTPzNSL+PfBDQ3snA7ljZQkTs/j4GYDj90vR1A==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.15.3.tgz",
+ "integrity": "sha512-x6LFt3Og6MFINYpsMzrJnz7vaT9Yk1t4oXkbJsJRSavdIWBEBcoRudKZ4sSe/AnsYlRJs8FY2uR76mt9e+7xAQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-code-block": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.19.0.tgz",
- "integrity": "sha512-b/2qR+tMn8MQb+eaFYgVk4qXnLNkkRYmwELQ8LEtEDQPxa5Vl7J3eu8+4OyoIFhZrNDZvvoEp80kHMCP8sI6rg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.15.3.tgz",
+ "integrity": "sha512-q1UB9icNfdJppTqMIUWfoRKkx5SSdWIpwZoL2NeOI5Ah3E20/dQKVttIgLhsE521chyvxCYCRaHD5tMNGKfhyw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-document": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.19.0.tgz",
- "integrity": "sha512-AOf0kHKSFO0ymjVgYSYDncRXTITdTcrj1tqxVazrmO60KNl1Rc2dAggDvIVTEBy5NvceF0scc7q3sE/5ZtVV7A==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.15.3.tgz",
+ "integrity": "sha512-AC72nI2gnogBuETCKbZekn+h6t5FGGcZG2abPGKbz/x9rwpb6qV2hcbAQ30t6M7H6cTOh2/Ut8bEV2MtMB15sw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-dropcursor": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.19.0.tgz",
- "integrity": "sha512-sf3dEZXiLvsGqVK2maUIzXY6qtYYCvBumag7+VPTMGQ0D4hiZ1X/4ukt4+6VXDg5R2WP1CoIt/QvUetUjWNhbQ==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.15.3.tgz",
+ "integrity": "sha512-jGI5XZpdo8GSYQFj7HY15/oEwC2m2TqZz0/Fln5qIhY32XlZhWrsMuMI6WbUJrTH16es7xO6jmRlDsc6g+vJWg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extensions": "^3.19.0"
+ "@tiptap/extensions": "^3.15.3"
}
},
"node_modules/@tiptap/extension-floating-menu": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.19.0.tgz",
- "integrity": "sha512-JaoEkVRkt+Slq3tySlIsxnMnCjS0L5n1CA1hctjLy0iah8edetj3XD5mVv5iKqDzE+LIjF4nwLRRVKJPc8hFBg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-3.15.3.tgz",
+ "integrity": "sha512-+3DVBleKKffadEJEdLYxmYAJOjHjLSqtiSFUE3RABT4V2ka1ODy2NIpyKX0o1SvQ5N1jViYT9Q+yUbNa6zCcDw==",
"license": "MIT",
"optional": true,
"funding": {
@@ -8727,80 +8257,80 @@
},
"peerDependencies": {
"@floating-ui/dom": "^1.0.0",
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-gapcursor": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.19.0.tgz",
- "integrity": "sha512-w7DACS4oSZaDWjz7gropZHPc9oXqC9yERZTcjWxyORuuIh1JFf0TRYspleK+OK28plK/IftojD/yUDn1MTRhvA==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.15.3.tgz",
+ "integrity": "sha512-Kaw0sNzP0bQI/xEAMSfIpja6xhsu9WqqAK/puzOIS1RKWO47Wps/tzqdSJ9gfslPIb5uY5mKCfy8UR8Xgiia8w==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extensions": "^3.19.0"
+ "@tiptap/extensions": "^3.15.3"
}
},
"node_modules/@tiptap/extension-hard-break": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.19.0.tgz",
- "integrity": "sha512-lAmQraYhPS5hafvCl74xDB5+bLuNwBKIEsVoim35I0sDJj5nTrfhaZgMJ91VamMvT+6FF5f1dvBlxBxAWa8jew==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.15.3.tgz",
+ "integrity": "sha512-8HjxmeRbBiXW+7JKemAJtZtHlmXQ9iji398CPQ0yYde68WbIvUhHXjmbJE5pxFvvQTJ/zJv1aISeEOZN2bKBaw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-heading": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.19.0.tgz",
- "integrity": "sha512-uLpLlfyp086WYNOc0ekm1gIZNlEDfmzOhKzB0Hbyi6jDagTS+p9mxUNYeYOn9jPUxpFov43+Wm/4E24oY6B+TQ==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.15.3.tgz",
+ "integrity": "sha512-G1GG6iN1YXPS+75arDpo+bYRzhr3dNDw99c7D7na3aDawa9Qp7sZ/bVrzFUUcVEce0cD6h83yY7AooBxEc67hA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-horizontal-rule": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.19.0.tgz",
- "integrity": "sha512-iqUHmgMGhMgYGwG6L/4JdelVQ5Mstb4qHcgTGd/4dkcUOepILvhdxajPle7OEdf9sRgjQO6uoAU5BVZVC26+ng==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.15.3.tgz",
+ "integrity": "sha512-FYkN7L6JsfwwNEntmLklCVKvgL0B0N47OXMacRk6kYKQmVQ4Nvc7q/VJLpD9sk4wh4KT1aiCBfhKEBTu5pv1fg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-italic": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.19.0.tgz",
- "integrity": "sha512-6GffxOnS/tWyCbDkirWNZITiXRta9wrCmrfa4rh+v32wfaOL1RRQNyqo9qN6Wjyl1R42Js+yXTzTTzZsOaLMYA==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.15.3.tgz",
+ "integrity": "sha512-6XeuPjcWy7OBxpkgOV7bD6PATO5jhIxc8SEK4m8xn8nelGTBIbHGqK37evRv+QkC7E0MUryLtzwnmmiaxcKL0Q==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-link": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.19.0.tgz",
- "integrity": "sha512-HEGDJnnCPfr7KWu7Dsq+eRRe/mBCsv6DuI+7fhOCLDJjjKzNgrX2abbo/zG3D/4lCVFaVb+qawgJubgqXR/Smw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.15.3.tgz",
+ "integrity": "sha512-PdDXyBF9Wco9U1x6e+b7tKBWG+kqBDXDmaYXHkFm/gYuQCQafVJ5mdrDdKgkHDWVnJzMWZXBcZjT9r57qtlLWg==",
"license": "MIT",
"dependencies": {
"linkifyjs": "^4.3.2"
@@ -8810,161 +8340,161 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-list": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.19.0.tgz",
- "integrity": "sha512-N6nKbFB2VwMsPlCw67RlAtYSK48TAsAUgjnD+vd3ieSlIufdQnLXDFUP6hFKx9mwoUVUgZGz02RA6bkxOdYyTw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.15.3.tgz",
+ "integrity": "sha512-n7y/MF9lAM5qlpuH5IR4/uq+kJPEJpe9NrEiH+NmkO/5KJ6cXzpJ6F4U17sMLf2SNCq+TWN9QK8QzoKxIn50VQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/extension-list-item": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.19.0.tgz",
- "integrity": "sha512-VsSKuJz4/Tb6ZmFkXqWpDYkRzmaLTyE6dNSEpNmUpmZ32sMqo58mt11/huADNwfBFB0Ve7siH/VnFNIJYY3xvg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.15.3.tgz",
+ "integrity": "sha512-CCxL5ek1p0lO5e8aqhnPzIySldXRSigBFk2fP9OLgdl5qKFLs2MGc19jFlx5+/kjXnEsdQTFbGY1Sizzt0TVDw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.19.0"
+ "@tiptap/extension-list": "^3.15.3"
}
},
"node_modules/@tiptap/extension-list-keymap": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.19.0.tgz",
- "integrity": "sha512-bxgmAgA3RzBGA0GyTwS2CC1c+QjkJJq9hC+S6PSOWELGRiTbwDN3MANksFXLjntkTa0N5fOnL27vBHtMStURqw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.15.3.tgz",
+ "integrity": "sha512-UxqnTEEAKrL+wFQeSyC9z0mgyUUVRS2WTcVFoLZCE6/Xus9F53S4bl7VKFadjmqI4GpDk5Oe2IOUc72o129jWg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.19.0"
+ "@tiptap/extension-list": "^3.15.3"
}
},
"node_modules/@tiptap/extension-mention": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-mention/-/extension-mention-3.19.0.tgz",
- "integrity": "sha512-iBWX6mUouvDe9F75C2fJnFzvBFYVF8fcOa7UvzqWHRSCt8WxqSIp6C1B9Y0npP4TbIZySHzPV4NQQJhtmWwKww==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-mention/-/extension-mention-3.15.3.tgz",
+ "integrity": "sha512-4YpwiQyumKZrlfiw4ExDzrDRarC4kkaC7RjEl4kYhzutID1Zy1WLES1B0CoZN9wRds/mjrQjfCFE5HE+2g3D6w==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0",
- "@tiptap/suggestion": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3",
+ "@tiptap/suggestion": "^3.15.3"
}
},
"node_modules/@tiptap/extension-ordered-list": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.19.0.tgz",
- "integrity": "sha512-cxGsINquwHYE1kmhAcLNLHAofmoDEG6jbesR5ybl7tU5JwtKVO7S/xZatll2DU1dsDAXWPWEeeMl4e/9svYjCg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.15.3.tgz",
+ "integrity": "sha512-/8uhw528Iy0c9wF6tHCiIn0ToM0Ml6Ll2c/3iPRnKr4IjXwx2Lr994stUFihb+oqGZwV1J8CPcZJ4Ufpdqi4Dw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extension-list": "^3.19.0"
+ "@tiptap/extension-list": "^3.15.3"
}
},
"node_modules/@tiptap/extension-paragraph": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.19.0.tgz",
- "integrity": "sha512-xWa6gj82l5+AzdYyrSk9P4ynySaDzg/SlR1FarXE5yPXibYzpS95IWaVR0m2Qaz7Rrk+IiYOTGxGRxcHLOelNg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.15.3.tgz",
+ "integrity": "sha512-lc0Qu/1AgzcEfS67NJMj5tSHHhH6NtA6uUpvppEKGsvJwgE2wKG1onE4isrVXmcGRdxSMiCtyTDemPNMu6/ozQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-placeholder": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-3.19.0.tgz",
- "integrity": "sha512-i15OfgyI4IDCYAcYSKUMnuZkYuUInfanjf9zquH8J2BETiomf/jZldVCp/QycMJ8DOXZ38fXDc99wOygnSNySg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-3.15.3.tgz",
+ "integrity": "sha512-XcHHnojT186hKIoOgcPBesXk89+caNGVUdMtc171Vcr/5s0dpnr4q5LfE+YRC+S85CpCxCRRnh84Ou+XRtOqrw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/extensions": "^3.19.0"
+ "@tiptap/extensions": "^3.15.3"
}
},
"node_modules/@tiptap/extension-strike": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.19.0.tgz",
- "integrity": "sha512-xYpabHsv7PccLUBQaP8AYiFCnYbx6P93RHPd0lgNwhdOjYFd931Zy38RyoxPHAgbYVmhf1iyx7lpuLtBnhS5dA==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.15.3.tgz",
+ "integrity": "sha512-Y1P3eGNY7RxQs2BcR6NfLo9VfEOplXXHAqkOM88oowWWOE7dMNeFFZM9H8HNxoQgXJ7H0aWW9B7ZTWM9hWli2Q==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-text": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.19.0.tgz",
- "integrity": "sha512-K95+SnbZy0h6hNFtfy23n8t/nOcTFEf69In9TSFVVmwn/Nwlke+IfiESAkqbt1/7sKJeegRXYO7WzFEmFl9Q/g==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.15.3.tgz",
+ "integrity": "sha512-MhkBz8ZvrqOKtKNp+ZWISKkLUlTrDR7tbKZc2OnNcUTttL9dz0HwT+cg91GGz19fuo7ttDcfsPV6eVmflvGToA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extension-underline": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.19.0.tgz",
- "integrity": "sha512-800MGEWfG49j10wQzAFiW/ele1HT04MamcL8iyuPNu7ZbjbGN2yknvdrJlRy7hZlzIrVkZMr/1tz62KN33VHIw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.15.3.tgz",
+ "integrity": "sha512-r/IwcNN0W366jGu4Y0n2MiFq9jGa4aopOwtfWO4d+J0DyeS2m7Go3+KwoUqi0wQTiVU74yfi4DF6eRsMQ9/iHQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0"
+ "@tiptap/core": "^3.15.3"
}
},
"node_modules/@tiptap/extensions": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.19.0.tgz",
- "integrity": "sha512-ZmGUhLbMWaGqnJh2Bry+6V4M6gMpUDYo4D1xNux5Gng/E/eYtc+PMxMZ/6F7tNTAuujLBOQKj6D+4SsSm457jw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.15.3.tgz",
+ "integrity": "sha512-ycx/BgxR4rc9tf3ZyTdI98Z19yKLFfqM3UN+v42ChuIwkzyr9zyp7kG8dB9xN2lNqrD+5y/HyJobz/VJ7T90gA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@tiptap/pm": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.19.0.tgz",
- "integrity": "sha512-789zcnM4a8OWzvbD2DL31d0wbSm9BVeO/R7PLQwLIGysDI3qzrcclyZ8yhqOEVuvPitRRwYLq+mY14jz7kY4cw==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.15.3.tgz",
+ "integrity": "sha512-Zm1BaU1TwFi3CQiisxjgnzzIus+q40bBKWLqXf6WEaus8Z6+vo1MT2pU52dBCMIRaW9XNDq3E5cmGtMc1AlveA==",
"license": "MIT",
"dependencies": {
"prosemirror-changeset": "^2.3.0",
@@ -8992,9 +8522,9 @@
}
},
"node_modules/@tiptap/react": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.19.0.tgz",
- "integrity": "sha512-GQQMUUXMpNd8tRjc1jDK3tDRXFugJO7C928EqmeBcBzTKDrFIJ3QUoZKEPxUNb6HWhZ2WL7q00fiMzsv4DNSmg==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/react/-/react-3.15.3.tgz",
+ "integrity": "sha512-XvouB+Hrqw8yFmZLPEh+HWlMeRSjZfHSfWfWuw5d8LSwnxnPeu3Bg/rjHrRrdwb+7FumtzOnNWMorpb/PSOttQ==",
"license": "MIT",
"dependencies": {
"@types/use-sync-external-store": "^0.0.6",
@@ -9006,12 +8536,12 @@
"url": "https://github.com/sponsors/ueberdosis"
},
"optionalDependencies": {
- "@tiptap/extension-bubble-menu": "^3.19.0",
- "@tiptap/extension-floating-menu": "^3.19.0"
+ "@tiptap/extension-bubble-menu": "^3.15.3",
+ "@tiptap/extension-floating-menu": "^3.15.3"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0",
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3",
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"@types/react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -9019,35 +8549,35 @@
}
},
"node_modules/@tiptap/starter-kit": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.19.0.tgz",
- "integrity": "sha512-dTCkHEz+Y8ADxX7h+xvl6caAj+3nII/wMB1rTQchSuNKqJTOrzyUsCWm094+IoZmLT738wANE0fRIgziNHs/ug==",
- "license": "MIT",
- "dependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/extension-blockquote": "^3.19.0",
- "@tiptap/extension-bold": "^3.19.0",
- "@tiptap/extension-bullet-list": "^3.19.0",
- "@tiptap/extension-code": "^3.19.0",
- "@tiptap/extension-code-block": "^3.19.0",
- "@tiptap/extension-document": "^3.19.0",
- "@tiptap/extension-dropcursor": "^3.19.0",
- "@tiptap/extension-gapcursor": "^3.19.0",
- "@tiptap/extension-hard-break": "^3.19.0",
- "@tiptap/extension-heading": "^3.19.0",
- "@tiptap/extension-horizontal-rule": "^3.19.0",
- "@tiptap/extension-italic": "^3.19.0",
- "@tiptap/extension-link": "^3.19.0",
- "@tiptap/extension-list": "^3.19.0",
- "@tiptap/extension-list-item": "^3.19.0",
- "@tiptap/extension-list-keymap": "^3.19.0",
- "@tiptap/extension-ordered-list": "^3.19.0",
- "@tiptap/extension-paragraph": "^3.19.0",
- "@tiptap/extension-strike": "^3.19.0",
- "@tiptap/extension-text": "^3.19.0",
- "@tiptap/extension-underline": "^3.19.0",
- "@tiptap/extensions": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.15.3.tgz",
+ "integrity": "sha512-ia+eQr9Mt1ln2UO+kK4kFTJOrZK4GhvZXFjpCCYuHtco3rhr2fZAIxEEY4cl/vo5VO5WWyPqxhkFeLcoWmNjSw==",
+ "license": "MIT",
+ "dependencies": {
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/extension-blockquote": "^3.15.3",
+ "@tiptap/extension-bold": "^3.15.3",
+ "@tiptap/extension-bullet-list": "^3.15.3",
+ "@tiptap/extension-code": "^3.15.3",
+ "@tiptap/extension-code-block": "^3.15.3",
+ "@tiptap/extension-document": "^3.15.3",
+ "@tiptap/extension-dropcursor": "^3.15.3",
+ "@tiptap/extension-gapcursor": "^3.15.3",
+ "@tiptap/extension-hard-break": "^3.15.3",
+ "@tiptap/extension-heading": "^3.15.3",
+ "@tiptap/extension-horizontal-rule": "^3.15.3",
+ "@tiptap/extension-italic": "^3.15.3",
+ "@tiptap/extension-link": "^3.15.3",
+ "@tiptap/extension-list": "^3.15.3",
+ "@tiptap/extension-list-item": "^3.15.3",
+ "@tiptap/extension-list-keymap": "^3.15.3",
+ "@tiptap/extension-ordered-list": "^3.15.3",
+ "@tiptap/extension-paragraph": "^3.15.3",
+ "@tiptap/extension-strike": "^3.15.3",
+ "@tiptap/extension-text": "^3.15.3",
+ "@tiptap/extension-underline": "^3.15.3",
+ "@tiptap/extensions": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
},
"funding": {
"type": "github",
@@ -9055,17 +8585,17 @@
}
},
"node_modules/@tiptap/suggestion": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.19.0.tgz",
- "integrity": "sha512-tUZwMRFqTVPIo566ZmHNRteyZxJy2EE4FA+S3IeIUOOvY6AW0h1imhbpBO7sXV8CeEQvpa+2DWwLvy7L3vmstA==",
+ "version": "3.15.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-3.15.3.tgz",
+ "integrity": "sha512-+CbaHhPfKUe+fNpUIQaOPhh6xI+xL5jbK1zw++U+CZIRrVAAmHRhO+D0O2HdiE1RK7596y8bRqMiB2CRHF7emA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
},
"peerDependencies": {
- "@tiptap/core": "^3.19.0",
- "@tiptap/pm": "^3.19.0"
+ "@tiptap/core": "^3.15.3",
+ "@tiptap/pm": "^3.15.3"
}
},
"node_modules/@types/aria-query": {
@@ -9486,6 +9016,7 @@
"version": "22.19.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz",
"integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
@@ -9618,17 +9149,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz",
- "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.52.0.tgz",
+ "integrity": "sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.54.0",
- "@typescript-eslint/type-utils": "8.54.0",
- "@typescript-eslint/utils": "8.54.0",
- "@typescript-eslint/visitor-keys": "8.54.0",
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/type-utils": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.4.0"
@@ -9641,7 +9172,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.54.0",
+ "@typescript-eslint/parser": "^8.52.0",
"eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <6.0.0"
}
@@ -9657,16 +9188,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz",
- "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.52.0.tgz",
+ "integrity": "sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.54.0",
- "@typescript-eslint/types": "8.54.0",
- "@typescript-eslint/typescript-estree": "8.54.0",
- "@typescript-eslint/visitor-keys": "8.54.0",
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
"debug": "^4.4.3"
},
"engines": {
@@ -9682,14 +9213,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz",
- "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.52.0.tgz",
+ "integrity": "sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.54.0",
- "@typescript-eslint/types": "^8.54.0",
+ "@typescript-eslint/tsconfig-utils": "^8.52.0",
+ "@typescript-eslint/types": "^8.52.0",
"debug": "^4.4.3"
},
"engines": {
@@ -9704,14 +9235,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz",
- "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.52.0.tgz",
+ "integrity": "sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.54.0",
- "@typescript-eslint/visitor-keys": "8.54.0"
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9722,9 +9253,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz",
- "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.52.0.tgz",
+ "integrity": "sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9739,15 +9270,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz",
- "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.52.0.tgz",
+ "integrity": "sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.54.0",
- "@typescript-eslint/typescript-estree": "8.54.0",
- "@typescript-eslint/utils": "8.54.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0",
"debug": "^4.4.3",
"ts-api-utils": "^2.4.0"
},
@@ -9764,9 +9295,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
- "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.52.0.tgz",
+ "integrity": "sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9778,16 +9309,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz",
- "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.52.0.tgz",
+ "integrity": "sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.54.0",
- "@typescript-eslint/tsconfig-utils": "8.54.0",
- "@typescript-eslint/types": "8.54.0",
- "@typescript-eslint/visitor-keys": "8.54.0",
+ "@typescript-eslint/project-service": "8.52.0",
+ "@typescript-eslint/tsconfig-utils": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/visitor-keys": "8.52.0",
"debug": "^4.4.3",
"minimatch": "^9.0.5",
"semver": "^7.7.3",
@@ -9845,16 +9376,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz",
- "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.52.0.tgz",
+ "integrity": "sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.54.0",
- "@typescript-eslint/types": "8.54.0",
- "@typescript-eslint/typescript-estree": "8.54.0"
+ "@typescript-eslint/scope-manager": "8.52.0",
+ "@typescript-eslint/types": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9869,13 +9400,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz",
- "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.52.0.tgz",
+ "integrity": "sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.54.0",
+ "@typescript-eslint/types": "8.52.0",
"eslint-visitor-keys": "^4.2.1"
},
"engines": {
@@ -9917,9 +9448,9 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
"node_modules/@vitejs/plugin-basic-ssl": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.4.tgz",
- "integrity": "sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.3.tgz",
+ "integrity": "sha512-mxZpCH6SjsAFkiVgaclJGTcYIHm2qxw4x2EP/AUlEVqHhk8ojU75thpvTalc5lAvIK3sJjpVxhzYNoLXOuJGKw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9930,16 +9461,16 @@
}
},
"node_modules/@vitejs/plugin-react": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.3.tgz",
- "integrity": "sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz",
+ "integrity": "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/core": "^7.29.0",
+ "@babel/core": "^7.28.5",
"@babel/plugin-transform-react-jsx-self": "^7.27.1",
"@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-rc.2",
+ "@rolldown/pluginutils": "1.0.0-beta.53",
"@types/babel__core": "^7.20.5",
"react-refresh": "^0.18.0"
},
@@ -9951,17 +9482,18 @@
}
},
"node_modules/@vitest/coverage-v8": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz",
- "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.16.tgz",
+ "integrity": "sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@bcoe/v8-coverage": "^1.0.2",
- "@vitest/utils": "4.0.18",
- "ast-v8-to-istanbul": "^0.3.10",
+ "@vitest/utils": "4.0.16",
+ "ast-v8-to-istanbul": "^0.3.8",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-report": "^3.0.1",
+ "istanbul-lib-source-maps": "^5.0.6",
"istanbul-reports": "^3.2.0",
"magicast": "^0.5.1",
"obug": "^2.1.1",
@@ -9972,8 +9504,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "4.0.18",
- "vitest": "4.0.18"
+ "@vitest/browser": "4.0.16",
+ "vitest": "4.0.16"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -9982,16 +9514,16 @@
}
},
"node_modules/@vitest/expect": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz",
- "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.16.tgz",
+ "integrity": "sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.0.0",
"@types/chai": "^5.2.2",
- "@vitest/spy": "4.0.18",
- "@vitest/utils": "4.0.18",
+ "@vitest/spy": "4.0.16",
+ "@vitest/utils": "4.0.16",
"chai": "^6.2.1",
"tinyrainbow": "^3.0.3"
},
@@ -10000,9 +9532,9 @@
}
},
"node_modules/@vitest/expect/node_modules/@vitest/spy": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz",
- "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.16.tgz",
+ "integrity": "sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -10010,9 +9542,9 @@
}
},
"node_modules/@vitest/expect/node_modules/chai": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
- "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz",
+ "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10020,22 +9552,22 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz",
- "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz",
+ "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "4.0.18",
+ "@vitest/spy": "3.2.4",
"estree-walker": "^3.0.3",
- "magic-string": "^0.30.21"
+ "magic-string": "^0.30.17"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"msw": "^2.4.9",
- "vite": "^6.0.0 || ^7.0.0-0"
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
},
"peerDependenciesMeta": {
"msw": {
@@ -10046,16 +9578,6 @@
}
}
},
- "node_modules/@vitest/mocker/node_modules/@vitest/spy": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz",
- "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==",
- "dev": true,
- "license": "MIT",
- "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",
@@ -10067,9 +9589,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz",
- "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.16.tgz",
+ "integrity": "sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10080,13 +9602,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz",
- "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.16.tgz",
+ "integrity": "sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "4.0.18",
+ "@vitest/utils": "4.0.16",
"pathe": "^2.0.3"
},
"funding": {
@@ -10094,13 +9616,13 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz",
- "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.16.tgz",
+ "integrity": "sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.0.18",
+ "@vitest/pretty-format": "4.0.16",
"magic-string": "^0.30.21",
"pathe": "^2.0.3"
},
@@ -10122,13 +9644,13 @@
}
},
"node_modules/@vitest/utils": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz",
- "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.16.tgz",
+ "integrity": "sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.0.18",
+ "@vitest/pretty-format": "4.0.16",
"tinyrainbow": "^3.0.3"
},
"funding": {
@@ -10542,22 +10064,22 @@
}
},
"node_modules/assistant-cloud": {
- "version": "0.1.17",
- "resolved": "https://registry.npmjs.org/assistant-cloud/-/assistant-cloud-0.1.17.tgz",
- "integrity": "sha512-CUMr9MWuikURcYFHcMO7avyfe+lkMucM/W795AEre24/+eKutQklOOJj0YiLoUkm+0p3cmlX7tiN2bFACNaQXw==",
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/assistant-cloud/-/assistant-cloud-0.1.12.tgz",
+ "integrity": "sha512-A2tY6QIdP9+RkE8Mmpm4kAoO0NyKsKpJKYebbYFZ3bAnQKyB15Bw/PS9AovpdeziGU9At97TyiMrT36pDjCD7A==",
"license": "MIT",
"dependencies": {
- "assistant-stream": "^0.3.2"
+ "assistant-stream": "^0.2.46"
}
},
"node_modules/assistant-stream": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/assistant-stream/-/assistant-stream-0.3.2.tgz",
- "integrity": "sha512-BVpG6pSORumrEC6zX96KyTyw8RXFTbYElujgGST+SQuCZFgAJnTnBkuru2WyFkQglF/1hl8xXsvlU3hvpHcUsQ==",
+ "version": "0.2.46",
+ "resolved": "https://registry.npmjs.org/assistant-stream/-/assistant-stream-0.2.46.tgz",
+ "integrity": "sha512-smcC4sqOcTrUO01YpiHPgdG3Wc57kmQlCIEdMXSNuWMgcDvo60hnRY3rPDhZQBJHZOXQ9Q1wLR8ugKDjxi72GQ==",
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
- "nanoid": "^5.1.6",
+ "nanoid": "5.1.6",
"secure-json-parse": "^4.1.0"
}
},
@@ -10575,9 +10097,9 @@
}
},
"node_modules/ast-v8-to-istanbul": {
- "version": "0.3.10",
- "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.10.tgz",
- "integrity": "sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz",
+ "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10617,9 +10139,9 @@
}
},
"node_modules/autoprefixer": {
- "version": "10.4.24",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz",
- "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==",
+ "version": "10.4.23",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
+ "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==",
"dev": true,
"funding": [
{
@@ -10638,7 +10160,7 @@
"license": "MIT",
"dependencies": {
"browserslist": "^4.28.1",
- "caniuse-lite": "^1.0.30001766",
+ "caniuse-lite": "^1.0.30001760",
"fraction.js": "^5.3.4",
"picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0"
@@ -11021,9 +10543,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001768",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001768.tgz",
- "integrity": "sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==",
+ "version": "1.0.30001760",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz",
+ "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==",
"funding": [
{
"type": "opencollective",
@@ -11686,31 +11208,20 @@
}
},
"node_modules/cssstyle": {
- "version": "5.3.7",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz",
- "integrity": "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.4.tgz",
+ "integrity": "sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@asamuzakjp/css-color": "^4.1.1",
- "@csstools/css-syntax-patches-for-csstree": "^1.0.21",
- "css-tree": "^3.1.0",
- "lru-cache": "^11.2.4"
+ "@asamuzakjp/css-color": "^4.1.0",
+ "@csstools/css-syntax-patches-for-csstree": "1.0.14",
+ "css-tree": "^3.1.0"
},
"engines": {
"node": ">=20"
}
},
- "node_modules/cssstyle/node_modules/lru-cache": {
- "version": "11.2.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz",
- "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": "20 || >=22"
- }
- },
"node_modules/csstype": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
@@ -11839,25 +11350,15 @@
}
},
"node_modules/data-urls": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz",
- "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz",
+ "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "whatwg-mimetype": "^5.0.0",
- "whatwg-url": "^16.0.0"
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^15.0.0"
},
- "engines": {
- "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
- }
- },
- "node_modules/data-urls/node_modules/whatwg-mimetype": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz",
- "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==",
- "dev": true,
- "license": "MIT",
"engines": {
"node": ">=20"
}
@@ -12167,9 +11668,9 @@
"dev": true
},
"node_modules/diff": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz",
- "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -13125,14 +12626,14 @@
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "5.5.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz",
- "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==",
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz",
+ "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "prettier-linter-helpers": "^1.0.1",
- "synckit": "^0.11.12"
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.11.7"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -13253,17 +12754,17 @@
}
},
"node_modules/eslint-plugin-storybook": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.2.7.tgz",
- "integrity": "sha512-111gI3lUuan/zfDZ79isC4YZ75A9Ro7knqa2lNHv9PQRBWGKe6gvH2gDCYMioqT8aZo7UTzXfsyW7HHlEWxpQA==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.1.11.tgz",
+ "integrity": "sha512-mbq2r2kK5+AcLl0XDJ3to91JOgzCbHOqj+J3n+FRw6drk+M1boRqMShSoMMm0HdzXPLmlr7iur+qJ5ZuhH6ayQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/utils": "^8.48.0"
+ "@typescript-eslint/utils": "^8.8.1"
},
"peerDependencies": {
"eslint": ">=8",
- "storybook": "^10.2.7"
+ "storybook": "^10.1.11"
}
},
"node_modules/eslint-plugin-tailwindcss": {
@@ -13471,8 +12972,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
"integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
- "dev": true,
- "license": "Apache-2.0"
+ "dev": true
},
"node_modules/fast-equals": {
"version": "5.4.0",
@@ -13803,13 +13303,13 @@
}
},
"node_modules/framer-motion": {
- "version": "12.33.0",
- "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.33.0.tgz",
- "integrity": "sha512-ca8d+rRPcDP5iIF+MoT3WNc0KHJMjIyFAbtVLvM9eA7joGSpeqDfiNH/kCs1t4CHi04njYvWyj0jS4QlEK/rJQ==",
+ "version": "12.25.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.25.0.tgz",
+ "integrity": "sha512-mlWqd0rApIjeyhTCSNCqPYsUAEhkcUukZxH3ke6KbstBRPcxhEpuIjmiUQvB+1E9xkEm5SpNHBgHCapH/QHTWg==",
"license": "MIT",
"dependencies": {
- "motion-dom": "^12.33.0",
- "motion-utils": "^12.29.2",
+ "motion-dom": "^12.24.11",
+ "motion-utils": "^12.24.10",
"tslib": "^2.4.0"
},
"peerDependencies": {
@@ -14029,9 +13529,9 @@
}
},
"node_modules/globals": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz",
- "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==",
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz",
+ "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -15444,6 +14944,20 @@
"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,
+ "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.2.0",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
@@ -15654,17 +15168,17 @@
}
},
"node_modules/jsdom": {
- "version": "28.0.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.0.0.tgz",
- "integrity": "sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==",
+ "version": "27.4.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.4.0.tgz",
+ "integrity": "sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@acemir/cssom": "^0.9.31",
+ "@acemir/cssom": "^0.9.28",
"@asamuzakjp/dom-selector": "^6.7.6",
- "@exodus/bytes": "^1.11.0",
- "cssstyle": "^5.3.7",
- "data-urls": "^7.0.0",
+ "@exodus/bytes": "^1.6.0",
+ "cssstyle": "^5.3.4",
+ "data-urls": "^6.0.0",
"decimal.js": "^10.6.0",
"html-encoding-sniffer": "^6.0.0",
"http-proxy-agent": "^7.0.2",
@@ -15674,11 +15188,11 @@
"saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
"tough-cookie": "^6.0.0",
- "undici": "^7.20.0",
"w3c-xmlserializer": "^5.0.0",
- "webidl-conversions": "^8.0.1",
- "whatwg-mimetype": "^5.0.0",
- "whatwg-url": "^16.0.0",
+ "webidl-conversions": "^8.0.0",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^15.1.0",
+ "ws": "^8.18.3",
"xml-name-validator": "^5.0.0"
},
"engines": {
@@ -15693,16 +15207,6 @@
}
}
},
- "node_modules/jsdom/node_modules/whatwg-mimetype": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz",
- "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20"
- }
- },
"node_modules/jsesc": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
@@ -16025,11 +15529,10 @@
}
},
"node_modules/lodash": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
- "dev": true,
- "license": "MIT"
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
},
"node_modules/lodash.curry": {
"version": "4.1.1",
@@ -16176,12 +15679,6 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/long": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
- "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
- "license": "Apache-2.0"
- },
"node_modules/longest-streak": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
@@ -16238,9 +15735,9 @@
}
},
"node_modules/lucide-react": {
- "version": "0.563.0",
- "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.563.0.tgz",
- "integrity": "sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==",
+ "version": "0.562.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.562.0.tgz",
+ "integrity": "sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==",
"license": "ISC",
"peerDependencies": {
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -17576,12 +17073,12 @@
"license": "BSD-3-Clause"
},
"node_modules/motion": {
- "version": "12.33.0",
- "resolved": "https://registry.npmjs.org/motion/-/motion-12.33.0.tgz",
- "integrity": "sha512-TcND7PijsrTeIA9SRVUB8TOJQ+6mJnJ5K4a9oAJZvyI0Zy47Gq5oofU+VkTxbLcvDoKXnHspQcII2mnk3TbFsQ==",
+ "version": "12.25.0",
+ "resolved": "https://registry.npmjs.org/motion/-/motion-12.25.0.tgz",
+ "integrity": "sha512-jBFohEYklpZ+TL64zv03sHdqr1Tsc8/yDy7u68hVzi7hTJYtv53AduchqCiY3aWi4vY1hweS8DWtgCuckusYdQ==",
"license": "MIT",
"dependencies": {
- "framer-motion": "^12.33.0",
+ "framer-motion": "^12.25.0",
"tslib": "^2.4.0"
},
"peerDependencies": {
@@ -17602,18 +17099,18 @@
}
},
"node_modules/motion-dom": {
- "version": "12.33.0",
- "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.33.0.tgz",
- "integrity": "sha512-XRPebVypsl0UM+7v0Hr8o9UAj0S2djsQWRdHBd5iVouVpMrQqAI0C/rDAT3QaYnXnHuC5hMcwDHCboNeyYjPoQ==",
+ "version": "12.24.11",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.24.11.tgz",
+ "integrity": "sha512-DlWOmsXMJrV8lzZyd+LKjG2CXULUs++bkq8GZ2Sr0R0RRhs30K2wtY+LKiTjhmJU3W61HK+rB0GLz6XmPvTA1A==",
"license": "MIT",
"dependencies": {
- "motion-utils": "^12.29.2"
+ "motion-utils": "^12.24.10"
}
},
"node_modules/motion-utils": {
- "version": "12.29.2",
- "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz",
- "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==",
+ "version": "12.24.10",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.24.10.tgz",
+ "integrity": "sha512-x5TFgkCIP4pPsRLpKoI86jv/q8t8FQOiM/0E8QKBzfMozWHfkKap2gA1hOki+B5g3IsBNpxbUnfOum1+dgvYww==",
"license": "MIT"
},
"node_modules/ms": {
@@ -17622,15 +17119,15 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/msw": {
- "version": "2.12.9",
- "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.9.tgz",
- "integrity": "sha512-NYbi51C6M3dujGmcmuGemu68jy12KqQPoVWGeroKToLGsBgrwG5ErM8WctoIIg49/EV49SEvYM9WSqO4G7kNeQ==",
+ "version": "2.12.7",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.7.tgz",
+ "integrity": "sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@inquirer/confirm": "^5.0.0",
- "@mswjs/interceptors": "^0.41.2",
+ "@mswjs/interceptors": "^0.40.0",
"@open-draft/deferred-promise": "^2.2.0",
"@types/statuses": "^2.0.6",
"cookie": "^1.0.2",
@@ -17640,7 +17137,7 @@
"outvariant": "^1.4.3",
"path-to-regexp": "^6.3.0",
"picocolors": "^1.1.1",
- "rettime": "^0.10.1",
+ "rettime": "^0.7.0",
"statuses": "^2.0.2",
"strict-event-emitter": "^0.5.1",
"tough-cookie": "^6.0.0",
@@ -18678,13 +18175,13 @@
}
},
"node_modules/playwright": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz",
- "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==",
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz",
+ "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.58.2"
+ "playwright-core": "1.57.0"
},
"bin": {
"playwright": "cli.js"
@@ -18697,9 +18194,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.58.2",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz",
- "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==",
+ "version": "1.57.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz",
+ "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -18914,40 +18411,23 @@
}
},
"node_modules/posthog-js": {
- "version": "1.342.1",
- "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.342.1.tgz",
- "integrity": "sha512-mMnQhWuKj4ejFicLtFzr52InmqploOyW1eInqXBkaVqE1DPhczBDmwsd9MSggY8kv0EXm8zgK+2tzBJUKcX5yg==",
+ "version": "1.316.1",
+ "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.316.1.tgz",
+ "integrity": "sha512-4B0PHnMZwjV9aoQRQ5OqrPa40aCVlqRx1aZMCZCbZ4Z7c91bpOJDpENGGyxFvjUoNN+f8MP8LHZBdn5DPQyWTg==",
"license": "SEE LICENSE IN LICENSE",
"dependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/api-logs": "^0.208.0",
- "@opentelemetry/exporter-logs-otlp-http": "^0.208.0",
- "@opentelemetry/resources": "^2.2.0",
- "@opentelemetry/sdk-logs": "^0.208.0",
- "@posthog/core": "1.20.1",
- "@posthog/types": "1.342.1",
+ "@posthog/core": "1.9.1",
+ "@posthog/types": "1.316.1",
"core-js": "^3.38.1",
- "dompurify": "^3.3.1",
"fflate": "^0.4.8",
- "preact": "^10.28.2",
- "query-selector-shadow-dom": "^1.0.1",
- "web-vitals": "^5.1.0"
- }
- },
- "node_modules/posthog-js/node_modules/dompurify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz",
- "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==",
- "license": "(MPL-2.0 OR Apache-2.0)",
- "optionalDependencies": {
- "@types/trusted-types": "^2.0.7"
+ "preact": "^10.19.3",
+ "web-vitals": "^4.2.4"
}
},
"node_modules/preact": {
- "version": "10.28.2",
- "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.2.tgz",
- "integrity": "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA==",
- "license": "MIT",
+ "version": "10.24.1",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.1.tgz",
+ "integrity": "sha512-PnBAwFI3Yjxxcxw75n6VId/5TFxNW/81zexzWD9jn1+eSrOP84NdsS38H5IkF/UH3frqRPT+MvuCoVHjTDTnDw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
@@ -18963,9 +18443,9 @@
}
},
"node_modules/prettier": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
- "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
+ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
@@ -18978,11 +18458,10 @@
}
},
"node_modules/prettier-linter-helpers": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz",
- "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fast-diff": "^1.1.2"
},
@@ -19321,30 +18800,6 @@
"prosemirror-transform": "^1.1.0"
}
},
- "node_modules/protobufjs": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz",
- "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==",
- "hasInstallScript": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/node": ">=13.7.0",
- "long": "^5.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
"node_modules/pseudolocale": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pseudolocale/-/pseudolocale-2.2.0.tgz",
@@ -19394,12 +18849,6 @@
"resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz",
"integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA=="
},
- "node_modules/query-selector-shadow-dom": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz",
- "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==",
- "license": "MIT"
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -19585,29 +19034,6 @@
}
}
},
- "node_modules/radix-ui/node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -19619,9 +19045,9 @@
}
},
"node_modules/react": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
- "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
+ "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -19649,9 +19075,9 @@
}
},
"node_modules/react-day-picker": {
- "version": "9.13.1",
- "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.13.1.tgz",
- "integrity": "sha512-9nx2lBBJ0VZw5jJekId3DishwnJLiqY1Me1JvCrIyqbWwcflBTVaEkiK+w1bre5oMNWYo722eu+8UAMXWMqktw==",
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.13.0.tgz",
+ "integrity": "sha512-euzj5Hlq+lOHqI53NiuNhCP8HWgsPf/bBAVijR50hNaY1XwjKjShAnIe8jm8RD2W9IJUvihDIZ+KrmqfFzNhFQ==",
"license": "MIT",
"dependencies": {
"@date-fns/tz": "^1.4.1",
@@ -19715,15 +19141,15 @@
}
},
"node_modules/react-dom": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
- "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.2.4"
+ "react": "^19.2.3"
}
},
"node_modules/react-error-boundary": {
@@ -19770,9 +19196,9 @@
}
},
"node_modules/react-hook-form": {
- "version": "7.71.1",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.71.1.tgz",
- "integrity": "sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==",
+ "version": "7.70.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.70.0.tgz",
+ "integrity": "sha512-COOMajS4FI3Wuwrs3GPpi/Jeef/5W1DRR84Yl5/ShlT3dKVFUfoGiEZ/QE6Uw8P4T2/CLJdcTVYKvWBMQTEpvw==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
@@ -19917,9 +19343,9 @@
}
},
"node_modules/react-router": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz",
- "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.12.0.tgz",
+ "integrity": "sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -19939,12 +19365,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz",
- "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==",
+ "version": "7.12.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.12.0.tgz",
+ "integrity": "sha512-pfO9fiBcpEfX4Tx+iTYKDtPbrSLLCbwJ5EqP+SPYQu1VYCXdy79GSj0wttR0U4cikVdlImZuEZ/9ZNCgoaxwBA==",
"license": "MIT",
"dependencies": {
- "react-router": "7.13.0"
+ "react-router": "7.12.0"
},
"engines": {
"node": ">=20.0.0"
@@ -20417,9 +19843,9 @@
}
},
"node_modules/rettime": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.10.1.tgz",
- "integrity": "sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz",
+ "integrity": "sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==",
"dev": true,
"license": "MIT"
},
@@ -21065,14 +20491,14 @@
"license": "MIT"
},
"node_modules/storybook": {
- "version": "10.2.7",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.2.7.tgz",
- "integrity": "sha512-LFKSuZyF6EW2/Kkl5d7CvqgwhXXfuWv+aLBuoc616boLKJ3mxXuea+GxIgfk02NEyTKctJ0QsnSh5pAomf6Qkg==",
+ "version": "10.1.11",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.1.11.tgz",
+ "integrity": "sha512-pKP5jXJYM4OjvNklGuHKO53wOCAwfx79KvZyOWHoi9zXUH5WVMFUe/ZfWyxXG/GTcj0maRgHGUjq/0I43r0dDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
- "@storybook/icons": "^2.0.1",
+ "@storybook/icons": "^2.0.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/user-event": "^14.6.1",
"@vitest/expect": "3.2.4",
@@ -21080,7 +20506,7 @@
"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 || ^0.26.0 || ^0.27.0",
"open": "^10.2.0",
"recast": "^0.23.5",
- "semver": "^7.7.3",
+ "semver": "^7.6.2",
"use-sync-external-store": "^1.5.0",
"ws": "^8.18.0"
},
@@ -21146,9 +20572,9 @@
}
},
"node_modules/storybook/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "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": {
@@ -21561,13 +20987,13 @@
}
},
"node_modules/synckit": {
- "version": "0.11.12",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
- "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz",
+ "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@pkgr/core": "^0.2.9"
+ "@pkgr/core": "^0.2.4"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -22144,16 +21570,16 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.54.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.54.0.tgz",
- "integrity": "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==",
+ "version": "8.52.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.52.0.tgz",
+ "integrity": "sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.54.0",
- "@typescript-eslint/parser": "8.54.0",
- "@typescript-eslint/typescript-estree": "8.54.0",
- "@typescript-eslint/utils": "8.54.0"
+ "@typescript-eslint/eslint-plugin": "8.52.0",
+ "@typescript-eslint/parser": "8.52.0",
+ "@typescript-eslint/typescript-estree": "8.52.0",
+ "@typescript-eslint/utils": "8.52.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -22220,20 +21646,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/undici": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz",
- "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20.18.1"
- }
- },
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
"license": "MIT"
},
"node_modules/unified": {
@@ -22510,15 +21927,6 @@
"react": "*"
}
},
- "node_modules/use-effect-event": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/use-effect-event/-/use-effect-event-2.0.3.tgz",
- "integrity": "sha512-fz1en+z3fYXCXx3nMB8hXDMuygBltifNKZq29zDx+xNJ+1vEs6oJlYd9sK31vxJ0YI534VUsHEBY0k2BATsmBQ==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^18.3 || ^19.0.0-0"
- }
- },
"node_modules/use-isomorphic-layout-effect": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz",
@@ -22715,9 +22123,9 @@
}
},
"node_modules/vite-bundle-analyzer": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/vite-bundle-analyzer/-/vite-bundle-analyzer-1.3.6.tgz",
- "integrity": "sha512-elFXkF9oGy4CJEeOdP1DSEHRDKWfmaEDfT9/GuF4jmyfmUF6nC//iN+ythqMEVvrtchOEHGKLumZwnu1NjoI0w==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/vite-bundle-analyzer/-/vite-bundle-analyzer-1.3.2.tgz",
+ "integrity": "sha512-Od4ILUKRvBV3LuO/E+S+c1XULlxdkRZPSf6Vzzu+UAXG0D3hZYUu9imZIkSj/PU4e1FB14yB+av8g3KiljH8zQ==",
"dev": true,
"license": "MIT",
"bin": {
@@ -22739,9 +22147,9 @@
}
},
"node_modules/vite-tsconfig-paths": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.0.tgz",
- "integrity": "sha512-kpd3sY9glHIDaq4V/Tlc1Y8WaKtutoc3B525GHxEVKWX42FKfQsXvjFOemu1I8VIN8pNbrMLWVTbW79JaRUxKg==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.3.tgz",
+ "integrity": "sha512-7bL7FPX/DSviaZGYUKowWF1AiDVWjMjxNbE8lyaVGDezkedWqfGhlnQ4BZXre0ZN5P4kAgIJfAlgFDVyjrCIyg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -22751,6 +22159,11 @@
},
"peerDependencies": {
"vite": "*"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
}
},
"node_modules/vite/node_modules/@esbuild/aix-ppc64": {
@@ -23234,19 +22647,19 @@
}
},
"node_modules/vitest": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz",
- "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.16.tgz",
+ "integrity": "sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "4.0.18",
- "@vitest/mocker": "4.0.18",
- "@vitest/pretty-format": "4.0.18",
- "@vitest/runner": "4.0.18",
- "@vitest/snapshot": "4.0.18",
- "@vitest/spy": "4.0.18",
- "@vitest/utils": "4.0.18",
+ "@vitest/expect": "4.0.16",
+ "@vitest/mocker": "4.0.16",
+ "@vitest/pretty-format": "4.0.16",
+ "@vitest/runner": "4.0.16",
+ "@vitest/snapshot": "4.0.16",
+ "@vitest/spy": "4.0.16",
+ "@vitest/utils": "4.0.16",
"es-module-lexer": "^1.7.0",
"expect-type": "^1.2.2",
"magic-string": "^0.30.21",
@@ -23274,10 +22687,10 @@
"@edge-runtime/vm": "*",
"@opentelemetry/api": "^1.9.0",
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
- "@vitest/browser-playwright": "4.0.18",
- "@vitest/browser-preview": "4.0.18",
- "@vitest/browser-webdriverio": "4.0.18",
- "@vitest/ui": "4.0.18",
+ "@vitest/browser-playwright": "4.0.16",
+ "@vitest/browser-preview": "4.0.16",
+ "@vitest/browser-webdriverio": "4.0.16",
+ "@vitest/ui": "4.0.16",
"happy-dom": "*",
"jsdom": "*"
},
@@ -23311,16 +22724,53 @@
}
}
},
+ "node_modules/vitest/node_modules/@vitest/mocker": {
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.16.tgz",
+ "integrity": "sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "4.0.16",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.21"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
"node_modules/vitest/node_modules/@vitest/spy": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz",
- "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==",
+ "version": "4.0.16",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.16.tgz",
+ "integrity": "sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/vitest/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/node_modules/picomatch": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
@@ -23405,15 +22855,15 @@
}
},
"node_modules/web-vitals": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.1.0.tgz",
- "integrity": "sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz",
+ "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==",
"license": "Apache-2.0"
},
"node_modules/webidl-conversions": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz",
- "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz",
+ "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
@@ -23442,18 +22892,17 @@
}
},
"node_modules/whatwg-url": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.0.tgz",
- "integrity": "sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==",
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz",
+ "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@exodus/bytes": "^1.11.0",
"tr46": "^6.0.0",
- "webidl-conversions": "^8.0.1"
+ "webidl-conversions": "^8.0.0"
},
"engines": {
- "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
+ "node": ">=20"
}
},
"node_modules/which": {
@@ -23819,9 +23268,9 @@
}
},
"node_modules/zod": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
- "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz",
+ "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
@@ -23841,9 +23290,9 @@
}
},
"node_modules/zustand": {
- "version": "5.0.11",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz",
- "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.9.tgz",
+ "integrity": "sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==",
"license": "MIT",
"engines": {
"node": ">=12.20.0"
diff --git a/client/package.json b/client/package.json
index 23e91cc4bc2..69416aefb22 100644
--- a/client/package.json
+++ b/client/package.json
@@ -44,18 +44,17 @@
"build-storybook": "storybook build"
},
"dependencies": {
- "@ag-ui/client": "^0.0.44",
- "@ag-ui/core": "^0.0.44",
- "@assistant-ui/react": "^0.12.9",
- "@assistant-ui/react-markdown": "^0.12.3",
+ "@ag-ui/client": "^0.0.42",
+ "@ag-ui/core": "^0.0.42",
+ "@assistant-ui/react": "^0.11.53",
+ "@assistant-ui/react-markdown": "^0.11.9",
"@hookform/resolvers": "^5.2.2",
- "@lingui/core": "^5.9.0",
- "@lingui/react": "^5.9.0",
+ "@lingui/core": "^5.7.0",
+ "@lingui/react": "^5.7.0",
"@monaco-editor/react": "^4.7.0",
"@radix-ui/colors": "^3.0.0",
"@radix-ui/react-aspect-ratio": "^1.1.8",
"@radix-ui/react-context-menu": "^2.2.16",
- "@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-menubar": "^1.1.16",
"@radix-ui/react-navigation-menu": "^1.2.14",
@@ -63,22 +62,21 @@
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slider": "^1.3.6",
"@radix-ui/react-slot": "^1.2.4",
- "@radix-ui/react-toggle": "^1.1.10",
- "@radix-ui/react-visually-hidden": "^1.2.4",
- "@tanstack/react-query": "^5.90.20",
- "@tanstack/react-query-devtools": "^5.91.3",
+ "@radix-ui/react-toggle-group": "^1.1.11",
+ "@tanstack/react-query": "^5.90.16",
+ "@tanstack/react-query-devtools": "^5.91.2",
"@tanstack/react-table": "^8.21.3",
"@testing-library/dom": "^10.4.1",
"@testing-library/user-event": "^14.6.1",
- "@tiptap/extension-document": "3.19.0",
- "@tiptap/extension-mention": "3.19.0",
- "@tiptap/extension-paragraph": "3.19.0",
- "@tiptap/extension-placeholder": "3.19.0",
- "@tiptap/extension-text": "3.19.0",
- "@tiptap/pm": "3.19.0",
- "@tiptap/react": "3.19.0",
- "@tiptap/starter-kit": "3.19.0",
- "@tiptap/suggestion": "3.19.0",
+ "@tiptap/extension-document": "3.15.3",
+ "@tiptap/extension-mention": "3.15.3",
+ "@tiptap/extension-paragraph": "3.15.3",
+ "@tiptap/extension-placeholder": "3.15.3",
+ "@tiptap/extension-text": "3.15.3",
+ "@tiptap/pm": "3.15.3",
+ "@tiptap/react": "3.15.3",
+ "@tiptap/starter-kit": "3.15.3",
+ "@tiptap/suggestion": "3.15.3",
"@types/d3": "^7.4.3",
"@types/sanitize-html": "^2.16.0",
"@uidotdev/usehooks": "^2.4.1",
@@ -92,22 +90,22 @@
"date-fns": "^4.1.0",
"fetch-intercept": "^2.4.0",
"html-entities": "^2.6.0",
- "lucide-react": "^0.563.0",
+ "lucide-react": "^0.562.0",
"monaco-editor": "^0.55.1",
"monaco-yaml": "^5.4.0",
- "motion": "^12.33.0",
- "posthog-js": "^1.342.1",
+ "motion": "^12.25.0",
+ "posthog-js": "^1.316.1",
"radix-ui": "^1.4.3",
- "react": "^19.2.4",
+ "react": "^19.2.3",
+ "react-day-picker": "^9.13.0",
+ "react-dom": "^19.2.3",
"react-data-grid": "^7.0.0-beta.59",
- "react-day-picker": "^9.13.1",
- "react-dom": "^19.2.4",
"react-helmet-async": "^2.0.5",
- "react-hook-form": "^7.71.1",
+ "react-hook-form": "^7.70.0",
"react-inlinesvg": "^4.2.0",
"react-json-view": "^1.21.3",
"react-resizable-panels": "^3.0.6",
- "react-router-dom": "^7.13.0",
+ "react-router-dom": "^7.12.0",
"react-select": "^5.10.2",
"react-shiki": "^0.9.1",
"react-textarea-autosize": "^8.5.9",
@@ -120,69 +118,69 @@
"use-debounce": "^10.1.0",
"vite-plugin-svgr": "^4.5.0",
"whatwg-fetch": "^3.6.20",
- "zod": "^4.3.6",
- "zustand": "^5.0.11"
+ "zod": "^4.3.5",
+ "zustand": "^5.0.9"
},
"devDependencies": {
- "@chromatic-com/storybook": "^5.0.0",
+ "@chromatic-com/storybook": "^4.1.3",
"@dagrejs/dagre": "^1.1.8",
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "9.39.2",
- "@graphql-codegen/cli": "^6.1.1",
+ "@graphql-codegen/cli": "^6.1.0",
"@graphql-codegen/typescript-react-query": "^6.1.1",
- "@lingui/babel-plugin-lingui-macro": "^5.9.0",
- "@lingui/cli": "^5.9.0",
- "@lingui/macro": "^5.9.0",
- "@lingui/vite-plugin": "^5.9.0",
- "@playwright/test": "^1.58.2",
- "@storybook/addon-docs": "^10.2.7",
- "@storybook/addon-links": "^10.2.7",
- "@storybook/addon-onboarding": "^10.2.7",
- "@storybook/react-vite": "^10.2.7",
+ "@lingui/babel-plugin-lingui-macro": "^5.7.0",
+ "@lingui/cli": "^5.7.0",
+ "@lingui/macro": "^5.7.0",
+ "@lingui/vite-plugin": "^5.7.0",
+ "@storybook/addon-docs": "^10.1.11",
+ "@storybook/addon-links": "^10.1.11",
+ "@storybook/addon-onboarding": "^10.1.11",
+ "@storybook/react-vite": "^10.1.11",
"@tailwindcss/forms": "^0.5.11",
"@tailwindcss/line-clamp": "^0.4.4",
"@tailwindcss/typography": "^0.5.19",
- "@tanstack/eslint-plugin-query": "^5.91.4",
+ "@tanstack/eslint-plugin-query": "^5.91.2",
"@testing-library/jest-dom": "^6.9.1",
- "@testing-library/react": "^16.3.2",
+ "@testing-library/react": "^16.3.1",
"@testing-library/react-hooks": "^8.0.1",
"@types/node": "^22.19.1",
"@types/react-dom": "^19.2.3",
"@types/sanitize-html": "^2.16.0",
- "@typescript-eslint/eslint-plugin": "^8.54.0",
- "@typescript-eslint/parser": "^8.54.0",
- "@vitejs/plugin-basic-ssl": "^2.1.4",
- "@vitejs/plugin-react": "^5.1.3",
- "@vitest/coverage-v8": "^4.0.18",
- "autoprefixer": "^10.4.24",
+ "@typescript-eslint/eslint-plugin": "^8.52.0",
+ "@typescript-eslint/parser": "^8.52.0",
+ "@vitejs/plugin-basic-ssl": "^2.1.3",
+ "@vitejs/plugin-react": "^5.1.2",
+ "@vitest/coverage-v8": "^4.0.16",
+ "autoprefixer": "^10.4.23",
"eslint": "9.39.2",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-bytechef": "file:eslint",
"eslint-plugin-lingui": "^0.11.0",
- "eslint-plugin-prettier": "^5.5.5",
+ "eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-sort-destructure-keys": "^2.0.0",
- "eslint-plugin-storybook": "^10.2.7",
+ "eslint-plugin-storybook": "^10.1.11",
"eslint-plugin-tailwindcss": "^3.18.2",
- "globals": "^17.3.0",
+ "globals": "^17.0.0",
"identity-obj-proxy": "^3.0.0",
"isobject": "^4.0.0",
- "jsdom": "^28.0.0",
- "msw": "^2.12.9",
+ "jsdom": "^27.4.0",
+ "msw": "^2.12.7",
"object-resolve-path": "^1.1.1",
"postcss": "^8.5.6",
- "prettier": "3.8.1",
+ "prettier": "3.7.4",
"prettier-plugin-tailwindcss": "^0.7.2",
"react-fast-compare": "^3.2.2",
- "storybook": "^10.2.7",
+ "storybook": "^10.1.11",
"tailwindcss": "^3.4.17",
"typescript": "^5.9.3",
- "typescript-eslint": "^8.54.0",
+ "typescript-eslint": "^8.52.0",
"vite": "^7.3.1",
- "vite-bundle-analyzer": "^1.3.6",
- "vite-tsconfig-paths": "^6.1.0",
- "vitest": "^4.0.18"
+ "vite-bundle-analyzer": "^1.3.2",
+ "vite-tsconfig-paths": "^6.0.3",
+ "vitest": "^4.0.16",
+ "@playwright/test": "^1.57.0"
},
"msw": {
"workerDirectory": "public"
diff --git a/client/public/mockServiceWorker.js b/client/public/mockServiceWorker.js
index 85e90101233..461e2600ebd 100644
--- a/client/public/mockServiceWorker.js
+++ b/client/public/mockServiceWorker.js
@@ -7,7 +7,7 @@
* - Please do NOT modify this file.
*/
-const PACKAGE_VERSION = '2.12.9'
+const PACKAGE_VERSION = '2.12.7'
const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()
diff --git a/client/public/oauth.html b/client/public/oauth.html
index 96c38e9e4b0..fec98b271c6 100644
--- a/client/public/oauth.html
+++ b/client/public/oauth.html
@@ -31,8 +31,6 @@
Safe content
';
- const {wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('Safe content')).toBeInTheDocument();
- expect(screen.queryByText('alert("xss")')).not.toBeInTheDocument();
- });
-
- it('should strip anchor tags', () => {
- const htmlWithLink = 'Click meOther content
';
- const {wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.queryByRole('link')).not.toBeInTheDocument();
- expect(screen.getByText('Other content')).toBeInTheDocument();
- });
-
- it('should render empty content when defaultValue is undefined', () => {
- const {wrapper} = createMockForm();
-
- const {container} = render(, {wrapper});
-
- const proseDiv = container.querySelector('.prose');
- expect(proseDiv).toBeInTheDocument();
- expect(proseDiv?.innerHTML).toBe('');
- });
-
- it('should preserve class attribute on allowed tags', () => {
- const htmlWithClass = 'Styled paragraph
';
- const {wrapper} = createMockForm();
-
- const {container} = render(, {wrapper});
-
- const paragraph = container.querySelector('p.custom-class');
- expect(paragraph).toBeInTheDocument();
- expect(paragraph?.textContent).toBe('Styled paragraph');
- });
-
- it('should render multiple heading levels', () => {
- const headingsHtml = 'H1
H2
H3
H4
H5
H6
';
- const {wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByRole('heading', {level: 1})).toHaveTextContent('H1');
- expect(screen.getByRole('heading', {level: 2})).toHaveTextContent('H2');
- expect(screen.getByRole('heading', {level: 3})).toHaveTextContent('H3');
- expect(screen.getByRole('heading', {level: 4})).toHaveTextContent('H4');
- expect(screen.getByRole('heading', {level: 5})).toHaveTextContent('H5');
- expect(screen.getByRole('heading', {level: 6})).toHaveTextContent('H6');
- });
-
- it('should render with both description and HTML content', () => {
- const {wrapper} = createMockForm();
-
- render(
- HTML content
',
- fieldDescription: 'Description text',
- }}
- />,
- {wrapper}
- );
-
- expect(screen.getByText('Description text')).toBeInTheDocument();
- expect(screen.getByText('HTML content')).toBeInTheDocument();
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/DateTimeFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/DateTimeFieldRenderer.test.tsx
deleted file mode 100644
index c47af53094d..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/DateTimeFieldRenderer.test.tsx
+++ /dev/null
@@ -1,182 +0,0 @@
-import {FieldType} from '@/pages/automation/trigger-form/TriggerForm';
-import {render, screen} from '@/shared/util/test-utils';
-import {describe, expect, it, vi} from 'vitest';
-
-import {DateTimeFieldRenderer} from '../DateTimeFieldRenderer';
-import {createMockForm} from './testUtils';
-
-vi.mock('@/components/DatePicker/DatePicker', () => ({
- default: ({onChange, value}: {onChange: (date: Date | undefined) => void; value?: Date}) => (
- onChange(event.target.value ? new Date(event.target.value) : undefined)}
- type="date"
- value={value ? value.toISOString().split('T')[0] : ''}
- />
- ),
-}));
-
-vi.mock('@/components/DateTimePicker/DateTimePicker', () => ({
- default: ({onChange, value}: {onChange: (date: Date | undefined) => void; value?: Date}) => (
- onChange(event.target.value ? new Date(event.target.value) : undefined)}
- type="datetime-local"
- value={value ? value.toISOString().slice(0, 16) : ''}
- />
- ),
-}));
-
-describe('DateTimeFieldRenderer', () => {
- it('should render with fieldLabel', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Select Date')).toBeInTheDocument();
- });
-
- it('should render with fieldName when fieldLabel is not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('eventDate')).toBeInTheDocument();
- });
-
- it('should render with name when fieldLabel and fieldName are not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('fallbackDate')).toBeInTheDocument();
- });
-
- it('should render field description when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Select the event date')).toBeInTheDocument();
- });
-
- it('should not render field description when not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.queryByText('Select the event date')).not.toBeInTheDocument();
- });
-
- it('should render DatePicker for DATE_PICKER fieldType', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByTestId('date-picker')).toBeInTheDocument();
- expect(screen.queryByTestId('datetime-picker')).not.toBeInTheDocument();
- });
-
- it('should render DateTimePicker for DATETIME_PICKER fieldType', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByTestId('datetime-picker')).toBeInTheDocument();
- expect(screen.queryByTestId('date-picker')).not.toBeInTheDocument();
- });
-
- it('should render DateTimePicker for non-DATE_PICKER fieldTypes', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByTestId('datetime-picker')).toBeInTheDocument();
- });
-
- it('should display existing date value for DatePicker', () => {
- const testDate = '2024-06-15T10:00:00.000Z';
- const {form, wrapper} = createMockForm({dateField: testDate});
-
- render(
- ,
- {wrapper}
- );
-
- const datePicker = screen.getByTestId('date-picker');
- expect(datePicker).toHaveValue('2024-06-15');
- });
-
- it('should display existing datetime value for DateTimePicker', () => {
- const testDateTime = '2024-06-15T14:30:00.000Z';
- const {form, wrapper} = createMockForm({dateTimeField: testDateTime});
-
- render(
- ,
- {wrapper}
- );
-
- const dateTimePicker = screen.getByTestId('datetime-picker');
- expect(dateTimePicker).toHaveValue('2024-06-15T14:30');
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/FileInputFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/FileInputFieldRenderer.test.tsx
deleted file mode 100644
index d8b022d5775..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/FileInputFieldRenderer.test.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import {fireEvent, render, screen} from '@/shared/util/test-utils';
-import {describe, expect, it} from 'vitest';
-
-import {FileInputFieldRenderer} from '../FileInputFieldRenderer';
-import {createMockForm} from './testUtils';
-
-describe('FileInputFieldRenderer', () => {
- it('should render with fieldLabel', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.getByText('Upload File')).toBeInTheDocument();
- });
-
- it('should render with fieldName when fieldLabel is not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.getByText('documentFile')).toBeInTheDocument();
- });
-
- it('should render with name when fieldLabel and fieldName are not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('fallbackFile')).toBeInTheDocument();
- });
-
- it('should render field description when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Please upload a PDF document')).toBeInTheDocument();
- });
-
- it('should not render field description when not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.queryByText('Please upload a PDF document')).not.toBeInTheDocument();
- });
-
- it('should render file input element', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const fileInput = document.querySelector('input[type="file"]');
- expect(fileInput).toBeInTheDocument();
- });
-
- it('should have correct id attribute on file input', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const fileInput = document.querySelector('input[type="file"]#uploadField');
- expect(fileInput).toBeInTheDocument();
- });
-
- it('should update form value when file is selected', () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const file = new File(['test content'], 'test.txt', {type: 'text/plain'});
- const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement;
-
- fireEvent.change(fileInput, {target: {files: [file]}});
-
- const formValue = formRef.current?.getValues('fileField');
- expect(formValue).toBeInstanceOf(File);
- expect((formValue as File).name).toBe('test.txt');
- });
-
- it('should set form value to null when file selection is cancelled', () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement;
-
- fireEvent.change(fileInput, {target: {files: null}});
-
- expect(formRef.current?.getValues('fileField')).toBeNull();
- });
-
- it('should handle different file types', () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const imageFile = new File(['image data'], 'photo.png', {type: 'image/png'});
- const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement;
-
- fireEvent.change(fileInput, {target: {files: [imageFile]}});
-
- const formValue = formRef.current?.getValues('imageField') as File;
- expect(formValue.name).toBe('photo.png');
- expect(formValue.type).toBe('image/png');
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/HiddenFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/HiddenFieldRenderer.test.tsx
deleted file mode 100644
index c309f4e55a0..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/HiddenFieldRenderer.test.tsx
+++ /dev/null
@@ -1,95 +0,0 @@
-import {render} from '@/shared/util/test-utils';
-import {describe, expect, it} from 'vitest';
-
-import {HiddenFieldRenderer} from '../HiddenFieldRenderer';
-import {createMockForm} from './testUtils';
-
-describe('HiddenFieldRenderer', () => {
- it('should render a hidden input element', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const hiddenInput = document.querySelector('input[type="hidden"]');
- expect(hiddenInput).toBeInTheDocument();
- });
-
- it('should use form field value when available', () => {
- const {form, wrapper} = createMockForm({hiddenField: 'form-value'});
-
- render(, {wrapper});
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('form-value');
- });
-
- it('should use defaultValue when form field value is undefined', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('default-value');
- });
-
- it('should prefer form field value over defaultValue', () => {
- const {form, wrapper} = createMockForm({hiddenField: 'form-value'});
-
- render(, {
- wrapper,
- });
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('form-value');
- });
-
- it('should render empty string when both form value and defaultValue are undefined', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('');
- });
-
- it('should convert numeric form value to string', () => {
- const {form, wrapper} = createMockForm({hiddenField: 12345});
-
- render(, {wrapper});
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('12345');
- });
-
- it('should use string defaultValue', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('99999');
- });
-
- it('should handle boolean form value', () => {
- const {form, wrapper} = createMockForm({hiddenField: true});
-
- render(, {wrapper});
-
- const hiddenInput = document.querySelector('input[type="hidden"]') as HTMLInputElement;
- expect(hiddenInput.value).toBe('true');
- });
-
- it('should not be visible to the user', () => {
- const {form, wrapper} = createMockForm({hiddenField: 'secret'});
-
- const {container} = render(, {wrapper});
-
- const hiddenInput = container.querySelector('input[type="hidden"]');
- expect(hiddenInput).toBeInTheDocument();
-
- const visibleElements = container.querySelectorAll('label, p, span:not(:empty)');
- expect(visibleElements.length).toBe(0);
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/InputFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/InputFieldRenderer.test.tsx
deleted file mode 100644
index 20f4f2fe091..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/InputFieldRenderer.test.tsx
+++ /dev/null
@@ -1,200 +0,0 @@
-import {FieldType} from '@/pages/automation/trigger-form/TriggerForm';
-import {fireEvent, render, screen} from '@/shared/util/test-utils';
-import {describe, expect, it} from 'vitest';
-
-import {InputFieldRenderer} from '../InputFieldRenderer';
-import {createMockForm} from './testUtils';
-
-describe('InputFieldRenderer', () => {
- it('should render with fieldLabel', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('Username')).toBeInTheDocument();
- });
-
- it('should render with fieldName when fieldLabel is not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('userField')).toBeInTheDocument();
- });
-
- it('should render with name when fieldLabel and fieldName are not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('fallbackInput')).toBeInTheDocument();
- });
-
- it('should render field description when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Enter your full name')).toBeInTheDocument();
- });
-
- it('should not render field description when not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.queryByText('Enter your full name')).not.toBeInTheDocument();
- });
-
- it('should render text input by default', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const input = screen.getByRole('textbox');
- expect(input).toHaveAttribute('type', 'text');
- });
-
- it('should render email input for EMAIL_INPUT fieldType', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const input = document.querySelector('input[type="email"]');
- expect(input).toBeInTheDocument();
- });
-
- it('should render number input for NUMBER_INPUT fieldType', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const input = screen.getByRole('spinbutton');
- expect(input).toHaveAttribute('type', 'number');
- });
-
- it('should render password input for PASSWORD_INPUT fieldType', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const input = document.querySelector('input[type="password"]');
- expect(input).toBeInTheDocument();
- });
-
- it('should render text input for INPUT fieldType', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const input = screen.getByRole('textbox');
- expect(input).toHaveAttribute('type', 'text');
- });
-
- it('should display placeholder when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const input = screen.getByRole('textbox');
- expect(input).toHaveAttribute('placeholder', 'Type to search...');
- });
-
- it('should update form value when typing', () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const input = screen.getByRole('textbox');
- fireEvent.change(input, {target: {value: 'John Doe'}});
-
- expect(formRef.current?.getValues('name')).toBe('John Doe');
- });
-
- it('should display existing string value from form', () => {
- const {form, wrapper} = createMockForm({name: 'Jane Doe'});
-
- render(, {wrapper});
-
- const input = screen.getByRole('textbox');
- expect(input).toHaveValue('Jane Doe');
- });
-
- it('should display existing numeric value from form', () => {
- const {form, wrapper} = createMockForm({age: 25});
-
- render(
- ,
- {wrapper}
- );
-
- const input = screen.getByRole('spinbutton');
- expect(input).toHaveValue(25);
- });
-
- it('should display empty string for non-string/non-number values', () => {
- const {form, wrapper} = createMockForm({field: {complex: 'object'}});
-
- render(, {wrapper});
-
- const input = screen.getByRole('textbox');
- expect(input).toHaveValue('');
- });
-
- it('should handle undefined fieldType gracefully', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- const input = screen.getByRole('textbox');
- expect(input).toHaveAttribute('type', 'text');
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/RadioFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/RadioFieldRenderer.test.tsx
deleted file mode 100644
index 590c17cf78f..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/RadioFieldRenderer.test.tsx
+++ /dev/null
@@ -1,240 +0,0 @@
-import {fireEvent, render, screen} from '@/shared/util/test-utils';
-import {describe, expect, it} from 'vitest';
-
-import {RadioFieldRenderer} from '../RadioFieldRenderer';
-import {createMockForm} from './testUtils';
-
-const mockOptions = [
- {label: 'Option A', value: 'optionA'},
- {label: 'Option B', value: 'optionB'},
- {label: 'Option C', value: 'optionC'},
-];
-
-describe('RadioFieldRenderer', () => {
- it('should render with fieldLabel', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Select Option')).toBeInTheDocument();
- });
-
- it('should render with fieldName when fieldLabel is not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('choiceField')).toBeInTheDocument();
- });
-
- it('should render with name when fieldLabel and fieldName are not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.getByText('fallbackRadio')).toBeInTheDocument();
- });
-
- it('should render field description when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Choose your preferred option')).toBeInTheDocument();
- });
-
- it('should not render field description when not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.queryByText('Choose your preferred option')).not.toBeInTheDocument();
- });
-
- it('should render all radio options', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Option A')).toBeInTheDocument();
- expect(screen.getByText('Option B')).toBeInTheDocument();
- expect(screen.getByText('Option C')).toBeInTheDocument();
- });
-
- it('should render radio buttons for each option', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const radioButtons = screen.getAllByRole('radio');
- expect(radioButtons).toHaveLength(3);
- });
-
- it('should update form value when radio option is selected', () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const optionB = screen.getByRole('radio', {name: 'Option B'});
- fireEvent.click(optionB);
-
- expect(formRef.current?.getValues('selectedOption')).toBe('optionB');
- });
-
- it('should reflect selected value from form', () => {
- const {form, wrapper} = createMockForm({selectedOption: 'optionB'});
-
- render(
- ,
- {wrapper}
- );
-
- const optionB = screen.getByRole('radio', {name: 'Option B'});
- expect(optionB).toBeChecked();
- });
-
- it('should render empty list when no options provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- const radioButtons = screen.queryAllByRole('radio');
- expect(radioButtons).toHaveLength(0);
- });
-
- it('should render empty list when fieldOptions is undefined', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const radioButtons = screen.queryAllByRole('radio');
- expect(radioButtons).toHaveLength(0);
- });
-
- it('should have correct id for each radio option', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(document.getElementById('radioGroup-optionA')).toBeInTheDocument();
- expect(document.getElementById('radioGroup-optionB')).toBeInTheDocument();
- expect(document.getElementById('radioGroup-optionC')).toBeInTheDocument();
- });
-
- it('should allow only one option to be selected', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const optionA = screen.getByRole('radio', {name: 'Option A'});
- const optionB = screen.getByRole('radio', {name: 'Option B'});
-
- fireEvent.click(optionA);
- expect(optionA).toBeChecked();
- expect(optionB).not.toBeChecked();
-
- fireEvent.click(optionB);
- expect(optionA).not.toBeChecked();
- expect(optionB).toBeChecked();
- });
-
- it('should handle non-string form values gracefully', () => {
- const {form, wrapper} = createMockForm({radioField: 123});
-
- render(
- ,
- {wrapper}
- );
-
- const radioButtons = screen.getAllByRole('radio');
- radioButtons.forEach((radio) => {
- expect(radio).not.toBeChecked();
- });
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/SelectFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/SelectFieldRenderer.test.tsx
deleted file mode 100644
index 4a121aac01b..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/SelectFieldRenderer.test.tsx
+++ /dev/null
@@ -1,379 +0,0 @@
-import {fireEvent, render, screen, waitFor} from '@/shared/util/test-utils';
-import {describe, expect, it} from 'vitest';
-
-import {SelectFieldRenderer} from '../SelectFieldRenderer';
-import {createMockForm} from './testUtils';
-
-const mockOptions = [
- {label: 'Red', value: 'red'},
- {label: 'Blue', value: 'blue'},
- {label: 'Green', value: 'green'},
-];
-
-describe('SelectFieldRenderer', () => {
- describe('Single Select Mode', () => {
- it('should render with fieldLabel', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Choose Color')).toBeInTheDocument();
- });
-
- it('should render with fieldName when fieldLabel is not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('colorField')).toBeInTheDocument();
- });
-
- it('should render with name when fieldLabel and fieldName are not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.getByText('fallbackSelect')).toBeInTheDocument();
- });
-
- it('should render field description when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Select your favorite color')).toBeInTheDocument();
- });
-
- it('should render select trigger with default placeholder', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Select...')).toBeInTheDocument();
- });
-
- it('should render select trigger with custom placeholder', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Pick a color')).toBeInTheDocument();
- });
-
- it('should show options when clicked', async () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- fireEvent.click(screen.getByRole('combobox'));
-
- await waitFor(() => {
- expect(screen.getByRole('option', {name: 'Red'})).toBeInTheDocument();
- expect(screen.getByRole('option', {name: 'Blue'})).toBeInTheDocument();
- expect(screen.getByRole('option', {name: 'Green'})).toBeInTheDocument();
- });
- });
-
- it('should update form value when option is selected', async () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- fireEvent.click(screen.getByRole('combobox'));
-
- await waitFor(() => {
- expect(screen.getByRole('option', {name: 'Blue'})).toBeInTheDocument();
- });
-
- fireEvent.click(screen.getByRole('option', {name: 'Blue'}));
-
- expect(formRef.current?.getValues('selectedColor')).toBe('blue');
- });
-
- it('should display selected value from form', () => {
- const {form, wrapper} = createMockForm({color: 'green'});
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Green')).toBeInTheDocument();
- });
- });
-
- describe('Multiple Choice Mode', () => {
- it('should render checkboxes when multipleChoice is true', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- expect(checkboxes).toHaveLength(3);
- });
-
- it('should render option labels in multiple choice mode', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Red')).toBeInTheDocument();
- expect(screen.getByText('Blue')).toBeInTheDocument();
- expect(screen.getByText('Green')).toBeInTheDocument();
- });
-
- it('should update form value when checkbox is checked', () => {
- const {form, formRef, wrapper} = createMockForm({colors: []});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- fireEvent.click(checkboxes[0]);
-
- expect(formRef.current?.getValues('colors')).toContain('red');
- });
-
- it('should allow multiple selections', () => {
- const {form, formRef, wrapper} = createMockForm({colors: []});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- fireEvent.click(checkboxes[0]);
- fireEvent.click(checkboxes[1]);
-
- const values = formRef.current?.getValues('colors') as string[];
- expect(values).toContain('red');
- expect(values).toContain('blue');
- });
-
- it('should remove value when checkbox is unchecked', () => {
- const {form, formRef, wrapper} = createMockForm({colors: ['red', 'blue']});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- fireEvent.click(checkboxes[0]);
-
- const values = formRef.current?.getValues('colors') as string[];
- expect(values).not.toContain('red');
- expect(values).toContain('blue');
- });
-
- it('should reflect checked state from form values', () => {
- const {form, wrapper} = createMockForm({colors: ['red', 'green']});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- expect(checkboxes[0]).toBeChecked();
- expect(checkboxes[1]).not.toBeChecked();
- expect(checkboxes[2]).toBeChecked();
- });
-
- it('should respect maxSelection limit', () => {
- const {form, formRef, wrapper} = createMockForm({colors: ['red', 'blue']});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- fireEvent.click(checkboxes[2]);
-
- const values = formRef.current?.getValues('colors') as string[];
- expect(values).toHaveLength(2);
- expect(values).not.toContain('green');
- });
-
- it('should allow selection when under maxSelection limit', () => {
- const {form, formRef, wrapper} = createMockForm({colors: ['red']});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- fireEvent.click(checkboxes[1]);
-
- const values = formRef.current?.getValues('colors') as string[];
- expect(values).toContain('blue');
- });
-
- it('should handle non-array form values gracefully', () => {
- const {form, wrapper} = createMockForm({colors: 'invalid'});
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.getAllByRole('checkbox');
- checkboxes.forEach((checkbox) => {
- expect(checkbox).not.toBeChecked();
- });
- });
- });
-
- describe('Empty Options', () => {
- it('should handle empty fieldOptions for single select', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Select...')).toBeInTheDocument();
- });
-
- it('should handle undefined fieldOptions for single select', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('Select...')).toBeInTheDocument();
- });
-
- it('should handle empty fieldOptions for multiple choice', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const checkboxes = screen.queryAllByRole('checkbox');
- expect(checkboxes).toHaveLength(0);
- });
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/TextAreaFieldRenderer.test.tsx b/client/src/pages/automation/trigger-form/components/tests/TextAreaFieldRenderer.test.tsx
deleted file mode 100644
index 115894ab50b..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/TextAreaFieldRenderer.test.tsx
+++ /dev/null
@@ -1,167 +0,0 @@
-import {fireEvent, render, screen} from '@/shared/util/test-utils';
-import {describe, expect, it} from 'vitest';
-
-import {TextAreaFieldRenderer} from '../TextAreaFieldRenderer';
-import {createMockForm} from './testUtils';
-
-describe('TextAreaFieldRenderer', () => {
- it('should render with fieldLabel', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.getByText('Description')).toBeInTheDocument();
- });
-
- it('should render with fieldName when fieldLabel is not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.getByText('descriptionField')).toBeInTheDocument();
- });
-
- it('should render with name when fieldLabel and fieldName are not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByText('fallbackTextArea')).toBeInTheDocument();
- });
-
- it('should render field description when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- expect(screen.getByText('Enter a detailed description')).toBeInTheDocument();
- });
-
- it('should not render field description when not provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {
- wrapper,
- });
-
- expect(screen.queryByText('Enter a detailed description')).not.toBeInTheDocument();
- });
-
- it('should render textarea element', () => {
- const {form, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- expect(screen.getByRole('textbox')).toBeInTheDocument();
- });
-
- it('should display placeholder when provided', () => {
- const {form, wrapper} = createMockForm();
-
- render(
- ,
- {wrapper}
- );
-
- const textarea = screen.getByRole('textbox');
- expect(textarea).toHaveAttribute('placeholder', 'Enter your comments here...');
- });
-
- it('should update form value when typing', () => {
- const {form, formRef, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- fireEvent.change(textarea, {target: {value: 'This is a test note.'}});
-
- expect(formRef.current?.getValues('notes')).toBe('This is a test note.');
- });
-
- it('should display existing string value from form', () => {
- const {form, wrapper} = createMockForm({notes: 'Existing note content'});
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- expect(textarea).toHaveValue('Existing note content');
- });
-
- it('should display empty string for non-string values', () => {
- const {form, wrapper} = createMockForm({notes: {complex: 'object'}});
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- expect(textarea).toHaveValue('');
- });
-
- it('should handle multiline text input', () => {
- const {form, formRef, wrapper} = createMockForm();
- const multilineText = 'Line 1\nLine 2\nLine 3';
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- fireEvent.change(textarea, {target: {value: multilineText}});
-
- expect(formRef.current?.getValues('content')).toBe(multilineText);
- });
-
- it('should preserve existing multiline value', () => {
- const multilineText = 'First line\nSecond line\nThird line';
- const {form, wrapper} = createMockForm({content: multilineText});
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- expect(textarea).toHaveValue(multilineText);
- });
-
- it('should handle empty string value', () => {
- const {form, wrapper} = createMockForm({text: ''});
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- expect(textarea).toHaveValue('');
- });
-
- it('should handle special characters in text', () => {
- const specialText = ' & "quotes" \'apostrophes\'';
- const {form, formRef, wrapper} = createMockForm();
-
- render(, {wrapper});
-
- const textarea = screen.getByRole('textbox');
- fireEvent.change(textarea, {target: {value: specialText}});
-
- expect(formRef.current?.getValues('special')).toBe(specialText);
- });
-
- it('should handle numeric value by converting to empty string', () => {
- const {form, wrapper} = createMockForm({numericField: 12345});
-
- render(, {
- wrapper,
- });
-
- const textarea = screen.getByRole('textbox');
- expect(textarea).toHaveValue('');
- });
-});
diff --git a/client/src/pages/automation/trigger-form/components/tests/testUtils.tsx b/client/src/pages/automation/trigger-form/components/tests/testUtils.tsx
deleted file mode 100644
index 8c613deeb98..00000000000
--- a/client/src/pages/automation/trigger-form/components/tests/testUtils.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import {Form} from '@/components/ui/form';
-import {ReactNode} from 'react';
-import {UseFormReturn, useForm} from 'react-hook-form';
-
-type FormRefType = {current: UseFormReturn> | null};
-
-interface CreateFormWrapperOptionsProps {
- defaultValues?: Record;
- formRef?: FormRefType;
-}
-
-export function createFormWrapper({defaultValues = {}, formRef}: CreateFormWrapperOptionsProps = {}) {
- return function FormWrapper({children}: {children: ReactNode}) {
- const form = useForm>({
- defaultValues,
- mode: 'onSubmit',
- });
-
- if (formRef) {
- formRef.current = form;
- }
-
- return ;
- };
-}
-
-export function createMockForm(defaultValues: Record = {}) {
- const formRef: FormRefType = {current: null};
-
- const wrapper = createFormWrapper({defaultValues, formRef});
-
- return {
- form: new Proxy({} as UseFormReturn>, {
- get(_target, prop) {
- if (formRef.current) {
- const value = (formRef.current as Record)[prop as string];
-
- if (typeof value === 'function') {
- return value.bind(formRef.current);
- }
-
- return value;
- }
-
- return undefined;
- },
- }),
- formRef,
- wrapper,
- };
-}
diff --git a/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsDropdownMenu.tsx b/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsDropdownMenu.tsx
deleted file mode 100644
index 304f5d5c99d..00000000000
--- a/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsDropdownMenu.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import Button from '@/components/Button/Button';
-import {DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger} from '@/components/ui/dropdown-menu';
-import {useToast} from '@/hooks/use-toast';
-import {WorkflowExecution} from '@/shared/middleware/automation/workflow/execution';
-import {useStopJobMutation} from '@/shared/mutations/platform/jobs.mutations';
-import {WorkflowExecutionKeys} from '@/shared/queries/automation/workflowExecutions.queries';
-import {useQueryClient} from '@tanstack/react-query';
-import {CellContext} from '@tanstack/react-table';
-import {CircleStopIcon, EllipsisVerticalIcon, ViewIcon} from 'lucide-react';
-
-import useWorkflowExecutionSheetStore from '../stores/useWorkflowExecutionSheetStore';
-
-/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-const WorkflowExecutionsDropdownMenu = ({data}: {data: CellContext}) => {
- const {toast} = useToast();
-
- const queryClient = useQueryClient();
-
- const {setWorkflowExecutionId, setWorkflowExecutionSheetOpen} = useWorkflowExecutionSheetStore();
-
- const stopJobMutation = useStopJobMutation({
- onError: () =>
- toast({
- className: 'mt-2 w-[340px] rounded-md bg-red-600 p-4 text-white',
- description: 'Failed to stop Workflow Execution',
- }),
- onSuccess: () => {
- toast({
- className: 'mt-2 w-[340px] rounded-md bg-green-600 p-4 text-white',
- description: 'Stopping Workflow Execution',
- });
-
- queryClient.invalidateQueries({
- queryKey: WorkflowExecutionKeys.workflowExecutions,
- });
- },
- });
-
- const disabled = data.getValue()?.status !== 'STARTED';
-
- const handleViewClick = () => {
- const id = data.row.original.id;
-
- if (id != null) {
- setWorkflowExecutionId(id);
- setWorkflowExecutionSheetOpen(true);
- }
- };
-
- const handleStopWorkflowExecutionClick = (id: number) => {
- stopJobMutation.mutate(id);
- };
-
- return (
-
-
- }
- size="icon"
- variant="ghost"
- />
-
-
- e.stopPropagation()}>
-
- View
-
-
- handleStopWorkflowExecutionClick(data.getValue()?.id)}
- >
- Stop
-
-
-
- );
-};
-
-export default WorkflowExecutionsDropdownMenu;
diff --git a/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsTable.tsx b/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsTable.tsx
index 69a3692ca61..a164408e138 100644
--- a/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsTable.tsx
+++ b/client/src/pages/automation/workflow-executions/components/WorkflowExecutionsTable.tsx
@@ -5,7 +5,6 @@ import {CellContext, createColumnHelper, flexRender, getCoreRowModel, useReactTa
import {useShallow} from 'zustand/react/shallow';
import useWorkflowExecutionSheetStore from '../stores/useWorkflowExecutionSheetStore';
-import WorkflowExecutionsDropdownMenu from './WorkflowExecutionsDropdownMenu';
const getDuration = (info: CellContext) => {
const infoValue = info.getValue();
@@ -64,10 +63,6 @@ const WorkflowExecutionsTable = ({data}: {data: WorkflowExecution[]}) => {
),
header: 'Execution date',
}),
- columnHelper.accessor((row) => row.job, {
- cell: (info) => ,
- header: 'Action',
- }),
],
data,
getCoreRowModel: getCoreRowModel(),
diff --git a/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheet.tsx b/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheet.tsx
index 0f8f728c564..c8b74730619 100644
--- a/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheet.tsx
+++ b/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheet.tsx
@@ -1,124 +1,99 @@
-import Button from '@/components/Button/Button';
import {ResizableHandle, ResizablePanel, ResizablePanelGroup} from '@/components/ui/resizable';
-import {Sheet, SheetCloseButton, SheetContent, SheetTitle} from '@/components/ui/sheet';
+import {Sheet, SheetCloseButton, SheetContent} from '@/components/ui/sheet';
import {Spinner} from '@/components/ui/spinner';
-import {Tooltip, TooltipContent, TooltipTrigger} from '@/components/ui/tooltip';
import {WorkflowReadOnlyProvider} from '@/pages/platform/workflow-editor/providers/workflowEditorProvider';
-import CopilotPanel from '@/shared/components/copilot/CopilotPanel';
import {useGetComponentDefinitionsQuery} from '@/shared/queries/automation/componentDefinitions.queries';
-import {useFeatureFlagsStore} from '@/shared/stores/useFeatureFlagsStore';
-import {SparklesIcon, WorkflowIcon} from 'lucide-react';
-import {VisuallyHidden} from 'radix-ui';
+import {useGetProjectWorkflowExecutionQuery} from '@/shared/queries/automation/workflowExecutions.queries';
+import {WorkflowIcon} from 'lucide-react';
+import {useCallback} from 'react';
+import {useShallow} from 'zustand/react/shallow';
+import useWorkflowExecutionSheetStore from '../../stores/useWorkflowExecutionSheetStore';
import WorkflowExecutionSheetContent from './WorkflowExecutionSheetContent';
import WorkflowExecutionSheetWorkflowPanel from './WorkflowExecutionSheetWorkflowPanel';
-import useWorkflowExecutionSheet from './hooks/useWorkflowExecutionSheet';
const WorkflowExecutionSheet = () => {
- const {
- copilotEnabled,
- copilotPanelOpen,
- handleCopilotClick,
- handleCopilotClose,
- handleOpenChange,
- workflowExecution,
- workflowExecutionLoading,
- workflowExecutionSheetOpen,
- } = useWorkflowExecutionSheet();
+ const {setWorkflowExecutionSheetOpen, workflowExecutionId, workflowExecutionSheetOpen} =
+ useWorkflowExecutionSheetStore(
+ useShallow((state) => ({
+ setWorkflowExecutionSheetOpen: state.setWorkflowExecutionSheetOpen,
+ workflowExecutionId: state.workflowExecutionId,
+ workflowExecutionSheetOpen: state.workflowExecutionSheetOpen,
+ }))
+ );
- const ff_4077 = useFeatureFlagsStore()('ff-4077');
+ const {data: workflowExecution, isLoading: workflowExecutionLoading} = useGetProjectWorkflowExecutionQuery(
+ {
+ id: workflowExecutionId,
+ },
+ workflowExecutionSheetOpen
+ );
+
+ const handleOpenChange = useCallback(() => {
+ setWorkflowExecutionSheetOpen(!workflowExecutionSheetOpen);
+ }, [workflowExecutionSheetOpen, setWorkflowExecutionSheetOpen]);
return (
-
- {`${workflowExecution?.project?.name}/${workflowExecution?.workflow?.label}`}
-
-
-
-
- {workflowExecutionLoading ? (
-
-
-
- ) : (
- <>
-
+ >
+ )}
);
diff --git a/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheetContent.tsx b/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheetContent.tsx
index c21e2efe560..9b123a304ad 100644
--- a/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheetContent.tsx
+++ b/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/WorkflowExecutionSheetContent.tsx
@@ -7,11 +7,10 @@ import WorkflowExecutionsTaskAccordionItem from '@/shared/components/workflow-ex
import WorkflowExecutionsTriggerAccordionItem from '@/shared/components/workflow-executions/WorkflowExecutionsTriggerAccordionItem';
import {getTasksTree} from '@/shared/components/workflow-executions/WorkflowExecutionsUtils';
import {Job, TaskExecution, TriggerExecution} from '@/shared/middleware/automation/workflow/execution';
-import {TabValueType} from '@/shared/types';
import {useCallback, useMemo, useState} from 'react';
const WorkflowExecutionSheetContent = ({job, triggerExecution}: {job: Job; triggerExecution?: TriggerExecution}) => {
- const [activeTab, setActiveTab] = useState('input');
+ const [activeTab, setActiveTab] = useState<'input' | 'output' | 'error'>('input');
const [dialogOpen, setDialogOpen] = useState(false);
const [selectedItem, setSelectedItem] = useState(
triggerExecution || job.taskExecutions?.[0] || undefined
diff --git a/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/hooks/useWorkflowExecutionSheet.ts b/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/hooks/useWorkflowExecutionSheet.ts
deleted file mode 100644
index d730ff482ca..00000000000
--- a/client/src/pages/automation/workflow-executions/components/workflow-execution-sheet/hooks/useWorkflowExecutionSheet.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import {MODE, Source, useCopilotStore} from '@/shared/components/copilot/stores/useCopilotStore';
-import {getWorkflowStatusType} from '@/shared/components/workflow-executions/util/workflowExecution-utils';
-import {useGetProjectWorkflowExecutionQuery} from '@/shared/queries/automation/workflowExecutions.queries';
-import {useApplicationInfoStore} from '@/shared/stores/useApplicationInfoStore';
-import {useCallback, useMemo, useState} from 'react';
-import {useShallow} from 'zustand/react/shallow';
-
-import useWorkflowExecutionSheetStore from '../../../stores/useWorkflowExecutionSheetStore';
-
-const POLLING_INTERVAL_MS = 2000;
-
-const useWorkflowExecutionSheet = () => {
- const [copilotPanelOpen, setCopilotPanelOpen] = useState(false);
-
- const {setWorkflowExecutionSheetOpen, workflowExecutionId, workflowExecutionSheetOpen} =
- useWorkflowExecutionSheetStore(
- useShallow((state) => ({
- setWorkflowExecutionSheetOpen: state.setWorkflowExecutionSheetOpen,
- workflowExecutionId: state.workflowExecutionId,
- workflowExecutionSheetOpen: state.workflowExecutionSheetOpen,
- }))
- );
-
- const ai = useApplicationInfoStore((state) => state.ai);
- const setContext = useCopilotStore((state) => state.setContext);
-
- const copilotEnabled = ai.copilot.enabled;
-
- const {data: workflowExecution, isLoading: workflowExecutionLoading} = useGetProjectWorkflowExecutionQuery(
- {
- id: workflowExecutionId,
- },
- workflowExecutionSheetOpen
- );
-
- const isWorkflowRunning = useMemo(() => {
- if (!workflowExecution?.job) {
- return false;
- }
-
- return getWorkflowStatusType(workflowExecution.job, workflowExecution.triggerExecution) === 'running';
- }, [workflowExecution]);
-
- useGetProjectWorkflowExecutionQuery(
- {id: workflowExecutionId},
- workflowExecutionSheetOpen && isWorkflowRunning,
- POLLING_INTERVAL_MS
- );
-
- const handleCopilotClick = useCallback(() => {
- const {
- context: currentContext,
- generateConversationId,
- resetMessages,
- saveConversationState,
- } = useCopilotStore.getState();
-
- saveConversationState();
- resetMessages();
- generateConversationId();
-
- setContext({
- ...currentContext,
- mode: MODE.ASK,
- parameters: {},
- source: Source.WORKFLOW_EDITOR,
- });
-
- setCopilotPanelOpen(true);
- }, [setContext]);
-
- const handleCopilotClose = useCallback(() => {
- useCopilotStore.getState().restoreConversationState();
- setCopilotPanelOpen(false);
- }, []);
-
- const handleOpenChange = useCallback(() => {
- if (workflowExecutionSheetOpen) {
- useCopilotStore.getState().restoreConversationState();
- setCopilotPanelOpen(false);
- }
-
- setWorkflowExecutionSheetOpen(!workflowExecutionSheetOpen);
- }, [workflowExecutionSheetOpen, setWorkflowExecutionSheetOpen]);
-
- return {
- copilotEnabled,
- copilotPanelOpen,
- handleCopilotClick,
- handleCopilotClose,
- handleOpenChange,
- workflowExecution,
- workflowExecutionLoading,
- workflowExecutionSheetOpen,
- };
-};
-
-export default useWorkflowExecutionSheet;
diff --git a/client/src/pages/platform/workflow-editor/WorkflowEditorLayout.tsx b/client/src/pages/platform/workflow-editor/WorkflowEditorLayout.tsx
index 726fa61b1fd..9fcad1ad6d0 100644
--- a/client/src/pages/platform/workflow-editor/WorkflowEditorLayout.tsx
+++ b/client/src/pages/platform/workflow-editor/WorkflowEditorLayout.tsx
@@ -4,19 +4,22 @@ import '@xyflow/react/dist/base.css';
import './WorkflowEditorLayout.css';
+import Button from '@/components/Button/Button';
+import {Dialog, DialogClose, DialogContent, DialogDescription, DialogHeader, DialogTitle} from '@/components/ui/dialog';
import useProjectsLeftSidebarStore from '@/pages/automation/project/stores/useProjectsLeftSidebarStore';
-import ClusterElementsCanvasDialog from '@/pages/platform/workflow-editor/components/ClusterElementsCanvasDialog';
import WorkflowNodeDetailsPanel from '@/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel';
import WorkflowTestChatPanel from '@/pages/platform/workflow-editor/components/workflow-test-chat/WorkflowTestChatPanel';
import {useWorkflowLayout} from '@/pages/platform/workflow-editor/hooks/useWorkflowLayout';
import {useWorkflowEditor} from '@/pages/platform/workflow-editor/providers/workflowEditorProvider';
import useRightSidebarStore from '@/pages/platform/workflow-editor/stores/useRightSidebarStore';
import useWorkflowEditorStore from '@/pages/platform/workflow-editor/stores/useWorkflowEditorStore';
-import useCopilotPanelStore from '@/shared/components/copilot/stores/useCopilotPanelStore';
+import {useCopilotStore} from '@/shared/components/copilot/stores/useCopilotStore';
+import {XIcon} from 'lucide-react';
import {Suspense, lazy, useEffect, useMemo} from 'react';
import {twMerge} from 'tailwind-merge';
import {useShallow} from 'zustand/shallow';
+import ClusterElementsWorkflowEditor from '../cluster-element-editor/components/ClusterElementsWorkflowEditor';
import WorkflowCodeEditorSheet from './components/WorkflowCodeEditorSheet';
import {
DataPillPanelSkeleton,
@@ -41,7 +44,7 @@ interface WorkflowEditorLayoutProps {
}
const WorkflowEditorLayout = ({includeComponents, runDisabled, showWorkflowInputs}: WorkflowEditorLayoutProps) => {
- const copilotPanelOpen = useCopilotPanelStore((state) => state.copilotPanelOpen);
+ const copilotPanelOpen = useCopilotStore((state) => state.copilotPanelOpen);
const projectLeftSidebarOpen = useProjectsLeftSidebarStore((state) => state.projectLeftSidebarOpen);
const rightSidebarOpen = useRightSidebarStore((state) => state.rightSidebarOpen);
const workflow = useWorkflowDataStore((state) => state.workflow);
@@ -97,14 +100,6 @@ const WorkflowEditorLayout = ({includeComponents, runDisabled, showWorkflowInput
[currentNode?.clusterRoot, currentNode?.isNestedClusterRoot]
);
- const handleClusterElementsCanvasOpenChange = (open: boolean) => {
- setClusterElementsCanvasOpen(open);
-
- if (!open) {
- setRootClusterElementNodeData(undefined);
- }
- };
-
useEffect(() => {
if (isMainRootClusterElement) {
setRootClusterElementNodeData(currentNode);
@@ -162,14 +157,50 @@ const WorkflowEditorLayout = ({includeComponents, runDisabled, showWorkflowInput
)}
{clusterElementsCanvasOpen && (
- {
+ setClusterElementsCanvasOpen(open);
+
+ if (!open) {
+ setRootClusterElementNodeData(undefined);
+ useWorkflowNodeDetailsPanelStore.getState().reset();
+ }
+ }}
open={clusterElementsCanvasOpen}
- previousComponentDefinitions={previousComponentDefinitions}
- updateWorkflowMutation={updateWorkflowMutation!}
- workflowNodeOutputs={filteredWorkflowNodeOutputs ?? []}
- />
+ >
+
+
+
+
+
+
+
+
+
+
+ } size="icon" title="Close the canvas" variant="ghost" />
+
+ }
+ invalidateWorkflowQueries={invalidateWorkflowQueries!}
+ previousComponentDefinitions={previousComponentDefinitions}
+ updateWorkflowMutation={updateWorkflowMutation!}
+ workflowNodeOutputs={filteredWorkflowNodeOutputs ?? []}
+ />
+
+ {dataPillPanelOpen && (
+ }>
+
+
+ )}
+
+
)}
{workflow.id && }
diff --git a/client/src/pages/platform/workflow-editor/components/ClusterElementsCanvasDialog.tsx b/client/src/pages/platform/workflow-editor/components/ClusterElementsCanvasDialog.tsx
deleted file mode 100644
index 2ecf50fa49d..00000000000
--- a/client/src/pages/platform/workflow-editor/components/ClusterElementsCanvasDialog.tsx
+++ /dev/null
@@ -1,114 +0,0 @@
-import Button from '@/components/Button/Button';
-import {Dialog, DialogClose, DialogContent, DialogDescription, DialogHeader, DialogTitle} from '@/components/ui/dialog';
-import {Tooltip, TooltipContent, TooltipTrigger} from '@/components/ui/tooltip';
-import ClusterElementsWorkflowEditor from '@/pages/platform/cluster-element-editor/components/ClusterElementsWorkflowEditor';
-import {DataPillPanelSkeleton} from '@/pages/platform/workflow-editor/components/WorkflowEditorSkeletons';
-import WorkflowNodeDetailsPanel from '@/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel';
-import useClusterElementsCanvasDialog from '@/pages/platform/workflow-editor/components/hooks/useClusterElementsCanvasDialog';
-import {useClusterElementsCanvasDialogStore} from '@/pages/platform/workflow-editor/components/stores/useClusterElementsCanvasDialogStore';
-import useDataPillPanelStore from '@/pages/platform/workflow-editor/stores/useDataPillPanelStore';
-import CopilotPanel from '@/shared/components/copilot/CopilotPanel';
-import {ComponentDefinitionBasic, WorkflowNodeOutput} from '@/shared/middleware/platform/configuration';
-import {useFeatureFlagsStore} from '@/shared/stores/useFeatureFlagsStore';
-import {UpdateWorkflowMutationType} from '@/shared/types';
-import {SparklesIcon, XIcon} from 'lucide-react';
-import {Suspense, lazy} from 'react';
-import {twMerge} from 'tailwind-merge';
-
-const DataPillPanel = lazy(() => import('./datapills/DataPillPanel'));
-
-interface ClusterElementsCanvasDialogProps {
- invalidateWorkflowQueries: () => void;
- onOpenChange: (open: boolean) => void;
- open: boolean;
- previousComponentDefinitions: ComponentDefinitionBasic[];
- updateWorkflowMutation: UpdateWorkflowMutationType;
- workflowNodeOutputs: WorkflowNodeOutput[];
-}
-
-const ClusterElementsCanvasDialog = ({
- invalidateWorkflowQueries,
- onOpenChange,
- open,
- previousComponentDefinitions,
- updateWorkflowMutation,
- workflowNodeOutputs,
-}: ClusterElementsCanvasDialogProps) => {
- const {copilotEnabled, handleCopilotClick, handleCopilotClose, handleOpenChange} = useClusterElementsCanvasDialog({
- onOpenChange,
- });
-
- const copilotPanelOpen = useClusterElementsCanvasDialogStore((state) => state.copilotPanelOpen);
- const dataPillPanelOpen = useDataPillPanelStore((state) => state.dataPillPanelOpen);
-
- const ff_4070 = useFeatureFlagsStore()('ff-4070');
-
- return (
-
- );
-};
-
-export default ClusterElementsCanvasDialog;
diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowCodeEditorSheet.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowCodeEditorSheet.tsx
index ce2c7e48dec..151049d2f20 100644
--- a/client/src/pages/platform/workflow-editor/components/WorkflowCodeEditorSheet.tsx
+++ b/client/src/pages/platform/workflow-editor/components/WorkflowCodeEditorSheet.tsx
@@ -1,18 +1,31 @@
import Button from '@/components/Button/Button';
-import UnsavedChangesAlertDialog from '@/components/UnsavedChangesAlertDialog';
+import {
+ AlertDialog,
+ AlertDialogAction,
+ AlertDialogCancel,
+ AlertDialogContent,
+ AlertDialogDescription,
+ AlertDialogFooter,
+ AlertDialogHeader,
+ AlertDialogTitle,
+} from '@/components/ui/alert-dialog';
import {ResizableHandle, ResizablePanel, ResizablePanelGroup} from '@/components/ui/resizable';
-import {Sheet, SheetCloseButton, SheetContent, SheetTitle} from '@/components/ui/sheet';
+import {Sheet, SheetCloseButton, SheetContent, SheetHeader, SheetTitle} from '@/components/ui/sheet';
import {Tooltip, TooltipContent, TooltipTrigger} from '@/components/ui/tooltip';
import WorkflowExecutionsTestOutput from '@/pages/platform/workflow-editor/components/WorkflowExecutionsTestOutput';
import WorkflowTestConfigurationDialog from '@/pages/platform/workflow-editor/components/WorkflowTestConfigurationDialog';
-import useWorkflowCodeEditorSheet from '@/pages/platform/workflow-editor/hooks/useWorkflowCodeEditorSheet';
+import {useWorkflowEditor} from '@/pages/platform/workflow-editor/providers/workflowEditorProvider';
import MonacoEditorLoader from '@/shared/components/MonacoEditorLoader';
-import CopilotPanel from '@/shared/components/copilot/CopilotPanel';
+import {usePersistJobId} from '@/shared/hooks/usePersistJobId';
+import {useWorkflowTestStream} from '@/shared/hooks/useWorkflowTestStream';
import {Workflow, WorkflowTestConfiguration} from '@/shared/middleware/platform/configuration';
-import {useFeatureFlagsStore} from '@/shared/stores/useFeatureFlagsStore';
-import {PlayIcon, RefreshCwIcon, SaveIcon, Settings2Icon, SparklesIcon, SquareIcon} from 'lucide-react';
-import {VisuallyHidden} from 'radix-ui';
-import {Suspense, lazy} from 'react';
+import {WorkflowTestApi, WorkflowTestExecution} from '@/shared/middleware/platform/workflow/test';
+import {useEnvironmentStore} from '@/shared/stores/useEnvironmentStore';
+import {getTestWorkflowAttachRequest, getTestWorkflowStreamPostRequest} from '@/shared/util/testWorkflow-utils';
+import {PlayIcon, RefreshCwIcon, SaveIcon, Settings2Icon, SquareIcon} from 'lucide-react';
+import {Suspense, lazy, useCallback, useEffect, useState} from 'react';
+
+const workflowTestApi = new WorkflowTestApi();
interface WorkflowCodeEditorSheetProps {
invalidateWorkflowQueries: () => void;
@@ -35,189 +48,274 @@ const WorkflowCodeEditorSheet = ({
workflow,
workflowTestConfiguration,
}: WorkflowCodeEditorSheetProps) => {
- const {
- copilotEnabled,
- copilotPanelOpen,
- definition,
- dirty,
- handleCopilotClick,
- handleCopilotClose,
- handleDefinitionChange,
- handleOpenChange,
- handleRunClick,
- handleSaveClick,
- handleStopClick,
- handleUnsavedChangesAlertDialogClose,
- handleUnsavedChangesAlertDialogOpen,
- handleWorkflowTestConfigurationDialog,
- showWorkflowTestConfigurationDialog,
- unsavedChangesAlertDialogOpen,
- workflowIsRunning,
- workflowTestExecution,
- } = useWorkflowCodeEditorSheet({invalidateWorkflowQueries, onSheetOpenClose, workflow});
-
- const ff_4076 = useFeatureFlagsStore()('ff-4076');
+ const [dirty, setDirty] = useState(false);
+ const [definition, setDefinition] = useState(workflow.definition!);
+ const [jobId, setJobId] = useState(null);
+ const [showCloseAlertDialog, setShowCloseAlertDialog] = useState(false);
+ const [showWorkflowTestConfigurationDialog, setShowWorkflowTestConfigurationDialog] = useState(false);
+ const [workflowTestExecution, setWorkflowTestExecution] = useState();
+ const [workflowIsRunning, setWorkflowIsRunning] = useState(false);
- return (
-
-
- Edit Workflow
-
+ const currentEnvironmentId = useEnvironmentStore((state) => state.currentEnvironmentId);
+
+ const {getPersistedJobId, persistJobId} = usePersistJobId(workflow.id, currentEnvironmentId);
+ const {close: closeWorkflowTestStream, setStreamRequest} = useWorkflowTestStream({
+ onError: () => {
+ setWorkflowTestExecution(undefined);
+ setWorkflowIsRunning(false);
+ setJobId(null);
+ },
+ onResult: (execution) => {
+ setWorkflowTestExecution(execution);
+ setWorkflowIsRunning(false);
+ setJobId(null);
+ },
+ onStart: (jobId) => setJobId(jobId),
+ workflowId: workflow.id!,
+ });
+ const {updateWorkflowMutation} = useWorkflowEditor();
+
+ const handleStopClick = useCallback(() => {
+ setWorkflowIsRunning(false);
+ setStreamRequest(null);
+ closeWorkflowTestStream();
+
+ if (jobId) {
+ workflowTestApi.stopWorkflowTest({jobId}, {keepalive: true}).finally(() => {
+ persistJobId(null);
+ setJobId(null);
+ });
+ }
+ }, [closeWorkflowTestStream, jobId, persistJobId, setStreamRequest]);
+
+ const handleRunClick = () => {
+ setWorkflowTestExecution(undefined);
+ setWorkflowIsRunning(true);
+ setJobId(null);
+ persistJobId(null);
+
+ if (workflow?.id) {
+ const request = getTestWorkflowStreamPostRequest({
+ environmentId: currentEnvironmentId,
+ id: workflow.id,
+ });
+
+ setStreamRequest(request);
+ }
+ };
+
+ const handleWorkflowCodeEditorSheetSave = (workflow: Workflow, definition: string) => {
+ if (workflow && workflow.id) {
+ try {
+ JSON.parse(definition);
+
+ updateWorkflowMutation!.mutate(
+ {
+ id: workflow.id,
+ workflow: {
+ definition,
+ version: workflow.version,
+ },
+ },
+ {
+ onError: () => setDirty(true),
+ onSuccess: () => {
+ setDirty(false);
+
+ invalidateWorkflowQueries();
+ },
+ }
+ );
+ } catch (error) {
+ console.error(`Invalid JSON: ${error}`);
+ }
+ }
+ };
+
+ const handleOpenOnChange = (open: boolean) => {
+ if (!open && dirty) {
+ setShowCloseAlertDialog(true);
+ } else {
+ if (onSheetOpenClose) {
+ onSheetOpenClose(open);
+ }
+ }
+ };
+ useEffect(() => {
+ if (!workflow.id || currentEnvironmentId === undefined) return;
+
+ const jobId = getPersistedJobId();
+
+ if (!jobId) {
+ return;
+ }
+
+ setWorkflowIsRunning(true);
+ setJobId(jobId);
+
+ setStreamRequest(getTestWorkflowAttachRequest({jobId}));
+ }, [workflow.id, currentEnvironmentId, getPersistedJobId, setWorkflowIsRunning, setJobId, setStreamRequest]);
+
+ return (
+
event.preventDefault()}
onPointerDownOutside={(event) => event.preventDefault()}
>
-
-
- Edit Workflow
-
-
-
-
- }
- onClick={() => handleWorkflowTestConfigurationDialog(true)}
- size="icon"
- variant="ghost"
- />
-
-
- Set the workflow test configuration
-
+
+ Edit Workflow
-
-
- }
- onClick={() => handleSaveClick(workflow, definition)}
- size="icon"
- type="submit"
- variant="ghost"
- />
-
+
+
+
+ }
+ onClick={() => setShowWorkflowTestConfigurationDialog(true)}
+ size="icon"
+ variant="ghost"
+ />
+
- Save current workflow
-
+
Set the workflow test configuration
+
- {!workflowIsRunning && (
-
-
-
- }
- onClick={handleRunClick}
- size="icon"
- variant="ghost"
- />
-
-
-
-
- {runDisabled
- ? `The workflow cannot be executed. Please set all required workflow input parameters, connections and component properties.`
- : `Run the current workflow`}
-
-
- )}
-
- {workflowIsRunning && (
+
+
}
- onClick={handleStopClick}
+ disabled={!dirty}
+ icon={}
+ onClick={() => handleWorkflowCodeEditorSheetSave(workflow, definition)}
size="icon"
- variant="destructive"
+ type="submit"
+ variant="ghost"
/>
- )}
+
+
+ Save current workflow
+
- {ff_4076 && copilotEnabled && (
-
-
+ {!workflowIsRunning && (
+
+
+
}
- onClick={handleCopilotClick}
+ disabled={runDisabled || dirty}
+ icon={}
+ onClick={handleRunClick}
size="icon"
variant="ghost"
/>
-
+
+
- Open Copilot panel
-
- )}
+
+ {runDisabled
+ ? `The workflow cannot be executed. Please set all required workflow input parameters, connections and component properties.`
+ : `Run the current workflow`}
+
+
+ )}
-
-
-
+ {workflowIsRunning && (
+ } onClick={handleStopClick} size="icon" variant="destructive" />
+ )}
-
-
-
- }>
- handleDefinitionChange(value as string)}
- onMount={(editor) => editor.focus()}
- options={{
- folding: true,
- foldingStrategy: 'indentation',
- }}
- value={definition}
- />
-
-
-
-
-
-
- {workflowIsRunning ? (
-
-
-
-
-
- Workflow is running...
-
- ) : (
-
- )}
-
-
+
-
+
+
+
+
+ }>
+ {
+ setDefinition(value as string);
+
+ if (value === workflow.definition) {
+ setDirty(false);
+ } else {
+ setDirty(true);
+ }
+ }}
+ onMount={(editor) => editor.focus()}
+ options={{
+ folding: true,
+ foldingStrategy: 'indentation',
+ }}
+ value={workflow.definition!}
+ />
+
+
+
+
+
+
+ {workflowIsRunning ? (
+
+
+
+
+
+ Workflow is running...
+
+ ) : (
+
+ )}
+
+
-
+ {showWorkflowTestConfigurationDialog && (
+ setShowWorkflowTestConfigurationDialog(false)}
+ workflow={workflow}
+ workflowTestConfiguration={workflowTestConfiguration}
+ />
+ )}
- handleUnsavedChangesAlertDialogOpen(false)}
- onClose={handleUnsavedChangesAlertDialogClose}
- open={unsavedChangesAlertDialogOpen}
- />
-
- {showWorkflowTestConfigurationDialog && (
- handleWorkflowTestConfigurationDialog(false)}
- workflow={workflow}
- workflowTestConfiguration={workflowTestConfiguration}
- />
- )}
+
+
+
+ Are you absolutely sure?
+
+
+ There are unsaved changes. This action cannot be undone.
+
+
+
+
+ {
+ setShowCloseAlertDialog(false);
+ }}
+ >
+ Cancel
+
+
+ {
+ setShowCloseAlertDialog(false);
+
+ if (onSheetOpenClose) {
+ onSheetOpenClose(true);
+ }
+ }}
+ >
+ Close
+
+
+
+
);
};
diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowEditor.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowEditor.tsx
index 52ef447e490..6e2b8557a22 100644
--- a/client/src/pages/platform/workflow-editor/components/WorkflowEditor.tsx
+++ b/client/src/pages/platform/workflow-editor/components/WorkflowEditor.tsx
@@ -3,16 +3,17 @@ import useRightSidebarStore from '@/pages/platform/workflow-editor/stores/useRig
import useWorkflowDataStore from '@/pages/platform/workflow-editor/stores/useWorkflowDataStore';
import useWorkflowNodeDetailsPanelStore from '@/pages/platform/workflow-editor/stores/useWorkflowNodeDetailsPanelStore';
import useWorkflowTestChatStore from '@/pages/platform/workflow-editor/stores/useWorkflowTestChatStore';
-import useCopilotPanelStore from '@/shared/components/copilot/stores/useCopilotPanelStore';
-import {CANVAS_BACKGROUND_COLOR} from '@/shared/constants';
+import {useCopilotStore} from '@/shared/components/copilot/stores/useCopilotStore';
+import {CANVAS_BACKGROUND_COLOR, MINIMAP_MASK_COLOR, MINIMAP_NODE_COLOR} from '@/shared/constants';
import {
ComponentDefinitionBasic,
TaskDispatcherDefinitionBasic,
Workflow,
} from '@/shared/middleware/platform/configuration';
import {ClickedDefinitionType} from '@/shared/types';
-import {Background, BackgroundVariant, Controls, ReactFlow, useReactFlow} from '@xyflow/react';
+import {Background, BackgroundVariant, Controls, MiniMap, ReactFlow, useReactFlow} from '@xyflow/react';
import {DragEventHandler, useCallback, useEffect, useMemo} from 'react';
+import {twMerge} from 'tailwind-merge';
import {useShallow} from 'zustand/react/shallow';
import LabeledBranchCaseEdge from '../edges/LabeledBranchCaseEdge';
@@ -69,7 +70,7 @@ const WorkflowEditor = ({
onNodesChange: state.onNodesChange,
}))
);
- const copilotPanelOpen = useCopilotPanelStore((state) => state.copilotPanelOpen);
+ const copilotPanelOpen = useCopilotStore((state) => state.copilotPanelOpen);
const dataPillPanelOpen = useDataPillPanelStore((state) => state.dataPillPanelOpen);
const rightSidebarOpen = useRightSidebarStore((state) => state.rightSidebarOpen);
const workflowNodeDetailsPanelOpen = useWorkflowNodeDetailsPanelStore(
@@ -304,6 +305,15 @@ const WorkflowEditor = ({
zoomOnDoubleClick={false}
zoomOnScroll={false}
>
+ {!readOnlyWorkflow && (
+
+ )}
+
void;
}) => {
- const [activeTab, setActiveTab] = useState('input');
+ const [activeTab, setActiveTab] = useState<'input' | 'output' | 'error'>('input');
const [dialogOpen, setDialogOpen] = useState(false);
const [selectedItem, setSelectedItem] = useState(
getInitialSelectedItem(workflowTestExecution)
@@ -38,27 +37,27 @@ const WorkflowExecutionsTestOutput = ({
const job = workflowTestExecution?.job;
const triggerExecution = workflowTestExecution?.triggerExecution;
- const currentWorkflowId = job?.workflowId;
useEffect(() => {
setSelectedItem(getInitialSelectedItem(workflowTestExecution));
setActiveTab('input');
}, [workflowTestExecution]);
+ // Set workflow execution error in copilot store when an error exists
useEffect(() => {
const errorItem = getErrorItem(workflowTestExecution);
- if (errorItem?.error && currentWorkflowId) {
+ if (errorItem?.error) {
setWorkflowExecutionError({
errorMessage: errorItem.error.message,
stackTrace: errorItem.error.stackTrace,
title: errorItem.title,
- workflowId: currentWorkflowId,
});
- } else if (!errorItem?.error) {
+ } else {
+ // Clear error when workflow succeeds
setWorkflowExecutionError(undefined);
}
- }, [workflowTestExecution, currentWorkflowId, setWorkflowExecutionError]);
+ }, [workflowTestExecution, setWorkflowExecutionError]);
const tasksTree = useMemo(() => (job ? getTasksTree(job) : []), [job]);
@@ -75,7 +74,7 @@ const WorkflowExecutionsTestOutput = ({
{job ? (
) : (
- Test Output
+ Test Output
)}
{onCloseClick && (
@@ -140,7 +139,6 @@ const WorkflowExecutionsTestOutput = ({
({
@@ -155,7 +153,6 @@ const WorkflowNodeDetailsPanel = ({
setActiveTab: state.setActiveTab,
setCurrentComponent: state.setCurrentComponent,
setCurrentNode: state.setCurrentNode,
- setOperationChangeInProgress: state.setOperationChangeInProgress,
workflowNodeDetailsPanelOpen: state.workflowNodeDetailsPanelOpen,
}))
);
@@ -768,7 +765,8 @@ const WorkflowNodeDetailsPanel = ({
const componentProperties: Array = previousComponentDefinitions.map(
(componentDefinition, index) => {
- const outputSchemaDefinition = getOutputSchemaFromWorkflowNodeOutput(workflowNodeOutputs[index]);
+ const outputSchemaDefinition: PropertyAllType | undefined =
+ workflowNodeOutputs[index]?.outputResponse?.outputSchema;
const properties = outputSchemaDefinition?.properties?.length
? outputSchemaDefinition.properties
@@ -802,8 +800,6 @@ const WorkflowNodeDetailsPanel = ({
setCurrentOperationName(newOperationName);
- setOperationChangeInProgress(true);
-
let newOperationDefinition: ActionDefinition | TriggerDefinition | ClusterElementDefinition | undefined;
if (!currentComponentDefinition || !currentComponent) {
@@ -876,6 +872,7 @@ const WorkflowNodeDetailsPanel = ({
value: newOperationName,
},
invalidateWorkflowQueries,
+ queryClient,
updateWorkflowMutation,
});
@@ -925,8 +922,6 @@ const WorkflowNodeDetailsPanel = ({
type: `${componentName}/v${currentComponentDefinition.version}/${newOperationName}`,
workflowNodeName,
});
-
- setOperationChangeInProgress(false);
},
updateWorkflowMutation,
});
@@ -950,7 +945,6 @@ const WorkflowNodeDetailsPanel = ({
currentNodeIndex,
setCurrentComponent,
setCurrentNode,
- setOperationChangeInProgress,
]
);
@@ -1277,7 +1271,6 @@ const WorkflowNodeDetailsPanel = ({
return (
{
- const clusterTypeSnakeCase = convertNameToSnakeCase(clusterElementType);
-
- const hasClusterElementsCount = component.clusterElementsCount?.[clusterTypeSnakeCase];
-
- const hasClusterElements = component.clusterElements?.some(
- (element) => element.type?.name === clusterTypeSnakeCase
- );
-
- return !!(hasClusterElementsCount || hasClusterElements);
-};
-
const WorkflowNodesPopoverMenuComponentList = memo(
({
actionPanelOpen,
@@ -51,6 +37,23 @@ const WorkflowNodesPopoverMenuComponentList = memo(
selectedComponentName,
sourceNodeId,
}: WorkflowNodesListProps) => {
+ const [filter, setFilter] = useState('');
+ const [filteredActionComponentDefinitions, setFilteredActionComponentDefinitions] = useState<
+ Array
+ >([]);
+
+ const [filteredTaskDispatcherDefinitions, setFilteredTaskDispatcherDefinitions] = useState<
+ Array
+ >([]);
+
+ const [filteredTriggerComponentDefinitions, setFilteredTriggerComponentDefinitions] = useState<
+ Array
+ >([]);
+
+ const [filteredClusterElementComponentDefinitions, setFilteredClusterElementComponentDefinitions] = useState<
+ Array
+ >([]);
+
const {componentDefinitions, taskDispatcherDefinitions} = useWorkflowDataStore(
useShallow((state) => ({
componentDefinitions: state.componentDefinitions,
@@ -59,73 +62,64 @@ const WorkflowNodesPopoverMenuComponentList = memo(
);
const {nodes} = useWorkflowDataStore(useShallow((state) => ({nodes: state.nodes})));
- const {componentsWithActions, filter, setFilter, trimmedFilter} =
- useFilteredComponentDefinitions(componentDefinitions);
-
- const getFeatureFlag = useFeatureFlagsStore();
-
- const ff_797 = getFeatureFlag('ff-797');
- const ff_1652 = getFeatureFlag('ff-1652');
- const ff_3827 = getFeatureFlag('ff-3827');
- const ff_3839 = getFeatureFlag('ff-3839');
- const ff_4000 = getFeatureFlag('ff-4000');
-
- const filteredActionComponentDefinitions = useMemo(() => {
- if (!componentsWithActions) {
- return [];
- }
-
- let actionComponents = componentsWithActions
- .filter(({actionsCount}) => actionsCount && actionsCount > 0)
- .filter(
- ({name}) =>
- ((!ff_797 && name !== 'dataStream') || ff_797) &&
- ((!ff_1652 && name !== 'aiAgent') || ff_1652) &&
- ((!ff_4000 && name !== 'knowledgeBase') || ff_4000)
- );
-
- if (clusterElementType) {
- actionComponents = actionComponents.filter((component) =>
- hasClusterElementType(component, clusterElementType)
- );
- }
-
- return actionComponents;
- }, [componentsWithActions, clusterElementType, ff_797, ff_1652, ff_4000]);
+ const ff_797 = useFeatureFlagsStore()('ff-797');
+ const ff_1652 = useFeatureFlagsStore()('ff-1652');
+ const ff_3827 = useFeatureFlagsStore()('ff-3827');
+ const ff_3839 = useFeatureFlagsStore()('ff-3839');
- const filteredTaskDispatcherDefinitions = useMemo(
+ useEffect(
() =>
- filterTaskDispatcherDefinitions(taskDispatcherDefinitions, trimmedFilter, edgeId, sourceNodeId, nodes),
- [taskDispatcherDefinitions, trimmedFilter, edgeId, sourceNodeId, nodes]
+ setFilteredTaskDispatcherDefinitions(
+ filterTaskDispatcherDefinitions(taskDispatcherDefinitions, filter, edgeId, sourceNodeId, nodes)
+ ),
+ [taskDispatcherDefinitions, filter, sourceNodeId, edgeId, nodes]
);
- const filteredTriggerComponentDefinitions = useMemo(() => {
- if (!componentsWithActions) {
- return [];
- }
+ useEffect(() => {
+ if (componentDefinitions) {
+ setFilteredActionComponentDefinitions(
+ componentDefinitions
+ .filter(
+ ({actionsCount, name, title}) =>
+ actionsCount &&
+ (name?.toLowerCase().includes(filter.toLowerCase()) ||
+ title?.toLowerCase().includes(filter.toLowerCase()))
+ )
+ .filter(
+ ({name}) =>
+ ((!ff_797 && name !== 'dataStream') || ff_797) &&
+ ((!ff_1652 && name !== 'aiAgent') || ff_1652)
+ )
+ );
- let triggerComponents = componentsWithActions
- .filter(({triggersCount}) => triggersCount && triggersCount > 0)
- .filter(({name}) => (!ff_3827 && name !== 'form') || ff_3827);
+ setFilteredTriggerComponentDefinitions(
+ componentDefinitions
+ .filter(({name, title, triggersCount}) => {
+ const nameIncludes = name?.toLowerCase().includes(filter.toLowerCase());
+ const titleIncludes = title?.toLowerCase().includes(filter.toLowerCase());
- if (clusterElementType) {
- triggerComponents = triggerComponents.filter((component) =>
- hasClusterElementType(component, clusterElementType)
+ return triggersCount && (nameIncludes || titleIncludes);
+ })
+ .filter(({name}) => (!ff_3827 && name !== 'form') || ff_3827)
);
- }
- return triggerComponents;
- }, [componentsWithActions, clusterElementType, ff_3827]);
-
- const filteredClusterElementComponentDefinitions = useMemo(() => {
- if (!componentsWithActions || !clusterElementType) {
- return [];
+ if (clusterElementType) {
+ setFilteredClusterElementComponentDefinitions(
+ componentDefinitions
+ .filter(({clusterElementsCount, name, title}) => {
+ const nameIncludes = name?.toLowerCase().includes(filter.toLowerCase());
+ const titleIncludes = title?.toLowerCase().includes(filter.toLowerCase());
+
+ return (
+ clusterElementsCount?.[convertNameToSnakeCase(clusterElementType as string)] &&
+ (nameIncludes || titleIncludes)
+ );
+ })
+ .filter(({name}) => (!ff_3839 && name !== 'aiAgent') || ff_3839)
+ );
+ }
}
-
- return componentsWithActions
- .filter((component) => hasClusterElementType(component, clusterElementType))
- .filter(({name}) => (!ff_3839 && name !== 'aiAgent') || ff_3839);
- }, [componentsWithActions, clusterElementType, ff_3839]);
+ }, [clusterElementType, componentDefinitions, filter, ff_797, ff_1652, ff_3827, ff_3839]);
return (
@@ -218,6 +212,7 @@ const filterTaskDispatcherDefinitions = (
const currentNodeData = currentNode.data as NodeDataType;
+ // If using edgeId (has full data), or using sourceNodeId (has restricted data)
if (currentNode.data.workflowNodeName) {
parentId = currentNodeData.conditionData?.conditionId || currentNodeData.branchData?.branchId;
} else {
@@ -232,6 +227,7 @@ const filterTaskDispatcherDefinitions = (
if (isLoopSubtask(parentNode)) {
hasLoopTaskDispatcher = true;
+
break;
}
diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowNodesSidebar.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowNodesSidebar.tsx
index f2d7b6cb7da..e3c39a51f27 100644
--- a/client/src/pages/platform/workflow-editor/components/WorkflowNodesSidebar.tsx
+++ b/client/src/pages/platform/workflow-editor/components/WorkflowNodesSidebar.tsx
@@ -1,8 +1,7 @@
import {Input} from '@/components/ui/input';
import {ComponentDefinitionBasic, TaskDispatcherDefinition} from '@/shared/middleware/platform/configuration';
-import {useMemo} from 'react';
+import {useEffect, useState} from 'react';
-import {useFilteredComponentDefinitions} from '../hooks/useFilteredComponentDefinitions';
import WorkflowNodesTabs from './workflow-nodes-tabs/WorkflowNodesTabs';
const WorkflowNodesSidebar = ({
@@ -13,35 +12,49 @@ const WorkflowNodesSidebar = ({
taskDispatcherDefinitions: Array
;
};
}) => {
- const {componentsWithActions, filter, setFilter, trimmedFilter} = useFilteredComponentDefinitions(
- data.componentDefinitions
- );
+ const [filter, setFilter] = useState('');
- const filteredActionComponentDefinitions = useMemo(
- () =>
- componentsWithActions.filter(
- (componentDefinition) => componentDefinition?.actionsCount && componentDefinition.actionsCount > 0
- ),
- [componentsWithActions]
- );
+ const [filteredActionComponentDefinitions, setFilteredActionComponentDefinitions] = useState<
+ Array
+ >([]);
+
+ const [filteredTaskDispatcherDefinitions, setFilteredTaskDispatcherDefinitions] = useState<
+ Array
+ >([]);
+
+ const [filteredTriggerComponentDefinitions, setFilteredTriggerComponentDefinitions] = useState<
+ Array
+ >([]);
- const filteredTaskDispatcherDefinitions = useMemo(
- () =>
- data.taskDispatcherDefinitions.filter(
+ const {componentDefinitions, taskDispatcherDefinitions} = data;
+
+ useEffect(() => {
+ setFilteredActionComponentDefinitions(
+ componentDefinitions.filter(
+ (componentDefinition) =>
+ componentDefinition?.actionsCount &&
+ (componentDefinition.name?.toLowerCase().includes(filter.toLowerCase()) ||
+ componentDefinition?.title?.toLowerCase().includes(filter.toLowerCase()))
+ )
+ );
+
+ setFilteredTaskDispatcherDefinitions(
+ taskDispatcherDefinitions.filter(
(taskDispatcherDefinition) =>
- taskDispatcherDefinition.name?.toLowerCase().includes(trimmedFilter.toLowerCase()) ||
- taskDispatcherDefinition?.title?.toLowerCase().includes(trimmedFilter.toLowerCase())
- ),
- [data.taskDispatcherDefinitions, trimmedFilter]
- );
+ taskDispatcherDefinition.name?.toLowerCase().includes(filter.toLowerCase()) ||
+ taskDispatcherDefinition?.title?.toLowerCase().includes(filter.toLowerCase())
+ )
+ );
- const filteredTriggerComponentDefinitions = useMemo(
- () =>
- componentsWithActions.filter(
- (componentDefinition) => componentDefinition?.triggersCount && componentDefinition.triggersCount > 0
- ),
- [componentsWithActions]
- );
+ setFilteredTriggerComponentDefinitions(
+ componentDefinitions.filter(
+ (componentDefinition) =>
+ componentDefinition?.triggersCount &&
+ (componentDefinition.name?.toLowerCase().includes(filter.toLowerCase()) ||
+ componentDefinition?.title?.toLowerCase().includes(filter.toLowerCase()))
+ )
+ );
+ }, [componentDefinitions, filter, taskDispatcherDefinitions]);
return (